Воспроизведение двух разных потоков (файлов) одновременно с правильной синхронизацией на Android - PullRequest
0 голосов
/ 16 октября 2018

Я использую два экземпляра mediaPlayer для отправки двух разных потоков на каждый канал.В половине случаев он работает нормально, но иногда между левым и правым каналом есть задержка, которая отчетливо слышна.Есть ли альтернатива, кроме soundpool в Android, для одновременного воспроизведения нескольких аудиофайлов с синхронизацией?soundpool не подходит для моего приложения, так как аудиофайлы большие (около 20 МБ каждый).Формат аудиофайла: FLAC.

1 Ответ

0 голосов
/ 18 октября 2018

Я обнаружил, что в Android API нет встроенных функций микширования.В итоге я использовал wav-файлы вместо FLAC и смешивал их по мере необходимости.Вот описание более высокого уровня, как я достиг этого.

Read both wav files and saving data part in byte array (Don't forget to strip out header bytes)

Mix them byte by byte to generate a unified wav file

В моем случае мне просто нужно было смешать левый и правый каналы,но можно выполнять все виды преобразований по мере необходимости.

Create a temporary file to hold mixed data

Play the temporary file with mediaPlayer

Можно также использовать audioTrack для воспроизведения без сохранения результирующего байтового массива ввременный файл, но я решил использовать mediaPlayer из-за встроенной функции seekTo.

Надеюсь, этот подход полезен.

...