flutter - FFmpeg 音频 concat/join 在 flutter 中无法正常工作

标签 flutter dart audio ffmpeg

我正在使用 ffmpeg_kit_flutter 连接/加入音频使用以下命令。但是联合文件的持续时间是不对的。

"-i \"concat:${audioFile1}|${audioFile2}\" -acodec copy $outPath";
我有两个音频文件,第一个音频文件持续时间为 27s,第二个音频文件持续时间为 1m 47s。
加入两个文件后,实际文件持续时间为 2m 14s。
  • 但是当我们在第一个输入中输入第一个文件并在第二个输入中输入第二个文件时,输出文件的持续时间是 2m 53s。
  • 如果我们在第一个输入中输入第二个文件,在第二个输入中输入第一个文件,那么输出文件的持续时间是 2m 6s。

  • 以下是我的代码:
    var cmd = "-i \"concat:${audioFile2.path}|${audioFile1.path}\" -acodec copy $outPath";
    
    FFmpegKit.executeAsync(cmd, (session) async {
          final returnCode = await session.getReturnCode();
          log("returnCode $returnCode");
        });
    
    请帮助我在加入两个文件后如何获得正确的持续时间?

    最佳答案

    使用这个命令,

    var cmd ="-i ${audioFile1.path} -i ${audioFile2.path} -filter_complex 'concat=n=2:v=0:a=1[a]' -map '[a]' -codec:a libmp3lame -qscale:a 2 $outPath";
    
    代替
    var cmd = "-i \"concat:${audioFile2.path}|${audioFile1.path}\" -acodec copy $outPath";
    

    关于flutter - FFmpeg 音频 concat/join 在 flutter 中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70461149/

    相关文章:

    animation - 在 flutter 中创建非常自定义的动画

    android - Flutter - 如何从相机获取实时输入并扫描任何物体?

    flutter - 事件的返回函数

    android - 如何将媒体查询数据添加到特定填充?

    audio - 如何使用 ffmpeg "truncate silence"过滤器模仿 Audacity 的 "silenceremove"

    android - 类型 'Null' 不是类型 'Function' 的子类型

    ios - 如何在我的 flutter 应用程序中添加连续移动的背景?

    flutter - flutter -Future <bool>转换为bool

    c++ - 音频错误使我的C++程序崩溃

    java - 如果帧大小> 1,则Java AudioInputStream IOException无法读取单个字节