FFmpeg处理1920×1080图片交叉淡入报错的原因及解决方法
问题分析与解决:FFmpeg Blend滤镜SAR不匹配错误
错误原因
这个报错的核心是两张输入图片的样本宽高比(SAR, Sample Aspect Ratio)不一致:
- 第一张图的SAR是
0:1(这是一个无效的SAR值,通常意味着图片元数据里没有正确记录SAR,或者记录有误) - 第二张图的SAR是
1:1(标准的正方形像素宽高比)
FFmpeg的blend滤镜要求所有输入视频流的核心参数(包括分辨率、SAR、帧率等)必须完全一致,否则无法完成帧混合的配置——你的测试图(1024×768)刚好SAR参数一致,所以能正常运行,但原始1080p图片的SAR不匹配就触发了这个错误。
解决方法
只需要强制统一两张输入图片的SAR参数即可,这里推荐两种简单的实现方式:
方式1:给每个输入单独设置SAR
在每个输入文件后添加-filter:v setsar=1:1,强制将图片的SAR设置为标准的1:1(正方形像素):
ffmpeg -loop 1 -i 1-test.jpg -filter:v setsar=1:1 -loop 1 -i 2-test.jpg -filter:v setsar=1:1 -filter_complex "[1:v][0:v]blend=all_expr='A*(if(gte(T,3),1,T/3))+B*(1-(if(gte(T,3),1,T/3)))'" -t 4 frames_%04d.png
方式2:在滤镜链中统一处理
如果习惯用filter_complex统一管理所有滤镜,可以把SAR设置整合到复合滤镜链里:
ffmpeg -loop 1 -i 1-test.jpg -loop 1 -i 2-test.jpg -filter_complex "[0:v]setsar=1:1[bkg];[1:v]setsar=1:1[fg];[fg][bkg]blend=all_expr='A*(if(gte(T,3),1,T/3))+B*(1-(if(gte(T,3),1,T/3)))'" -t 4 frames_%04d.png
这两种方式都能让两张图片的SAR参数完全对齐,满足blend滤镜的要求,从而正常生成淡入效果的帧序列。
内容的提问来源于stack exchange,提问作者user3574681
相关产品推荐
相关产品推荐

