gpt4 book ai didi

android - concat - 使用 FFmpeg 的音频文件无法在 Android 5.1 以上运行

转载 作者:行者123 更新时间:2023-12-02 22:38:24 26 4
gpt4 key购买 nike

我正在使用 FFmpeg将三个音频文件合并为一个

  • audio.m4a(从 Assets 中获取)
  • 录制的音频.m4a(使用 MediaRecorder 录制)
  • audio.m4a(从 Assets 中获取)

  • 它在 Android 5.1 以下工作正常,但在 Android 5.1 以上工作,
    在上述 5.1 录制的音频文件中未连接(当我从保存的内部存储中播放时它的播放良好,它没有损坏的录音)。

    我正在使用以下命令来连接音频文件。
    File mergedFile = new File(cacheDir + "/" + String.format("merged_file_%s.m4a", System.currentTimeMillis()));

    final String[] ffmpegCommand = new String[]{ /* this concat only 1st audio*/
    "ffmpeg",
    "-f",
    "concat",
    "-i",
    list, /* text file which contains full path of audio files*/
    "-c",
    "copy",
    mergedFile.toString()};


    final String[] ffmpegCommand = new String[]{ /*its working but not concat recorded file*/
    "-y",
    "-i",
    "concat:" + getStaticFilePath() + "|" + getRecordedFilePath() + "|" + getStaticFilePath(),
    "-c",
    "copy",
    mergedFile.toString()};


    FFmpeg ffmpeg = FFmpeg.getInstance(this);
    try {
    ffmpeg.loadBinary(new LoadBinaryResponseHandler() {
    @Override
    public void onFailure() {
    showUnsupportedExceptionDialog();
    }
    });
    } catch (FFmpegNotSupportedException e) {
    showUnsupportedExceptionDialog();
    }

    try {
    ffmpeg.execute(ffmpegCommand, new FFmpegExecuteResponseHandler() {
    @Override
    public void onFailure(String s) {
    Log.d(TAG, "FAILED with output : " + s);

    }

    @Override
    public void onSuccess(String s) {
    Log.d(TAG, "SUCCESS with output : " + s);
    }

    @Override
    public void onProgress(String s) {
    Log.d(TAG, "Started command : ffmpeg " + ffmpegCommand);
    }

    @Override
    public void onStart() {

    Log.d(TAG, "Started command : ffmpeg " + ffmpegCommand);
    Log.d(TAG, "Processing...");
    }

    @Override
    public void onFinish() {
    Log.d(TAG, "Finished command : ffmpeg " + ffmpegCommand);
    }
    });
    } catch (FFmpegCommandAlreadyRunningException e) {
    // do nothing for now
    }

    列表是一个文本文件,包含我连接的所有音频的路径
    #ffmpeg.txt
    file '/storage/emulated/0/AudioRecorder/radioStatic.m4a'
    file '/storage/emulated/0/AudioRecorder/recordedFile.m4a'
    file '/storage/emulated/0/AudioRecorder/radioStatic.m4a'

    最佳答案

    这对我有用

      val cmd = arrayOf("-y", "-i", audio1!!.path, "-i", audio2!!.path, "-filter_complex"," 
    [0:a] [1:a] concat=n=2:v=0:a=1 [a]","-map","[a]", "-c:a","mp3", outputLocation.path)

    关于android - concat - 使用 FFmpeg 的音频文件无法在 Android 5.1 以上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37827316/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com