Используя 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();
 }
Другие вопросы по тегам