[Icecast-dev] Android Java source for icecast streaming
jselbie at hotmail.com
Thu Jun 19 21:59:21 PDT 2014
tl;dr - I'm looking for sources to an Android Icecast client written in Java.
I maintain an open source Android app (WREK Online) that plays the live mp3 stream from the station's Icecast server.
Using the built in MediaPlayer class that is part of the Android SDK works OK. As a developer, I just give it the streaming URL of the Icecast server, hook up a few callbacks, and it plays just fine. But this class has its limitations and a few bugs.
The biggest limitation of Android's MediaPlayer class is that it can't pull down the metadata from the Icecast server. It doesn't pass allow an option for the developer to pass up an Ice-MetaData header for the specified URL. And even if you could, it likely wouldn't be able to parse out the inline metadata within the returned HTTP byte stream (as indicated by the presence of an icy-metaint header).
So therefore, my app can't show the current artist and song title on the screen very easily. An alternative option is to continuously make an http polling request for the "status.xsl" page on the server and parse this information out. But polling isn't an ideal solution.
I am considering going full on an writing my own replacement for MediaPlayer. This would mean handling my own HTTP streaming, my own MP3 frame parser, additional code to extract out the metadata from the stream bytes, calling into Android's MediaCodec APIs to convert to PCM, and ultimately into an AudioTrack instance. All of which I am comfortable doing. However, this will likely take me a better part of a week to get working with lots of testing and bug fixing.
Is there an open-source solution I could potentially leverage? I know there are few Linux projects written in C/C++ that have been ported to the Android NDK, but I'd prefer an Android Java solution. I've Google'd around, but couldn't find anything definitive.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Icecast-dev