计算用于在 ffmpeg 中编码新视频和音频的 PTS 和 DTS

Calculate PTS and DTS for encoding new video and audio in ffmpeg

我在 MP4 文件中对与音频混合的新 H.264 视频进行编码。

如何正确计算视频和音频的AVPacket和AVFrame的PTS和DTS?

我从我的来源生成了新的视频帧和新的音频。没有原始 PTS/DTS 信息。我知道我需要使用的帧速率 (time_base)。

假设你的帧速率是恒定的。并在正确设置流时基之后。从零 (0) 开始两个点。每帧音频点将增加'sample per frame'。这通常是 audio_sample_rate / frame_rate(即 48000/60 = 800)。

对于视频来说,情况有所不同,而且更简单一些。视频点将每帧增加相同数量的 'Video frame duration'。使用此作弊 sheet 来计算持续时间:

FPS     Frame duration
23.98   2002
24.00   2000
25.00   2000
29.97   2002
30.00   2000
50.00   1000
59.94   1001
60.00   1000

是的,这些有点老套,但会起作用。