Mixed MP3/Ogg Streaming
This is the problem, when a client, like XMMS, connects it negotiates the stream type. After this it just assumes all data after this point is of the same type. At no point can it switch content types. You can use something like a play list which lists multiple connections to simulate playing different formats in a row, the thing is this requires a reconnection to the server each time.
You can blame the two dominant protocols, SHOUT and ICY. One was created for the Shoutcast server and the other was created by the Icecast folks. Neither of them really considered the issue of carrying any other payload then MP3, or more to the point, changing content type in midstream.
At some point it would be great if Vorbis/Ogg became dominant because of the silly copyright restriction with MP3 that make the use of the lame encoder pretty questionable. It still has a way to go though since the code for bit peeling has yet to be finished and until that is completed, to down bitgrade an Ogg stream you have to decode it to some format like PCM and then reencode to Ogg (which is certainly not optimial for real time demands).
What we need is to create a new protocol that can handle different payloads. There are many problems with both methods in use today.
For instance, id3v2 has lyric tags that can be synchronized to the music. However, the reason you cannot have a player with the feature to sing-along to the bouncing ball is because the shoutcast, and icecast protocols don't support title streaming. They are also designed for one media type at a time... mp3 or ogg. Both were originally designed for just mp3 streaming.
The two methods both seem like hacks...
I'd like to see a new system that is based on xml for the meta data.. like the title-streaming. Maybe a multi channel system one being for the data stream, another for the Meta data.
Honestly the hard part isn't getting a new standard for streaming... its getting the people who make the decoders that have the issues. They would have to understand the protocals, and since these are the same people that came up with the two compeiting formats we have now... its pointless batle.
It isn't a lie if you belive it.
1. Why is it a bad thing to use a playlist? What's the big deal about reconnecting?
:)
2. Why not just convert all of your mp3 to ogg? Sure, you lose a little bit of quality, but you know, quality was lost when you converted to mp3 in the first place. What you gain (a collection of nothing but ogg) ends up being far greater than what you lose. I'm in the process of converting all of my mp3's to ogg (several thousand files, so it's taking a while...), and to be perfectly honest with you, I can't tell any difference at all in quality. Not to mention the great public service you'd be doing if you uploaded them to KaZaA after you were done
Edna sounds like it could do what you want.
Basically its a smallish python program that acts as a, tiny, webserver - generating lists of all your songs, and streaming them to your clients browser - where you have XMMS, or Freeamp setup to play the stream.
I suppose if the music is already on the same machine as your webserver then it may be a bit redundant to have a second server - but Edna is neat, (this is the one program that made me start hacking Python...).
Decode all of your .mp3s into .wav
.ogg?
then recode them as
It would work, its not doing what you want,
but it would work.
Last night while toying with ideas on how to proceed, while waiting to see if Question would make Ask Slashdot, I discovered something that does work after a fashion anyway. I setup shoutcast on the server(Linux). I am feeding shoutcast with Winamp's(NT) streaming component, from a playlist of all the MP3's and OGG's on the server. Winamp seems to be able to make the change back an forth between the two formats as it sends the data to Shoutcast(and presumably Icecast.) I can then pick up the stream on another winamp session(or freeamp or XMMS) on another machine. So it is possible in a way to do what I want if there existed a program that could do what winamp does, and have its playlist populated by a web interface while it is running.
Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.
Hmmm. It sounds like it might be as much trouble to set up your system to batch convert all your MP3 to OGG as it is to set-up mixed format streaming, and since that is the way you want to go, bite the bullet. Of course, ?I can imagine that if you have a huge collection it could take a lot of time. However, if you set your machine up to just chug through the MP3s when idle you'll mkae real inroads. Set it up so your streaming server just streams the Oggs, then you'l have the delight of more music coming on-line every day ;-)
~~~~~ BigLig2? You mean there's another one of me?
I am currently working on a small perl program, which streams music, called trout which is sort of part of a bigger kde program, but will soon get its own release. Its still fairly unstable to say the least, but it sort of works.
:-). I have been fiddling around with various headers being sent (and I still am) and at the moment trout pretends to be an ICEcast server, but I am trying to use x-audiocast headers, with content-length and connection: keep-alive. I'm still working on this (so it isn't even on CVS) but I had never realised I could use it for streaming oggs and mp3s, I was more concerned about sending information about songs, but having read this article I might have to see how it works.
There is a reason for this plug, this post has got a point
We'll see.
let me know how it comes out...as it may be useful for what I am doing in my project.
Power Corrupts,Absolute Power Corrupts Absolutely, leaving one person(group)in charge is absolutely corrupt.