MP4 Box - 初始化段、Base-URL 和独立 MPD

MP4 Box - Initialization segments, Base-URL and independent MPDs

我有一个以多种分辨率编码的原始视频及其相关比特率:

CanalMetroLivinglab3DTV-HD-Musica_384x216.mp4
CanalMetroLivinglab3DTV-HD-Musica_640x360.mp4
CanalMetroLivinglab3DTV-HD-Musica_720x406.mp4
CanalMetroLivinglab3DTV-HD-Musica_1280x720.mp4 
CanalMetroLivinglab3DTV-HD-Musica_1920x1080.mp4

我使用 GPAC MP4 Box 将这些内容分成几段并创建 MPD 文件如下:

MP4Box -dash 1000 -rap -segment-name %s_ -out CanalMetroLivinglab3DTV-HD-Musica.mpd ..\..\Dem3DTV\CanalMetroLivinglab3DTV-HD-Musica\CanalMetroLivinglab3DTV-HD-Musica_384x216.mp4 ..\..\Dem3DTV\CanalMetroLivinglab3DTV-HD-Musica\CanalMetroLivinglab3DTV-HD-Musica_640x360.mp4 ..\..\Dem3DTV\CanalMetroLivinglab3DTV-HD-Musica\CanalMetroLivinglab3DTV-HD-Musica_720x406.mp4 ..\..\Dem3DTV\CanalMetroLivinglab3DTV-HD-Musica\CanalMetroLivinglab3DTV-HD-Musica_1280x720.mp4 ..\..\Dem3DTV\CanalMetroLivinglab3DTV-HD-Musica\CanalMetroLivinglab3DTV-HD-Musica_1920x1080.mp4 

我获得了以下清单文件:(不完整)

    <MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500000S" type="static" mediaPresentationDuration="PT0H0M45.02S" profiles="urn:mpeg:dash:profile:full:2011">
<ProgramInformation moreInformationURL="http://gpac.sourceforge.net">
<Title>
CanalMetroLivinglab3DTV-HD-Musica.mpd generated by GPAC
</Title>
</ProgramInformation>
<Period duration="PT0H0M45.02S">
<AdaptationSet segmentAlignment="true" bitstreamSwitching="true" maxWidth="1920" maxHeight="1080" maxFrameRate="25" par="16:9" lang="eng">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
<ContentComponent id="1" contentType="video"/>
<ContentComponent id="2" contentType="audio"/>
<SegmentList>
<Initialization sourceURL="CanalMetroLivinglab3DTV-HD-Musica_init.mp4"/>
</SegmentList>
<Representation id="1" mimeType="video/mp4" codecs="avc3.640028,mp4a.40.2" width="384" height="216" frameRate="25" sar="1:1" audioSamplingRate="44100" startWithSAP="1" bandwidth="479651">...</Representation>
<Representation id="2" mimeType="video/mp4" codecs="avc3.640028,mp4a.40.2" width="640" height="360" frameRate="25" sar="1:1" audioSamplingRate="44100" startWithSAP="1" bandwidth="930072">...</Representation>
<Representation id="3" mimeType="video/mp4" codecs="avc3.640028,mp4a.40.2" width="720" height="408" frameRate="25" sar="1:1" audioSamplingRate="44100" startWithSAP="1" bandwidth="1123428">...</Representation>
<Representation id="4" mimeType="video/mp4" codecs="avc3.640028,mp4a.40.2" width="1280" height="720" frameRate="25" sar="1:1" audioSamplingRate="44100" startWithSAP="1" bandwidth="2470344">...</Representation>
<Representation id="5" mimeType="video/mp4" codecs="avc3.640028,mp4a.40.2" width="1920" height="1080" frameRate="25" sar="1:1" audioSamplingRate="44100" startWithSAP="1" bandwidth="4327645">
<SegmentList timescale="1000" duration="1001">
<SegmentURL media="CanalMetroLivinglab3DTV-HD-Musica_1920x1080_1.m4s"/>
<SegmentURL media="CanalMetroLivinglab3DTV-HD-Musica_1920x1080_2.m4s"/>
<SegmentURL media="CanalMetroLivinglab3DTV-HD-Musica_1920x1080_3.m4s"/>
<SegmentURL media="CanalMetroLivinglab3DTV-HD-Musica_1920x1080_4.m4s"/>
    ...
<SegmentURL media="CanalMetroLivinglab3DTV-HD-Musica_1920x1080_42.m4s"/>
<SegmentURL media="CanalMetroLivinglab3DTV-HD-Musica_1920x1080_43.m4s"/>
<SegmentURL media="CanalMetroLivinglab3DTV-HD-Musica_1920x1080_44.m4s"/>
<SegmentURL media="CanalMetroLivinglab3DTV-HD-Musica_1920x1080_45.m4s"/>
</SegmentList>
</Representation>
</AdaptationSet>
</Period>
</MPD>

但是,我有几个问题:

谢谢!

第一个问题: GPAC 似乎只使用一个初始化段,其中包含所有表示的所有初始化信息。因此,具有 Initialization 元素的 SegmentList 元素出现在 AdaptationSet 元素中。根据 MPEG-DASH 标准,该技术用于表示默认值,Representation 元素内的所有 SegmentList 元素将继承更高级别 SegmentList 的属性和元素。基本上这意味着 Representation 级别上的每个 SegmentList 都包含一个初始化段。

第二个问题:如果 MPD 级别上不存在 BaseUrl 元素,则所有请求都将与 MPD 位置相关。因此,如果 MPD 位于同一台服务器上,则无需使用 BaseUrl。当您将内容从一个文件夹移动到另一个文件夹时,它也变得更加舒适,因为您不需要修改 MPD,即更改 BaseUrl。

第三个问题:这是可能的,其他服务正在以这种方式构建内容并使用 SegmentTemplate,同时为所有单独的表示提供 MPD。这使得删除或添加表示更容易。使用 MP4Box,您可以使用 -segment-name 标志并为每个 Representation 启用一个子目录,例如 $RepresentationID$/CanalMetroLivinglab3DTV-HD-Musica_$Number$.m4s。无论如何,没有必要那样做。我强烈建议使用 SegmentTemplate,因为它使您的 MPD 更紧凑(更少的字节,减少启动延迟)。可能与 MP4Box 和 -url-template 标志。顺便提一句。您使用 MP4Box 生成的内容似乎是有效的,至少从 MPEG-DASH MPD 的角度来看是这样。您可以随时使用克拉根福大学的 MPD-Validator 检查您的 MPD 是否有效。