mobile-ffmpeg 4.4.LTS执行视频拼接叠加命令 Android11报overlay输出未连接错误
问题修复方案
核心错误原因
你当前的命令存在参数逻辑问题,低版本FFmpeg对这类错误做了自动容错,Android 11对应mobile-ffmpeg版本的二进制校验规则更严格,所以直接抛出异常:
- 命令中同时存在
-c copy流复制参数和滤镜重编码逻辑,二者冲突,滤镜处理后的流不可能直接复制原有编码 - filter_complex最终输出的
[merg3]视频流没有做显式映射,FFmpeg无法识别滤镜链路的输出目标 - concat滤镜未显式指定音频流数量,容易触发流匹配异常
修正后可用的命令参数(数组形式直接使用)
[ "-y", "-i", "/storage/emulated/0/Movies/video_20211111_141930.mp4", "-i", "/storage/emulated/0/Movies/video_20211111_141946.mp4", "-i", "/storage/emulated/0/Movies/video_20211111_141958.mp4", "-i", "/storage/emulated/0/Pictures/Maramax/IMAGETEXT.png", "-i", "/storage/emulated/0/Pictures/Maramax/IMAGESTICKER.png", "-i", "/storage/emulated/0/Pictures/Maramax/logo.png", // 补充背景音乐输入可取消下一行注释替换路径 // "-i", "/storage/emulated/0/xxx/background_music.mp3", "-filter_complex", "[0:v:0][1:v:0][2:v:0]concat=n=3:v=1:a=0[merg0];[3]scale=1280:720[i0];[merg0][i0]overlay=0:0[merg1];[4]scale=1280:720[i1];[merg1][i1]overlay=0:0[merg2];[5]scale=195:136[i2];[merg2][i2]overlay=766:30[merg3]", "-map", "[merg3]", // 加了背景音乐可取消下一行注释做音频映射 // "-map", "6:a:0", "-threads", "4", "-vcodec", "libx264", "-c:a", "aac", "-preset", "ultrafast", "-shortest", "-crf", "20", "-vsync", "2", "/storage/emulated/0/Pictures/Maramax/finalVideo0.8238299708746938.mp4" ]
传参注意事项
- 不要给
-filter_complex对应的滤镜表达式加任何单引号、双引号,直接把整个滤镜字符串作为独立的数组元素传入即可 - 如果叠加的图片带透明通道,可在对应scale滤镜后加
format=argb参数保证透明度渲染正常
内容的提问来源于stack exchange,提问作者Владислав Ников
相关产品推荐
相关产品推荐

