我收到警告,一个函数将在Chrome的未来版本中被弃用。
它是这个脚本:
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia || navigator.oGetUserMedia;
if (navigator.getUserMedia) {
navigator.getUserMedia({
video: true
}, (stream) => {
this.src = window.URL.createObjectURL(stream);
this.stream = stream;
}, (error) => {
console.log(error);
});
}
这会记录网络摄像头,以便我可以保存它,但在控制台中显示以下警告:
带有媒体流的
弃用URL.createObjectURL已被弃用,将于2018年7月左右在M68中删除。请改用HTMLMediaElement.srcObject。
但是当我改变的时候:
this.src = window.URL.createObjectURL(stream);
至
this.src = window.HTMLMediaElement.srcObject(stream);
它不再像以前那样工作了..
发布于 2018-07-03 00:35:32
你对HTMLMediaElement
的误解。
它是HTML /Prototype,表示一个JavaScript、<audio>
或<video>
标记,无论它是否在HTML中。
对于更多的类,比如解释,页面上的<audio>
是一个HTMLAudioElement
类型的对象,它扩展了HTMLMediaElement
,进而扩展了HTMLElement
。
如果您使用querySelector()
或getElementById()
获取媒体元素,或者使用createElement("audio")
或createElement("video")
在JavaScript中创建媒体元素,您将获得HTMLMediaElement
的一个实例。
在本例中,this
是HTMLMediaElement
类的对象。
对于JavaScript,根据经验,如果对象类型名称以HTML开头,则表示引用了一个HTML元素/标记。
你所要做的就是改变
this.src = window.URL.createObjectURL(stream);
至
if ('srcObject' in this) {
this.srcObject = stream;
} else {
this.src = window.URL.createObjectURL(stream);
}
这张图片取自Mozilla Documentation
您可以阅读有关如何使用此更改的更多信息,以及此答案的知识来源:https://www.fxsitecompat.com/en-CA/docs/2017/url-createobjecturl-stream-has-been-deprecated/
发布于 2018-12-17 05:33:52
用this.srcObject = stream;
替换this.src = window.URL.createObjectURL(stream);
应该可以解决这个问题。
发布于 2018-12-11 23:27:48
如果您使用的是Chrome,您可以使用:
video.srcObject = stream;
而不是:
this.srcObject = stream;
https://stackoverflow.com/questions/51101408
复制相似问题