我已经在我的一个站点中使用 Agora Javascript SDK 4 实现了音频通话功能,并面临本地用户语音无法流式传输到远程用户的问题,当我使用浏览器控制台禁用和启用麦克风时,它可以工作,我不知道为什么这是我使用的 4.6.3 及以下 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();
}
我有一个将从 URL 收集的动态频道名称。我有 2 个用户用户 A:呼叫用户 B 用户 B:B 能够听到 A 的声音,但 B 用户的声音没有流式传输到 A,所以 A 什么也听不到
但是当我在用户 A 的浏览器控制台上运行以下代码时,两个用户都可以听到对方的声音 rtc.localAudioTrack.setEnabled(false); //这是为了静音 rtc.localAudioTrack.setEnabled(true); // 这是取消静音
仅供参考:我在两端都使用了相同的代码。