我发现了很多教程和文章,展示了如何在AudioTrack中使用AudioTrack.MODE_STREAM播放wav文件,并且成功地实现了这个例子。
然而,当我同时播放多个音频曲目时,我的性能出现了问题,并认为我应该首先使用AudioTrack.MODE_STATIC创建这些曲目,然后每次只调用play。
我找不到任何关于如何实现这一点的资源。我该怎么做?
谢谢
发布于 2014-01-10 11:34:38
对我来说,两个主要的症结是认识到.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();
}https://stackoverflow.com/questions/18624897
复制相似问题