Вот шаги воспроизведения:
Нормализация видеопотока H.264
ffmpeg -i 2.h264 -c: v libx264 -intra -r 25 -vf scale = 640x360, setdar = 16: 9 2 @ 25fps @ intra @ 640x360.h264
(*) После этого я получил поток H.264, где все изображения - это кадры H.264 IDR, а fps - 25, разрешение - 640x360, соотношение сторон - 16: 9.
Создание файла MP4
MP4Box -add 2 @ 25fps @ intra @ 640x360.h264: шкала времени = 1000 -fps 25 2 @ 25fps @ intra @ 640x360.mp4
Создание фрагментированного содержимого dash MP4, включая файлы init mp4, .m4s и один файл .mpd
MP4Box -dash 5000 -frag 5000 -dash-scale 1000 -frag-rap -segment-name 'seg_second $ Number $' -segment-timeline -profile live 2 @ 25fps @ intra @ 640x360. mp4
- Скопируйте и опубликуйте все эти файлы в папке на одном HTTPD-сервере
Я хочу играть с 4-х секунд первого сегмента и не отображать никаких кадров раньше 4-х, поэтому я изменил файл .MPD, чтобы изменить поля "SegmentTemplate @ presentationTimeOffset", "SegmentTimeline: S @ d / т ", например:
<?xml version="1.0"?>
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500S" type="static" mediaPresentationDuration="PT0H0M26.000S" maxSegmentDuration="PT0H0M5.000S" profiles="urn:mpeg:dash:profile:isoff-live:2011">
<Period duration="PT0H0M26.000S">
<AdaptationSet segmentAlignment="true" maxWidth="640" maxHeight="360" maxFrameRate="25" par="16:9" lang="und">
<SegmentTemplate presentationTimeOffset="4000" media="seg_second$Number$.m4s" timescale="1000" startNumber="1" initialization="seg_secondinit.mp4">
<SegmentTimeline>
<S d="1000" t="4000"/>
<S d="5000" r="4"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="1" mimeType="video/mp4" codecs="avc3.64101E" width="640" height="360" frameRate="25" sar="1:1" startWithSAP="1" bandwidth="2261831">
</Representation>
</AdaptationSet>
</Period>
</MPD>
Воспроизведение URL-адреса MPD из проигрывателя VLC или браузера Edge, он всегда запускает первый кадр первого сегмента, также неожиданно отображаются кадры в диапазоне от 0 до 4 секунд.
Что не так с моими шагами? Или есть другие варианты?