1

我找到了很多教程和帖子,展示了如何在其中AudioTrack播放 wav 文件,AudioTrack.MODE_STREAM并且我已经成功实现了这个示例

但是,我在一次播放多个音轨时遇到性能问题,并认为我应该首先使用创建音轨,AudioTrack.MODE_STATIC然后每次只调用 play。

我找不到任何关于如何实现这一点的资源。我怎样才能做到这一点?

谢谢

4

1 回答 1

3

对我来说,两个主要的症结是意识到 .write() 是第一位的,并且实例化的播放器必须具有整个剪辑的大小作为buffer_size_in_bytes。假设您已经使用 AudioRecord 录制了一个 PCM 文件,您可以像这样使用 STATIC_MODE 播放它...

File file = new File(FILENAME);
int audioLength = (int)file.length();
byte filedata[] = new byte[audioLength];
try{
    InputStream inputStream = new BufferedInputStream(new FileInputStream(FILENAME));
    int lengthOfAudioClip = inputStream.read(filedata, 0, audioLength);
    player = new AudioTrack(STREAM_TYPE, SAMPLE_RATE, CHANNEL_OUT_CONFIG, AUDIO_FORMAT,audioLength, AUDIO_MODE);
    player.write(filedata, OFFSET, lengthOfAudioClip);
    player.setPlaybackRate(playbackRate);
    player.play();
 }
于 2014-01-10T11:34:38.397 回答