Video streaming 跨大多数浏览器和设备的自适应一致流策略

Video streaming 跨大多数浏览器和设备的自适应一致流策略,video-streaming,html5-video,http-live-streaming,mpeg-dash,adaptive-bitrate,Video Streaming,Html5 Video,Http Live Streaming,Mpeg Dash,Adaptive Bitrate,我已经研究了很多关于网络视频流和播放的现状。我正在发布我总结的内容以及我认为我应该遵循的策略,以支持跨大多数设备和浏览器的自适应流媒体。如果我正在制定的战略存在任何重大漏洞/改进,我只想得到社区的反馈 摘要 为了支持目前大多数浏览器在html的元素中播放视频,我们需要将视频编码为至少3种格式WEBM、OGG和MP4 要为视频点播服务提供自适应流媒体,可用的选项有MPEG-DASH、苹果的HLS、微软的平滑流媒体和Adobe的HDS 最初,我更喜欢使用MPEG-DASH,因为它是一种开放标准,类

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

摘要

  • 为了支持目前大多数浏览器在html的
    元素中播放视频,我们需要将视频编码为至少3种格式WEBM、OGG和MP4
  • 要为视频点播服务提供自适应流媒体,可用的选项有MPEG-DASH、苹果的HLS、微软的平滑流媒体和Adobe的HDS
  • 最初,我更喜欢使用MPEG-DASH,因为它是一种开放标准,类似于HDS、HLS和平滑流媒体,是为了在任何浏览器和操作系统上提供音频/视频内容的通用平台而发明的
  • 但到目前为止,在iOS上运行Safari和Mac上运行Safari的苹果设备并不完全支持MPEG-DASH标准,因为苹果尚未支持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文件,以支持非苹果和苹果设备

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

欢迎提供提示/建议/建议


谢谢

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

在这里,您可以看到不同浏览器和平台在MPEG-DASH和/或HLS支持方面的概述:


我们通常会并行生成MPEG-DASH+HLS内容,并使用MPEG-DASH(HTML5或Flash中,例如)为80%到90%的用户提供服务,使用HLS为10%到20%的用户提供服务

为什么不使用HLS,下面我的回答解释了如何在Chrome或Safari、移动或桌面上实现安全的HLS自适应比特率