点击上方“LiveVideoStack”关注我们
翻译 | Alex 技术审校 | 赵军 本文来自OTTVerse,作者为Krishna Rao Vijayanagar。
MPEG-DASH
Easy Tech
#014#
MPEG-DASH是最流行的视频流协议之一,它广泛用于点播和直播,将媒体传输给各种终端设备,包括手机、平板、智能电视、游戏机等。MPEG-DASH是一种基于HTTP的流媒体传输协议,负责将视频从HTTP服务器传输给终端用户。在MPEG-DASH中,一个视频被分割成许多切片,这一信息被一个MPD记录。该MPD首先被传输给播放器,播放器基于当前网络条件和缓冲情况,基于MPD信息来请求合适码率&分辨率的视频切片。
本篇文章中,让我们一起来学习MPEG-DASH的基础知识、历史和它的重要特性等。
首先,何谓ABR技术?
DASH是Dynamic Adaptive Streaming over HTTP的简称,是一种自适应码率流媒体技术。学习ABR技术很重要,因为它可以帮助我们更好地理解什么是DASH以及为什么使用DASH。
如果你已经很熟悉ABR,那么MPEG-DASH对你来说也就没有那么难了,因为它描述了ABR相关的机制。
ABR是Adaptive Bit-Rate streaming的简称,是指为确保视频在互联网上的流畅传输,而根据带宽条件自适应地调节视频码率和质量的过程。
使用ABR技术后,视频被转码为多种分辨率和码率的组合,这种组合被称为“rendition”,这些rendition的集合形成了码率阶梯(Bitrate Ladder)。
下面就是一个码率阶梯:
1. 1080p 5.0 mbps2. 720p 4.0 mbps3. 640p 3.2 mbps4. 480p 2.0 mbps5. 270p 1 mbps
让我们假设视频已经按上述码率阶梯编码。当播放器开始播放视频时,它感知到的可用带宽假设是20mpbs。该带宽远大于码率阶梯中最高的5 mbps,所以播放器可以安全地以5mbps下载第一个视频切片(时长6s)。当播放器再次感知带宽变化,如果带宽依然很高,那么同样请求最高带宽的视频。
如果带宽突然下降到5mbps,播放器将有可能向服务器请求4mbps的切片(因为这时如果再请求5mbps的切片会很有风险)。收到4mbps的切片后,便开始播放这个视频切片。
整个视频都会持续这个过程。这就是码率和质量如何通过自适应带宽条件来不断变化的。在介绍了ABR之后,让我们来看看MPEG-DASH是如何助力ABR技术的。
什么是MPEG-DASH?
正如我们在前文所述,ABR技术用于在视频传输时通过动态改变视频码率和质量来适应带宽变化和播放器的缓冲程度。
然而,如果一次性传输整个流媒体文件,将很难做到这一点,想象一下从Dropbox、S3或者 Google Drive下载视频文件。和其他类型的文件一样(如文本、数据),这个文件仅有一个,根本没有办法暂停下载并将其切换到一个不同的码率-分辨率组合(rendition),对吧?所以ABR技术并不适用于庞大而单一的文件。
为了定期在文件之间动态切换,需要将文件处理并分解成小块。每一块都应该能够独立传输。除此之外,应该有一种机制来促进这种自适应的动态下载。
为了解决这些问题并为ABR视频流制定行业规范,2009年,MPEG组织为基于HTTP的视频流标准发布了CFP。在几家公司和行业组织的协作下,MPEG-DASH标准终于在 2012年4月被开发并发布出来。它在2019年被修订为MPEG-DASH ISO/IEC 23009-1:2019。
MPEG-DASH如何工作?
从名字就可以看出,DASH(Dynamic Adaptive Streaming over HTTP)基于ABR工作原理,下图为DASH的工作原理:
整个过程会一直持续,直到视频播放结束(电影结束或者用户停止观看)。
再来回顾一下MPEG-DASH的工作原理:
如何创建MPEG-DASH视频流?
如果你拥有一个单一的视频或者同一视频的几个码率-分辨率组合(rendition),你就可以创建与MPEG-DASH兼容的视频流。这个过程被称为打包,由专业的软件打包器完成。
目前市面上有多种打包器,其中最有名的包括:
它们都是由命令行驱动,最基本的操作就是在视频文件中指定打包器,并确认DASH参数(直播、点播、切片列表和切片时间线等),打包器将生成DASH兼容的视频流和DASH MPD文件。
MPEG-DASH的清单(MPD)示例
下面是一个简单的MPEG-DASH清单(MPD)示例,通过DASH协议可以向DASH兼容的播放器传输视频。
<!-- MPD file Generated with GPAC version 0.5.1-DEV-rev5379 on 2014-09-10T13:23:18Z --><MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H9M56.46S" profiles="urn:mpeg:dash:profile:isoff-live:2011"><ProgramInformation moreInformationURL="http://gpac.sourceforge.net"><Title>dashed/BigBuckBunny_2s_simple_2014_05_09.mpd generated by GPAC</Title></ProgramInformation><Period duration="PT0H9M56.46S"><AdaptationSet segmentAlignment="true" group="1" maxWidth="480" maxHeight="360" maxFrameRate="24" par="4:3"><SegmentTemplate timescale="96" media="bunny_$Bandwidth$bps/BigBuckBunny_2s$Number$.m4s" startNumber="1" duration="192" initialization="bunny_$Bandwidth$bps/BigBuckBunny_2s_init.mp4"/><Representation id="854x480 595.0kbps" mimeType="video/mp4" codecs="avc1.42c01e" width="854" height="480" frameRate="24" sar="1:1" startWithSAP="1" bandwidth="595491"/><Representation id="1280x720 1.5Mbps" mimeType="video/mp4" codecs="avc1.42c01f" width="1280" height="720" frameRate="24" sar="1:1" startWithSAP="1" bandwidth="1546902"/><Representation id="1920x1080 2.1Mbps" mimeType="video/mp4" codecs="avc1.42c032" width="1920" height="1080" frameRate="24" sar="1:1" startWithSAP="1" bandwidth="2133691"/></AdaptationSet></Period></MPD>
更多DASH MPD的详尽列表,可在OTTVerse上查看:https://ottverse.com/free-mpeg-dash-mpd-manifest-example-test-urls/。
MPEG-DASH特性
MPEG-DASH拥有很多特性,这些特性对于视频服务提供商充满吸引力。让我们来看下这些特性:
哪些播放器支持MPEG-DASH?
很多播放器支持MPEG-DASH且服务于各种应用和设备。一些播放器可以通过原生应用或者浏览器在Web上、Android Exoplayer、Roku、智能电视上播放MPEG-DASH视频。
MPEG-DASH兼容播放器包括:
Roku可以播放MPEG-DASH视频流
下面是一个免费、开源的MPEG-DASH兼容Web播放器。
DASH.js Reference Player[1]
DASH.js reference player 是最佳MPEG-DASH在线播放器之一,它可以免费播放MPD文件。在我看来,它拥有非常易于使用的界面,并可以提供大量便捷且重要的信息来调试视频流。
这些便捷的信息包括缓冲水平,可以告诉你正在使用的是哪个rendition,以及所有数据的时间线等等。它由开源 dash.js 播放器提供支持,并不断更新到最新版本,以便用户始终可以使用最新版本来调试MPD视频流。
小 结
我希望这篇文章可以帮助你更好地理解MPEG-DASH。本篇文章中,我们介绍了ABR技术的基础知识、MPEG-DASH的历史及其工作原理、MPD文件示例、DASH兼容的视频播放器等等。在未来的文章中,我们会介绍更多MPD的基础知识,以及如何使用打包器(如Shaka、mp4box等等)打包MPEG-DASH。
我们下次见!祝大家观影愉快!
注释[1] https://reference.dashif.org/dash.js/latest/samples/dash-if-reference-player/index.html
致谢本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。
原文链接:
https://ottverse.com/mpeg-dash-video-streaming-the-complete-guide/
扫描图中二维码或点击阅读原文了解大会更多信息
喜欢我们的内容就点个“在看”吧!
本文分享自 LiveVideoStack 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!