Файлы OGG не будут корректно работать с использованием Android с помощью MediaPlayer

При попытке зацикливать MP3-файлы на моих устройствах KitKat и Lollipop очень небольшой пробел, но на старом телефоне Gingerbread разрыв между циклами более выражен. Достаточно, что мне нужно что-то сделать, чтобы …..

После долгих исследований я узнал, что файлы MP3 помещают немного бит «padding» в начале файла, поэтому при циклизации он не дает «чистого цикла», и этот эффект может быть более выраженным на более старых / медленных Телефонов (видимо).

Итак, совет, который я прочитал, заключался в том, чтобы переключиться на использование файлов OGG Vorbis. У них нет пробелов / дополнений и «петля отлично».

Тем не менее, после нескольких попыток, я действительно получаю худшие результаты с файлами OGG, чем с MP3, но проблема противоположна, т. Е. Когда цикл должен возвращаться к началу файла OGG, это на самом деле кажется Чтобы начать снова, но примерно через 2 или 3 секунды в него (т. Е. Нет «зазора», он просто не работает правильно).

Я должен указать, что файлы OGG сами выглядят нормально, они отлично целуются в Audacity.

Я работаю с 2 объектами MediaPlayer: один для ввода и один для основного цикла, вступление составляет около 30 секунд в длину, а основной цикл составляет около 3 минут.

Я также (для JellyBean и более высоких устройств), используя setNextMediaPlayer для перехода от intro к основному циклу – это работает нормально (или, по крайней мере, на двух устройствах, на которых я его протестировал) – и для pre JellyBean Устройства. Я запускаю свой основной цикл в методе обратного вызова onCompletitionListener. У меня есть только одно предустановленное JB-устройство, но опять-таки переход выглядит нормально).

Заметьте, если это поможет, но вот какой-то код, хотя проблемы, похоже, связаны с тем, как Android MediaPlayer обрабатывает файлы OGG Vorbis.

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

public void setDataSource() { try { loopPlayer.reset(); loopPlayer.setDataSource(myContext, Uri.parse("android.resource://com.me.myapp/" + R.raw.loop)); loopPlayer.prepare(); loopPlayer.setLooping(true); introPlayer.reset(); introPlayer.setDataSource(myContext, Uri.parse("android.resource://com.me.myapp/" + R.raw.intro)); introPlayer.prepare(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { introPlayer.setNextMediaPlayer(loopPlayer); loopPlayer.setLooping(true); } introPlayer.setOnCompletionListener(this); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void onCompletion(MediaPlayer mp){ //If OS < Jelly Bean, then start loop if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN){ loopPlayer.start(); } } 

Solutions Collecting From Web of "Файлы OGG не будут корректно работать с использованием Android с помощью MediaPlayer"