You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中使用FFmpeg Kit通过TXT合并多视频失败问题排查

问题排查与解决步骤

针对你用ffmpeg_kit_flutter通过TXT文件合并视频时出现的错误码1、输出文件不存在问题,按以下步骤排查:

  • 严格检查TXT文件格式
    FFmpeg的concat demuxer对TXT格式有硬性要求:

    • 每行必须以file '路径'格式书写,比如file '/storage/emulated/0/video1.mp4',不能直接写裸路径
    • 路径含空格或特殊字符时,必须用单引号包裹
    • TXT编码需为UTF-8,不能带BOM头,行尾不能有多余空格或空行
  • 验证TXT文件的可访问性
    先确认$rawDocumentPath/my_file.txt是绝对路径,且FFmpeg能读取该文件。可以在执行命令前用Flutter代码验证:

    final txtFile = File('$rawDocumentPath/my_file.txt');
    print('TXT文件存在:${txtFile.existsSync()}');
    print('TXT内容:${txtFile.readAsStringSync()}');
    

    如果文件不存在或内容为空,直接导致命令失败。

  • 检查输出路径的合法性
    $outputPath必须满足:

    • 是应用有写入权限的路径(Android需申请存储权限,iOS用Documents目录)
    • 是具体文件名而非文件夹(比如/storage/emulated/0/output.mp4,不能只写目录)
  • 修正命令参数的写法
    路径含空格时会被FFmpeg拆分参数,建议给路径加双引号包裹:

    -f concat -i "$rawDocumentPath/my_file.txt" -c copy "$outputPath"
    

    部分设备可尝试给路径加file:前缀,比如file:"$rawDocumentPath/my_file.txt"

  • 获取详细错误日志定位问题
    错误码1是通用错误,需查看具体日志:

    FFmpegKit.execute(command).then((session) async {
      final errorLog = await session.getErrorOutput();
      print('FFmpeg错误日志:$errorLog');
    });
    

    日志会明确提示是找不到TXT文件、格式错误还是输出路径无权限,这是排查核心。

  • 测试简化命令缩小范围
    先手动创建符合规范的TXT文件,用硬编码绝对路径测试命令:

    -f concat -i "/storage/emulated/0/test_list.txt" -c copy "/storage/emulated/0/test_output.mp4"
    

    若成功,说明动态生成的TXT文件或变量替换有问题;若失败,需检查ffmpeg_kit_flutter版本是否支持concat demuxer。

内容的提问来源于stack exchange,提问作者Muhammad Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:54:53