为什么编码为 H264 时会丢失 PTS 信息?
Why do I lose PTS information when encoding to H264?
我有一个视频文件,带有这个视频流:
ffmpeg -i original.avi
Stream #0:0: Video: h264 (Main) (H264 / 0x34363248), yuv420p(tv,
bt709, progressive), 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
使用此视频流:
Stream #0:0: Video: h264 (High) (H264 / 0x34363248),
yuv420p(progressive), 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 信息,我应该在命令中更改什么?
AVI 并不真正支持 H.264。
有一些技巧可以使其发挥作用,但您会产生一些副作用也就不足为奇了。考虑改用 MP4 或 MKV。
我有一个视频文件,带有这个视频流:
ffmpeg -i original.avi
Stream #0:0: Video: h264 (Main) (H264 / 0x34363248), yuv420p(tv, bt709, progressive), 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
使用此视频流:
Stream #0:0: Video: h264 (High) (H264 / 0x34363248), yuv420p(progressive), 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 信息,我应该在命令中更改什么?
AVI 并不真正支持 H.264。
有一些技巧可以使其发挥作用,但您会产生一些副作用也就不足为奇了。考虑改用 MP4 或 MKV。