ffmpeg每隔1秒抽取视频的1帧画面

1、新建一个txt文件,并复制如下代码进入,然后保存。

@echo off & title
 
cd /d %~dp0
 
for %%a in (*.mp4) do (
 
 ffmpeg -i "%%~sa" -vf "select=(gte(t\,1))*(isnan(prev_selected_t)+gte(t-prev_selected_t\,1))" -vsync 0 "cover\%%~na-%%d.png"
 
)
 
pause

2、把文件后缀修改为bat 。

3、把后缀为bat的文件放到要批量处理的视频文件夹里面。

4、在确保安装了ffmpeg的情况下,双击bat文件执行即可。

5、参数说明:

-i          输入文件,这里指的就是视频文件。

-vf       一个命令行,表示过滤图形的描述。选择过滤器select会选择帧进行输出。

-y        表示无需询问,直接覆盖输出文件(如果有原文件的话)。

-vsync 0        每一帧从解码器到编码器,时间戳保持不变。

您可以使用以下命令从视频抽取 1 钟 1 的图片,并将每一帧的时间戳作为图片文件名: ``` ffmpeg -i input.mp4 -r 1 -vf "setpts=PTS-STARTPTS,tosetpts=1*PTS,select='not(mod(n\,30))',scale=-1:480" -f image2 -strftime 1 output_%Y%m%d%H%M%S_%q.jpg ``` 这个命令将会从视频文件 `input.mp4` 中每抽取 1 图片,并将每一帧的时间戳作为图片文件名,格式为 `output_年月日时分_毫.jpg`。其中: - `-r 1` 表示将视频率设置为 1 钟。 - `-vf "setpts=PTS-STARTPTS,tosetpts=1*PTS,select='not(mod(n\,30))',scale=-1:480"` 表示使用 `setpts` 滤镜将时间戳从相对时间转换为绝对时间,使用 `tosetpts` 滤镜将时间戳转换为相对于视频开始的毫时间,使用 `select` 滤镜选择每钟的第 30 (即每抽取 1 图片),使用 `scale` 滤镜将图片的高度缩放为 480 像素,宽度按比例缩放。 - `-f image2` 表示将输出设置为图片格式。 - `-strftime 1` 表示将时间戳格式化为 `%Y%m%d%H%M%S` 的形式,并将其作为图片文件名的一部分。 - `output_%Y%m%d%H%M%S_%q.jpg` 表示输出图片的文件名格式,其中 `%Y%m%d%H%M%S` 表示用年月日时分来表示当前时间,`%q` 表示用一位数字来表示每一帧图片的序号,`.jpg` 则表示输出的图片格式为 JPG。 这个命令会在当前目录下输出一系列以 `output_年月日时分_毫.jpg` 命名的图片文件,每一帧的时间戳都会作为图片文件名的一部分。您可以根据需要修改 `-r` 参数来设置其他率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值