Slashdot Mirror


Mixed MP3/Ogg Streaming

haplo21112 writes "I am working on coding a web front end to choose music from the collections stored on my web servers hard drive, and then stream this music to machine connected to my stereo. Like many people I would think, my music collection is mixed between .ogg/.mp3 formats since I started ripping before .ogg(which I now use) was available. The problem I have run up against is I can find no utility for streaming, that supports both formats, specifically both in a mixed playlist. Mod_MP3 came close, but it turns out that it can handle only one at a time either all .mp3's or all .oggs, the playlist can't be mixed. I looked into the Icecast streaming utilities, but they seem to be mp3 bound at least till the icecast 2.0 release. Has anyone run into this same problem of mixed media, did you come up with a solution that didn't require redoing half your collection in the other format." Ah, if only the problem was that simple...

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).

2 of 19 comments (clear)

  1. mixed payload by JDizzy · · Score: 3, Interesting

    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.
  2. Re:An Update by krow · · Score: 3, Interesting

    Ok, I think I can sum up what you wrote into the following. mod_mp3 assumes that a file is an MP3 unless you tell it that the file if ogg. If you tell it that its reading ogg, it assumes all files are ogg.
    Solution is to add a directive saying "mixed is ok", setting the default op to "send playlist" and then add code to load.c to tell the difference between ogg and mp3.
    Once the "this is this type of file is written" the rest is trivial.

    --
    You can't grep a dead tree.