2011-04-30 84 views
16

我目前正在運行Chrome 11並試圖訪問getUserMedia以支持HTML5原生音頻和視頻流支持,但我收到一條錯誤消息,說明navigator.getUserMedia未定義。如果不支持,我該如何訪問它,或者我需要等到Chrome整合後才能使用它?如何訪問navigator.getUserMedia()?

這是我使用測試getUserMedia的代碼,我發現

<h1>Snapshot Kiosk</h1> 
<section id="splash"> 
    <p id="errorMessage">Loading...</p> 
</section> 
<section id="app" hidden> 
    <p><video id="monitor" autoplay></video> <canvas id="photo"></canvas> 
    <p><input type=button value="&#x1F4F7;" onclick="snapshot()"> 
</section> 
<script> 
    navigator.getUserMedia('video user', gotStream, noStream); 
    var video = document.getElementById('monitor'); 
    var canvas = document.getElementById('photo'); 
    function gotStream(stream) { 
    video.src = URL.getObjectURL(stream); 
    video.onerror = function() { 
     stream.stop(); 
     noStream(); 
    } 
    video.onloadedmetadata = function() { 
     canvas.width = video.videoWidth; 
     canvas.height = video.videoHeight; 
     document.getElementById('splash').hidden = true; 
     document.getElementById('app').hidden = false; 
    } 
    } 
    function noStream() { 
    document.getElementById('errorMessage').textContent = 'No camera available.'; 
    } 
    function snapshot() { 
    canvas.getContext('2d').drawImage(video, 0, 0); 
    } 
</script> 

回答

3

我認爲這是在最新的Chrome瀏覽器開發(12.0.742.16 DEV)存根方法,但我不能得到它在Mac OSX上做任何事情。至少我以爲我看到了它。我剛剛檢查過,該方法似乎不再存在。這裏是執行getUserMedia的webkit錯誤報告:https://bugs.webkit.org/show_bug.cgi?id=56586

我認爲目前唯一的工作實現是在Opera for Android中。 http://my.opera.com/core/blog/2011/03/23/webcam-orientation-preview

chrome/webkit方法是webkitGetUserMedia,但尚未實現。

4

最新歌劇桌面打造了獲得getUserMedia()的支持 在這裏看到:http://labs.opera.com/news/2011/10/19/

這只是一個等待遊戲的其他瀏覽器來實現這一點。現在歌劇有支持, 另一個應該很快跟隨。

3

Chrome瀏覽器開發剛剛添加的WebRTC支持,所以現在你問這裏究竟變得似是而非。參見:https://groups.google.com/forum/#!topic/discuss-webrtc/LuY7zYLA8sA

基本上,您必須使用webkit前綴:webkitGetUserMedia(),儘管此方法的文檔很少,我目前正在嘗試拼湊它的工作演示。

+1

http://miernicki.com/cam.html如果你是有興趣看到演示在行動... – 2012-01-19 21:56:29

4

自昨夜(2012年5月3日)以來,Chrome Canary中的getUserMedia()將對象視爲一個字符串。

要嘗試一下,你可以用一個視頻元素的任何頁面上從控制檯運行下面的代碼(如this one):

navigator.webkitGetUserMedia(
    {"video": true, "audio": true}, 
    function(s){ 
    document.querySelector('video').src = 
     window.webkitURL.createObjectURL(s); 
    }, 
    function(e){console.log(e);} 
);