ExoPlayer – cómo reproducir archivos mp3 locales

Estoy tratando de usar ExoPlayer en lugar de MediaPlayer, porque es un error común que MediaPlayer devuelve equivocado getCurrentPosition () y necesito un sustituto.

Pero no puedo encontrar una información en cualquier lugar como abrir un archivo local a través de la ruta del archivo al mismo archivo que MediaPlayer .setDataSource(String filepath)

Google no tiene ningún ejemplo y el sitio de documentación oficial estrangula mi navegador FireFox en ambos equipos

La aplicación de demostración de ExoPlayer en github puede modificarse para reproducir archivos locales. Para ello, edite el archivo https://github.com/google/ExoPlayer/blob/master/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java para agregar un nuevo conjunto de vídeos.

 public static final Sample[] LOCAL_VIDEOS = new Sample[] { new Sample("Some User friendly name of video 1", "/mnt/sdcard/video1.mp4", DemoUtil.TYPE_OTHER), new Sample("Some User friendly name of video 2", "/mnt/sdcard/video2.mp4", DemoUtil.TYPE_OTHER), }; 

Para ello, edite el archivo https://github.com/google/ExoPlayer/blob/master/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java para agregar un nuevo conjunto de muestras.

 sampleAdapter.add(new Header("Local Videos")); sampleAdapter.addAll((Object[]) Samples.LOCAL_VIDEOS); 

Una modificación menor con el código de Srikanth Peddibhotla funciona

La cadena Uri del archivo debe ser "file: ///mnt/sdcard/YourFilename.mp4" en lugar de "/mnt/sdcard/YourFilename.mp4" en Samples.java

 public static final Sample[] LOCAL_VIDEOS = new Sample[] { new Sample("Some User friendly name of video 1", "file:///mnt/sdcard/video1.mp4", DemoUtil.TYPE_MP4), new Sample("Some User friendly name of video 2", "file:///mnt/sdcard/video2.mp4", DemoUtil.TYPE_MP4), }; 

Además, agregue las siguientes líneas a SampleChooserActivity.java

  sampleAdapter.add(new Header("Local Videos")); sampleAdapter.addAll((Object[]) Samples.LOCAL_VIDEOS); 

Utilizando ExoPlayer 2.1, y comenzando con el proyecto de demo , puede reproducir archivos mp3 desde la carpeta de assets sin modificar ningún código Java, simplemente añadiendo los archivos mp3 en la carpeta assets y creando o modificando un archivo json . Comenzando con el proyecto de demo ExoPlayer:

  1. Coloque los archivos mp3 en la carpeta demo/assets (con media.exolist.json ).

  2. Modifique media.exolist.json o cree un archivo nuevo como my.exolist.json contenga una o más entradas con el formato siguiente:

{ "name": "Children's Songs", "samples": [ { "name": "Mary Had a Little Lamb", "uri": "asset:///mary1.mp3" }, { "name": "Itsy Bitsy Spider", "uri": "asset:///spider1.mp3" } ] },

(La coma final supone que habrá otra categoría siguiente, como Blues Songs , Jazz Songs , etc., con más entradas de mp3. La última categoría no tiene coma después).

La siguiente figura muestra la pantalla de actividad del selector después de hacer clic en Children's Songs :

Actividad del Selector de ExoPlayer

Haga clic en Mary Had a Little Lamb o Itsy Bitsy Spider y que mp3 juega.

Google ha cambiado algunos nombres de variables y definición de clase en estos días! Abajo difieren las obras para mí.

 --- a/demo/src/main/java/com/google/android/exoplayer/demo/SampleChooserActivity.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/SampleChooserActivity.java @@ -30,6 +28,8 @@ import android.widget.ExpandableListView; import android.widget.ExpandableListView.OnChildClickListener; import android.widget.TextView; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -44,7 +44,12 @@ public class SampleChooserActivity extends Activity { super.onCreate(savedInstanceState); setContentView(R.layout.sample_chooser_activity); final List<SampleGroup> sampleGroups = new ArrayList<>(); - SampleGroup group = new SampleGroup("YouTube DASH"); + + SampleGroup group = new SampleGroup("test videos"); + group.addAll(Samples.LOCAL_VIDEOS); + sampleGroups.add(group); + + group = new SampleGroup("YouTube DASH"); group.addAll(Samples.YOUTUBE_DASH_MP4); group.addAll(Samples.YOUTUBE_DASH_WEBM); sampleGroups.add(group); diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java index 9f58528..9e86f99 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/Samples.java @@ -248,6 +248,13 @@ import java.util.Locale; "http://vod.leasewebcdn.com/bbb.flv?ri=1024&rs=150&start=0", Util.TYPE_OTHER), }; + public static final Sample[] LOCAL_VIDEOS = new Sample[] { + new Sample("Some User friendly name of video 1", + "file:///mnt/sdcard/test1.mp4", Util.TYPE_OTHER), + new Sample("Some User friendly name of video 2", + "file:///mnt/sdcard/test2.mp4", Util.TYPE_OTHER), + }; + private Samples() {} } 
  • ¿Cómo jugar múltiples (máximo de cuatro en mi caso). M3u8 streaming de vídeo en una sola actividad en android?
  • Caché persistente de MediaPlayer de Android con ExoPlayer
  • Exoplayer lanza excepción de inicialización de decodificador para archivos mp4 grandes en android
  • Control del volumen de Exoplayer con una barra de búsqueda
  • ExoPlayer y comandos start / pause / seekTo
  • Textureview obtener Superficie
  • Obtención de pantalla en negro cuando se agrega ExoPlayer a GLSurfaceView
  • Exoplayer - InvalidResponseCodeException (404) mientras el archivo existe
  • Exoplayer tocando archivos m3u8 en Android
  • Cómo utilizar un solo jugador para los anuncios y el vídeo con google android Exoplayer
  • Silenciar audio en ExoPlayer
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.