Inviare il microfono
AddTrack accetta un tipo e un codec e restituisce un TsgcRTCTrack. I codec audio sono cctAudioOpus, cctAudioPCMU e cctAudioPCMA, i codec video sono cctVideoVP8, cctVideoVP9, cctVideoH264 e cctVideoJPEG.
La cattura è un oggetto separato, perché potresti non volere affatto il microfono della piattaforma. sgcCreateAudioCapture costruisce l'implementazione giusta per la piattaforma per cui il codice è stato compilato, waveIn su Windows, ALSA su Linux, AudioRecord su Android, una Audio Unit VoiceProcessingIO su iOS e macOS, così niente nel tuo codice nomina una classe di piattaforma. Restituisce nil su un target senza implementazione, quindi verifica il risultato.
SendPCM vuole PCM interleaved con segno a 16 bit alla frequenza e al numero di canali dell'encoder, che per Opus sono 48000 Hz e per G.711 8000 Hz. La sorgente di cattura pubblica quello che consegna davvero tramite AudioSampleRate, AudioChannels e AudioFrameDurationMs, così puoi verificare invece di dare per scontato.
Aggiungere una traccia quando la sessione è già attiva imposta il flag di negoziazione necessaria e fa scattare OnNegotiationNeeded. Chiama di nuovo CreateOffer per pubblicarla, e il nuovo offer viene costruito senza toccare il trasporto.