使用FFmpeg将音频+图片转视频遇编码错误,求修正命令适配YouTube上传
解决FFmpeg libx264编码错误并实现方形图片黑背景视频
没问题,我来帮你搞定这个编码问题!你遇到的错误核心原因是libx264编码器强制要求视频的宽度和高度必须是2的倍数,而你的图片宽度2001是奇数,不符合这个硬性要求,所以才会出现编码器初始化失败的提示。
下面给你两个完全符合需求的修改命令,既能解决编码错误,又能保证方形图片不被拉伸,仅置于黑色背景上:
方案1:保持方形黑背景(适配原始图片比例)
这个方案会把图片的宽度自动补为最近的2的倍数(2002),高度保持2048(已经是2的倍数),图片居中显示,左右仅添加极少量黑边:
ffmpeg -loop 1 -framerate 2 -i 'front.jpg' -i 'output.mp3' -vf "pad=ceil(iw/2)*2:ih:color=black" -c:v libx264 -preset medium -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p outputReEncoded.mkv
关键参数说明:
-vf "pad=ceil(iw/2)*2:ih:color=black":通过pad滤镜自动计算并补全宽度为2的倍数,高度保持原始值,填充颜色为黑色,图片默认居中。-tune stillimage:针对静态图片场景优化编码,提升效率和画质表现。-crf 18:设置恒定质量因子,这个数值能在保证高质量的同时控制文件大小。-shortest:让视频长度自动匹配音频时长,避免生成无意义的超长静态视频。
方案2:适配YouTube推荐的16:9比例(1080P标准)
如果想要视频更适配YouTube的播放环境,可以把方形图片放在1920x1080的黑背景中间,上下添加黑边,完全符合平台的推荐尺寸:
ffmpeg -loop 1 -framerate 2 -i 'front.jpg' -i 'output.mp3' -vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black" -c:v libx264 -preset medium -tune stillimage -crf 18 -c:a copy -shortest -pix_fmt yuv420p outputReEncoded.mkv
关键参数说明:
-vf "pad=1920:1080:(ow-iw)/2:(oh-ih)/2:black":指定输出分辨率为1920x1080(YouTube常用1080P尺寸,且宽高都是2的倍数),通过(ow-iw)/2和(oh-ih)/2让图片在背景中水平、垂直居中,填充黑色。
这两个命令都能顺利通过libx264编码,生成的视频可以直接上传到YouTube,完全满足你的需求。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

