Используя AudioTrack в AudioTrack.MODE_STATIC?
Я нашел много уроков и постов, показывающих, как использовать AudioTrack
играть в файлы WAV в AudioTrack.MODE_STREAM
и я успешно реализовал этот пример.
Однако у меня возникают проблемы с производительностью при воспроизведении нескольких звуковых дорожек одновременно и я думаю, что сначала нужно создать дорожки, используя AudioTrack.MODE_STATIC
затем просто звоните играть каждый раз.
Я не могу найти никаких ресурсов о том, как это реализовать. Как я могу это сделать?
Спасибо
1 ответ
Для меня двумя главными камнем преткновения было осознание того, что на первом месте стоит.write() и что созданный экземпляр проигрывателя должен иметь размер всего клипа в виде buffer_size_in_bytes. Предполагая, что вы записали файл PCM с помощью AudioRecord, вы можете воспроизвести его с помощью 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();
}