将媒体源扩展(MSE)与WebRTC进行比较

时间:2016-04-05 02:58:11

标签: javascript video video-streaming html5-video webrtc

Media Source Extensions与WebRTC之间的根本区别是什么?

如果我可以暂时表达自己的理解。 WebRTC包括一个RTCPeerConnection,它处理从Media Streams获取流并将它们传递给协议,以便流式传输到应用程序的连接对等体。 WebRTC似乎抽象了很多像编解码器和转码这样的大问题。这是一个正确的评估吗?

Media Source Extensions适用于哪些内容?我的知识有限,但已经看到了开发人员运行自适应流媒体的例子。 MSE是否只处理来自服务器的流?

非常感谢帮助。

1 个答案:

答案 0 :(得分:5)

不幸的是,W3C和IETF正在以相当无组织的方式设计和开发这些与浏览器相关的新协议,这些协议并非完全由技术驱动,而是反映了Apple,Google和Microsoft之间的争斗,他们都试图将自己的技术标准化。同样,不同的浏览器选择只采用某些标准或部分标准,这使得开发人员的生活变得非常困难。

我已经实施了Media Source Extensions和WebRTC,所以我想我可以回答你的问题:

媒体来源扩展程序只是浏览器中的一个播放器。 您创建一个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)提供给您的。

因此,总而言之,在这两种情况下,您都使用视频元素进行播放,但是使用Media Source Extensions,您必须自己提供媒体片段,而使用WebRTC则使用WebRTC API来提供媒体。而且,再次使用WebRTC,您还可以捕获用户的网络摄像头,对其进行编码并发送到另一个浏览器进行播放,例如启用p2p视频聊天。

Media Source Extensions浏览器采用:http://caniuse.com/#feat=mediasource

WebRTC浏览器采用:http://iswebrtcreadyyet.com/