为何编码为H264时会丢失PTS信息?

时间:2019-02-28 10:06:47

标签: encoding ffmpeg h.264 pts

我有一个视频文件,带有以下视频流:

ffmpeg -i original.avi

  

流#0:0:视频:h264(主)(H264 / 0x34363248),yuv420p(tv,   bt709,逐行扫描),1920x1080 [SAR 1:1 DAR 16:9],4204 kb / s,59.94   fps,59.94 tbr,59.94 tbn,59.94 tbc

我可以通过运行以下命令获取PTS信息:

ffprobe -v 0 -of csv=p=0 -select_streams v -show_entries packet=pts_time original.avi

然后逐行获取每个帧的PTS:

0.016683
0.116783
0.033367
0.050050
0.166833
0.083417
0.100100
0.216883
...

现在我需要将视频编码为H264,然后能够获取相同的PTS信息,所以我使用了:

ffmpeg -i original.avi -vcodec libx264 output.avi

使用此视频流:

  

流#0:0:视频:h264(高)(H264 / 0x34363248),   yuv420p(渐进式),1920x1080 [SAR 1:1 DAR 16:9],2289 kb / s,59.94   fps,59.94 tbr,59.94 tbn,119.88 tbc

但是当我尝试从output.avi获取PTS信息时,我只会得到:

N/A
N/A
N/A
N/A
N/A
N/A
...

为了保留PTS信息,我应该在命令中进行哪些更改?

1 个答案:

答案 0 :(得分:1)

AVI并不真正支持H.264。

有一些使它起作用的技巧,但是您会产生一些副作用也就不足为奇了。考虑改用MP4或MKV。