SDK nivel 8 (Froyo) ha introducido la capacidad nativa de MediaPlayer para conectarse a una fuente de transmisión, como Shoutcast. Las versiones anteriores de SDK podían hacer soluciones provisionales, como ejecutar un proxy local en el dispositivo (consulte NPR).Streaming con Android MediaPlayer en SDK 8
Tomé el mismo enfoque que NPR y estoy usando un StreamProxy. Sin embargo, NPR primero comprueba si el SDK actualmente en ejecución es menor que 8. De ser así, usa el proxy. De lo contrario, se conecta directamente.
Mi StreamProxy solicita metadatos del servidor de Shoutcast, por lo que no se limita a enrutar los datos de Shoutcast a mi cliente. En cambio, analiza los metadatos y los utiliza en consecuencia, y solo enruta los datos de música.
Al intentar utilizar StreamProxy en SDK nivel 8 o superior, el MediaPlayer no se puede preparar. Mi StreamProxy recibe la conexión y la acepta, pero después de escribir con éxito la línea de estado y los encabezados para el cliente, la siguiente escritura produce java.net.SocketException: Connection reset by peer
. Esto da como resultado que el jugador del cliente arroje un Error(1,-1007)
.
Estoy tratando de averiguar por qué el MediaPlayer no puede conectarse a mi proxy local. Debería ser lo mismo que conectarse a la fuente original sin los metadatos, que hace el trabajo. Estoy reenviando en todos los encabezados de la fuente externa, a través de mi proxy, que incluye el tipo de contenido.
Seguiré investigando, pero siento que estoy en un callejón sin salida. Avíseme si se necesitan más detalles.
Cómo jugar SHOUTcast? Http: //stackoverflow.com/a/8833346/265167 –