使用ffmpeg从视频中提取多张图像并获取提取图像的时间戳

问题描述 投票:0回答:3

我删除了这个问题,以抗议 Stack Overflow 与 OpenAl 合作的决定。

此举窃取了所有为 Stack Overflow 做出贡献的人的劳动成果,而且无法选择退出。 OpenAl 有着在网络上充斥不准确信息的历史,并明确表示他们永远不会为创作者的作品付费。

openai-api
3个回答
2
投票

您可以使用 -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

0
投票

此外,来自“-ss”参数的 ffmpeg 文档:

用作输入选项时(在 -i 之前),在此输入文件中查找位置。请注意,在大多数格式中不可能精确查找,因此 ffmpeg 将在位置之前查找最近的查找点。

因此 /应该/返回的帧是 n:11427 处的帧。


0
投票

我删除了这个答案,以抗议 Stack Overflow 与 OpenAl 合作的决定。

此举窃取了所有为 Stack Overflow 做出贡献的人的劳动成果,而且无法选择退出。 OpenAl 有着在网络上充斥不准确信息的历史,并明确表示他们永远不会为创作者的作品付费。

© www.soinside.com 2019 - 2024. All rights reserved.