在 ffprobe 中获取关键帧数的方法比 "show_frames" 更快?
Faster way of getting number of key frames than "show_frames" in ffprobe?
我正在使用 ffmpg
和 ffprobe
制作一个小的内部实用程序。工作正常并完成所需的工作:给出视频文件中关键帧的数量以及一些其他细节。
唉,对于大型视频文件,这将用于 show_frames
到 return 可能需要很多秒 – 然后我必须解析帧的 JSON 转储数据并保留 运行 个关键帧总数。
有没有更快的方法?也许它列在 "stream" 或 "format" 数据转储中,但我不知道它叫什么?我浏览了 ffmpg
和 ffprobe
文档,但没有找到任何其他内容。
对于 MP4 和 MOV 文件,您可以通过阅读 STSS 框的内容来获取此信息
您可以使用像 MP4parser 这样的工具,它会生成一个日志文件,其中包含如下条目:
/moov/trak/mdia/minf/stbl/stss @ 0x1d7218e
Box size: 0x74 version: 0x0 flags: 0x0
entry_count: 0x19
sample_number:
0x1 0x86 0x180 0x27a ....
条目计数(十六进制)就是您想要的数字。
另外,atomicparsley 还会告诉您 STSS 在文件中的位置,然后您可以直接读取它。
我正在使用 ffmpg
和 ffprobe
制作一个小的内部实用程序。工作正常并完成所需的工作:给出视频文件中关键帧的数量以及一些其他细节。
唉,对于大型视频文件,这将用于 show_frames
到 return 可能需要很多秒 – 然后我必须解析帧的 JSON 转储数据并保留 运行 个关键帧总数。
有没有更快的方法?也许它列在 "stream" 或 "format" 数据转储中,但我不知道它叫什么?我浏览了 ffmpg
和 ffprobe
文档,但没有找到任何其他内容。
对于 MP4 和 MOV 文件,您可以通过阅读 STSS 框的内容来获取此信息
您可以使用像 MP4parser 这样的工具,它会生成一个日志文件,其中包含如下条目:
/moov/trak/mdia/minf/stbl/stss @ 0x1d7218e
Box size: 0x74 version: 0x0 flags: 0x0
entry_count: 0x19
sample_number:
0x1 0x86 0x180 0x27a ....
条目计数(十六进制)就是您想要的数字。
另外,atomicparsley 还会告诉您 STSS 在文件中的位置,然后您可以直接读取它。