转自:https://blog.csdn.net/Miss_Liang/article/details/85781396
window.URL.createObjectURL(mediaStream) 出现 typeError 错误的原因是
浏览器正在取消对 mediaStream 类型的支持
解决方案:
video.srcObject = mediaStream
代码示例:
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script src="jquery.min.js"></script> <script type="text/javascript"> $(function () { var video = document.getElementById("video"); var canvas = document.getElementById("canvas"), context = canvas.getContext("2d"); var w; if (navigator.webkitGetUserMedia) { navigator.webkitGetUserMedia({ video: true }, function (stream) { // 错误代码: // video.src = window.webkitURL.createObjectURL(stream); // 浏览器正在取消对 createObjectURL 的支持 // 正确代码: video.srcObject = stream; video.play(); w = new WebSocket(url); w.onopen = function () { sendImg(); } w.onmessage = function (e) { sendImg(); } }, function () { console.log("video error"); }); var host = 'localhost'; var port = 8888; var url = 'ws://' + host + ':' + port + '/'; function sendImg() { context.drawImage(video, 0, 0, 320, 320); var imgData = canvas.toDataURL(); w.send(imgData); } } }); </script> </head> <body> <video id="video" width="640" height="480" style="background:#000;" autoplay></video> <canvas style="display:none" id="canvas" width="320" height="320"></canvas> </body> </html>