Implementé la funcionalidad de llamada de audio usando Agora Javascript SDK 4. en uno de mis sitios y me enfrenté a un problema de que la voz del usuario local no se transmite a los usuarios remotos y cuando deshabilito y habilito el micrófono usando la consola del navegador funciona, no sé por qué. esto sucede Aquí está el código que estoy usando 4.6.3 y por debajo de CDN que he usado.
CDN:
<script src="https://download.agora.io/sdk/release/AgoraRTC_N-4.6.3.js"></script> var rtc = { client: null, localAudioTrack: null, }; let searchParams = new URLSearchParams(window.location.search) let channel = searchParams.get('cid') var options = { appId: "<appId>", channel: channel, token: null, }; async function startBasicCall() { rtc.client = AgoraRTC.createClient({ mode: "rtc", codec: "vp8" }); const uid = await rtc.client.join(options.appId, options.channel, options.token, null); rtc.localAudioTrack = await AgoraRTC.createMicrophoneAudioTrack(); rtc.localAudioTrack.setEnabled(true); await rtc.client.publish([rtc.localAudioTrack]); rtc.client.on("user-published", async (user, mediaType) => { await rtc.client.subscribe(user, mediaType); if (mediaType === "audio") { const remoteAudioTrack = user.audioTrack; remoteAudioTrack.play(); } }); rtc.client.on("user-unpublished", user => { const playerContainer = document.getElementById(user.uid); playerContainer.remove(); }); } async function leaveCall() { rtc.localAudioTrack.close(); await rtc.client.leave(); } if(channel != "" && channel != null){ startBasicCall(); }Tengo un nombre de canal dinámico que se recopilará de la URL. Tengo 2 usuarios Usuario A: llama Usuario B Usuario B: B puede escuchar la voz de A pero la voz de los usuarios B no se transmite a A, por lo que A no puede escuchar nada
Pero cuando ejecuto el siguiente código en la consola del navegador del usuario A, ambos usuarios pueden escuchar la voz de los demás rtc.localAudioTrack.setEnabled (falso); //esto es para silenciar rtc.localAudioTrack.setEnabled(true); // esto es para dejar de silenciar
FYI: he usado el mismo código para ambos extremos.
Creo que el problema se debe a que está adjuntando controladores de eventos después de unirse al canal. Debe hacerlo antes de invocar el método de unión.