最近学习了FFmpeg 编解码流程 使用QT写了一个音视频分流转码器,但是在进行转码操作的时候对PTS和DTS的含义理解的模糊不清,问了GPT给出的解释很专业化不太适合自己。PTS--Presentation Time Stamp 显示时间戳表示解码后的帧什么时候被显示出来,他的单位并不是视频的第几秒而是基于另一个数据成员time_base来的,每个视频流都会有一个time_base(时间基)他其实就是一个分数代表帧率,比如1/25,,1/30代表1s有25帧,30帧所以PTS代表的是一个视频的第几帧,也因此在进行转码操作的时候输入流和输出流的帧数所以才需要对PTS针对不同的time_base来进行转换,同理duration也是如此,并且可以基于packet里面的duration和输入流的duration来得到转码的进度,前提是要基于同一个time_base下。