视频mediaDevices将Blob分配给'videoRef.srcObject'代替'src'

Wil*_*ill 4 javascript html5-video webrtc recordrtc

我试图让blob成为视频元素的src.我的代码工作正常时:

videoRef.src = URL.createObjectURL(blob)
Run Code Online (Sandbox Code Playgroud)

但不推荐使用'src'和'URL.createObjectURL'来代替使用'srcObject'https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL

在此输入图像描述

https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getUserMedia

在此输入图像描述

我的问题是如何简单地将blob文件添加到srcObject中,如下所示:

videoRef.srcObject = blob
Run Code Online (Sandbox Code Playgroud)

当我尝试上面的代码时,我得到错误:"TypeError:无法在'HTMLMediaElement'上设置'srcObject'属性:提供的值不是'MediaStream'类型."

我如何不使用已弃用的videoRef.src并将blob直接应用于videoRef.srcObject?或者blob类型是否可以使用src,只有流不能使用src?

jib*_*jib 8

URL.createObjectURL仅针对而不是blob和mediasources弃用.

您引用的MDN警告位于标题为使用媒体流的对象URL的部分下.警告本身说:

如果仍有依赖createObjectURL()的代码将附加到媒体元素

有人URL.createObjectURL特意弃用,因为流本身就是本地对象.

TypeError:无法在'HTMLMediaElement上设置'srcObject'属性

看起来您的浏览器尚未实现srcObjectblob.这是常见的.

例如,Chrome和Firefox都仅部分支持 srcObject for streams,但不支持blob,file或mediasource.

srcObject上的 MDN 回应了这个:

截至2017年11月,浏览器仅支持MediaStream.对于MediaSource,Blob和File,您必须使用URL.createObjectURL()创建一个URL并将其分配给HTMLMediaElement.src.

  • URL.createObjectURL仅针对流不建议使用。令人敬畏的响应。谢谢! (2认同)