基于HTTP的动态自适应流

基于HTTP的动态自适应流(英语:Dynamic Adaptive Streaming over HTTP,缩写DASH,也称MPEG-DASH)是一种自适应比特率流技术,使高质量流媒体可以通过传统的HTTP网络伺服器以互联网传递。类似苹果公司HTTP Live Streaming(HLS)方案,MPEG-DASH会将内容分解成一系列小型的基于HTTP的文件片段,每个片段包含很短长度的可播放内容,而内容总长度可能长达数小时(例如电影或体育赛事直播)。内容将被制成多种比特率的备选片段,以提供多种比特率的版本供选用。当内容被MPEG-DASH客户端回放时,客户端将根据当前网络条件自动选择下载和播放哪一个备选方案。客户端将选择可及时下载的最高比特率片段进行播放,从而避免播放卡顿或重新缓冲事件。也因如此,MPEG-DASH客户端可以无缝适应不断变化的网络条件并提供高质量的播放体验,拥有更少的卡顿与重新缓冲发生率。

MPEG-DASH是首个基于HTTP的自适应比特率流解决方案,它也是一项国际标准。[1]MPEG-DASH不应该与传输协议混淆——MPEG-DASH使用TCP传输协议。

MPEG-DASH使用现有的HTTP网络伺服器基础设施。它允许如互联网电视、电视机顶盒台式电脑智能电话平板电脑等装置消费通过互联网传送的多媒体内容(如视频电视广播等),并可应对变动的互联网接收条件。自适应流解决方案的标准化是为向市场提供信心,使该解决方案可以用于通用部署,抗衡类似但更专有的解决方案,如微软Smooth Streaming与Adobe的HDS。

不同于HLS、HDS和Smooth Streaming,DASH不关心编解码器,因此它可以接受任何编码格式英语Video coding format编码的内容,如H.265H.264VP9等。[2]

标准化

MPEG-DASH技术在MPEG之下开发。对DASH的工作始于2010年。2011年1月,它成为一项国际标准草案,并在2011年11月成为国际标准。[3]MPEG-DASH标准已于2012年4月发布为ISO/IEC 23009-1:2012页面存档备份,存于互联网档案馆)。

DASH是一项与Adobe Systems HTTP Dynamic Streaming苹果公司HTTP Live Streaming(HLS)微软Smooth Streaming相关的技术。DASH基于3GPP第9版中的Adaptive HTTP streaming(AHS)和Open IPTV Forum英语Open IPTV Forum Release 2中的HTTP Adaptive Streaming(HAS)。[4][5]作为与MPEG协作的一部分,3GPP Release 10采用DASH(具有特定的编解码器和操作模式)用于无线网络。[4]

DASH行业论坛(DASH-IF英语DASH-IF[6]进一步促进和催化了MPEG-DASH的采用,并帮助将其从规范转变为实际业务。主要的流媒体和媒体公司,包括微软、Netflix、Google、爱立信、三星、Adobe等都在实际业务中尝试使用,并为不同使用环境创建了DASH使用指南。

MPEG-DASH也被集成在其他标准中,例如HbbTV中的MPEG-DASH支持(截至1.5版本)。[7]

概述

DASH是一项自适性流技术,其将多媒体文件分割为一个或多个片段,并使用超文本传输协议传递给客户端。[8] 媒体演示描述(MPD)描述片段资讯(计时、统一资源定位符,以及媒体特征,例如视频分辨率和比特率),并且可以根据使用环境以不同的方式组织,例如SegmentList, SegmentTemplate, SegmentBase和SegmentTimeline。[9] 片段可以包含任何媒体数据,但是规范提供了与两种容器类型一起使用的特定指导和格式:ISO基础媒体文件格式英语ISO base media file format(例如MP4文件格式)或MPEG-2传输流

DASH不关心音频/视频的编解码器。多媒体文件通常有一种或多种表示(即不同分辨率或比特率版本),并可基于不同的网络条件、装置功能和用户偏好进行选择,达到自适性流[10]QoE (Quality of Experience) fairness英语Fairness_measure#QoE_fairness[11]DASH也与底层的应用层协议无关,因此可以配合任何协议中使用。例如,基于CCN英语Content centric networking的DASH。[12]

2015年7月27日,MPEG LA宣布呼吁与MPEG-DASH相关的专利,以便为该技术创建一个专利池。[13]

实现

通过ExoPlayer,MPEG-DASH在Android上可原生使用,如三星智能电视2012+、LG智能电视2012+、索尼电视2012+、飞利浦NetTV 4.1+、松下Viera 2013+和Chromecast。[14]YouTube以及Netflix已经支持MPEG-DASH,并且可使用多种MPEG-DASH播放器。[15]

中国大陆方面,bilibili已经支持MPEG-DASH[16]

虽然HTML5不直接支持MPEG-DASH,但是已有一些MPEG-DASH的JavaScript实现允许在网页浏览器中通过HTML5 Media Source Extensions(MSE)使用MPEG-DASH。[17]另有其他JavaScript实现,如bitdash播放器[18]支持使用HTML5加密媒体扩展播放有DRM的MPEG-DASH。[19]当WebGL结合使用,MPEG-DASH基于HTML5的自适应比特率流还可实现360°视频的实时和按需的高效流式传输。[20]

客户端和程序库

  • Dash.js是Dash行业论坛官方参考和生产播放器。[21]
  • Shaka是出自Google的开源dash播放器。[22]
  • VLC多媒体播放器3.0将为MP4/MPEG和实时流媒体发布一个新客户端插件。[23][24][25]
  • 跨平台FOSS多媒体框架GStreamer自从至少1.4版本以来支持MPEG-DASH和WebM DASH。[26]
  • 开源程序库libdash[27]独立于平台,可在Android、iOS、Windows Phone等移动平台上运行。
  • bitmovin为HTML5和Flash提供了bitdash MPEG-DASH播放器。[28]
  • THEOplayer页面存档备份,存于互联网档案馆)目前正在寻找伙伴来测试他们的MPEG-DASH视频播放器。[29]
  • Viblast Player支持HTML5中的MPEG-DASH,并为iOS和Android提供SDK。[30]
  • 巴黎电信学院中GPAC的OSMO4支持MPEG-DASH。[31]
  • 克拉根福大学ITEC中的DASH-JS支持MPEG-DASH。[32]
  • Radiant Media Player支持HTML5中的MPEG-DASH(DASH264和WebM DASH)。[33]
  • Videogular是AngularJS面向桌面和移动平台提供的一个视频应用框架,AngularJS为HTML5提供的视频播放器
  • libndash页面存档备份,存于互联网档案馆)是一个开源(Apache许可证)的C++程序库,提供构建一个全功能MPEG-DASH媒体播放器所需的所有功能(不包括解码/渲染帧到显示器)。

伺服器

请注意,除了Live Streaming外,DASH内容不需要伺服器的特定支持。

服务

内容生成器

  • ITEC的DASHEncoder。[47]
  • MP4Box及其来自Telecom ParisTech的GPAC的多媒体框架[48]
  • 巴黎电讯的dashcast支持MPEG-DASH实时流[49]
  • MediaGoom MPEG-DASH Packager[50]
  • Bento4开源工具和SDK[51]

其他

  • ITEC为MPEG-DASH媒体演示描述(MPD)文件提供验证服务
  • Alpen-Adria克拉根福大学的资讯科技研究所(ITEC)、巴黎电信学院GPAC小组和Digital TV Labs已提供多个DASH数据集。[52][53][54]
  • BBC有DASH测试流,包括基于HTTP/2的DASH。[55]

参考资料

  1. ^ MPEG ratifies its draft standard for DASH. MPEG. 2011-12-02 [2012-08-26]. (原始内容存档于2012-08-20). 
  2. ^ MPEG-DASH vs. Apple HLS vs. Microsoft Smooth Streaming vs. Adobe HDS. 2015-03-29 [3 June 2016]. (原始内容存档于2020-11-24). 
  3. ^ ISO/IEC DIS 23009-1.2 Dynamic adaptive streaming over HTTP (DASH). [2017-08-30]. (原始内容存档于2017-01-29). 
  4. ^ 4.0 4.1 ETSI 3GPP 3GPP TS 26.247; Transparent end-to-end packet-switched streaming service (PSS); Progressive Download and Dynamic Adaptive Streaming over HTTP (3GP-DASH)
  5. ^ Open IPTV Forum Solution Specification Volume 2a – HTTP Adaptive Streaming V2.1. [2017-08-30]. (原始内容存档于2011-10-09). 
  6. ^ DASH Industry Forum
  7. ^ HbbTV Specification 1.5 (PDF). [2017-08-30]. (原始内容存档 (PDF)于2014-07-03). 
  8. ^ Overview of Dynamic Adaptive Streaming over HTTP (DASH). [2017-08-30]. (原始内容存档于2020-11-24). 
  9. ^ MPEG-DASH Overview. [2017-08-30]. (原始内容存档于2016-03-08). 
  10. ^ 3GPP Dynamic Adaptive Streaming over HTTP – Standards and Design Principles页面存档备份,存于互联网档案馆) by T. Stockhammer
  11. ^ Towards Network-wide QoE Fairness using OpenFlow-assisted Adaptive Video Streaming. [2017-08-30]. (原始内容存档于2020-08-21). 
  12. ^ Y. Liu, J. Geurts, J.-P. Point, S. Lederer, B. Rainer, C. Mueller, C. Timmerer and H. Hellwagner, "Dynamic Adaptive Streaming over CCN: A Caching and Overhead Analysis", In Proceedings of the IEEE International Conference on Communication (ICC) 2013 – Next-Generation Networking Symposium, Budapest, Hungary, June, 2013. [2017-08-30]. (原始内容存档于2019-02-06). 
  13. ^ MPEG LA Announces Call for Patents to Organize Joint License for MPEG-DASH (PDF). [2017-08-30]. (原始内容存档 (PDF)于2015-08-07). 
  14. ^ Device Compatibility. [2017-08-30]. (原始内容存档于2016-04-01). 
  15. ^ The Status of MPEG-DASH today, and why Youtube & Netflix use it in HTML5. [2017-08-30]. (原始内容存档于2016-04-03). 
  16. ^ 关于引入DASH技术,提升用户播放体验的说明. [2020-02-26]. (原始内容存档于2020-08-21). 
  17. ^ HTML5 Media Source Extensions. [2017-08-30]. (原始内容存档于2019-03-23). 
  18. ^ bitdash DRM Testarea. [2017-08-30]. (原始内容存档于2015-07-03). 
  19. ^ HTML5 Encrypted Media Extensions. [2017-08-30]. (原始内容存档于2021-01-20). 
  20. ^ 360° Streaming in HTML5. [2017-08-30]. (原始内容存档于2017-09-03). 
  21. ^ A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.. [2017-08-30]. (原始内容存档于2021-01-14). 
  22. ^ Cimpanu, Catalin. Meet Shaka Player, Google's HTML5 Video Player for Low Bandwidth Conditions. Softpedia. 2015-08-24 [2016-08-13]. (原始内容存档于2020-08-03). 
  23. ^ DASH at ITEC, VLC Plugin, DASHEncoder and Dataset页面存档备份,存于互联网档案馆) by C. Mueller, S. Lederer, C. Timmerer
  24. ^ C. Müller and C. Timmerer, "A VLC Media Player Plugin enabling Dynamic Adaptive Streaming over HTTP", In Proceedings of the ACM Multimedia 2011 , Scottsdale, Arizona, November 28, 2011. (PDF). [2017-08-30]. (原始内容存档 (PDF)于2020-09-04). 
  25. ^ VLC 3.0 features. [2017-08-30]. (原始内容存档于2020-07-30). 
  26. ^ HTTP Adaptive streaming with GStreamer. [2017-08-30]. (原始内容存档于2020-10-29). 
  27. ^ libdash: Open-source DASH client library页面存档备份,存于互联网档案馆) by bitmovin Gmbh
  28. ^ bitdash MPEG-DASH Player Feature Details. [2017-08-30]. (原始内容存档于2016-06-06). 
  29. ^ HLS HTML5 Video Player | THEOplayer. [2016-02-15]. (原始内容存档于2021-01-04) (美国英语). 
  30. ^ 存档副本. [2017-08-30]. (原始内容存档于2021-01-04). 
  31. ^ OSMO4 Player of GPAC. [2017-08-30]. (原始内容存档于2016-03-17). 
  32. ^ DASH-JS at ITEC of Klagenfurt University. [2017-08-30]. (原始内容存档于2019-02-20). 
  33. ^ Radiant Media Player Compatibility Table. [2017-08-30]. (原始内容存档于2020-09-30). 
  34. ^ DASH Streaming and Playlists. [2017-08-30]. (原始内容存档于2017-08-31). 
  35. ^ MPEG-DASH in nginx-rtmp-module 1.0.8. [2017-08-30]. (原始内容存档于2017-08-31). 
  36. ^ MPEG-DASH improvements in nginx-rtmp-module 1.2.0. [2017-08-30]. (原始内容存档于2017-11-19). 
  37. ^ MPEG-DASH live streaming in nginx-rtmp-module. [2017-08-30]. (原始内容存档于2018-02-25). 
  38. ^ bitdash MPEG-DASH player for HTML5 and Flash. [2017-08-30]. (原始内容存档于2016-07-10). 
  39. ^ Introducing nginx-ts-module for HLS and MPEG-DASH live streaming. [2017-08-30]. (原始内容存档于2017-11-19). 
  40. ^ MPEG-DASH support in Nimble Streamer. [2017-08-30]. (原始内容存档于2020-09-22). 
  41. ^ Netview and Unified Streaming streaming DASH. [2017-08-30]. (原始内容存档于2015-04-02). 
  42. ^ USP Factsheet. [2017-08-30]. (原始内容存档于2015-04-21). 
  43. ^ Amazon Elastic Transcoder Now Supports MPEG-DASH. Amazon Web Services, Inc. [2016-06-03]. (原始内容存档于2021-01-19). 
  44. ^ Akamai Announces Native MPEG-DASH and HDS Support for Live Video Workflows. [2017-08-30]. (原始内容存档于2015-05-13). 
  45. ^ MPEG-DASH and streaming reference and resources. [2017-08-30]. (原始内容存档于2014-12-26). 
  46. ^ bitcodin.com Supported Formats. [2017-08-30]. (原始内容存档于2016-03-28). 
  47. ^ S. Lederer, C. Mueller and C. Timmerer, "Dynamic Adaptive Streaming over HTTP Dataset", In Proceedings of the ACM Multimedia Systems Conference 2012, Chapel Hill, North Carolina, February 22-24, 2012. (PDF). [2017-08-30]. (原始内容存档 (PDF)于2020-07-07). 
  48. ^ GPAC Telecom ParisTech. [2017-08-30]. (原始内容存档于2016-11-21). 
  49. ^ dashcast of Telecom ParisTech. [2017-08-30]. (原始内容存档于2016-08-04). 
  50. ^ MediaGoom. Essential Web Streaming.. [2021-01-20]. (原始内容存档于2020-09-19). 
  51. ^ Bento4 MPEG DASH Documentation. [2017-08-30]. (原始内容存档于2020-09-24). 
  52. ^ MPEG DASH Dataset Overview. [2017-08-30]. (原始内容存档于2016-05-10). 
  53. ^ S. Lederer, C. Mueller, C. Timmerer, C. Concolato, J. Le Feuvre and K. Fliegel, Distributed DASH Dataset, In Proceedings of the ACM Conference on Multimedia Systems (ACM MMSys) 2013, Oslo, Norway, 2013.. [2017-08-30]. (原始内容存档于2019-02-06). 
  54. ^ MPEG DASH Test Suite. [2017-08-30]. (原始内容存档于2014-03-07). 
  55. ^ MPEG DASH Test Streams. [2017-08-30]. (原始内容存档于2017-03-10). 

外部链接