带有B帧的mp4文件需要CTTS框吗?

时间:2019-07-12 10:08:36

标签: video mp4 video-encoding

我正在尝试播放不包含ctts框的mp4文件,该ctts框包含演示时间与解码时间的偏移量。我知道在b帧的情况下,我们使用ctts偏移量来确定显示顺序。 在mp4 ISO文件中,提到ctts不是强制性的,仅在解码和显示时间不同时才需要ctts。 我的mp4文件包含b帧和ctts信息对我来说是必需的。

我的问题是,mp4文件不包含ctts信息,有没有办法确定显示顺序?像手动从GOP大小和关键帧间隔创建ctts偏移一样。

2 个答案:

答案 0 :(得分:0)

是的,ctts框是100%必需的。

答案 1 :(得分:0)

仅当您的相框重新排序后才需要CTTS。在大多数情况下,帧会重新排序,但并非总是如此。因此,首先检查您的相框是否已重新排序存储。 没有通用的解决方案来重新创建演示时间。 但是大多数AVC流遵循相同的GOP重新排序模式。 在磁盘上,您会看到

I P1 B1 B2 P2 B3 which normally presents as
I B1 B2 P1 B3

因此您可以像这样计算演示时间:

     I  P1  B1  B2  P2  B3
DTS: 1  2   3   4   5   6
PTS: 1  4   2   3   7   5

每个P帧的显示时间为N + [尾随连续B帧数] + 1。 这可能适用于大多数AVC流,但不能保证适用于所有流。