Android: как воспроизвести аудиоцикл без пауз в MediaPlayer?

Я знаю, что этот вопрос задавался несколько раз на этой платформе, но ни один из них не решает мою проблему. Я пытался воспроизвести звуковой файл в цикле, но когда цикл завершается в первый раз, появляется заметный разрыв.

У меня есть звуковые файлы в формате .M4A.

Я пытался решить эту проблему уже неделю, и я пробовал следующие решения.

1) Я пробовал использовать mediaPlayer.setLooping(true); и mediaPlayer.setNextMediaPlayer(mediaPlayer1)

2) Пробовал разные форматы файлов OGG, WAV и MP3.

3) Пробовал разные плееры Exoplayer и Oboe.

4) Пробовал эту статью https://medium.com/@viksaaskool/gappless-sound-loop-on-android-1ddeccc563de

5) Пробовал и эту статью https://medium.com/@tonyowen/playing-local-r-raw-files-with-exoplayer2-1a62276ebeaa

Кроме того, я уже проверяю вопросы и ответы StackOverflow.

1) Не удалось добиться зацикливания звука без пропусков, поэтому далеко на Android

2) воспроизведение без пауз с помощью Android MediaPlayer

3) Как зациклить звук без пробелов в Android?

4) Android: непрерывное воспроизведение зацикленного аудиофайла в Медиаплеер

Но сверху ни один из них не работал.

Любая помощь будет высоко оценена.

Заранее спасибо


person Vishal G. Gohel    schedule 24.03.2020    source источник
comment
Возможно, это не тот ответ, который вы ищете, но вы можете использовать Superpowered Audio SDK. (superpowered.com/audio-overview). Однако вам нужно написать простой проигрыватель на C ++ и создать JNI для связи с проигрывателем. Я использовал его некоторое время назад, и вы можете зацикливать звук без перерыва.   -  person HarmenH    schedule 01.04.2020
comment
Спасибо за ваш ответ, но я ищу что-то с открытым исходным кодом.   -  person Vishal G. Gohel    schedule 03.04.2020
comment
Привет, а можно код посмотреть? Используете ли вы метод onCompletion (MediaPlayer mediaPlayer)? вы сбросили медиаплеер с помощью mediaPlayer.reset();?   -  person Gihan Gamage    schedule 03.04.2020
comment
Я столкнулся с похожей проблемой, пытаясь зациклить видео во Flash несколько лет назад. Проблема была связана с тем, что буферам потоков требовалось некоторое время для подготовки (даже с потоками на локальном диске). В итоге я добавил лишнюю секунду или около того в конце, выполнив проверку времени и сбросив текущее время на 0. Другим возможным решением было бы загрузить звук в память с помощью специального проигрывателя, но не знаю, подойдет ли это ваша цель.   -  person Martin Buezas    schedule 04.04.2020
comment
Я пробовал все упомянутые вами подходы, и единственным рабочим решением для меня было 5) Exoplayer. Я использовал файлы mp3 из папки с активами. На каком устройстве/версии Android вы его тестировали? Если продолжительность звука короткая (~3 секунды), то SoundPool будет работать так же, как и длинный файл ogg, который был экспортирован в низком качестве.   -  person skymedium    schedule 28.06.2020
comment
@skymedium Спасибо за ваш ответ. Как вы сказали, мое решение было получено с помощью Exoplayer.   -  person Vishal G. Gohel    schedule 28.06.2020