如何使用AudioTrack同时播放多个PCM文件

问题描述 投票:0回答:1

我正在开发音频混合应用程序。目前,我的录音和播放功能非常适合一首歌。但是,我希望能够同时播放多首曲目。

这是我用来播放.pcm文件中的音频的代码

class PlayThread extends Thread {
    public void run() {
        try {
            System.out.println("~~Playing audio");
            byte[] buffer = new byte[playBufSize];
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream(pcmFile), playBufSize);

            audioTrack.play();

            int readSize = -1;
            while (isPlaying && (readSize = bis.read(buffer)) != -1) {
                audioTrack.write(buffer, 0, readSize);
            }
            audioTrack.stop();
            MainActivity main = (MainActivity) ctx;
            main.audioStopped();
            bis.close();
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }
}

我使用此功能运行它:

   public void startPlaying()
    {
        isPlaying = true;
        new PlayThread().start();
    }

pcmFile是音频文件的完整路径。但是,我可以记录其中的4个(channel0.pcm,channel1.pcm,channel2.pcm和channel3.pcm)。现在,当我按播放时,它只播放一个。如何调整此代码以完全同时播放多个文件?

奖金,如果您能告诉我如何循环播放此内容,这也会有很大帮助。我想让这些文件连续循环直到线程停止。

java android audiotrack
1个回答
0
投票

您是否找到了解决方案?我有类似的问题。我有6种不同的PCM信号,我正在尝试使用AudioTrack播放所有这些信号。

© www.soinside.com 2019 - 2024. All rights reserved.