从视频中提取图像(ffmpeg)

4

我正在尝试使用ffmpeg从视频中提取图像:

ffmpeg -i sample.mp4 -vf fps=1/30 img%03d.jpg

但是我遇到了以下错误。
ffmpeg version 2.2.1 Copyright (c) 2000-2014 the FFmpeg developers
  built on Apr 13 2014 13:00:18 with gcc 4.4.6 (GCC) 20120305 (Red Hat 4.4.6-4)
  configuration: --prefix=/usr --libdir=/usr/lib64 --shlibdir=/usr/lib64 --mandir=/usr/share/man --enable-shared --enable-runtime-cpudetect --enable-gpl --enable-version3 --enable-postproc --enable-avfilter --enable-pthreads --enable-x11grab --enable-vdpau --disable-avisynth --enable-frei0r --enable-libopencv --enable-libdc1394 --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --disable-stripping
  libavutil      52. 66.100 / 52. 66.100
  libavcodec     55. 52.102 / 55. 52.102
  libavformat    55. 33.100 / 55. 33.100
  libavdevice    55. 10.100 / 55. 10.100
  libavfilter     4.  2.100 /  4.  2.100
  libswscale      2.  5.102 /  2.  5.102
  libswresample   0. 18.100 /  0. 18.100
  libpostproc    52.  3.100 / 52.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/sites/filemanager.dev/public_html/wout/image/sample.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42mp41
    creation_time   : 2009-05-25 21:58:02
  Duration: 00:04:03.12, start: 0.000000, bitrate: 309 kb/s
    Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 26 kb/s (default)
    Metadata:
      creation_time   : 2009-05-25 21:58:02
      handler_name    : Apple Sound Media Handler
    Stream #0:1(eng): Video: mpeg4 (Advanced Simple Profile) (mp4v / 0x7634706D), yuv420p, 480x320 [SAR 1:1 DAR 3:2], 120 kb/s, 30.12 fps, 30.12 tbr, 2500 tbn, 1k tbc (default)
    Metadata:
      creation_time   : 2009-05-25 21:58:02
      handler_name    : Apple Video Media Handler
    Stream #0:2(eng): Data: none (rtp  / 0x20707472), 128 kb/s
    Metadata:
      creation_time   : 2009-05-25 21:58:02
      handler_name    : hint media handler
    Stream #0:3(eng): Data: none (rtp  / 0x20707472), 29 kb/s
    Metadata:
      creation_time   : 2009-05-25 21:58:02
      handler_name    : hint media handler
[NULL @ 0x1d25ea0] Unable to find a suitable output format for 'image2'
image2: Invalid argument

最终的输出要求是我需要以每秒30帧的速度提取图像。

你是否正确安装了ffmpeg? - MCHAppy
是的,我有。另一个命令“ ffmpeg -i sample.mp4 -r 1 -t 30 img%03d.jpg”只有在我使用fps属性时才能正常工作,否则会出现错误。需要提取每秒30帧的图像,请您提供相应的命令吗? - user1391023
你正在使用哪个操作系统?@user1391023 - MCHAppy
Linux操作系统。 - user1391023
首先,尝试更新您的版本sudo apt-get update,然后执行sudo apt-get install ffmpeg。之后我们再看。 - MCHAppy
您的命令在使用 FFmpeg git 快照时运行良好。能否提供示例文件? - aergistal
1个回答

2
从视频中提取图像:
ffmpeg -i sample.mp4 -r 30 -s WxH -f image2 image%03d.jpg

-r标志定义每秒提取的图像帧数。它们将被输出到名为image001.jpegimage002.jpeg等的文件中。可选的-s标志将重新调整图像大小以适应新的WxH值。
如果您想仅提取有限数量的帧,则可以将上述命令与-vframes-t选项组合使用,或与-ss组合使用以从某个时间点开始提取。
要了解更多信息,请查看文档

2
image2是FFmpeg的图像文件复用器,当您想要将视频帧写入图像时,可以使用它,就像示例中一样。 - aergistal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接