自适应流媒体协议——DASH协议

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/luoxueqian/article/details/82982188

DASH协议框架如下:

说到DASH协议,必须从它的mpd(Media Presentation Description)文件开始讲起。MPD文件用来描述mpeg dash码流的构成,相当于HLS协议的m3u8文件。DASH的诞生就是为了制定统一的流媒体协议标准。因此DASH兼容了Smooth Streaming和HLS协议的特点。

  • Period : 标注了视频的时长信息,也可以看做是更新mpd文件的最长时长。
  • AdaptationSet : 包含了媒体呈现的形式,(视频/音频/字幕)。
  • Representaiton : 包含不同的码率、编码方式、帧率信息等。
  • Segment : 每一个具体的片段。(1,2,4,6,10s …)

MPD文件剖析如下:

下面举例说明

<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright Digital TV Labs 2014 -->
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT4.00S" profiles="urn:dvb:dash:profile:dvb-dash:2014,urn:dvb:dash:profile:dvb-dash:isoff-ext-live:2014" type="dynamic" availabilityStartTime="2009-03-07T14:30:00Z" minimumUpdatePeriod="PT15S" publishTime="2009-03-07T14:30:00Z">
  <Period id="p1" duration="PT1M" start="PT0S">
    <AdaptationSet mimeType="video/mp4" codecs="avc1.4d401e" startWithSAP="1" segmentAlignment="true">
      <Representation bandwidth="1000000" id="video.1000.1" frameRate="25" width="720" sar="64:45" height="576" scanType="interlaced">
        <SegmentTemplate startNumber="0" duration="3000" initialization="720x576i_1000Kbps_3secseg_MP30_169/media-01.fmp4/video/1/init.mp4" media="720x576i_1000Kbps_3secseg_MP30_169/media-01.fmp4/video/1/seg-$Number%04d$.m4f" timescale="1000" />
      </Representation>
    </AdaptationSet>
    <AdaptationSet mimeType="audio/mp4" codecs="mp4a.40.5" startWithSAP="1" segmentAlignment="true" lang="en">
      <Role schemeIdUri="urn:mpeg:dash:role:2011" value="main" />
      <Representation bandwidth="96000" id="audio.96" audioSamplingRate="48000">
        <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2" />
        <SegmentTemplate startNumber="0" duration="3029" initialization="HEAAC_96K_3secseg/media-01.fmp4/audio/init.mp4" media="HEAAC_96K_3secseg/media-01.fmp4/audio/seg-$Number%04d$.m4f" timescale="1000" />
      </Representation>
    </AdaptationSet>
  </Period>
</MPD>

MPD文件中最大的单元就是period,包含该片段的duration和start time,如果是多个period时,会有period ID来区分。接下来就是AdaptationSet,分别有video和audio两种,先介绍video的information。AdaptationSet下面的Representation则包含了该段video的码率、帧率、分辨率等信息。SegmentTemplate则包含每一个具体的片段信息。

DASH能根据实际播放时的网速情况来不断地切换分辨率,这主要是因为每个segment都对应有不同的码率文件,网速好的情况下选择高码率的视频播放,反之则选择低码率视频。

猜你喜欢

转载自blog.csdn.net/luoxueqian/article/details/82982188