2013-06-27 110 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'方法。 –