我有一个Web应用程序可以在客户端之间进行音频呼叫。作为服务器,我通过安全的Web套接字将FreeSwitch与SIP结合使用(使用SIP.js)。当我在firefox和firefox之间打电话时,一切正常,但是当我在firefox和chrome之间打电话时,我在chrome客户端上听不到任何声音。在Firefox客户端上,我可以听到chrome发送的内容。
使用Wireshark,我发现流到达客户端计算机并且是正确的。经过长期的反复试验,我发现在js代码中创建audio
标签并将其作为srcObject
分配远程流会有所帮助(适应WebRTC doesn't work with AudioContext的解决方案)。
const audioContext = (window.AudioContext || window.webkitAudioContext || window.mozAudioContext || window.oAudioContext || window.msAudioContext);
var aaaudio = new Audio(); <--- adding those lines helps
aaaudio.srcObject = sipSession.mediaHandler.getRemoteStreams()[0]; <--- adding those lines helps
audioContext.createMediaStreamSource(sipSession.mediaHandler.getRemoteStreams()[0])
var gainNode = ctx.createGain();
gainNode.gain.value = .5;
source.connect(gainNode);
gainNode.connect(ctx.destination);
我真的不知道为什么没有音频标签就无法使用,如何解决没有音频标签的情况。我想念什么吗?
Chrome浏览器中是否有任何机制可以阻止js连接的流中的音频输出,而无需创建明确的新音频标签?
信息:Chrome已在禁用和启用cors策略的情况下启动