4

我已经研究了很多关于视频流和在网络上播放的当前状态。我正在发布我总结的内容以及我认为应该遵循的策略,以支持跨大多数设备和浏览器的自适应流媒体。如果我正在制定的策略有任何重大漏洞/改进,我只是想从社区获得反馈。

概括

  • 为了支持当今大多数浏览器以 html<video>元素播放视频,我们需要以至少 3 种格式 WEBM、OGG 和 MP4 对视频进行编码
  • 要为视频点播服务提供自适应流媒体,可用的选项有 MPEG-DASH、Apple 的 HLS、Microsoft 的 Smooth Streaming 和 Adob​​e 的 HDS
  • 最初我更喜欢使用 MPEG-DASH,因为它是一种类似于 HDS、HLS 和平滑流的开放标准,并且被发明为提供一个通用平台来在任何浏览器和操作系统上提供音频/视频内容。
  • 但截至目前,在 iOS 上运行 Safari 和在 Mac 上运行 Safari 的 Apple 设备并不完全支持 MPEG-DASH 标准,因为 Apple 尚未支持 MPEG-DASH 所基于的 html5 的媒体源扩展 API。
  • 所以我要实现 MPEG-DASH(对于非苹果设备)+ HLS(对于苹果设备)
  • 这意味着我必须在服务器端生成.mpd(由 mpeg-dash 使用)和.m3u8(由 HLS 使用)文件,然后将其提供给客户端。我在服务器端使用 Node.js 进行编码。

现在据我所知,当使用 mpeg-dash 时,它的基本作用是从源文件和包含关于将哪个流发送到客户端的描述/规则的配置文件创建具有不同比特率的各种不同媒体文件取决于带宽。

相同的逻辑适用于 HLS,但它创建的配置文件具有与 mpeg-dash 不同的扩展名。

如果我计划支持具有 3 种不同分辨率的 3 比特率,例如 1020*720、800*600、400*300 的视频,那么我需要为我将要支持的 3 种格式(即 WEBM、 OGG, MP4)

因此,对于客户端上传的任何一个视频,我总共需要生成 3*3 = 9 个视频,同时生成一个 .mpd 和 .m3u8 文件以支持非 Apple 和 Apple 设备。

这似乎是一个好习惯吗?或者我是否缺少跨浏览器自适应流媒体解决方案?

欢迎提示/建议/建议。

谢谢 !

4

2 回答 2

1

你的方法听起来像是仪式。Mac 上的 Safari 现在确实支持媒体源扩展,因此 DASH 又多了一个。但是 iOS 仍然需要 HLS。我希望 iOS9 会包含它,但到目前为止,还没有运气。理论上可以在 iOS 应用中使用 VideoToolkit 进行 DASH,但苹果是否会允许这样的东西进入应用商店还有待观察。就个人而言,我会忘记 webm,只支持 h264/aac。Silverlight 和 HDS 应该完全忽略。Adobe 和 Microsoft 都在转向 DASH。也可以通过用 javascript 编写的转换器在 MSE 中播放 HLS。它有点复杂,但有一些玩家可以做到。

于 2015-07-11T15:57:24.367 回答
1

在这里,您可以查看 MPEG-DASH 和/或 HLS 支持方面的不同浏览器和平台的概述:http ://www.dash-player.com/blog/2015/06/replacing-flash-adaptive-streaming-和-drm-in-html5/

我们通常并行生成 MPEG-DASH + HLS 内容,并为大约 80% 到 90% 的所有用户提供 MPEG-DASH(在 HTML5 或 Flash 中使用例如http://www.dash-player.com)和 10% 到 20%与 HLS。

于 2015-07-17T04:00:40.830 回答