Please enjoy jwz mixtape 001
I've tested it in iTunes and it seems to work fine (e.g., you'll see the song titles as the songs change) but I would be interested to know if that's all working sensibly in things that are not iTunes.
Update: Earlier, there was a bug that in some players, the audio would chirp (those players did not understand the kind of metadata I'm sending; they made that noise when they interpreted track names as audio data.) That bug should be fixed now: those players should now play the audio fine, but won't have metadata. I thought all the popular players supported Shoutcast-style inline metadata ("icy-metaint"), but apparently not. I guess the others want the Icecast-style UDP metadata ("x-audiocast-udpport"). That is, if they support metadata at all. The UDP version sounds hard (and dumb) and I'm not going to implement that. Use iTunes.
(Incidentally, the source is here, at the bottom.)
(And I think it's kind of sad that you all want to talk about Winamp and none of you wan to talk about music.)
Tags: firstperson, mixtape, music
Current Music: as noted
Dear Lazyweb, I seek software that does the following:
- I give it an ordered list of MP3 files.
- When a user loads some URL in (e.g.) iTunes, those files are streamed out, one after another, with appropriate metadata (extracted from underlying ID3 tags) sent just as each file starts.
- When the user connects, it starts playing at the beginning of file #1 for each user. (As opposed to multicast-style, where all users get whatever's-on-right-now at the same time.)
- The underlying individual files themselves should not be accessible.
I don't think I can make Icecast2 do this, nor Apache::MP3. But maybe I'm wrong.
Failing that, can someone explain to me what asynchronous streaming metadata format iTunes actually understands, and what headers/protocol it requires? It doesn't appear to do the "icy-metaint" thing; does that mean it does the UDP thing? I don't see headers being exchanged for either; and yet, it seems to update metadata somehow. Please don't make me run a packet sniffer. I hate that.
Update: Nevermind, I wrote my own.