2014-02-07 5 views
4

Как определить количество сегментов DASH-носителя, если в файле MPD нет списков URL-адреса сегмента? Он имеет только сегментный шаблон, поэтому я не знаю, сколько сегментов связано с медиа, связанным с этим MPD. Это MPD, о котором я говорю:Число сегментов в DASH MPD

<MPD type="static" xmlns="urn:mpeg:DASH:schema:MPD:2011" profiles="urn:mpeg:dash:profile:full:2011" minBufferTime="PT1.5S" mediaPresentationDuration="PT0H1M59.89S"> 
<ProgramInformation moreInformationURL="http://gpac.sourceforge.net"> 
    <Title>Media Presentation Description for file hdworld_0696kbps_ffmpeg_track1.mp4 generated with GPAC </Title> 
</ProgramInformation> 
<Period start="PT0S" duration="PT0H1M59.89S"> 
    <AdaptationSet> 
    <ContentComponent id="1" contentType="video"/> 
    <SegmentTemplate initialization="/$Bandwidth$/hdworld_ffmpeg_track1_dash.mp4" timescale="1000" duration="4920" media="/$Bandwidth$/hdworld_ffmpeg_track1_$Number$.m4s" startNumber="1"/> 
    <Representation id="1" mimeType="video/mp4" codecs="avc1.64001f" width="1280" height="720" startWithSAP="1" bandwidth="534343"/> 
    <Representation id="2" mimeType="video/mp4" codecs="avc1.64001f" width="1280" height="720" startWithSAP="1" bandwidth="812553"/> 
    <Representation id="3" mimeType="video/mp4" codecs="avc1.64001f" width="1280" height="720" startWithSAP="1" bandwidth="1607692"/> 
    </AdaptationSet> 
    <AdaptationSet> 
    <ContentComponent id="2" contentType="audio" lang="und"/> 
    <SegmentTemplate initialization="/audio/HDWorld_audio_init.mp4"/> 
    <Representation id="6" mimeType="audio/mp4" codecs="mp4a.40.02" sampleRate="44100" numChannels="2" lang="und" startWithSAP="1" bandwidth="257141"> 
    <SegmentTemplate timescale="1000" duration="9980" media="/audio/hdworld_seg_audio$Number$.m4s" startNumber="1"/> 
    </Representation> 
    </AdaptationSet> 
</Period> 
</MPD> 

Моя цель - получить все URI всех существующих сегментов.

ответ

13

В этом примере вы можете видеть, что сегменты аудио занимают 9,98 секунды (длительность = 9980, шкала времени = 1000). Поскольку продолжительность представления составляет 1 м 59,89 с (продолжительность = «PT0H1M59.89S»), это около 13 сегментов (последний из них короче). Используйте шаблон URL (/audio/hdworld_seg_audio$Number$.m4s) для извлечения каждого сегмента (замените $ Number $ на нужный сегментный номер (первый из которых равен 1). То же самое касается видео сегментов (за исключением того, что они 4,92 секунды, поэтому у вас будет 25 сегментов)