我正在使用ffmpeg从一段.mov视频中生成缩略图。我希望每两秒钟获得缩略图,因此,几乎直接从https://trac.ffmpeg.org/wiki/Create%20a%20thumbnail%20image%20every%20X%20seconds%20of%20the%20video复制,我正在做:
ffmpeg -i test.mov -f image2 -vf fps=fps=1/2 thumb%04d.jpg
这有用,并且给我缩略图,但它们对应于视频中的图像0,1,3,5 ......秒。我期待0,2,4,6 ......秒;我不确定为什么缩略图之间会有一秒钟的间隙,然后才会每两秒钟完成一次。
有没有办法让他们在0,2,4,6 ......秒出来,或者这只是“它是如何工作的”?谢谢!
答案 0 :(得分:2)
这与您的问题无关,但过去我的参数“fps”存在框架存在问题。相反,我使用了“选择”过滤器:
ffmpeg -i test.mov -vf "select='not(mod(n,50))',setpts='N/(25*TB)'" -f image2 thumb%04d.jpg
如果你正在处理25 fps的电影,这对你也应该没问题。
编辑:
对于NTSC,将选择过滤器更改为:
select='not(mod(n,60))',setpts='N/(30*TB)'"
对于电影电影,请将其更改为
select='not(mod(n,48))',setpts='N/(24*TB)'"
基本上,它会将PTS(显示时间戳)覆盖为正确的值,并在每次帧编号是“Mod”函数中值的倍数时选择一个帧。此值必须等于帧速率的两倍。
原谅我默认使用PAL的值,我主要在欧洲使用FFMPEG进行广播:)