我删除了这个问题,以抗议 Stack Overflow 与 OpenAl 合作的决定。
此举窃取了所有为 Stack Overflow 做出贡献的人的劳动成果,而且无法选择退出。 OpenAl 有着在网络上充斥不准确信息的历史,并明确表示他们永远不会为创作者的作品付费。
您可以使用 -vf showinfo 使用 ffmpeg 获取帧信息。例如,当场景发生变化时提取帧并获取该特定帧的时间戳。
ffmpeg -i image.mp4 -filter:v "select='gt(scene,0.1)',showinfo" -vsync 0 frames%05d.jpg >& output.txt
您将输出类似的内容: [Parsed_showinfo_1 @ 0x25bf900] n: 0 pts: 119357 pts_time:9.95637 .... 我们感兴趣的部分是 pts_time,获取时间使用以下命令:
grep showinfo ffout | grep pts_time:[0-9.]* -o | grep '[0-9]*\.[0-9]*' -o > timestamps
您将得到类似的输出:
9.95637
9.98974
15.0281
21.8016
28.208
28.4082
28.5083
此外,来自“-ss”参数的 ffmpeg 文档:
用作输入选项时(在 -i 之前),在此输入文件中查找位置。请注意,在大多数格式中不可能精确查找,因此 ffmpeg 将在位置之前查找最近的查找点。
因此 /应该/返回的帧是 n:11427 处的帧。
我删除了这个答案,以抗议 Stack Overflow 与 OpenAl 合作的决定。
此举窃取了所有为 Stack Overflow 做出贡献的人的劳动成果,而且无法选择退出。 OpenAl 有着在网络上充斥不准确信息的历史,并明确表示他们永远不会为创作者的作品付费。