我正在尝试播放不包含ctts框的mp4文件,该ctts框包含演示时间与解码时间的偏移量。我知道在b帧的情况下,我们使用ctts偏移量来确定显示顺序。 在mp4 ISO文件中,提到ctts不是强制性的,仅在解码和显示时间不同时才需要ctts。 我的mp4文件包含b帧和ctts信息对我来说是必需的。
我的问题是,mp4文件不包含ctts信息,有没有办法确定显示顺序?像手动从GOP大小和关键帧间隔创建ctts偏移一样。
答案 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流,但不能保证适用于所有流。