ffprobe - 随机帧元数据
ffprobe - shuffled frame metadata
我正在使用 mkvmerge
将 mp4 CFR 视频与包含 VFR 时间戳的文本文件相结合。使用的命令是
mkvmerge --timestamps 0:timestamps.txt input_video.mp4 -o output_video.mkv
其中文本文件 timestamps.txt
是 v2 时间戳格式。这是前几个条目
# timecode format v2
0
6
21
36
53
71
87
103
123
我正在尝试用
打印这些时间戳
ffprobe -v 0 -show_entries packet=pts,duration -of compact=p=0:nk=1 -select_streams v output_video.mkv
但是我收到了打乱的条目
0|6
6|15
21|15
36|17
53|18
123|15
87|16
71|16
103|20
例如,如果我用 PyAV
读取帧,我会得到正确顺序的值。
import av
c = av.open("output_video.mkv")
for frame in c.decode(video=0):
print(frame.pts)
输出:
0
6
21
36
53
71
87
103
123
我是不是用错了ffprobe?非常欢迎任何帮助!
如果视频流有 B 帧,则作为 B 帧参考的未来 P 帧将首先编码并按该顺序存储。它们在解码后重新排序。
对于ffprobe,packet
中的条目按解码或存储顺序排列。在frames
中,它们被解码并按呈现顺序排列。
我正在使用 mkvmerge
将 mp4 CFR 视频与包含 VFR 时间戳的文本文件相结合。使用的命令是
mkvmerge --timestamps 0:timestamps.txt input_video.mp4 -o output_video.mkv
其中文本文件 timestamps.txt
是 v2 时间戳格式。这是前几个条目
# timecode format v2
0
6
21
36
53
71
87
103
123
我正在尝试用
打印这些时间戳ffprobe -v 0 -show_entries packet=pts,duration -of compact=p=0:nk=1 -select_streams v output_video.mkv
但是我收到了打乱的条目
0|6
6|15
21|15
36|17
53|18
123|15
87|16
71|16
103|20
例如,如果我用 PyAV
读取帧,我会得到正确顺序的值。
import av
c = av.open("output_video.mkv")
for frame in c.decode(video=0):
print(frame.pts)
输出:
0
6
21
36
53
71
87
103
123
我是不是用错了ffprobe?非常欢迎任何帮助!
如果视频流有 B 帧,则作为 B 帧参考的未来 P 帧将首先编码并按该顺序存储。它们在解码后重新排序。
对于ffprobe,packet
中的条目按解码或存储顺序排列。在frames
中,它们被解码并按呈现顺序排列。