Transmisión de audio con Android MediaPlayer
Estoy tratando de crear un streamer de audio con MediaPlayer de Android. Está bien si no funciona con Android 2.1 o abajo. Necesito poder reproducir el audio de un stream de SHOUTcast. Aquí está mi código:
player = new MediaPlayer(); try { player.setDataSource("http://87.230.103.107:8000"); player.prepareAsync(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } player.start();
Por alguna razón, este código jugará nada. Creo que puede estar relacionado con los permisos de la aplicación. ¿Alguien sabe lo que está pasando?
- ¿Cómo resolver "reproductor multimedia Android detener automáticamente después de algún tiempo en streaming"?
- Reproducir desde Shoutcast Url en android
- Recibir información de un flujo de ShoutCast en Android
- ¿Cómo puedo separar los metadatos y la pista de un flujo de shoutcast sin realizar solicitudes separadas de metadatos y el streaming
- Android 2.2 MediaPlayer está funcionando bien con una URL de SHOUTcast, pero no con la otra
¡Gracias!
[UPDATE] Estoy recibiendo los siguientes errores:
04-25 23:35:15.432: ERROR/MediaPlayer(283): start called in state 4 04-25 23:35:15.432: ERROR/MediaPlayer(283): error (-38, 0) 04-25 23:35:15.602: ERROR/MediaPlayer(283): Error (-38,0) 04-25 23:35:17.542: INFO/AwesomePlayer(33): calling prefetcher->prepare() 04-25 23:35:18.547: INFO/Prefetcher(33): [0x17650] cache below low water mark, filling cache. 04-25 23:35:18.762: INFO/AwesomePlayer(33): prefetcher is done preparing 04-25 23:35:19.769: ERROR/AwesomePlayer(33): Not sending buffering status because duration is unknown.
- Código androide para streaming shoutcast stream breaks en 2.2
- Icecast / shoutcast streaming en Android
- Cómo obtener el tipo de contenido de ShoutCast 7.html
- Estado de reproducción de Android MediaPlayer
- Solicitud de Android SHOUTcast
- ¿Cómo analizar una respuesta HTTP no estándar?
- Obtención de metadatos de SHOUTcast utilizando IcyStreamMeta
Lo siento por la respuesta tardía, corrió a través de este mientras buscaba respuestas a otro problema.
Si todavía necesita una respuesta, está llamando a start()
mientras aún se está preparando. PrepareAsync()
devuelve inmediatamente, a diferencia de prepare()
. El problema con el uso de 'prepare () `con streams es que bloqueará hasta que tenga suficientes datos para iniciar la reproducción.
Lo que quieres hacer es establecer un OnPreparedListener
, y tener el start()
llamado desde allí.
El problema es que el tipo de contenido "audio / aacp" streaming no es compatible directamente. Algunas bibliotecas de decodificación pueden ser demandadas para jugar "aacp", por favor vea la solución a continuación:
Freeware Advanced Audio (AAC) Decodificador para Android
¿Cómo usar esta biblioteca?
Para más detalles por favor vea esto .
Considere asuntos legales mientras lo usa .
- El proyecto http://code.google.com/p/aacplayer-android/ tiene licencia bajo GPL, por lo que puede crear aplicaciones comerciales * encima de ella, pero necesita rellenar la GPL – principalmente significa publicar su código así como. * Si utiliza el segundo proyecto http://code.google.com/p/aacdecoder-android/ , entonces no necesita publicar su código * (la biblioteca está licenciada bajo LGPL).
1) Evite usar prepare (), use prepareAsyc () en su lugar. (O) poner su lógica de juego en un hilo trabajado o un hilo separado. 1) Evite usar player.prepare (), en su lugar use player.prepareAsync ();
(O) mantener la lógica en un hilo separado. (Puede utilizar el servicio de intenciones, AsyncTask, etc.)
2) También intente con el constructor estático MediaPlayer.create (Uri);