正常情况下,使用FFmpeg进行图片转视频时,可以通过
ffmpeg -framerate [帧率] -i [图片路径及文件名模板] -s [视频宽度x视频高度] -c:v [视频编码器] [输出视频文件名]
或者
ffmpeg -framerate 25 -i./images/image_%04d.jpg -vf "scale=640:480" -c:v libx264 output.mp4
但很邪门的就是,今天有一张图片,无论如何就是不能生成预期大小的视频。而且在Android上获取到的宽高都没问题,但是复制到电脑端,就发现宽度就是会多出几个像素。真的是百思不得其姐。
后台通过FFmpeg -i 查看图片信息,发现图片中包含 【DAR xx:xx】,这是其他正常图片中没有的,也是造成以上问题的罪魁祸首。
那么该如何解决呢:
解决方案一
ffmpeg -i /Users/yanjunhui/Desktop/error.mp4 -vf scale=1280x720,setsar=sar=1280/720,setdar=dar=1280/720 -f mp4 out.mp4 -y
修改后,视频的真实像素终于是我们想要的。
最后,再附上罪魁祸首的原图。
解决方案二
将图片从.jpg、.png直接转换为 .webp,.webp是不包含DAR信息的哈,然后再转回 .jpg、.png就好啦。