MP4 moof 片段 headers
MP4 moof fragment headers
我有一个 MP4 解析器软件,它获取片段 .mp4
视频,解析 MOOV
和片段 headers 并将其流式传输。我自己使用 FFMPEG
和 MP4Box
/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
(或 MP4Box
或 bento4
)较新版本的更新吗?有什么方法可以强制设置样本中的样本持续时间?
- 解析 TFHD
- 提取default_sample_duration
- 使用 default_sample_duration 而不是 TRUN
中缺少的持续时间
我有一个 MP4 解析器软件,它获取片段 .mp4
视频,解析 MOOV
和片段 headers 并将其流式传输。我自己使用 FFMPEG
和 MP4Box
/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
(或 MP4Box
或 bento4
)较新版本的更新吗?有什么方法可以强制设置样本中的样本持续时间?
- 解析 TFHD
- 提取default_sample_duration
- 使用 default_sample_duration 而不是 TRUN 中缺少的持续时间