我有一些视频,我想每 2 秒将其转换为帧图像。
例如,如果视频在 15 fps 时长 7 秒,我想获得第 1、31、61、91 帧。
命令:
ffmpeg -i foo.mp4 -r 0.5 -f image2 -vcodec mjpeg foo%d.jpg
似乎做了我想要的,但它得到了哪个框架?1、31、61、91 或 30、60、90 或 13、43、73、103?
第一个图像将来自第一帧。
请注意,您很可能会得到您期望的一两个图像。我相信这是因为四舍五入和/或 ffmpeg 创建了最终图像。例如:你的视频真的有 7s 长吗?还是7.63s长?
我最终做了以下很大程度上是从 ffmpeg 教程中借来的:
ffmpeg -v 3 -vsync 0 -sameq -i movie.mpr -f image2 "images-%03d.jpeg"
这给了我电影的每一帧作为 JPEG 编号 1 到电影结尾。然后我使用脚本语言过滤这些文件,知道帧速率是 30fps,每 60 帧抓取一次。