iOS Swift调用Mobile FFmpeg执行复合滤镜报错无效参数如何解决?
问题原因与修复方案
核心语法错误
你给出的FFmpeg命令存在多余的非法字符:在filter_complex参数的闭合引号后额外加了英文分号;,该分号会被FFmpeg识别为独立的空滤镜参数,因此抛出No such filter: ''的初始化错误。
错误片段如下:
-filter_complex "[0:v][1:v] overlay=208:438:enable='between(t,0.0,5.5316668)'"; // 此处末尾多余的 ; 是错误根源
修正后的命令
-i 'record_merge.mp4' -i 'text_0.png' -filter_complex "[0:v][1:v] overlay=208:438:enable='between(t,0.0,5.5316668)'" -c:a copy 'texted_video.mp4'
iOS Swift 环境额外注意事项
如果你是通过参数数组的方式调用FFmpeg接口,还需要注意以下规则:
- 不要给参数值额外加外层引号,命令行里的引号仅用来标识参数边界,传数组时无需添加,
filter_complex对应的参数值直接传入[0:v][1:v] overlay=208:438:enable='between(t,0.0,5.5316668)'即可 - 每个独立参数要拆分为数组的单独元素,比如
-filter_complex是一个元素,对应的滤镜表达式是下一个元素,不要拼接在同一个字符串中 - Swift字符串中如果需要写双引号,要加反斜杠转义,避免提前截断字符串
内容的提问来源于stack exchange,提问作者reliablesoft
相关产品推荐
相关产品推荐

