Flutter使用flutter_ffmpeg合成音视频报No such filter: '"scale'错误如何解决
flutter_ffmpeg 图片音频合并报错
No such filter: '"scale' 解决方案 报错根因
Flutter FFmpeg - [AVFilterGraph @ 0x88f4b300] No such filter: '"scale'
该报错和FFmpeg版本无关,核心原因是FFmpeg解析滤镜参数时,将参数中多余的双引号识别为了滤镜名的一部分,因此找不到名为"scale的滤镜,无需更换min-gpl/full-gpl版本。
排查步骤
- 执行命令前先打印
executeWithArguments()传入的完整参数数组,逐元素检查滤镜类参数(-vf/-filter_complex对应的值)首尾是否带有多余的"、转义符\、空格等无效字符 - 确认没有给滤镜参数额外包裹引号:
executeWithArguments()接收拆分后的独立参数数组,单个参数不需要加引号包裹,加引号反而会把引号变成参数内容的一部分 - 确认完整的滤镜链没有被拆成多个数组元素,包含逗号、分号的复杂滤镜需要作为同一个字符串放入参数数组
正确实现示例
import 'package:flutter_ffmpeg/flutter_ffmpeg.dart'; final FlutterFFmpeg _flutterFFmpeg = FlutterFFmpeg(); List<String> ffmpegArgs = [ '-loop', '1', '-i', '/storage/emulated/0/input_image.jpg', // 替换为你的图片路径 '-i', '/storage/emulated/0/input_audio.mp3', // 替换为你的音频路径 '-c:v', 'libx264', '-tune', 'stillimage', '-c:a', 'aac', '-b:a', '192k', '-pix_fmt', 'yuv420p', // 滤镜参数直接传内容,无需加引号 '-vf', 'scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2', '-shortest', '/storage/emulated/0/output_video.mp4' // 替换为你的输出路径 ]; // 打印参数确认格式 print(ffmpegArgs); // 执行命令 _flutterFFmpeg.executeWithArguments(ffmpegArgs).then((code) { print("执行结果码:$code"); });
内容的提问来源于stack exchange,提问作者Aryan Shandilya
相关产品推荐
相关产品推荐

