我正在尝试开发一个播放音频并包含更改音频设备功能的应用程序。我唯一的问题是当我尝试使用setSinkId()
函数时,它会给我一个 DOMException 中止错误,并显示消息"无法执行操作并已中止"。我已经在最新版本的Chrome中尝试了完全相同的代码,它允许我设置sinkId而不会出现任何问题。这是我的代码:
var promise = audio.setSinkId(deviceID);
promise.then(function(result) {
console.log('Audio output device sink ID is ' + deviceID);
}, function(e) {
console.log('Error: ' + e.name + ' - ' + e.message);
});
当我设置浏览器窗口时,我尝试通过enableBlinkFeatures
传递AudioOutputDevices
参数,但这并没有区别。
我感受到你的痛苦,我在开发过程中也有同样的问题。我没有直接解决它。我只能建议检查有关源HTML元素引用的一些事项。
1(srcObject
设置是否正确? 首次使用setSinkId()
前,请检查是否
audio.srcObject = stream;
2(检查setSinkId()
事件是否未被pause()
、play()
或load()
事件中断。请记住,setSinkId()
是一个承诺。
await audio.setSinkId(selectedId);
audio.play();
希望对您有所帮助。
也许它与这个旧报告的问题有关。它已经搁置多年了。
https://bugs.chromium.org/p/chromium/issues/detail?id=697877
请记住,为了获得Chrome的可见性,您应该使用您的Google帐户"启动"它,以帮助Chromium团队了解其重要性。