在AudioTrack.MODE_STATIC中使用AudioTrack?

时间:2013-09-04 22:32:32

标签: android audio audiotrack

我找到了很多教程和帖子,展示如何使用AudioTrackAudioTrack.MODE_STREAM中播放wav文件,并且我已成功实施this example

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

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

由于

1 个答案:

答案 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();
 }