ffmpeg以精细时间单位从视频文件中捕获屏幕截图

hyp*_*ion 7 ffmpeg

我使用ffmpeg从视频中捕获屏幕截图.这是命令代码:

ffmpeg -i /my_video_file_dir/video.flv -y -f image2 -ss 8 -sameq -t 0.001 
-s 320*240 /image_dir/screenshot.jpg
Run Code Online (Sandbox Code Playgroud)

我想以精细时间单位8.344捕获屏幕截图

但它不会通过上面的命令输出截图图像

在我的测试中,-ss 1,1.5,2,2.5 ...工作正常,而其他不是1.1,1.11

是否有人知道它为什么会发生,我如何在x.xxx时间捕获屏幕截图

yut*_*mmo 18

试试这个:

ffmpeg -ss 00:00:01.01 -i /my_video_file_dir/video.flv -y -f image2 \
   -vcodec mjpeg -vframes 1 /image_dir/screenshot.jpg
Run Code Online (Sandbox Code Playgroud)

请注意,由于大多数视频的帧速率较低,非常小的增量通常不会导致不同的图像.0.001s增量仅适用于1000fps帧速率的视频:) 0.03增量应适用于30fps视频等.

  • 这是一个真正的解决方案:ffmpeg -i input.flv -ss 00:00:14.435 -f image2 -vframes 1 out.png (2认同)
  • 我赞同 @user352353 的注释,但根据 https://trac.ffmpeg.org/wiki/Seeking 将“-ss”标志放在“-i”标志之前,以获得“更快”的性能!如果有人想在 FFMPEG 的 Trac 上注册帐户并更新此 wiki 页面,请执行以下操作:https://trac.ffmpeg.org/wiki/Create%20a%20thumbnail%20image%20every%20X%20seconds%20of%20the%20video (2认同)