I like to listen to radio shows at work, and am having trouble finding a capable player. I run a shoutcast server at home, and save the shows in MP3 format. So, the player I need should support shoutcast streams as well as playing MP3s hosted on my web server, which may or may not be finished saving at the time I start playing them (i.e. I might begin playing the file 2 hours into a 5 hour show.) The thing I really need is the ability to seek easily and reliably within either the stream or the recorded MP3 file, within the obvious restriction of not seeking past the end of the saved file.
There are several technical challenges in this related to how the player handles seeking. First off, for the live stream case, most players I've seen don't allow any kind of seeking. Some will let you pause the stream, but arbitrary timeshifting of the live stream is generally not available. For the recorded and currently recording shows, seeking should be easier, as long as the player is smart enough to do the right thing with HTTP to seek into the file.
The most suitable option so far has been mplayer. but it has its limitations. Pausing live streams works fine, seeking doesn't. Pausing and seeking of recorded MP3s via HTTP kinda works, but often it will get confused, and bail out of playing the file, or reset back to the beginning. This makes it almost unusable for my purposes. Furthermore, I'd like something with a little bit more robust interface than mplayer provides, so I can, say, use a status bar to advance forwards/backwards in the stream. Solving some of these problems in a robust manner would require the player to buffer a large amount of the content, possibly to disk, and I haven't seen any player that does this.
Anyway, I'm just throwing this out there in case anyone's seen a player that specializes in playing streaming/recorded content in a timeshifting Tivo-like way. My OS preference would be OS X then Linux (no Windows machines here at work.)
If there's no such animal, I guess I'll have to start thinking about patching MPlayer or something.