使用ffmpeg从视频创建缩略图

Hit*_*esh 13 video ffmpeg amazon-web-services

我需要在将视频上传到CDN时从视频中创建缩略图.

我一直在寻找这个发现这个,但即使按照以下步骤我也无法获得屏幕截图.

我正在使用jwplayer 播放视频

有人可以帮助我使用ffmpeg上传视频时创建缩略图

dru*_*ruk 40

我不知道在上传时制作屏幕截图的方法,但我确实知道怎么做.

最简单的代码是:

ffmpeg -i $uploaded_file -ss 00:00:01.000 -vframes 1 output.png
Run Code Online (Sandbox Code Playgroud)

上载文件后运行此脚本.如果截图是在视频开头拍摄的,则只需要很短的时间.(例如第一分钟).

在文件仍在上传时,我认为不可能截取屏幕截图.

编辑:删除,-f image2因为ffmpeg猜对了

  • 格式通常是从输出文件扩展名中猜测出来的,所以这里不需要`-f image2`。 (2认同)
  • 如果你把-ss放在-i之前,那么你就不必等待帧的第一分钟了.但是,大多数解码器无法进入确切的时间戳,因此您可能会在时间戳之前略微结束(例如00:00:58而不是00:01:00). (2认同)
  • @Shayan 这只是一个通用的占位符。更清楚地说,他可以简单地使用“input.mp4”。在某些语言中,“$”表示变量。 (2认同)

Jef*_*ard 19

其他答案都很好......但对于大多数“视频”内容来说,JPEG是缩略图的更节省空间的选择。此答案讨论 JPEG 质量设置。

通常您会想要指定缩略图大小- 下面的命令 ( source ) 将缩小视频以适合 320x320 的框(通过减小较小的边缘(即长边上的 320px)来保持纵横比):

ffmpeg -ss 00:00:01.00 -i input.mp4 -vf 'scale=320:320:force_original_aspect_ratio=decrease' -vframes 1 output.jpg
Run Code Online (Sandbox Code Playgroud)


小智 8

根据此文档https://trac.ffmpeg.org/wiki/Seeking和我的个人测试,您应该像这样更改 -ss 和 -i 的位置

ffmpeg -ss 00:00:01.000 -i input.mp4 -vframes 1 output.png
Run Code Online (Sandbox Code Playgroud)

由于不进行视频解码,操作将变得更快。视频将使用关键帧进行解析,速度非常快。