将媒体源扩展 (MSE) 与 WebRTC 进行比较
Posted
技术标签:
【中文标题】将媒体源扩展 (MSE) 与 WebRTC 进行比较【英文标题】:Comparing Media Source Extensions (MSE) with WebRTC 【发布时间】:2016-07-24 19:16:02 【问题描述】:Media Source Extensions 和 WebRTC 之间的根本区别是什么?
如果我可以暂时表达我自己的理解。 WebRTC 包含一个 RTCPeerConnection,它处理从媒体流中获取流并将它们传递到协议中,以便流式传输到应用程序的连接对等点。 WebRTC 似乎在底层抽象了许多更大的问题,如编解码器和转码。这会是一个正确的评估吗?
媒体源扩展在哪里适合?我的知识有限,但见过开发人员运行自适应流媒体的例子。 MSE 是否只处理来自您服务器的流?
我们将不胜感激。
【问题讨论】:
【参考方案1】:不幸的是,这些新的浏览器相关协议是由 W3C 和 IETF 以相当无组织的方式设计和开发的,并非完全由技术驱动,而是反映了苹果、谷歌和微软之间的争斗,它们都试图标准化自己的技术。同样,不同的浏览器选择只采用某些标准或标准的一部分,这使得开发人员的生活非常困难。
我已经实现了 Media Source Extensions 和 WebRTC,所以我想我可以回答你的问题:
Media Source Extensions 只是浏览器中的一个播放器。
您创建一个 MediaSource 对象
https://developer.mozilla.org/en-US/docs/Web/API/MediaSource
并将其分配给您的视频元素,如下所示
video.src = URL.createObjectURL(mediaSource);
然后,您的 javascript 代码可以从某处(您的服务器或网络服务器)获取媒体片段并提供给附加到 MediaSource 的 SourceBuffer 以进行播放。
WebRTC 不仅仅是一个播放器,它还是一个捕获、编码和发送机制。所以它也是一个播放器,你使用它与 Media Source Extensions 有点不同。在这里创建另一个对象:MediaStream 对象
https://developer.mozilla.org/en-US/docs/Web/API/MediaStream
并将其分配给您的视频元素,如下所示
video.srcObject = URL.createObjectURL(mediaStream);
请注意,在这种情况下,mediaStream 对象不是您自己直接创建的,而是由 WebRTC API(例如 getUserMedia)提供给您的。
因此,总而言之,在这两种情况下,您都使用视频元素来播放,但是使用媒体源扩展您必须自己提供媒体片段,而使用 WebRTC 您使用 WebRTC API 来提供媒体。而且,再次使用 WebRTC,您还可以捕获用户的网络摄像头,对其进行编码并发送到另一个浏览器进行播放,例如启用 p2p 视频聊天。
媒体源扩展浏览器采用:http://caniuse.com/#feat=mediasource
WebRTC 浏览器采用:http://iswebrtcreadyyet.com/
【讨论】:
以上是关于将媒体源扩展 (MSE) 与 WebRTC 进行比较的主要内容,如果未能解决你的问题,请参考以下文章
使用媒体源扩展符合DOMException:无法加载,因为找不到支持的源
当我向 MSE 缓冲区添加小块时,Chrome 停止播放视频