这是问题,
首先,我列举了我在select元素中可用的所有设备:
navigator.mediaDevices.enumerateDevices()
当我更改一个输出时,它会在我选择的设备中发声。
HTMLMediaElement.setSinkId(deviceId)
如果我播放另一个音频并更改设备输出(setSinkId)后,它也会将第一个音频更改为最后一个deviceId。所以我在同一台设备上都有这两种声音。
我是否需要使用最后一个adapter.js版本来正确实现该问题?
********* EDITED **********
按照上述评论,它会尝试网络音频,但不会成功。有了getUserMedia,一切都很好。
navigator.getUserMedia( { audio: true, video: false },
function (mediaStream) {
// Create an audio context for the audio
var ac = new (window.AudioContext || window.webKitAudioContext)();
// Create a clone of the stream, if not the id of all the stream is default
//var streamClone = stream.clone();
var ss = ac.createMediaStreamSource(mediaStream);
// Create a destination
var sd = ac.createMediaStreamDestination()
ss.connect(sd);
element.srcObject = sd.stream;
// Play the sound
element.play();
element.setSinkId(deviceId).then(function() {
console.log('Set deviceId('+deviceId+') in the selected audio element');
});
},
function (error) {
console.log(error);
}
);
但是使用我的远程流,我无法得到任何噪音
var ac = new (window.AudioContext || window.webKitAudioContext)();
// Create a clone of the stream, if not the id of all the stream is default
var streamClone = stream.clone();
var ss = ac.createMediaStreamSource(stream);
// Create a destination
var sd = ac.createMediaStreamDestination()
ss.connect(sd);
// Element is my HTMLMediaElement
element.srcObject = sd.stream;
// Play the sound
element.play();
element.setSinkId(deviceId).then(function() {
console.log('Set deviceId('+deviceId+') in the selected audio element');
});