每个 mdat 中应包含多少个视频和音频样本?

How many video and audio samples should be included in each mdat?

我正在创建一个包含 2 个轨道的 FMP4(一个用于视频,一个用于音频)。我试图找出我应该在 mdat 中包含多少视频样本以及多少音频。

所以我的 FMP4 具有以下结构:

ftyp
moov
moof (track1 - video)
mdat (track1 - video)
moof (track2 - audio)
mdat (track2 - audio)
moof (track1 - video)
mdat (track1 - video)
moof (track2 - audio)
mdat (track2 - audio)
...

每个视频 mdat 应该只有 1 帧还是整个 GOP?

每个音频 mdat 是否应该具有前一个视频 mdat 的相应音频样本,或者我可以发送我想要的任意数量的音频样本(因为音频样本要小得多,我可以在发送视频 mdat 的同时发送大约 2 秒的音频之前只有 1 秒的持续时间)。

PS:我想在每个视频 mdat 上发送整个 GOP,但我注意到当我使用 ffmpeg 重新编码 fmp4 时,mdat 只有 1 帧。我可以做到这一点(每个 mdat 上只有 1 个视频帧),但是我不知道应该发送多少音频样本。如果我只发送该 1 个视频帧的相应音频样本,则音频播放效果不佳。

谢谢!

从几个使用 ffmpeg 的经验测试来看,它似乎喜欢将 0.5 秒的视频帧分组,然后是 0.5 秒的音频帧,而且看起来效果很好。

您可以自由选择分组,可以很简单,一个frame/packet一个盒子。分组对 reader 很重要,因为它可能更愿意在开始处理之前阅读完整的框。