MP4 moof 片段 headers

MP4 moof fragment headers

我有一个 MP4 解析器软件,它获取片段 .mp4 视频,解析 MOOV 和片段 headers 并将其流式传输。我自己使用 FFMPEGMP4Box/bento4 生成了一个 .mp4 文件,但软件在处理它时出现问题。

ffmpeg -i input.mp4 -g 25 -c:v libx264 -c:a copy out1.mp4

mp4fragment out1.mp4 --fragment-duration 1000 --track 'video' output.mp4

使用 MP4 Explorer 软件,我注意到在我生成的 .mp4 文件中,对于所有 moof.traf.trun,采样持续时间设置为 0 ,但在 Track Fragment Header 框中,它将 default_sample_duration 设置为 512。而在另一个工作正常的 .mp4 文件中,没有 default_sample_duration 字段,但每个单个样本的持续时间为 512。看起来这可能会导致问题。右图是工作的mp4,左图是我生成的mp4。

这是 FFMPEG(或 MP4Boxbento4)较新版本的更新吗?有什么方法可以强制设置样本中的样本持续时间?

My .mp4 file

The working .mp4 file

  1. 解析 TFHD
  2. 提取default_sample_duration
  3. 使用 default_sample_duration 而不是 TRUN
  4. 中缺少的持续时间