ffmpeg-mp4box-mpeg dash仅播放少数片段

ffmpeg-mp4box-mpeg dash仅播放少数片段,ffmpeg,x264,mpeg-dash,Ffmpeg,X264,Mpeg Dash,需要调试段划线文件的帮助吗 输入是带有这些细节的MP4。这是从摄像机上录制的,摄像机的输出是mkv,我们通过adobe编辑音频后转换成MP4 大小:7.51 GB帧速率:25帧/秒 数据速率:25326kbps 总比特率:25525kbps 使用此命令将其转换为另一个mp4 ffmpeg -i "input.mp4" -s 1280x720 -c:v libx264 -b:v 750k -bf 2 -g 75 -sc_threshold 0 -an video_1280x720_750k.m

需要调试段划线文件的帮助吗

输入是带有这些细节的MP4。这是从摄像机上录制的,摄像机的输出是mkv,我们通过adobe编辑音频后转换成MP4

  • 大小:7.51 GB帧速率:25帧/秒
  • 数据速率:25326kbps
  • 总比特率:25525kbps
使用此命令将其转换为另一个mp4

ffmpeg -i "input.mp4" -s 1280x720 -c:v libx264 -b:v 750k -bf 2 -g 75 -sc_threshold 0 -an video_1280x720_750k.mp4

ffmpeg -i "input.mp4"  -c:a aac -strict experimental -b:a 96k -ar 32000 -vn audio_96k.mp4
输出视频已恢复

  • fps:25
  • 数据速率:761kbps
  • 比特率:761kbps
然后,通过MP4Box创建分段破折号

MP4Box -dash 10000 -frag 10000 -rap -segment-name video_0_1280000\segment_ video_1280x720_750k.mp4

MP4Box -dash 3000 -frag 10000 -rap -segment-name audio_0_96000\segment_ audio_96k.mp4
生成的MPD经过在线验证,其性能完美

更新包含MPD文件

<?xml version="1.0"?>
<!-- MPD file Generated with GPAC version 0.5.2-DEV-rev621-g236c5f8-master  at 2015-10-26T05:16:19.619Z-->
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" minBufferTime="PT1.500S" type="static" mediaPresentationDuration="PT0H2M0.000S" maxSegmentDuration="PT0H0M10.000S" profiles="urn:mpeg:dash:profile:full:2011">
 <ProgramInformation moreInformationURL="http://gpac.sourceforge.net">
  <Title>video_1280x720_500k_dash.mpd generated by GPAC</Title>
 </ProgramInformation>

 <Period duration="PT0H2M0.000S">
   <AdaptationSet segmentAlignment="true" lang="eng">
     <Representation id="1" mimeType="audio/mp4" codecs="mp4a.40.2" audioSamplingRate="32000" startWithSAP="1" bandwidth="98434">
       <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
       <SegmentList timescale="32000" duration="319999">
         <Initialization sourceURL="audio_0_96000/segment_init.mp4"/>
         <SegmentURL media="audio_0_96000/segment_1.m4s"/>
         <SegmentURL media="audio_0_96000/segment_2.m4s"/>
         <SegmentURL media="audio_0_96000/segment_3.m4s"/>
         <SegmentURL media="audio_0_96000/segment_4.m4s"/>
         <SegmentURL media="audio_0_96000/segment_5.m4s"/>
         <SegmentURL media="audio_0_96000/segment_6.m4s"/>
         <SegmentURL media="audio_0_96000/segment_7.m4s"/>
         <SegmentURL media="audio_0_96000/segment_8.m4s"/>
         <SegmentURL media="audio_0_96000/segment_9.m4s"/>
         <SegmentURL media="audio_0_96000/segment_10.m4s"/>
         <SegmentURL media="audio_0_96000/segment_11.m4s"/>
         <SegmentURL media="audio_0_96000/segment_12.m4s"/>
         <SegmentURL media="audio_0_96000/segment_13.m4s"/>
       </SegmentList>
     </Representation>
   </AdaptationSet>
  <AdaptationSet segmentAlignment="true" maxWidth="1280" maxHeight="720" maxFrameRate="25" par="16:9" lang="eng">
   <Representation id="1" mimeType="video/mp4" codecs="avc3.64001f" width="1280" height="720" frameRate="25" sar="1:1" startWithSAP="1" bandwidth="764668">
    <SegmentList timescale="12800" duration="125866">
     <Initialization sourceURL="video_0_1280000/segment_init.mp4"/>
     <SegmentURL media="video_0_1280000/segment_1.m4s"/>
     <SegmentURL media="video_0_1280000/segment_2.m4s"/>
     <SegmentURL media="video_0_1280000/segment_3.m4s"/>
     <SegmentURL media="video_0_1280000/segment_4.m4s"/>
     <SegmentURL media="video_0_1280000/segment_5.m4s"/>
     <SegmentURL media="video_0_1280000/segment_6.m4s"/>
     <SegmentURL media="video_0_1280000/segment_7.m4s"/>
     <SegmentURL media="video_0_1280000/segment_8.m4s"/>
     <SegmentURL media="video_0_1280000/segment_9.m4s"/>
     <SegmentURL media="video_0_1280000/segment_10.m4s"/>
     <SegmentURL media="video_0_1280000/segment_11.m4s"/>
     <SegmentURL media="video_0_1280000/segment_12.m4s"/>
     <SegmentURL media="video_0_1280000/segment_13.m4s"/>
    </SegmentList>
   </Representation>
  </AdaptationSet>

 </Period>
</MPD>

GPAC生成的视频_1280x720_500k_dash.mpd
通过dashjs播放视频。。我相信它只是播放最初的片段,并以媒体错误解码的形式输出错误。不支持媒体错误。。或显示“开始”的消息未找到

通过chrome调试,我发现至少有4个段正确加载。。我不知道发生了什么事

非常感谢您在调试此问题时提供的任何帮助我真的不明白这是否是文件或ffmpeg、mp4box或chrome的问题

chrome调试工具的输出

[dash.js 1.5.1] new MediaPlayer instance has been created 
dash.all.js:11 Playback initiated! 
dash.all.js:11 Parsing complete: ( xml2json: 5ms, objectiron: 10ms, total: 0.015s) 
dash.all.js:11 Manifest has been refreshed at Mon Oct 26 2015 10:19:22 GMT-0400 (Eastern Daylight Time)[1445869162092]  
dash.all.js:11 SegmentTimeline detected using calculated Live Edge Time 
dash.all.js:11 MediaSource is open! 
dash.all.js:11 [object Event] 
dash.all.js:11 Duration successfully set to: 120 
dash.all.js:11 Added 0 inline events 
dash.all.js:11 video codec: video/mp4;codecs="avc3.64001f" 
dash.all.js:11 [video] stop 
dash.all.js:11 audio codec: audio/mp4;codecs="mp4a.40.2" 
dash.all.js:11 [audio] stop 
dash.all.js:11 No text data. 
dash.all.js:11 No fragmentedText data. 
dash.all.js:11 No muxed data. 
dash.all.js:11 [video] start 
dash.all.js:11 [video] Getting the request for time: 0 
dash.all.js:11 [video] Index for time 0 is 0 
dash.all.js:11 [video] SegmentList: 0 / 120 
dash.all.js:11 [audio] start 
dash.all.js:11 [audio] Getting the request for time: 0 
dash.all.js:11 [audio] Index for time 0 is 0 
dash.all.js:11 [audio] SegmentList: 0 / 120 
dash.all.js:11 [video] Getting the request for time: 9.83328125 
dash.all.js:11 [video] Index for time 9.83328125 is 0 
dash.all.js:11 [video] SegmentList: 0 / 120 
dash.all.js:11 [video] SegmentList: 9.83328125 / 120 
dash.all.js:11 [audio] Getting the request for time: 9.99996875 
dash.all.js:11 [audio] Index for time 9.99996875 is 0 
dash.all.js:11 [audio] SegmentList: 0 / 120 
dash.all.js:11 [audio] SegmentList: 9.99996875 / 120 
dash.all.js:11 loaded audio:Media Segment:0 (200, 20ms, 6ms) 
dash.all.js:11 loaded video:Media Segment:0 (200, 153ms, 43ms) 
dash.all.js:11 loaded video:Initialization Segment:NaN (200, 0ms, 32ms) 
dash.all.js:11 [video] Initialization finished loading 
dash.all.js:11 loaded audio:Initialization Segment:NaN (200, 0ms, 34ms) 
dash.all.js:11 [audio] Initialization finished loading 
dash.all.js:11 [video] Getting the request for time: 19.6665625 
dash.all.js:11 [video] Index for time 19.6665625 is 1 
dash.all.js:11 [video] SegmentList: 9.83328125 / 120 
dash.all.js:11 [video] SegmentList: 19.6665625 / 120 
dash.all.js:11 [audio] Getting the request for time: 19.9999375 
dash.all.js:11 [audio] Index for time 19.9999375 is 1 
dash.all.js:11 [audio] SegmentList: 9.99996875 / 120 
dash.all.js:11 [audio] SegmentList: 19.9999375 / 120 
dash.all.js:11 [video] Stalling Buffer 
dash.all.js:11 [video] Waiting for more buffer before starting playback. 
dash.all.js:11 [video] Getting the request for time: 0 
dash.all.js:11 [video] Index for time 0 is 0 
dash.all.js:11 [audio] Stalling Buffer 
dash.all.js:11 [audio] Waiting for more buffer before starting playback. 
dash.all.js:11 [audio] Getting the request for time: 0 
dash.all.js:11 [audio] Index for time 0 is 0 
dash.all.js:11 <video> loadedmetadata 
dash.all.js:11 Starting playback at offset: 0 
dash.all.js:11 [video] Getting the request for time: 29.499843750000004 
dash.all.js:11 [video] Index for time 29.499843750000004 is 2 
dash.all.js:11 [video] SegmentList: 19.6665625 / 120 
dash.all.js:11 [video] SegmentList: 29.499843750000004 / 120 
dash.all.js:11 [video] Got enough buffer to start. 
dash.all.js:11 [video] seek: 0 
dash.all.js:11 [audio] Getting the request for time: 29.999906250000002 
dash.all.js:11 [audio] Index for time 29.999906250000002 is 2 
dash.all.js:11 [audio] SegmentList: 19.9999375 / 120 
dash.all.js:11 [audio] SegmentList: 29.999906250000002 / 120 
dash.all.js:11 [audio] Got enough buffer to start. 
dash.all.js:11 [audio] seek: 0 
dash.all.js:11 loaded audio:Media Segment:9.99996875 (200, 67ms, 24ms) 
dash.all.js:11 loaded video:Media Segment:9.83328125 (200, 71ms, 31ms) 
dash.all.js:11 [audio] Buffered Range: 0.032 - 9.984 
dash.all.js:11 [audio] Getting the request for time: 0 
dash.all.js:11 [audio] Index for time 0 is 0 
dash.all.js:11 Start Event Controller 
dash.all.js:11 [audio] Buffered Range: 0.032 - 19.999968 
dash.all.js:11 [audio] Getting the request for time: 0 
dash.all.js:11 [audio] Index for time 0 is 0 
dash.all.js:11 <video> play 
dash.all.js:11 [video] start 
dash.all.js:11 [video] Getting the request for time: 0 
dash.all.js:11 [video] Index for time 0 is 0 
dash.all.js:11 [video] SegmentList: 0 / 120 
dash.all.js:11 [video] SegmentList: 9.83328125 / 120 
dash.all.js:11 [video] SegmentList: 19.6665625 / 120 
dash.all.js:11 [audio] start 
dash.all.js:11 <video> playing 
dash.all.js:11 [video] Buffered Range: 0 - 9 
dash.all.js:11 [video] Getting the request for time: 0 
dash.all.js:11 [video] Index for time 0 is 0 
dash.all.js:11 Do seek: 0.032 
dash.all.js:11 <video> seek 
dash.all.js:11 [video] Getting the request for time: 29.499843750000004 
dash.all.js:11 [video] Index for time 29.499843750000004 is 2 
dash.all.js:11 [video] SegmentList: 19.6665625 / 120 
dash.all.js:11 [video] SegmentList: 29.499843750000004 / 120 
dash.all.js:11 [video] seek: 0.032 
dash.all.js:11 [audio] seek: 0.032 
dash.all.js:11 [video] Getting the request for time: 9 
dash.all.js:11 [video] Index for time 9 is 0 
dash.all.js:11 [video] SegmentList: 0 / 120 
dash.all.js:11 [video] SegmentList: 9.83328125 / 120 
dash.all.js:11 [video] SegmentList: 19.6665625 / 120 
dash.all.js:11 [video] SegmentList: 29.499843750000004 / 120 
dash.all.js:11 [video] Buffered Range: 0 - 18 
dash.all.js:11 [video] Getting the request for time: 0 
dash.all.js:11 [video] Index for time 0 is 0 
dash.all.js:11 loaded video:Media Segment:19.6665625 (200, 42ms, 33ms) 
dash.all.js:11 <video> seeked 
dash.all.js:11 Start Event Controller 
dash.all.js:11 <video> playing 
dash.all.js:11 [video] Buffered Range: 0 - 28 
dash.all.js:11 [video] Getting the request for time: 0 
dash.all.js:11 [video] Index for time 0 is 0 
dash.all.js:11 [audio] Getting the request for time: 19.999968 
dash.all.js:11 [audio] Index for time 19.999968 is 1 
dash.all.js:11 [audio] SegmentList: 9.99996875 / 120 
dash.all.js:11 [audio] SegmentList: 19.9999375 / 120 
dash.all.js:11 [audio] Getting the request for time: 29.999906250000002 
dash.all.js:11 [audio] Index for time 29.999906250000002 is 2 
dash.all.js:11 [audio] SegmentList: 19.9999375 / 120 
dash.all.js:11 [audio] SegmentList: 29.999906250000002 / 120 
dash.all.js:11 loaded audio:Media Segment:19.9999375 (200, 102ms, 2ms) 
dash.all.js:11 [audio] Buffered Range: 0.032 - 29.983968 
dash.all.js:11 [audio] Getting the request for time: 0 
dash.all.js:11 [audio] Index for time 0 is 0 
dash.all.js:11 loaded audio:Media Segment:29.999906250000002 (200, 26ms, 2ms) 
dash.all.js:11 [audio] Buffered Range: 0.032 - 39.999968 
dash.all.js:11 [audio] Getting the request for time: 0 
dash.all.js:11 [audio] Index for time 0 is 0 
dash.all.js:11 loaded video:Media Segment:29.499843750000004 (200, 47ms, 7ms) 
dash.all.js:11 Video Element Error: MEDIA_ERR_DECODE 
dash.all.js:11 [video] stop 
dash.all.js:11 [audio] stop 
dash.all.js:11 Video Element Error: MEDIA_ERR_SRC_NOT_SUPPORTED 
dash.all.js:11 <video> play 
[dash.js 1.5.1]已创建新的MediaPlayer实例
dash.all.js:11播放已启动!
dash.all.js:11解析完成:(xml2json:5ms,objectiron:10ms,总计:0.015秒)
dash.all.js:11清单已于2015年10月26日星期一10:19:22 GMT-0400(东部夏令时)刷新[1445869162092]
dash.all.js:11使用计算的实时边缘时间检测到时间线
dash.all.js:11 MediaSource是开放的!
dash.all.js:11[对象事件]
dash.all.js:11持续时间成功设置为:120
dash.all.js:11添加了0个内联事件
dash.all.js:11视频编解码器:video/mp4;编解码器=“avc3.64001f”
dash.all.js:11[视频]停止
dash.all.js:11音频编解码器:audio/mp4;编解码器=“mp4a.40.2”
dash.all.js:11[音频]停止
dash.all.js:11没有文本数据。
dash.all.js:11没有碎片文本数据。
dash.all.js:11没有混合数据。
dash.all.js:11[视频]开始
dash.all.js:11[视频]获取时间请求:0
dash.all.js:11时间0的[视频]索引为0
dash.all.js:11[视频]片段列表:0/120
dash.all.js:11[音频]开始
dash.all.js:11[音频]获取时间请求:0
dash.all.js:11时间0的[音频]索引为0
dash.all.js:11[音频]片段列表:0/120
dash.all.js:11[视频]获取时间请求:9.83328125
dash.all.js:11[视频]时间9.83328125的索引为0
dash.all.js:11[视频]片段列表:0/120
dash.all.js:11[视频]片段列表:9.83328125/120
dash.all.js:11[音频]获取时间请求:9.99996875
dash.all.js:11时间9.99996875的[音频]索引为0
dash.all.js:11[音频]片段列表:0/120
dash.all.js:11[音频]片段列表:9.99996875/120
dash.all.js:11加载的音频:媒体段:0(200、20ms、6ms)
dash.all.js:11加载的视频:媒体段:0(200153ms,43ms)
dash.all.js:11加载视频:初始化段:NaN(200,0毫秒,32毫秒)
dash.all.js:11[视频]初始化完成加载
dash.all.js:11加载音频:初始化段:NaN(200,0毫秒,34毫秒)
dash.all.js:11[音频]初始化完成加载
dash.all.js:11[视频]获取时间请求:19.6665625
dash.all.js:11[视频]时间19.6665625的索引是1
dash.all.js:11[视频]片段列表:9.83328125/120
dash.all.js:11[视频]片段列表:19.6665625/120
dash.all.js:11[音频]获取时间请求:19.9999375
dash.all.js:11时间19.999975的[音频]索引为1
dash.all.js:11[音频]片段列表:9.99996875/120
dash.all.js:11[音频]片段列表:19.999975/120
dash.all.js:11[视频]暂停缓冲区
dash.all.js:11[视频]在开始播放之前等待更多缓冲区。
dash.all.js:11[视频]获取时间请求:0
dash.all.js:11时间0的[视频]索引为0
dash.all.js:11[音频]暂停缓冲区
dash.all.js:11[音频]在开始播放之前等待更多缓冲区。
dash.all.js:11[音频]获取时间请求:0
dash.all.js:11时间0的[音频]索引为0
dash.all.js:11 loadedmetadata
dash.all.js:11在偏移量0处开始播放
dash.all.js:11[视频]获取时间请求:29.499843750000004
dash.all.js:11[视频]时间29.499843750000004的索引是2
dash.all.js:11[视频]片段列表:19.6665625/120
dash.all.js:11[视频]片段列表:29.499843750000004/120
dash.all.js:11[视频]有足够的缓冲区启动。
dash.all.js:11[视频]搜索:0
dash.all.js:11[音频]获取时间请求:29.9999062500002
dash.all.js:11时间29.99906500002的[音频]索引是2
dash.all.js:11[音频]片段列表:19.999975/120
dash.all.js:11[音频]片段列表:29.9999062500002/120
dash.all.js:11[音频]有足够的缓冲区启动。
dash.all.js:11[音频]寻道:0
dash.all.js:11加载的音频:媒体段:9.99996875(20067ms,24ms)
dash.all.js:11加载的视频:媒体段:9.83328125(20071ms,31ms)
dash.all.js:11[音频]缓冲范围:0.032-9.984
dash.all.js:11[音频]获取时间请求:0
dash.all.js:11时间0的[音频]索引为0
dash.all.js:11启动事件控制器
dash.all.js:11[音频]缓冲范围:0.032-19.999968
dash.all.js:11[音频]获取时间请求:0
dash.all.js:11时间0的[音频]索引为0
dash.all.js:11播放
dash.all.js:11[视频]开始
dash.all.js:11[视频]获取时间请求:0
dash.all.js:11时间0的[视频]索引为0
dash.all.js:11[视频]片段列表:0/120
dash.all.js:11[视频]
-profile:v main