2016-06-07 67 views
3

我試圖使用視頻標記將webcam實現到網站中。 它適用於Chrome,但FireFox和IE在控制檯中返回錯誤。 任何人有任何想法爲什麼? 謝謝!TypeError:在不實現接口的對象上調用'getUserMedia'MediaDevices

代碼:

navigator.getMedia = navigator.getUserMedia || 
           navigator.webkitGetUserMedia || 
           navigator.mediaDevices.getUserMedia || 
           navigator.msGetUserMedia || 
           OTPlugin.getUserMedia; 

Firefox的錯誤:類型錯誤: 'getUserMedia' 調用的對象不實現接口MediaDevices上。

IE錯誤:無法未定義或空引用

回答

10

你忘navigator.mozGetUserMedia的Firefox來獲得屬性 'getUserMedia'。 IE沒有它(儘管MS Edge做)。

此外,從該列表中刪除navigator.mediaDevices.getUserMedia,因爲它的工作原理不同。

我的建議是:跳過前綴混亂,並嘗試adapter.js,官方的WebRTC填充工具。然後專門使用navigator.mediaDevices.getUserMedia,因爲一切都已被棄用。

例(在Chrome中使用https fiddle):

navigator.mediaDevices.getUserMedia({ video: true, audio: true }) 
 
    .then(stream => video.srcObject = stream) 
 
    .catch(e => console.log(e.name + ": "+ e.message));
<video id="video" width="160" height="120" autoplay></video><br> 
 
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>

+0

謝謝你的建議,它 – 0xc0de

+0

你是什麼意思的**,因爲它的工作方式不同的好**?我認爲webrtc現在返回一個承諾,而不是在其論點中接受回調。還有什麼其他缺失? – choz

+1

@choz對,就像OP在做的那樣,在實踐中它不能替代另一個,因爲你必須以不同的方式調用它們。 – jib

相關問題