如何将 MP4 摘录与视频帧相关联?

How to correlate MP4 excerpt to frame(s) of video?

我有一个 MP4 文件和一个 16kb 的文件摘录。我想知道摘录匹配的帧。我可以找到摘录的偏移量,但我相信 MP4 编码是可变长度的(所以我不能只说 "this excerpt is from frame #(offset/framesize)")这也意味着我的摘录可能不在有效的帧边界上,所以我可以'只需将其重命名为 "excerpt.mp4" 并播放即可。

找出与摘录对应的帧的好方法是什么?

运行

ffprobe -show_entries frame=pkt_pos,pkt_size -select_streams v -of csv=p=0:nk=1 -v 0 in.mp4

它的输出将是

48|33720
54534|76
53159|974
54920|381
34070|19089
68405|520
67315|740
69279|397
55627|11356
84445|534
83571|536
85314|979

其中第一列是帧的起始字节偏移量,第二列是大小。帧 n 出现在行 # n 上。您可以使用任何 shell 工具等来检查您发现的偏移值在 positionposition+size 之间的哪一行。位置序列可能不是单调的,所以简单地检查第一列是不可靠的。