Мне нужно иметь возможность воспроизводить два или более (скажем, до 5) коротких файлов ogg одновременно. Под одновременностью я подразумеваю совершенную синхронность. Я могу загрузить их в SoundPool и играть, но это иногда создает заметную разницу во времени начала воспроизведения, от которой я хочу избавиться.
Насколько я понимаю, этого можно избежать, если смешать PCM в один буфер и воспроизвести. Но OGG — это не PCM, и их нужно как-то эффективно декодировать перед воспроизведением, а задержка должна быть очень низкой, в идеале, как только пользователь нажимает кнопку. Итак, я решил, что мне нужен способ потоковой передачи OGG в PCM, и когда я получаю буферы, я буду микшировать их и передавать в AudioTrack. Мое требование — Android 2.3.3+, поэтому я не могу использовать новые кодеки, представленные в Jelly Bean.
Также, хотя сами OGG маленькие, их очень много. Таким образом, сохранение их всех декодированными в памяти (SoundPool или какое-либо предварительное декодирование) также может вызвать проблемы.
Может кто подскажет куда копать? Может ли OpenSL ES сделать это за меня? Или мне стоит подумать об интеграции ffmpeg? И возможна ли вообще одновременная передача файлов с малой задержкой?
Спасибо