FFmpeg overlay滤镜between参数异常,无法按指定时间叠加PNG
FFmpeg 叠加PNG时间错误的修复方案
问题根源
你的代码存在两个关键错误:
enable表达式语法错误:原代码写的between(t,0,0)结束时间等于开始时间,逻辑上不会显示图片;且字符串未闭合,缺少右括号和单引号,导致FFmpeg解析参数时出现异常,这也是修改后出现0-10秒显示的原因。- 参数拼接错误:
-filter_complex的字符串末尾没有空格和分隔逗号,直接和-codec:a连在一起,导致FFmpeg误解析参数。
修正后的代码
import subprocess subprocess.call([ 'ffmpeg', '-y', '-i', 'out_1.mp4', '-i', 'overlay.png', '-filter_complex', "[0:v][1:v]overlay=0:0:enable='between(t,0,1)'", '-codec:a', 'copy', 'out_2.mp4' ])
关键修正点
- 将
enable='between(t,0,0)'改为enable='between(t,0,1)',明确指定图片显示的时间范围是0秒到1秒。 - 补全
filter_complex字符串的闭合单引号和右括号,同时在字符串末尾添加逗号,保证列表参数格式正确,避免和后续参数混淆。
内容的提问来源于stack exchange,提问作者PiotrK
相关产品推荐
相关产品推荐

