ffmpeg媒体截图 - Mr.Ding

ffmpeg媒体截图

天天记事 1085 / 2021-09-01 10:04:22

1. 指定时间点截图一张,并且按照指定宽度等比缩放(如果不需要缩放截图大小,那么将对应的参数去掉即可)

【命令代码】

ffmpeg -y -hide_banner -i index.mp4 -vf "scale=200:200/a" -ss 4.0 -vframes 1 out.png

【命令参数】

参数说明
-y 目标覆盖不提示
-hide_banner 不显示ffmpeg版本相关信息
-i 待处理文件
-vf 视频/图像大小缩放,指定宽度的参数有两种写法:scale=:/a或scale=200:-1
-ss开始截图的时间点,4.0值在第4秒时截图;还有其它格式:00:00:04.0,时:分:秒.毫秒;又或者直接用秒数,如120,表示2分开始
.-vfames截取多少帧,如果截一张图,那么写成1即可


2. 指定时间点开始按帧截图,并且按照指定宽度等比缩放(如果不需要缩放截图大小,那么将对应的参数去掉即可)

ffmpeg -y -hide_banner -i index.mp4 -vf "scale=200:-1" -ss 4.0 -vframes 3 out-%d.png


3. 从指定时间开始,每一秒截图一张,并缩放截图(常规命令),注意,此命令执行开始时,如果起始时间越长则开始截图越晚,效率不高。

ffmpeg -y -hide_banner -i index.mp4 -vf "scale=400:-1,fps=1" -ss 10:00.0 out-%d.png


4. 从指定时间开始,每一秒截图一张,并缩放截图(高效命令)

ffmpeg -y -hide_banner -ss 10:00.0 -i index.mp4 -vf "scale=400:-1,fps=1" %05d.png

【命令解释】

覆盖目标文件,程序版本信息,待处理文件为index.mp4,媒体起始时间为10分0秒0毫秒,截图的大小保持400宽度并按比例缩放,每一秒截图一张,存储文件名长度不够5位则前补0,截图存储到index.mp4同一目录下。

【注意】fps=1,是1秒截图一次;如果每3秒截图一次,则fps=0.33333;如果每10秒截图一次,那么fps=0.1;推导公式为:fps=1/<间隔时间(单位为秒)>


5. 截图存储为jpeg,并设置截图质量

ffmpeg -y -hide_banner -ss 10:00.0 -i index.mp4 -vf "scale=400:-1,fps=1" -q:v 8 thumb/%05d.jpg

新增参数, -q:v <1-32之间的数值,值越小,截图质量越高,文件越大;反之亦然>


未完待续。。。