Android – MediaPlayer's en Preparado Llamado incluso antes de que el flujo se prepare en Android 4.0+

Estoy enfrentando el problema de que cada vez que un flujo es reproducido por mi aplicación en Android 4.0 OnPrepare método OnPrepare de MediaPlayer.OnPreparedListener se llama incluso antes de una secuencia se carga y por lo tanto no puedo indicar al usuario que la descarga de flujo / buffering está en proceso. Ya he encontrado una pregunta del mismo tipo pero no contestada Aquí hay un qué estoy haciendo.

  @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); playVideo(someRtspUrl); } private void playVideo(String url) { // if app is running on Google TV then change RTSP link to HLS if (url.contains("rtsp")) { // split the RTSP URL and make it as HLS String videoUrlParts[] = url.split("\\?"); url = videoUrlParts[0].replace("rtsp", "http") + "/playlist.m3u8"; if (videoUrlParts.length > 1) url += "?" + videoUrlParts[1]; } mVideoView.setVideoURI(Uri.parse(url)); mVideoView.requestFocus(); mVideoView.setOnCompletionListener(this); mVideoView.setOnPreparedListener(this); } @Override public void onPrepared(MediaPlayer player) { dismissProgressDialog(); mVideoView.start(); } 

Este código funciona bien en Google TV y en otro dispositivo Android 3.0+ y <4.0+

No tengo mucha experiencia con el reproductor multimedia. Pero un par de sugerencias / consultas de mi lado

  1. No hay necesidad de prepararse. Si lo está haciendo, ¿probó prepareAsync?
  2. No está utilizando la instancia mediaplayer que se pasa a la devolución de llamada onPrepared. Puede haber una posibilidad de que esté intentando iniciar el reproductor de medios equivocado.

Yo sugeriría usar la clase MediaPlayer que está disponible. A diferencia de VideoView MediaPlayer es consciente de su estado y gestiona aún más cosas para usted que VideoView no ofrece .. Junto con la configuración de un SurfaceHolder para mostrar el contenido en es bastante simple.

Sólo querrá asegurarse de que está manejando adecuadamente el estado y utilizando la llamada prepareAsync () de MediaPlayer.

Este es un problema conocido para .m3u8 con Android <4.3.

Lo arreglaron en 4.3. Vale la pena comparar el código MediaPlayer o VideoView de diferentes plataformas, es decir, 4.3 y <4.3

  • Android Video View en otro hilo y problema con android 2.1
  • Implementación de la cámara IP en Android (Ver vídeo en directo desde la cámara IP)
  • Android Streaming Video - Necesita la relación de aspecto
  • Transmitir vídeo en vivo desde la cámara en android
  • Android: Reproductor de video como la aplicación de Dailymotion
  • Retardo de streaming de video de Android: un mundo a través de una cámara de fotos de somene elses
  • Cómo reproducir vídeos en línea en Android?
  • Reproducción automática de vídeos vimeo en la vista web de Android
  • Grabar MPEG TS usando MediaRecorder
  • Llamadas de video de Android con el sip de Android
  • Live555 en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.