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)
- Android ExoPlayer no reanuda una vez que la red está conectada
- Dibuje un android.media.Image a una superficie
- Exo player DASH Ejemplo de streaming
- ExoPlayer no reproduce audio en los dispositivos que utilizan FFMPEG
- ¿Hay una manera de utilizar ExoPlayer para recrear ThumbnailUtils.extractThumbnail
Google no tiene ningún ejemplo y el sitio de documentación oficial estrangula mi navegador FireFox en ambos equipos
- Cómo jugar video de youtube en ExoPlayer en Android?
- Intentar trabajar con ExoPlayer - muchas incógnitas
- ExoPlayer AudioTrack Tartamudez
- Vídeo de escala de matriz en TextureView Android
- Reproducción de vídeo cifrado con ExoPlayer
- Cómo mostrar subtítulos en android ExoPlayer
- Cómo implementar oncompletionlistener para detectar final de archivo multimedia en Exoplayer
- ¿Cómo escuchar mp3 url usando exoplayer?
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:
-
Coloque los archivos mp3 en la carpeta
demo/assets
(conmedia.exolist.json
). -
Modifique
media.exolist.json
o cree un archivo nuevo comomy.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
:
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() {} }
- SwipeRefreshLayout pull varias veces comportamiento (SDK 23)
- ¿Intentar ejecutar Android JUnit pruebas en Eclipse falla?