使用FFmpegKit将视频转MP3失败,返回码1求助
排查FFmpegKit转MP3失败(返回码1)的方法
先获取详细错误日志
当前代码仅打印返回码,无法定位具体问题,先修改代码获取完整执行日志:
try { final session = await FFmpegKit.execute('-i $videoFilePath -vn -ar 44100 -ac 2 -b:a 192k -f mp3 $audioFilePath'); final returnCode = await session.getReturnCode(); // 添加日志打印 final fullLog = await session.getAllLogsAsString(); print('FFmpeg执行日志: $fullLog'); if (ReturnCode.isSuccess(returnCode)) { print('视频转MP3成功!'); } else { print('视频转MP3失败,返回码: $returnCode'); } } catch (e) { print('转换过程出错: $e'); }
常见问题及解决方法
- 路径含特殊字符导致解析失败:你的输入文件路径包含大量特殊字符(连字符、点号等),FFmpeg可能无法正确解析。给路径加双引号包裹:
final session = await FFmpegKit.execute('-i "$videoFilePath" -vn -ar 44100 -ac 2 -b:a 192k -f mp3 "$audioFilePath"'); - 输入文件不存在或无读取权限:检查
$videoFilePath对应的文件是否真实存在,模拟器tmp目录的文件可能被系统自动清理,确认路径有效性;同时确保App拥有读取tmp目录的权限。 - 输出目录无写入权限:验证
Documents目录是否允许写入,iOS端需确认App已开启文件访问权限,或更换为明确有权限的输出路径。 - FFmpegKit缺少MP3编码库:部分FFmpegKit默认版本未包含LAME编码库(MP3格式依赖),需替换为完整版本依赖,修改
pubspec.yaml:dependencies: ffmpeg_kit_flutter_full: ^5.1.0 - 命令参数冗余干扰:先简化命令测试基础转换,排除参数问题:
final session = await FFmpegKit.execute('-i "$videoFilePath" -vn "$audioFilePath"');
内容的提问来源于stack exchange,提问作者shakti goyal
相关产品推荐
相关产品推荐

