ffprobe -show_frames dy.mp4 >dy_log.mp4 可以查看关键帧;
获得截图,最简单的操作
在Ls目录下,需要先创建好ls目录
ffmpeg -i dy.mp4 -f image2 -r 2 ls/pic-%03d.jpg
或者放在跟视频同一个目录,也可以
ffmpeg -i dy.mp4 -f image2 -r 2 pic-%03d.jpg
-i 就是源视频文件名
-f [format ]就是截图的图片的格式,就是image2
-r 一秒要截图几帧,1就是1秒1帧,2就是1秒2帧;
ls/ 表示放在当前图片下面ls目标下(临时)
-%03d.jpg 这个截图出来的文件命名,表示从001开始到999结束;如果是写-%04d.jpg 就是从0001-9999,不足前面补0,形成的文件名就是pic0001-pic9999;
从第3秒到第10秒进行截图,发现头与尾这些不重要;
ffmpeg -i dy.mp4 -ss 00:00:03 -t 5 -f image2 -r 2 ls/pic03-%03d.jpg
也可以写成
ffmpeg -i dy.mp4 -ss 00:00:03 -to 00:00:08 -f image2 -r 2 ls/pic03-%03d.jpg
这个命令增加了两个参数,和变化了一个参数:
-ss 表示从第几秒开始
-t 表示几秒之后结束,有时一个mp4很长,你又没有必要全部截图就可以使用这个几秒结束 ;
-to 就是到具体几秒;上面就是到00:00:08秒,结束;
-r 2 表示一秒截图2张;
值得注意的是,ffmpeg 为了加速,会使用关键帧技术, 所以有时剪切出来的结果在起止时间上未必准确。 通常来说,
把 -ss 选项放在 -i 之前,会使用关键帧技术; 把 -ss 选项放在 -i 之后,则不使用关键帧技术。
如果要使用关键帧技术又要保留时间戳,可以加上 -copyts 选项:
ffmpeg -ss 00:00:03 -i dy.mp4 -to 00:00:08 -c copy -copyts dy03to08.mp4
将前30帧,截取并输出为gif文件;
ffmpeg -i dy.mp4 -vframes 30 -q:v 2 -f gif ls/dy30.gif
这里增加两个参数
-vframes 30 表示前面30帧,但是如果想截图30-60帧,如何写呢?
-q:v 2,表示画质;
-f gif 就表示输出为gif格式的内容 ;
网友评论