我的代码在HTML5中录制音频有什么问题?

时间:2012-07-10 19:51:19

标签: javascript html5 audio web-audio webrtc

我正在尝试使用最新的Chrome测试版(版本21.0.1180.15)通过麦克风录制音频。似乎几乎所有要做的事情都是在Chrome测试版中实现的。我甚至可以使用麦克风。虽然我无法使用audio元素连接流。但据我了解,如果没有错误,它应该有用。

createMediaStreamSource()尚未实施。作为解决方法,我想使用createMediaElementSource()通过静音audio元素将麦克风中的音频路由。

使用下面的代码我在控制台中收到以下两条错误消息之一:

  

获取blob:文件%3A /// 625fd498-f427-43d5-959b-3b49c6d53ab5 404(不   实测值)

  

不允许加载本地资源:   斑点:空/ 8df582cc-b663-489b-bf49-1785226fc7b7

错误是由此行引起的:

audio.src = window.webkitURL.createObjectURL(stream)

这条线路有问题吗?如何将流连接到audio元素源?或者Chrome中的错误是否无法创建对象网址?

代码:

var context = null;
var elementSource = null;

function onError(e) {
  if (e.code == 1) {
    alert('User denied access to their camera');
  } else {
    alert('getUserMedia() not supported by your browser');
  }
}

window.addEventListener('load', initAudio, false);
function initAudio() {
  navigator.webkitGetUserMedia({audio:true}, function (stream) {
    var audio = document.querySelector('#basic-stream');
    audio.src = window.webkitURL.createObjectURL(stream);
    audio.controls = true;
    context = new webkitAudioContext();
    elementSource = context.createMediaElementSource(audio);
    elementSource.connect(context.destination);
  }, onError);
}
<div>
    audio id="basic-stream" class="audiostream" autoplay muted></audio>
</div>

2 个答案:

答案 0 :(得分:2)

如果不是绝对必要,请不要重新发明方形轮:https://github.com/mattdiamond/Recorderjs

答案 1 :(得分:1)

我不确定这是否相关,但是关于带声音的getUserMedia()有一个突出的问题。

http://code.google.com/p/chromium/issues/detail?id=112367