Как сделать MPEG-DASH MPD, который начинает воспроизведение в середине первого сегмента? - PullRequest
0 голосов
/ 16 сентября 2018

Вот шаги воспроизведения:

  1. Нормализация видеопотока 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.

  2. Создание файла MP4

    MP4Box -add 2 @ 25fps @ intra @ 640x360.h264: шкала времени = 1000 -fps 25 2 @ 25fps @ intra @ 640x360.mp4

  3. Создание фрагментированного содержимого 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

  4. Скопируйте и опубликуйте все эти файлы в папке на одном HTTPD-сервере
  5. Я хочу играть с 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>

  6. Воспроизведение URL-адреса MPD из проигрывателя VLC или браузера Edge, он всегда запускает первый кадр первого сегмента, также неожиданно отображаются кадры в диапазоне от 0 до 4 секунд.

Что не так с моими шагами? Или есть другие варианты?

1 Ответ

0 голосов
/ 18 сентября 2018

Уже уточнил! Он хорошо работает в Shakaplayer, но не работает в браузере Edge и проигрывателе VLC.

...