如何制作一个在第一段中间开始播放的MPEG-DASH MPD?

问题描述 投票:0回答:1

以下是重现步骤:

  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: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. 我想从第一段的4s开始播放,并且在4s之前不显示任何帧,所以我更改了.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. 从VLC播放器或Edge浏览器播放MPD URL,它始终启动第一段的第一帧,0s~4s之间的帧也会意外显示。

我的步骤有什么问题?或者其他任何选择?

ffmpeg mp4 mpeg-dash mp4box
1个回答
0
投票

已经澄清了!它在Shakaplayer中运行良好,但它在Edge浏览器和VLC播放器中不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.