从特定视频帧中提取缩略图

use*_*408 23 ffmpeg

给定一个特定的帧我需要使用ffmpeg从视频中提取图像(缩略图).

我可以这样做:

ffmpeg -i test.mp4 -ss 00:01:14.35 -vframes 1 out2.png
Run Code Online (Sandbox Code Playgroud)

我可以从特定时间(00:01:14.35)提取图像,但我需要的是从特定帧中提取图像.

ptQ*_*tQa 43

要获得某些特定帧,您应该使用过滤器选择.从视频中提取帧100的命令应如下所示:

 ffmpeg -i in_video.avi -vf "select=gte(n\,100)" -vframes 1 out_img.png
Run Code Online (Sandbox Code Playgroud)

  • 我猜这里的 100 是第 101 帧,因为它是从 0 开始的。 (3认同)
  • 您还可以将结果通过管道传递到“ stdout”,如果您从另一个进程调用“ ffmpeg”,则很有用:```ffmpeg -i sample_video.mp4 -vf“ select = gte(n \,100)” -vframes 1- f image2pipe pipe:1 | cat> my_img.jpg``-但是,我尚未设法输出除jpg外的另一种格式。 (2认同)

use*_*039 7

使用以下方法

ffmpeg -ss 00:10:20 -t 1 -s 400x300 -i <INPUT_FILE> -f mjpeg <OUTPUT_FILE>
Run Code Online (Sandbox Code Playgroud)

-ss 和后面的时间参数告诉 ffmpeg 你想要截取屏幕截图的时间点。在本例中,ffmpeg 将在 10 分 20 秒点进行拍摄。-t 告诉 ffmpeg 你只想要一张照片, -s 是图片的大小, -f 告诉它制作一张照片(但不限于 jpg)。例如,要在 1 小时 12 分 30 秒时为 Batman.avi 生成一个 png 屏幕截图:

ffmpeg -ss 01:12:30 -t 1 -s 400x300 -i Batman.avi -f mjpeg Batman.png
Run Code Online (Sandbox Code Playgroud)

  • 有问题说,按帧,而不是按时间! (11认同)