1

我一直在玩弄 WebRTC,但在正确授予浏览器使用输入设备的权限后,我完全无法播放简单的音频流。

我只是尝试将输入设备连接到上下文目标,但它不起作用。

这个片段不起作用,我认为它应该:

function success(stream)
{
    var audioContext      = new webkitAudioContext();
    var mediaStreamSource = audioContext.createMediaStreamSource(stream);

    mediaStreamSource.connect(audioContext.destination);
}

navigator.webkitGetUserMedia({audio:true, video:false}, success);

这似乎没有从我的工作麦克风中捕捉到任何声音,但如果我使用一个简单的标签并创建一个 blob url,代码会突然开始工作。

function success(stream)
{
    audio = document.querySelector('audio');
    audio.src = window.URL.createObjectURL(stream);
    audio.play();
}

navigator.webkitGetUserMedia({audio:true, video:false}, success);

此外,这些演示中似乎没有一个对我有用:http ://webaudiodemos.appspot.com/ 。

第一个片段的小提琴:http: //jsfiddle.net/AvMtt/

第二个片段的小提琴:http: //jsfiddle.net/vxeDg/

在 Windows 7x64 上使用 Chrome 28.0.1500.71 beta-m。

我有一个输入设备和两个输出设备(扬声器、耳机)。每个设备都使用相同的采样率。

4

1 回答 1

0

这个问题已经有将近 6 年的历史了,但是对于任何偶然发现它的人来说,这个问题的现代版本看起来像:

function success(stream) {
    let audioContext = new AudioContext();
    let mediaStreamSource = audioContext.createMediaStreamSource(stream);
    mediaStreamSource.connect(audioContext.destination);
}

navigator.mediaDevices.getUserMedia({audio: true, video: false})
.then(success)
.catch((e) => {
    console.dir(e);
});

并且似乎基于https://jsfiddle.net/jmcker/g3j1yo85工作

于 2019-04-12T05:28:57.377 回答