play - Pre-Load o Pre-Buffer.mp4 video en el desarrollo de aplicaciones para Android
simple exoplayer example (3)
Estoy creando una aplicación que muestra con éxito un archivo de video MP4 onButtonClick. Quiero pre-buffer o precargar el URI (url remoto) del video para que no demore la reproducción del video una vez que se hace clic en el botón. Quiero que haga clic y juegue de inmediato, por lo que la carga previa o el almacenamiento en búfer en la pantalla de inicio de inicio de la aplicación parece una solución adecuada. Lo único es que no sé cómo. Tengo un montón de libros de Android, pero casi ninguno cubre el búfer o solo cubre el audio.
¿Alguien puede decirme cómo almacenar el video en una actividad previa?
Gracias.
El navegador nativo de Android no almacena los archivos multimedia (audio o video), por lo que no hay forma de hacerlo en HTML5. Como dijo @ bradenV2, puede copiar el archivo en la memoria (puede usar Phonegap si es una aplicación).
Google lanzó ExoPlayer que ofrece un nivel más alto para la reproducción de medios: http://developer.android.com/guide/topics/media/exoplayer.html
Es compatible con diferentes estados, como el almacenamiento en búfer en el fondo:
// 1. Instantiate the player.
player = ExoPlayer.Factory.newInstance(RENDERER_COUNT);
// 2. Construct renderers.
MediaCodecVideoTrackRenderer videoRenderer = …
MediaCodecAudioTrackRenderer audioRenderer = ...
// 3. Inject the renderers through prepare.
player.prepare(videoRenderer, audioRenderer);
Lo utilicé en mi propio proyecto y me parece bastante eficiente. También Google hizo una demostración completa del jugador: https://github.com/google/ExoPlayer/tree/master/demo/src/main/java/com/google/android/exoplayer/demo/full que es más poderoso que Demo simple.
Puedes usar MediaPlayer para preparar el video, de esta manera:
mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setOnPreparedListener(<implementation of MediaPlayer.OnPreparedListener>);
mediaPlayer.setDataSource(dataSource);
mediaPlayer.prepareAsync();
Después de la llamada prepareAsync()
el reproductor de medios almacenará en búfer su video. El MediaPlayer.OnPreparedListener.onPrepared()
le dirá si el reproductor de medios está listo para jugar todavía.
Simplemente marque la bandera preparada y llame a mediaplayer.start()
cuando haga clic en el botón "onButtonClick"