PizzicatoJS 播放到指定设备 (SinkId)
PizzicatoJS play to specified device (SinkId)
我一直在使用这个名为 Pizzicato 的库,我想知道如何将它播放到特定的音频输出设备。我以前用这样的网络音频 API 做过。
navigator.getUserMedia({audio: true}, function(stream) {
var ac = new AudioContext();
var audio = new Audio();
var microphone = ac.createMediaStreamSource(stream);
var dest = ac.createMediaStreamDestination();
microphone.connect(dest);
audio.srcObject = dest.stream;
audio.setSinkId(settings.output);
audio.play();
}, function (){console.warn("Error getting audio stream from getUserMedia")});
但在下面的示例中,它什么也没播放。我已经尝试删除 setSinkId,但它仍然不起作用。
var voice = new Pizzicato.Sound({ source: 'input' }, (err) => {
var dest = voice.getRawSourceNode().context.createMediaStreamDestination();
var audio = new Audio();
voice.connect(dest);
audio.srcObject = dest.stream;
audio.setSinkId(id);
audio.play();
});
Pizzicato.js 有一个 internal GainNode to which it connects everything. Luckily there is a getter 允许我们从外部修改那个 GainNode。
为了达到预期的结果,我们必须断开 GainNode 与它默认连接到的 AudioContext 的目的地的连接。之后我们可以将它连接到新创建的 MediaStreamAudioDestinationNode。
const voice = new Pizzicato.Sound({ source: 'input' });
// Disconnect the masterGainNode from the default destination.
Pizzicato.masterGainNode.disconnect(Pizzicato.context.destination);
const dest = Pizzicato.context.createMediaStreamDestination();
// Connect the masterGainNode to the new destination.
Pizzicato.masterGainNode.connect(dest);
const audio = new Audio();
audio.srcObject = dest.stream;
audio.setSinkId(id);
audio.play();
我一直在使用这个名为 Pizzicato 的库,我想知道如何将它播放到特定的音频输出设备。我以前用这样的网络音频 API 做过。
navigator.getUserMedia({audio: true}, function(stream) {
var ac = new AudioContext();
var audio = new Audio();
var microphone = ac.createMediaStreamSource(stream);
var dest = ac.createMediaStreamDestination();
microphone.connect(dest);
audio.srcObject = dest.stream;
audio.setSinkId(settings.output);
audio.play();
}, function (){console.warn("Error getting audio stream from getUserMedia")});
但在下面的示例中,它什么也没播放。我已经尝试删除 setSinkId,但它仍然不起作用。
var voice = new Pizzicato.Sound({ source: 'input' }, (err) => {
var dest = voice.getRawSourceNode().context.createMediaStreamDestination();
var audio = new Audio();
voice.connect(dest);
audio.srcObject = dest.stream;
audio.setSinkId(id);
audio.play();
});
Pizzicato.js 有一个 internal GainNode to which it connects everything. Luckily there is a getter 允许我们从外部修改那个 GainNode。
为了达到预期的结果,我们必须断开 GainNode 与它默认连接到的 AudioContext 的目的地的连接。之后我们可以将它连接到新创建的 MediaStreamAudioDestinationNode。
const voice = new Pizzicato.Sound({ source: 'input' });
// Disconnect the masterGainNode from the default destination.
Pizzicato.masterGainNode.disconnect(Pizzicato.context.destination);
const dest = Pizzicato.context.createMediaStreamDestination();
// Connect the masterGainNode to the new destination.
Pizzicato.masterGainNode.connect(dest);
const audio = new Audio();
audio.srcObject = dest.stream;
audio.setSinkId(id);
audio.play();