我需要从一段视频中获取间隔 30 秒的快照。网上推荐使用以下命令:
ffmpeg -i <video_file_path> -vf fps=1/30 <directory>/%04d.jpg
它可以工作,但与文件开头有 15 秒的偏移。使用不同的视频格式进行了测试:
- 预期:拍摄图像的时间为 30 秒 -> 1 分钟 -> 1 分 30 秒,等等;
- 实际结果:15 秒 -> 45 秒,等等。
我究竟做错了什么?
答案1
感谢 Gyan,我通过链接找到了解决方案。
有几个圆形的选项,可以与每秒帧数以下方式:
-vf fps=1/30:round=<value>
允许使用以下值:零,信息,向下,向上,靠近。
我在一段时长 1 分 46 秒的视频上测试了所有这些选项。结果:
-零和向下:30 秒、1 分、1 分 30 秒拍摄的图像 - 共 3 张图像;
-信息和向上执行相同操作,添加视频最开始的一张快照 - 总共 4 张图像;
-靠近(默认值):15s、45s、1m 15s、1m 45s - 共 4 张图像。
准备使用零或者向下,因为我没有发现任何差异而且结果正是我需要的。