我找到了很多教程和帖子,展示了如何在其中AudioTrack
播放 wav 文件,AudioTrack.MODE_STREAM
并且我已经成功实现了这个示例。
但是,我在一次播放多个音轨时遇到性能问题,并认为我应该首先使用创建音轨,AudioTrack.MODE_STATIC
然后每次只调用 play。
我找不到任何关于如何实现这一点的资源。我怎样才能做到这一点?
谢谢
我找到了很多教程和帖子,展示了如何在其中AudioTrack
播放 wav 文件,AudioTrack.MODE_STREAM
并且我已经成功实现了这个示例。
但是,我在一次播放多个音轨时遇到性能问题,并认为我应该首先使用创建音轨,AudioTrack.MODE_STATIC
然后每次只调用 play。
我找不到任何关于如何实现这一点的资源。我怎样才能做到这一点?
谢谢
对我来说,两个主要的症结是意识到 .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();
}