javascript - 比较媒体源扩展 (MSE) 与 WebRTC

标签 javascript video video-streaming html5-video webrtc

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

请允许我表达一下自己的理解。 WebRTC 包括一个 RTCPeerConnection,它处理从媒体流中获取流并将它们传递到一个协议(protocol)中,以便流式传输到应用程序的连接对等点。似乎在 WebRTC 的幕后抽象了许多更大的问题,如编解码器和转码。这是一个正确的评估吗?

Media Source Extensions 适合什么地方?我的知识有限,但看过开发人员运行自适应流媒体的示例。 MSE 是否只处理来自您服务器的流?

帮助将不胜感激。

最佳答案

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

我已经实现了 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 对象不是由您直接创建的,而是由 getUserMedia 等 WebRTC API 提供给您的。

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

媒体源扩展浏览器采用:http://caniuse.com/#feat=mediasource

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

关于javascript - 比较媒体源扩展 (MSE) 与 WebRTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36416344/

相关文章:

c++ - 如何并行化这个 for 循环以快速将 YUV422 转换为 RGB888?

javascript - 如何禁用视频标签上的自动海报图像生成?

java - android rtsp 直播 - "Can' t 播放此视频”

javascript - Angular UI-Router抽象父状态解析数据

javascript - 优化 React-Redux 连接的 PureComponent

javascript - 使用 JQuery 将 json 数据从 Javascript 传递到 PHP

javascript使用按钮传递两个值

video - 如何在网页中播放视频文件(mov、mp4、ts 等)

amazon-web-services - 使用 AWS Elastic Transcoder 和 S3 在不公开所有内容的情况下流式传输 HLSv4?

video - 有什么好的程序可以处理 f4f 片段并将它们转换成完整的视频吗?