Как сделать MPEG-DASH MPD, который запускает воспроизведение в середине первого сегмента?

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

  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, частота кадров 25, разрешение 640x360, соотношение сторон 16: 9.

  2. Создать файл MP4

    MP4Box -add 2 @ 25fps @ intra @ 640x360.h264: timescale = 1000 -fps 25 2 @ 25fps @ intra @ 640x360.mp4

  3. Сделать фрагментированный контент в формате 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 / t», как :
    <?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 также отображаются неожиданно.

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


person ravin.wang    schedule 16.09.2018    source источник


Ответы (1)


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

person ravin.wang    schedule 18.09.2018