最近在用FFMPEG截取视频,需求是将固定时段的一段视频截取为图片。
执行脚本后,发现截取的时间段与实际不符合,一般实际截取的时间比我预期的时间都会晚10几秒。
脚本命令如下:
ffmpeg -i 7.mp4 -ss 00:03:14 -to 00:03:31 FST%%d.jpg
ffmpeg -i 7.mp4 -ss 00:08:22 -to 00:08:27 sec%%d.jpg
ffmpeg -i 7.mp4 -ss 00:26:42 -to 00:27:01 thrid%%d.jpg
ffmpeg -i 7.mp4 -ss 00:30:12 -to 00:30:31 four%%d.jpg
ffmpeg -i 7.mp4 -ss 00:43:57 -to 00:44:16 fivth%%d.jpg
ffmpeg -i 7.mp4 -ss 00:47:06 -to 00:47:22 six%%d.jpg
辛苦各位给指导下,不胜感激。
在使用 FFmpeg 进行视频截取时,可能会出现实际截取时间与预期时间不符的情况。这可能是由于视频编码和解码过程中的误差造成的。
为了解决这个问题,可以试着使用帧率(fps)参数来精确控制截取的图片数量,从而达到精确的截取时间。例如可以使用如下命令:
ffmpeg -i 7.mp4 -vf fps=1/10 FST%%d.jpg
这条命令会每隔 10 秒截取一张图片,如果想截取的时间段是 00:03:14 到 00:03:31,则可以将上述命令中的帧率调整为 1/17,从而使每隔 17 秒截取一张图片。
需要注意的是,帧率参数并不是绝对精确的,但是相对于不使用帧率参数而言,使用帧率参数可以大大提高截取精度。
另外,如果想在同一个命令中处理多个时间段的视频,可以使用如下命令:
ffmpeg -i 7.mp4 -vf fps=1/10 -ss 00:03:14 -to 00:03:31 FST%%d.jpg -vf fps=1/10 -ss 00:08:22 -to 00:08:27 sec%%d.jpg -vf fps=1/10 -ss 00:26:42 -to 00:27:01 thrid%%d.jpg -vf fps=1/10 -ss 00:30:12 -to 00:30:31 four%%d.jpg -vf fps=1/10 -ss 00:43:57 -to 00:44:16 fivth%%d.jpg -vf fps=1/10 -ss 00:47:06 -to 00:47:22
望采纳