1

单击录制按钮时,网络摄像头启动,但是当您单击停止按钮时,没有任何反应

我现在有这个,但我不确定它是否正在录制?我怎么知道它是否在录制,如何重新显示录制的视频?

<html>
<input type="button" value="Record" onclick="record(this)">
<input type="button" value="Stop" onclick="stop(this)">
<video autoplay></video>
<script language="javascript" type="text/javascript">



var record = function(button) {
navigator.getUserMedia = navigator.webkitGetUserMedia 
|| navigator.getUserMedia;

window.URL = window.URL || window.webkitURL;

navigator.getUserMedia({audio: true, video: true}, function(stream) {
  var video = document.querySelector('video');
  video.src = window.URL.createObjectURL(stream);
  stream.record();
  //setTimeout(stop, 10);
}, function(e) {
  console.log(e);
  //setTimeout(10);
});
};

var stop = function(button){
//alert('Checking');
stream.stop();
stream.getRecordedData(function(blob) {
alert('Checking');
//upload blobusing XHR2.
});
};


</script>
</html>
4

1 回答 1

0

在您的stop函数中,范围内没有变量stream。您在上面调用的对象是stream.record()那里的匿名函数的参数,现在无法访问。

很高兴您可以轻松解决此问题 - 只需“保存”对顶级变量的引用,如下所示:

var currentStream = null;

var record = function(button) {
    ...
    stream.record();
    currentStream = stream;
    ..
}

var stop = function(button) {
    currentStream.stop(); // TODO disable stop button if this is null, etc.
    ...
}

顺便说一句,当您使用 Javascript 时,您绝对应该注意您使用的任何浏览器中的错误控制台。您几乎肯定会看到类似“stream is null or not an object [line 28]”的错误,它会告诉您问题所在。

于 2013-06-27T09:27:40.577 回答