Since I struggled to find some infos for this, I wanted to sum up my findings here:
差不多:
ffmpeg -y -threads 8 -i "test.m4v" -an -sn -vsync 0 -vf select="not(mod(n\,14386))" -s 854x480 -vcodec mjpeg -pix_fmt yuvj420p -b:v 2000 -bt 20M "test_%d.jpg"
explanation:
- -y
覆盖输出文件 - -threads X
X =线程 - -i "path to input"
输入文件 - -an
不使用音频 - -sn
不使用字幕 - -vsync 0
禁止a/v sync - -vf select="not(mod(n\,X))"
每X帧输出。 - 如果是X秒:秒*FPS
- -s WIDTHxHEIGHT
手动指定分辨率 - -vcodec X
输出格式,一般 mjpeg or png - -pix_fmt X
输出色域,一般 yuvj420p or rgb24 - -b:v X -bt Y
输出比特 X = 2000 and Y = 20M 不错 - "path to output ending with _%d.extension"
文件后缀 _%d 的输出是 fileName_0, fileName_2,...
扩展名是.jpg or .png
如果:
- 略过前X秒,直到X秒:-ss X -t Y
- 对某个时间生成,移除-vf select="not(mod(n\,X))" ,插入 -vframes X -ss timeInSeconds
例如 -vframes 1 -ss 10 10秒后生成
作者:Cu Selur
翻译:Beining
其实还有一个很巧的方法是用 -r 参数把 FPS 设置成 1/n,就是 n 秒一帧。
然后用 .jpg 格式输出。
(然后死在了VFR上
-r 参数就是用来把 VFR 转换成 CFR 的啊。
我刚刚试了一下,这个命令可以用:
“`
ffmpeg -i input.mkv -r 1/5 ‘thumb_%04d.jpg’
“`
5秒生成一个缩略图。
附加的参数,分辨率呀、JPEG质量呀加在中间就可以了。