【发布时间】:2016-11-30 01:50:52
【问题描述】:
我想使用 ffmpeg 从给定视频文件中提取 10 个视频帧,理想情况下均匀分布在整个视频中。我知道这可以通过几种方式完成,例如
ffmpeg -i input.mp4 -vf fps=1/10 out%03d.jpg
将每 10 秒输出一张图像。但是,这对我来说太慢了,并且与视频的长度成比例。我已经阅读了一些关于 ffmpeg 的搜索能力,例如
ffmpeg -ss 00:00:05 -i input.mp4 -frames:v 1 out001.jpg
将很快搜索到视频的第 5 秒并提取一帧。但是,我还没有找到一种方法来寻找视频中的多个位置,而无需在不同时间重复调用上述命令。
有没有更快的方法来完成这个?
【问题讨论】:
-
你知道视频的时长吗?
-
我可以通过 ffmpeg/ffprobe 快速获得,因此“分发”所选帧的时间不是问题。我只是想比我发布的上述方法更快。
-
只有
ss之前的-i会进行快速搜索。ss之后或使用任何过滤器(如select)将花费更多时间,因为所有帧都被解码、评估然后保留或丢弃。 -
我相信新版本的 ffmpeg -ss after -i 现在也一样快。无论如何,我在 -i 之前有 -ss,但我正在寻找更快的解决方案,例如多次搜索但只有一个 ffmpeg 命令。
-
ffmpeg -ss after -i 现在和 -i 一样快 - 不,不是而且不可能。
标签: ffmpeg