Wysyłanie dźwięku z mikrofonu
AddTrack przyjmuje rodzaj i kodek, a zwraca TsgcRTCTrack. Kodeki dźwięku to cctAudioOpus, cctAudioPCMU i cctAudioPCMA, kodeki wideo to cctVideoVP8, cctVideoVP9, cctVideoH264 i cctVideoJPEG.
Przechwytywanie to osobny obiekt, bo możesz wcale nie chcieć mikrofonu systemowego. sgcCreateAudioCapture buduje właściwą implementację dla platformy, pod którą kod został skompilowany, waveIn na Windows, ALSA na Linux, AudioRecord na Android, Audio Unit VoiceProcessingIO na iOS i macOS, więc nic w twoim kodzie nie nazywa klasy platformowej. Na platformie docelowej bez implementacji zwraca nil, więc sprawdź wynik.
SendPCM oczekuje 16-bitowego PCM ze znakiem, z przeplotem kanałów, w częstotliwości i liczbie kanałów kodera, czyli dla Opus 48000 Hz, a dla G.711 8000 Hz. Źródło przechwytywania publikuje to, co faktycznie dostarcza, przez AudioSampleRate, AudioChannels i AudioFrameDurationMs, więc możesz sprawdzić, zamiast zakładać.
Dodanie ścieżki, gdy sesja już działa, ustawia flagę potrzeby negocjacji i uruchamia OnNegotiationNeeded. Wywołaj CreateOffer ponownie, aby ją opublikować, a nowy offer zostanie zbudowany bez ruszania transportu.