ffmpeg获取视频第一帧

ffmpeg获取视频第一帧

 

使用ffmpeg很容易可以将一个视频转换为图片序列,关于怎么转换,请参看我的另外一篇博文。

ffmpeg也可以很方便得到视频的第一帧,方法和将视频转换为视频系列的方法极为相似,输出换成固定的文件名即可。

如下面的命令就是取出caiyiling.wmv视频的第一帧保存为wm.bmp,图片格式根据你自己的需求自己定。

ffmpeg -i caiyiling.wmv wm.bmp

ffmpeg -i caiyiling.wmv wm.jpg

上面的是早前的ffmpeg版本可以用,至于之前的版本号码是多少,由于本人之前没有标记版本的习惯的,所以现在没有办法提供了,现在的版本号:

ffmpeg version git-2013-07-30-6b255e5

我手头上现在有的这个版本已经不可以使用上面的命令来获取缩略图了,会产生下面的错误

[swscaler @ 0x25f2f80] deprecated pixel format used, make sure you did set range correctly
[image2 @ 0x25fe300] Frame rate very high for a muxer not efficiently supporting it.
Please consider specifying a lower framerate, a different muxer or -vsync 2
Output #0, image2, to ‘happy.jpg’:
  Metadata:
    MAJOR_BRAND     : dash
    MINOR_VERSION   : 0
    COMPATIBLE_BRANDS: iso6avc1mp41
    encoder         : Lavf55.12.102
    Stream #0:0(und): Video: mjpeg, yuvj420p, 1280×720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 90k tbn, 30k tbc
    Metadata:
      CREATION_TIME   : 2016-11-02 00:06:49
      LANGUAGE        : und
      HANDLER_NAME    : VideoHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mjpeg)
Press [q] to stop, [?] for help
[image2 @ 0x25fe300] Could not get frame filename number 2 from pattern ‘happy.jpg’ (either set updatefirst or use a pattern like %03d within the filename pattern)
av_interleaved_write_frame(): Invalid argument

主要看上面的红色的部分,因此我们加入一个参数 vframes,关于这个参数的官方说明:

vframes number (output). Set the number of video frames to output. This is an alias for -frames:v

其实就是告诉要输出多少帧,因为是缩略图,所以当然是一帧了。

$ ffmpeg -i caiyilin.wmv -vframes 1 wm.bmp

或者是

$ ffmpeg -i caiilin.wmv -vframes 1 wm.jpg

如果要控制缩略图的大小使用 -s参数,例如 320×280

$ ffmpeg -i caiyilin.wmv -vframes 1 -s 320*280 wm.bmp

上面所有的命令都是输出视频文件的第一帧,当然可以输出任何一帧,只要加上参数 -ss,例如你要输出时间点第一分钟的那个帧

$ ffmpeg -i caiyilin.wmv -vframes 1 -s 320*280 -ss 00:01:00 wm.bmp

 

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *