我正在尝试使用Web Audio API从远程对等方(WebRTC)播放MediaStream。当我使用audio
将流附加到audio.srcObject = stream
元素时,它可以正常播放,但是当我尝试使用AudioContext时,它根本不播放任何声音(我需要避免使用audio/video
HTML标签)
这件作品:
<audio controls>
<script>
const audioEl = document.getElementsByTagName('audio')[0];
audioEl.srcObject = MY_STREAM;
audioEl.play();
</script>
这不是:
const audioContext = new AudioContext();
const sourceNode = audioContext.createMediaStreamSource(MY_STREAM);
sourceNode.connect(audioContext.destination);
// Trying even 'audioContext.resume()' after user gesture with no luck
奇怪的是,当MY_STREAM
是我的micriphone 时,它对Web Audio API的播放效果很好(我听到了我的麦克风的反馈)。
因此,这表明麦克风MediaStream与我从WebRTC连接获得的麦克风有所不同,但是为什么它要为简单的HTML audio
标签播放?
答案 0 :(得分:1)
与demonstrated by @jib一样,这是一个Chrome错误。
我打开了一个new issue,让他们知道。
我以为我找到了一种解决方法,只需将该MediaStream分配给虚拟HTMLAudioElement的srcObject
,
new Audio().srcObject = mediaStream;
但是以某种方式,在我的本地主机上进行测试时,它没有及时持续,而在this fiddle中进行了测试。
在玩耍时,我还遇到了许多其他奇怪的行为,例如在其他选项卡上出现了其他事件,诸如此类。
再加上使我想到误报和全面问题的other non-fixed bugs,我担心没有适当的解决方案,只能等他们解决这个问题...