使用 ffmpeg 从视频中抓取 50 帧的最高效方法

使用 ffmpeg 从视频中抓取 50 帧的最高效方法

我正在尝试使用视频中均匀分布的帧来制作平铺图像。我需要它尽可能快,这就是我最终得到的结果。是否有任何明显的 ffmpeg 性能调整可以用来优化此命令的速度?

docker run jrottenberg/ffmpeg \
  -hide_banner \
  -loglevel panic \
  -i "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" \
  -c:a copy \
  -f mjpeg \
  -preset ultrafast \
  -an \
  -c:v mjpeg \
  -vf "select='not(mod(n\\,286))',yadif,scale=480:270:force_original_aspect_ratio=increase,crop=480:270,tile=1x50" \
  -q:v 10 \
  -frames:v 1 - > scrub.jpg

答案1

由于您的选择间隔为 286 帧,因此您不妨只选择关键帧。因此,您可以跳过解码其他帧。

docker run jrottenberg/ffmpeg \
  -hide_banner \
  -loglevel panic \
  -skip_frame nokey -i "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" \
  -f mjpeg \
  -vf "yadif,scale=480:270:force_original_aspect_ratio=increase,crop=480:270,tile=1x50" \
  -q:v 10 \
  -frames:v 1 - > scrub.jpg

相关内容