适用于大多数浏览器和设备的自适应流媒体策略

时间:2015-07-11 12:52:49

标签: video-streaming html5-video hls mpeg-dash adaptive-bitrate

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

概要

  • 为了支持今天大多数浏览器在html的<video>元素中播放视频,我们需要以至少3种格式WEBM,OGG和MP4对视频进行编码
  • 要为视频点播服务提供自适应流媒体,可用的选项包括MPEG-DASH,Apple的HLS,Microsoft的Smooth Streaming和Adobe的HDS
  • 最初我更喜欢使用MPEG-DASH,因为它是一个与HDS,HLS和Smooth Streaming类似的开放标准,并且被发明用于提供在任何浏览器和操作系统上提供音频/视频内容的通用平台。
  • 但截至目前,在iOS上运行Safari和在Mac上运行Safari的Apple设备并不完全支持MPEG-DASH标准,因为Apple尚未支持MPEG-DASH所基于的html5的Media Source Extensions 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设备。

这似乎是一种好习惯吗?或者有什么大的东西我缺少一个跨浏览器自适应流媒体解决方案?

欢迎提示/建议/建议。

谢谢!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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