如何在ffmpeg-python中使用afade参数避免‘选项未找到’错误?
问题解决:ffmpeg afade参数报错"Option not found"
错误原因
你在subprocess的参数列表里把-af选项和它的参数合并成了一个字符串,还额外加了引号,导致ffmpeg将整个'-af "afade=t=out:st=14.2:d=0.8"'识别为一个未知选项名,自然报错。另外,-c:a copy和音频滤镜不能同时使用——复制音频流意味着不做任何处理,而滤镜需要修改音频数据,两者冲突。
修正后的代码
try: subprocess.check_call([ 'ffmpeg', '-i', source_file, '-i', padding_image_file, '-filter_complex', '[0:v]scale=iw/'+ video_scale + ':ih/' + video_scale + ',setsar=1[main];' '[1:v]scale=720:1280[pad];' '[pad][main]overlay=' + video_overlay_x + ':'+ video_overlay_y + ',subtitles=' + subtitles_file + ':force_style=\'Alignment=6,OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,Fontsize=8,MarginL=2,MarginV=20\'', '-c:a', 'aac', # 替换copy为具体编码器,因为要应用音频滤镜 '-af', 'afade=t=out:st=14.2:d=0.8', # 拆分为独立参数,去掉引号 '-crf', '20', '-preset', 'fast', '-movflags', '+faststart', '-y', output_file ])
关键修正点
- 将
-af和滤镜参数拆分为列表中的两个独立元素,不要用引号包裹参数 - 把
-c:a copy改为-c:a aac(或其他你需要的音频编码器),确保音频滤镜能正常生效
内容的提问来源于stack exchange,提问作者user3324136
相关产品推荐
相关产品推荐

