Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android MediaPlayer toma mucho tiempo para preparar y almacenar

Mi aplicación tarda mucho tiempo en preparar y almacenar en búfer un flujo de audio. He leído esta pregunta ¿Por qué toma tanto tiempo para que MediaPlayer de Android prepare algunos flujos en vivo para su reproducción? , Sin embargo, sólo dice que la gente ha experimentado este problema, no indica cómo mejorar el problema.

Estoy experimentando esto en todas las versiones de Android, probado desde 2.2 – 4.1.2.

  • Error al recuperar el padre del elemento: No se encontró ningún recurso que coincida con el nombre dado '@android: style / TextAppearance.Holo.Widget.ActionBar.Title'
  • Activación del flash de la cámara durante la grabación de vídeo
  • AsyncTask onPostExecute nunca se llama
  • Prueba de unidad MVP usando mockito con los oyentes de eventos
  • Java.lang.IllegalStateException: Fragmento ya agregado
  • Obtención de la altura de la vista de texto antes de la representación en el diseño
  • Los flujos están en una tasa de bits adecuada para la conexión móvil y 3G. La misma secuencia toma menos de un segundo para iniciar el almacenamiento en búfer en la aplicación equivalente de iOS.

    ¿Hay una manera de especificar la cantidad de tiempo que se debe almacenar en búfer? Sé que la aplicación de radio Tune In ofrece esta función ( https://play.google.com/store/apps/details?id=tunein.player ).

    Gracias.

    Edit: He probado de nuevo y encontré que solo ocurre en dispositivos que ejecutan Gingerbread y superiores (> = 2.3). Sé que Android cambió el marco subyacente de OpenCore a StageFright. Entonces, ¿cómo puedo optimizar el marco de medios? Parece equivocado que el viejo HTC Wildfire pueda preparar, transmitir y reproducir, literalmente 10 veces más rápido que el nuevo HTC One X y Nexus 7.

  • Android cheque tiene llamada telefónica activa
  • Vista personalizada para elemento de menú
  • Establecer fuente de ImageView dinámicamente android
  • Diferencias entre / sdcard / emulated / 0 y / sdcard
  • Filtro de salida en logcat por tagname
  • Locales durante la prueba de unidad en Android
  • 3 Solutions collect form web for “Android MediaPlayer toma mucho tiempo para preparar y almacenar”

    He luchado con esta cuestión durante meses. Finalmente encontré la solución.

    El verdadero problema está en la implementación de la clase MediaPlayer. Particularmente con la forma en que MediaPlayer almacena los datos. Esta es la razón por la que la solución es crear su propio almacenamiento en búfer, guardarlo en un archivo temporal y alimentarlo a MediaPlayer.

    Este tutorial y el código fuente explican exactamente cómo. http://androidstreamingtut.blogspot.nl/2012/08/custom-progressive-audio-streaming-with.html

    Al adaptar este código, es fácil crear un reproductor de streaming mucho mejor.

    Google Developers realmente estropeó aquí.

    EDIT: Esta respuesta es bastante antigua. Hoy recomendaría no utilizar MediaPlayer y utilizar ExoPlayer en ExoPlayer lugar. Es extensible, estable y puede reproducir muchos tipos diferentes de medios. Puedes encontrarlo aquí: https://github.com/google/ExoPlayer/

    Realmente no hay mucho que puedes hacer ya que la clase MediaPlayer de Android no proporciona acceso a configuraciones de nivel inferior como el tamaño del búfer. La única alternativa sería hacer que tu propio reproductor use AudioTrack y una biblioteca como FFmpeg para hacer la decodificación.

    La única cosa que recomiendo es jugar con la codificación. Por ejemplo, para MP4s, asegúrese de que el MOOV Atom se encuentre al principio del archivo (hay suficientes preguntas sobre S / O respecto a cómo hacerlo con ffmpeg, etc.). Con MP3s, usted puede mirar codecs diferentes o bitrates por ejemplo.

    Por ejemplo, puede probar varios archivos de audio que encuentre en línea y si ve uno que no tarda mucho en almacenar, intente codificar sus archivos de la misma manera.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.