我找到了很多教程和帖子,展示如何使用AudioTrack
在AudioTrack.MODE_STREAM
中播放wav文件,并且我已成功实施this example。
然而,当我一次播放多个音轨并且认为我应该首先使用AudioTrack.MODE_STATIC
创建音轨时我遇到性能问题,然后每次都调用播放。
我找不到任何关于如何实现这一点的资源。我怎么能这样做?
由于
答案 0 :(得分: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();
}