2015-07-03 3 views
0

У меня есть оригинальное видео закодированы в нескольких разрешениях со связанным с битрейт:MP4 Box - Инициализационные сегменты, Base-URL и независимый ПДС

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 

Я использовал ГПБК 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> 

Однако, у меня есть несколько вопросов:

  • во-первых, я думаю, что должен быть сегмент инициализации для каждого представления, и будут перечислены в первой позиции SegmentList. Как я могу это сделать?

  • Во-вторых, в моем случае все сегменты (.m4s), сегмент инициализации (.mp4) и файл манифеста (.mpd) хранятся в одном месте на сервере. В соответствии с этим, не является ли необходимым элемент Base-URL?

  • В других последовательностях DASH, которые я видел, все сегменты каждого представления хранятся в независимой папке вместе с ассоциированным сегментом инициализации и файлом манифеста этого представления. И тогда есть глобальный MPD. Какие параметры для MP4 Box я должен использовать, чтобы сделать это таким образом?

Спасибо!

ответ

1

Первый вопрос: Кажется, что GPAC использует только один сегмент инициализации, который содержит всю информацию инициализации для всех представлений. Поэтому элемент SegmentList с элементом инициализации присутствует в элементе AdaptationSet. В соответствии со стандартом MPEG-DASH этот метод используется для выражения значений по умолчанию, и все элементы SegmentList внутри элементов представления наследуют атрибуты и элементы из более высокого уровня SegmentList. В основном это означает, что каждый SegmentList на уровне представления содержит сегмент инициализации.

Второй вопрос: Если на уровне MPD не присутствует элемент BaseUrl, все запросы будут относиться к местоположению MPD. Поэтому, если MPD находится на одном сервере, нет необходимости использовать BaseUrl. Это делает его еще более удобным, когда вы перемещаете содержимое из одной папки в другую, потому что вам не нужно изменять MPD, т. Е. Менять BaseUrl.

Третий вопрос: Это возможно и другие услуги, такие как bitcodin.com являются структурированием содержания таким образом, и с помощью SegmentTemplate, обеспечивая при этом ПДСЕ для всех индивидуальных представлений. Это упрощает удаление или добавление представлений. С MP4Box вы можете использовать флаг -segment-name и включить подкаталог для каждого представления с, например, $ RepresentationID $/CanalMetroLivinglab3DTV-HD-Musica_ $ Number $ .m4s. Во всяком случае, нет необходимости делать это так. Я настоятельно рекомендую использовать SegmentTemplate, поскольку он делает ваш MPD более компактным (меньше байтов, уменьшает задержку запуска). Возможно с MP4Box и флагом -url-template. Btw. ваш контент, созданный с помощью MP4Box, кажется действительным, по крайней мере, с точки зрения MPEG-DASH MPD. Вы всегда можете проверить, действует ли ваш MPD с MPD-Validator из Университета Клагенфурта.