Shoutcast Streaming

Trever Fischer wm161 at wm161.net
Thu Dec 7 23:42:06 UTC 2006


Hi, I'm interested in creating a shoutcast output for Amarok. I'm not 
an 'official' developer, and I don't have svn commit access. But I still want 
to work on giving Amarok the ability to become a DJ for internet radio. I'm 
interested on some input for my ideas on how I could implement this feature.

I first suggest a new page to the options dialog reserved exclusively for 
shoutcast streaming. In this page you would be able to enable/disable 
shoutcast output as a whole with a simple checkbox. Immediately below this 
Big Red Button would be a pair of checkboxes, for running a local shoutcast 
server and for enabling streaming to a remote server. The local shoutcast 
server would be a simple way for the new user to share their music with 
minimal fuss. The legalities of this would have to be investigated of course, 
but it isn't much different than an Icecast or nullsoft ShoutCast server. As 
for streaming to a remote server, a setup similar to the MySQL Configuration 
widget could be used. A hostname, port, password, username, and mount would 
be supplied. Because of the different protocols used to stream _to_ a 
shoutcast server, a selection could be made with the appropriate options 
changed (Nullsoft's shoutcast server has only one mount). Also, a format to 
stream in (ogg and mp3 are libshout's only supported formats).

Next, I'm curious about how transcoding could be done across this. Not every 
user out there can support mp3 (A fresh install of Fedora or Suse), and not 
every format is easy on bandwidth (.wav, anyone? I've seen people try this). 
My best guess here is the use of libavcodec, however I don't like the concept 
of loading up this mostly linux-specific library for the occasional 
non-mp3/ogg in my collection.

My final request for comments is directed towards actually implementing this. 
My gut instinct tells me to implement this as an independent plugin, similar 
to the magnatune browser. There wouldn't be an interface to it, other than 
the aforementioned configuration setup. However, implementing it as an 
independent plugin removes the fancy crossfading that is so neat. A second 
point of entry could be adding a 'shoutcast' property to plugins, and hacking 
the output engine to return a suitable stream for use with libshout. The 
third method I see is using the property mentioned in the second in a custom 
shoutcast output plugin. This would (almost) rationalize using libavcodec to 
transcode to the streaming format.
-- 
PGP Key ID: 0x35EB69FB
Keyserver: wwwkeys.us.pgp.net

The contents of this document are licensed under the
Creative Commons - Attribution / Share Alike license.

http://creativecommons.org/licenses/by-sa/2.0
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/amarok/attachments/20061207/55fa007a/attachment.sig>


More information about the Amarok mailing list