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