2013-06-27 69 views
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> 

回答

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或者不是一个对象[line 28]”,它告诉你那里和那个问题是什么。

+0

我得到这些错误,我用铬检查元素控制台,我得到了遗漏的类型错误:对象#有没有方法“记录” (匿名函数) 遗漏的类型错误:无法调用空 的方法“停止”停止 onclick –

+0

@AlexanderNazarkin啊,那么你在那里,告诉你你的问题。你回来的'LocalMediaStream'没有'record'方法。 –