function hasUserMedia(){ return !!(navigator.getUserMedia || navigator.webkitGetUserMedia); } if(hasUserMedia){ navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia; navigator.getUserMedia({ video: true, audio: true }, function(stream){ var video = document.querySelector('video'); video.src = window.URL.createObjectURL(stream); }, function(err){ console.log(err) }) }运行时报错了:Failed to execute 'createObjectURL' on 'URL'
原因是Chrome升级后,新版本的Chrome不再支持该用法。其他主流浏览器也是如此,所以原先的代码:
video.src = window.URL.createObjectURL(stream);需要被修改为
video.srcObject = stream;一个兼容的写法如下:
try { this.srcObject = stream; } catch (error) { this.src = window.URL.createObjectURL(stream); }最终修改代码如下,顺利解决:
if(hasUserMedia){ navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia; navigator.getUserMedia({ video: true, audio: true }, function(stream){ var video = document.querySelector('video'); video.srcObject = stream; }, function(err){ console.log(err) }) }