SDK di livello 8 (Froyo) ha introdotto la funzionalità nativa per MediaPlayer per connettersi a una fonte di streaming, come Shoutcast. Le versioni precedenti dell'SDK erano in grado di eseguire soluzioni alternative, come l'esecuzione di un proxy locale sul dispositivo (vedere NPR).Streaming con Android MediaPlayer in SDK 8
Ho seguito lo stesso approccio di NPR e sto utilizzando un StreamProxy. Tuttavia, NPR verifica innanzitutto se l'SDK attualmente in esecuzione è inferiore a 8. In tal caso, utilizza il proxy. Altrimenti, si connette direttamente.
My StreamProxy richiede i metadati dal server Shoutcast, quindi non instrada semplicemente i dati da Shoutcast al mio client. Invece, analizza i metadati e li usa di conseguenza, e instrada solo i dati musicali.
Quando si tenta di utilizzare StreamProxy al livello SDK 8 o successivo, MediaPlayer non riesce a prepararsi. My StreamProxy riceve la connessione e la accetta, ma dopo aver scritto con successo la riga di stato e le intestazioni sul client, la scrittura successiva produce java.net.SocketException: Connection reset by peer
. Ciò si traduce in mediaplayer del cliente lanciando un Error(1,-1007)
.
Sto cercando di capire perché MediaPlayer non è in grado di connettersi al mio proxy locale. Dovrebbe essere lo stesso della connessione alla fonte originale senza i metadati, che funziona con . Sto inoltrando tutte le intestazioni dalla fonte esterna, tramite il mio proxy, che include il tipo di contenuto.
Continuerò a esaminarlo, ma mi sento come se fossi in un vicolo cieco. Fammi sapere se sono necessari ulteriori dettagli.
Come si gioca a SHOUTcast? Http: //stackoverflow.com/a/8833346/265167 –