首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >弃用createObjectURL并用新的HTMLMediaElement.srcObject替换对网络摄像头流不起作用

弃用createObjectURL并用新的HTMLMediaElement.srcObject替换对网络摄像头流不起作用
EN

Stack Overflow用户
提问于 2018-06-29 20:08:02
回答 3查看 31.5K关注 0票数 27

我收到警告,一个函数将在Chrome的未来版本中被弃用。

它是这个脚本:

代码语言:javascript
复制
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。

但是当我改变的时候:

代码语言:javascript
复制
this.src = window.URL.createObjectURL(stream);

代码语言:javascript
复制
this.src = window.HTMLMediaElement.srcObject(stream);

它不再像以前那样工作了..

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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的一个实例。

在本例中,thisHTMLMediaElement类的对象。

对于JavaScript,根据经验,如果对象类型名称以HTML开头,则表示引用了一个HTML元素/标记。

你所要做的就是改变

代码语言:javascript
复制
this.src = window.URL.createObjectURL(stream);

代码语言:javascript
复制
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/

票数 63
EN

Stack Overflow用户

发布于 2018-12-17 05:33:52

this.srcObject = stream;替换this.src = window.URL.createObjectURL(stream);应该可以解决这个问题。

票数 8
EN

Stack Overflow用户

发布于 2018-12-11 23:27:48

如果您使用的是Chrome,您可以使用:

代码语言:javascript
复制
video.srcObject = stream;

而不是:

代码语言:javascript
复制
this.srcObject = stream;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51101408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档