FFmpeg滤镜(11)

FFmpeg定时视频截图


应用场景举例:
1、播放器播放视频时,将鼠标移动到播放器进度条上时,会弹出一个与进度条的进度相对应的缩略图;
2、在直播平台中打开首页时,会列出主播当前窗口的缩略图;
3、鉴黄,当主播在直播视频时,定期截取主播窗口的当前图像,并将图像转为图片上传至鉴黄系统进行鉴别;
以上场景均用到截图功能,使用FFmpeg截图有很多种,常见的为使用vframe参数与fps滤镜。


1、vframe参数截图一张图片
ffmpeg -i input.flv -ss 00:00:7.435 -vframes 1 output.png

命令行执行后,FFmpeg会定位到input.flv的第7秒位置,获得对应的视频帧,然后将图像解码出来编码成RGB24的图像并封装成PNG图像。

Input #0, flv, from 'input.flv':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2013-05-17 04:15:00
    encoder         : Lavf52.108.0
  Duration: 00:00:30.08, start: 0.080000, bitrate: 919 kb/s
    Stream #0:0: Video: h264 (High), yuv420p(progressive), 640x360, 600 kb/s, 25 fps, 25 tbr, 1k tbn, 50 tbc
    Stream #0:1: Audio: adpcm_swf, 44100 Hz, stereo, s16, 352 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> png (native))
Press [q] to stop, [?] for help
Output #0, image2, to 'output.png':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    encoder         : Lavf58.20.100
    Stream #0:0: Video: png, rgb24, 640x360, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.35.100 png
frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A speed=0.261x

2、fps滤镜定时获得图片

每隔1秒钟生成一张PNG图片:

ffmpeg -i input.flv -vf fps=1 out%d.png

每隔1分钟生成一张JPEG图片:

ffmpeg -i input.flv -vf fps=1/60 img%03d.jpg

每隔10分钟生成一张BMP图片:

ffmpeg -i input.flv -vf fps=1/600 thumb%04d.bmp

每个关键帧生成一张PNG图片:

ffmpeg -i input.flv -vf "select='eq(pict_type,PICT_TYPE_I)'" -vsync vfr thumb%04d.png

你可能感兴趣的:(FFmpeg滤镜(11))