summaryrefslogtreecommitdiffstats
path: root/kioslave/http/shoutcast-icecast.txt
diff options
context:
space:
mode:
Diffstat (limited to 'kioslave/http/shoutcast-icecast.txt')
-rw-r--r--kioslave/http/shoutcast-icecast.txt605
1 files changed, 0 insertions, 605 deletions
diff --git a/kioslave/http/shoutcast-icecast.txt b/kioslave/http/shoutcast-icecast.txt
deleted file mode 100644
index f7bdcf1e7..000000000
--- a/kioslave/http/shoutcast-icecast.txt
+++ /dev/null
@@ -1,605 +0,0 @@
-
-Audio and Apache HTTPD
-ApacheCon 2001
-Santa Clara, US
-
-April 6th, 2001
-
-Sander van Zoest <sander@vanZoest.com>
-Covalent Technologies, Inc.
-<http://www.covalent.net/>
-
-Latest version can be found at:
- <http://www.vanZoest.com/sander/apachecon/2001/>
-
-Introduction:
-
-About this paper:
-
-Contents:
-
- 1. Why serve Audio on the Net?
-
- This is almost like asking, why are you reading this? it might be
- because of the excitement caused by the new media that has recently
- crazed upon the internet. People are looking to bring their lifes onto
- the net, one of the things that brings that closer to a reality is the
- ability to hear live broadcasts of the worlds news, favorite sport;
- hear music and to teleconference with others. Sometimes it is simply
- to enhance the mood to a web site or to provide audio feedback of
- actions performed by the visitor of the web site.
-
- 2. What makes delivering audio so different?
-
- The biggest reason to what makes audio different then traditional
- web media such as graphics, text and HTML is the fact that timing
- is very important. This caused by the significant increase in size
- of the media and the different quality levels that exist.
-
- There really are two kinds of goals behind audio streams.
- In one case there is a need for immediate response the moment
- playback is requested and this can sacrifice quality. While
- in the other case quality and a non-interrupted stream are much
- more important.
-
- This sort of timing is not really required of any other media,
- with the exception of video. In the case of HTML and images the
- files sizes are usually a lot smaller which causes the objects
- to load much quicker and usually are not very useful without
- having the entire file. In audio the middle of a stream can have
- useful information and still set a particular mood.
-
- 3. Different ways of delivery Audio on the Net.
- Embedding audio in your Web Page
-
- This used to be a lot more common in the past. Just like embedding
- an image in a web page, it is possible to add a sound clip or score
- to the web page.
-
- The linked in audio files are usually short and of low quality to
- avoid a long delay for downloading the rest of the web page and the
- audio format needs to be supported by the browser natively or with
- a browser plug-in to avoid annoying the visitor.
-
- This can be accomplished using the HTML 4.0 [HTML4] object element which
- works similar to how to specify an applet with the object element.
- In the past this could also be accomplished using the embed and bgsound
- browser specific additions to HTML.
-
- example:
- <object type="audio/x-midi" data="../media/sound.mid" width="200" height="26">
- <param name="src" value="../media/sound.mid">
- <param name="autostart" value="true">
- <param name="controls" value="ControlPanel">
- </object>
-
- Each param element is specific to each browser. Please check with each
- browser for specific information in regards to what param elements are
- available.
-
- In this method of delivering audio the audio file is served up via the
- web server. When using an Apache HTTPD server make sure that the appropriate
- mime type is configured for the audio file and that the audio file is
- named and referenced by the appropriate extension.
-
- Although the current HTML 4.01 [HTML4] says to use the object element
- many browsers out on the market today still look for the embed element.
- Below find a little snipbit that will work work in many browsers.
-
- <object type="audio/x-midi" data="../media/sound.mid" width="200" height="26">
- <param name="src" value="../media/sound.mid">
- <param name="autostart" value="true">
- <param name="controls" value="ControlPanel">
-
- <embed type="audio/x-midi" src="../media/sound.mid"
- width="200" height="26" autoplay="true" controls="ControlPanel">
- <noembed>Your browser does not support embedded WAV files.</noembed>
- </object>
-
- With the increasing installation base of the Flash browser plug-in by
- Macromedia most developers that are looking to provide this kind of
- functionality to a web page are creating flash elements that have their
- own way of adding audio that is discussed in Flash specific documents.
-
- Downloading via HTTP
-
- Using this method the visitor to the website will have to download the
- entire audio file and save it to the hard drive before it can be
- listened to. (1) This is very popular with people that want to listen
- to high quality streams of audio and have a below ISDN connection to
- the internet. In some cases where the demand for a stream is high or
- the internet is congested downloading the content even for high bandwidth
- users can be affective and useful.
-
- One of the advantages of downloading audio to the local computer hard
- drive is that it can be played back (once downloaded) any time as long
- as the audio file is accessable from the computer.
-
- There are a lot of sites on the internet that provide this functionality
- for music and other audio files. It is also one of the easiest ways to
- delivery high quality audio to visitors.
-
- (1) Microsoft Windows Media Player in conjunction with the Microsoft
- Internet Explorer Browser will automaticly start playing the
- audio stream after a sufficient amount of the file has been
- downloaded. This can be accomplished because of the tight
- integration of the Browser and Media Player. With most audio players
- you can listen to a file being downloaded, but you will have to
- envoke the action manually.
-
- . On-Demand streaming via HTTP
-
- The real difference between downloading and on-demand streaming is
- that in on-demand streaming the audio starts playing before the entire
- audio file has been downloaded. This is accomplished by a hand of off
- the browser to the audio player via an intermediate file format that
- has been configured by the browser to be handled by the audio player.
-
- Look in a further section entitled "Linking to Audio via Apache HTTPD"
- below for more information about the different intermediate file formats.
-
- This type of streaming is very popular among the open source crowd and
- is the most widely implemented using the MP3 file format. Apache,
- Shoutcast [SHOUTCAST] and Icecast [ICECAST] are the most common
- software components used to provide on-demand streaming via HTTP. Both
- Icecast and Shoutcast are not fully HTTP compliant, but Icecast is
- becoming closer. For more information about the Shoutcast and Icecast
- differences see the section below.
-
- Sites like Live365.com and MP3.com are huge sites that rely on this
- method of delivery of audio.
-
- . On-Demand Streaming via RTSP/RTP
-
- RTSP/RTP is a new set of streaming protocols that is getting more
- backing and becoming more popular by the second. The specification
- was developed by the Internet Engineering Task Force Working Groups
- AVT [IETFAVT] and MMUSIC [IETFMMUSIC]. RTP the Realtime Transfer
- Protocol has been around longer then RTSP and originally came out
- of the work towards a better teleconferencing, mbone, type system.
- RTSP is the Real-Time Streaming Protocol that is used as a control
- protocol and acts similarily to HTTP except that it maintains state
- and is bi-directional.
-
- Currently the latest Real Networks Streaming Servers support RTSP
- and RTP and Real Networks own proprietary transfer protocol RDT.
- Apple's Darwin Streaming server is also RTSP/RTP compliant.
-
- The RTSP/RTP protocol suite is very powerful and flexable in regards
- to your streaming needs. It has the ability to suport "server-push"
- style stream redirects and has the ability to throttle streams to
- ensure the stream can sustain the limited bandwidth over the network.
-
- For On-Demand streams the RTP protocol would usually stream over
- TCP and have a second TCP connection open for RTSP. Because of the
- rich features provided by the protocol suite, it is not very well
- suited to allow people to download the stream and therefore the
- download via HTTP method might still be preferred by some.
-
- . Live Broadcast Streaming via RTSP/RTP
-
- In the case of a live broadcast streaming RTSP/RTP shines. RTP allowing
- for UDP datagrams to be transmitted to clients allows for fast immediate
- delivery of content with the sacrifice of reliability. The RTP stream
- can be send over IP Multicast to minimize bandwidth on the network.
-
- Many Content Delivery Networks (CDNs) are starting to provide support for
- RTSP/RTP proxies that should provide a better quality streaming environment
- on the internet.
-
- Much work is also being done in the RTP space to provide transfers over
- telecommunication networks such as cellular phones. Although not directly
- related, per se, it does provide a positive feeling knowing that all the
- audio related transfer groups seem to be working towards a common standard
- such as RTP.
-
- . On-Demand or Live Broadcast streaming via MMS.
-
- This is the Microsoft Windows Media Technologies Streaming protocol. It
- is only supported by Microsoft Windows Media Player and currently only
- works on Microsoft Windows.
-
- 5. Configuring Mime Types
-
- One of the most hardest things in serving audio has been the wide variety
- of audio codecs and mime types available. The battle of mime types on the
- audio player side of things isn't over, but it seems to be a little more
- controlled.
-
- On the server side of things provide the appropriate mime type for the
- particular audio streams and/or files that are being served to the audio
- players. Although some clients and operating systems handle files fully
- based on the file extension. The mime type [RFC2045] is more specific
- and more defined.
-
- The registered mime types are maintained by IANA [IANA]. On their site
- they have a list of all the registered mime types and their name space.
-
- If you are planning on using a mime type that isn't registered by IANA
- then signal this in the name space by adding a "x-" before the subtype.
- Because this was not done very often in the audio space, there was a
- lot of confusion to what the real mime type should be.
-
- For example the MPEG 1.0 Layer 3 Audio (MP3) [ORAMP3BOOK] mime type
- was not specified for the longest time. Because of this the mime type
- was audio/x-mpeg. Although none of the audio players understood
- audio/x-mpeg, but understood audio/mpeg it was not a technically
- correct mime type. Later audio players recognized this and started
- using the audio/x-mpeg mime type. Which in the end caused a lot
- of hassles with clients needing to be configured differently depending
- on the website and client that was used. Last november we thanked
- Martin Nilsson of the ID3 tagging project for registering audo/mpeg
- with IANA. [RFC3003]
-
- Correct configuration of Mime Types is very important. Apache HTTPD
- ships with a fairly up to date copy of the mime.types file, so most
- of the default ones (including audio/mpeg) are there.
-
- But in case you run into some that are not defined use the mod_mime
- directives such as AddType to fix this.
-
- Examples:
- AddType audio/x-mpegurl .m3u
- AddType audio/x-scpls .pls
- AddType application/x-ogg .ogg
-
-
- 6. Common Audio File Formats
-
- There are many audio formats and metadata formats that exist. Many of
- them do not have registered mime types and are hardly documented.
- This section is an attempt at providing the most accurate mime type
- information for each format with a rough description of what the files
- are used for.
-
- . Real Audio
-
- Real Networks Proprietary audio format and meta formats. This is one
- of the more common streaming audio formats today. It comes in several
- sub flavors such as Real 5.0, Real G2 and Real 8.0 etc. The file size
- varies depending on the bitrates and what combination of bitrates are
- contained within the single file.
- The following mime types are used
- audio/x-pn-realaudio .ra, .ram, .rm
- audio/x-pn-realaudio-plugin .rpm
- application/x-pn-realmedia
-
- . MPEG 1.0 Layer 3 Audio (MP3)
-
- This is currently one of the most popular downloaded audio formats
- that was originally developed by the Motion Pictures Experts Group
- and has patents by the Fraunhofer IIS Institute and Thompson
- Multimedia. [ORAMP3BOOK] The file is a lossy compression that at
- a bitrate of 128kbps reduces the file size to roughly a MB/minute.
- The mime type is audio/mpeg with the extension of .mp3 [RFC3003]
-
- . Windows Media Audio
-
- Originally known as MS Audio was developed by Microsoft as the MP3
- killer. Still relatively a new format but heavily marketed by
- Microsoft and becoming more popular by the minute. It is a successor
- to the Microsoft Audio Streaming Format (ASF).
-
- . WAV
-
- Windows Audio Format is a pretty semi-complicated encapsulating
- format that in the most common case is PCM with a WAV header up front.
- It has the mime type audio/x-wav with the extension .wav.
-
- . Vorbis
-
- Ogg Vorbis [VORBIS] is still a relatively new format brought to
- life by CD Paranoia author Christopher Montgomery; known to the
- world as Monty. It is an open source audio format free of patents
- and gotchas. It is a codec/file format that is roughly as good as
- the MP3 format, if not much better. The mime type for Ogg Vorbis is
- application/x-ogg with the extension of .ogg.
-
- . MIDI
-
- The MIDI standard and file format [MIDISPEC] have been used by
- Musicians for a long time. It is a great format to add music to
- a website without the long download times and needing special players
- or plug-ins. The mime type is audio/x-midi and the extension is .mid
-
- . Shockwave Flash (ADPCM/MP3) [FLASH4AUDIO]
-
- Macromedia Flash [FLASH4AUDIO] uses its own internal audio format
- that is often used on Flash websites. It is based on Adaptive
- Differential Pulse Code Modulation (ADPCM) and the MP3 file format.
- Because it is usually used from within Flash it usually isn't served
- up seperatedly but it's extension is .swf
-
- There are many many many more audio codecs and file formats that exist.
- I have listed a few that won't be discussed but should be kept in mind.
- Formats such as PCM/Raw Audio (audio/basic), MOD, MIDI (audio/x-midi),
- QDesign (used by Quicktime), Beatnik, Sun's AU, Apple/SGI's AIFF, AAC
- by the MPEG Group, Liquid Audio and AT&T's a2b (AAC derivatives),
- Dolby AC-3, Yamaha's TwinVQ (originally by Nippon Telephone and Telegraph)
- and MPEG-4 audio.
-
- 7. Linking to Audio via Apache HTTPD
-
- There are many different ways to link to audio from the Apache HTTPD
- web server. It seems as if every codec has their own metafile format.
- The metafile format is provided to allow the browser to hand off the
- job of requesting the audio file to the audio player, because it is
- more familiar with the file format and how to handle streaming or how
- to actually connect to the audio server then the web browser is.
-
- This section will discuss the more common methods to provide streaming
- links to provide that gateway from the web to the audio world.
-
- Probably the one that is the most recognized file is the RAM file.
-
- . RAM
-
- Real Audio Metafile. It is a pretty straight forward way that Real
- Networks allowed their Real Player to take more control over their
- proprietary audio streams. The file format is simply a URL on each
- line that will be streamed in order by the client. The mime type
- is the same as other RealAudio files audio/x-pn-realaudio where
- the pn stands for Progressive Networks the old name of the company.
-
- . M3U
-
- This next one is the MPEG Layer 3 URL Metafile that has been around
- for a very long time as a playlist format for MP3 players. It supported
- URLs pretty early on by some players and got the mime type
- audio/x-mpegurl and is now used by Icecast and many destination sites
- such as MP3.com. The format is exactly the same as that of the RAM
- file, just a list of urls that are separated by line feeds.
-
- . PLS
-
- This is the playlist files used by Nullsoft's Winamp MP3 Player. Later
- on it got more widely used by Nullsoft's Shoutcast and has the mime
- type of audio/x-scpls with the extension .pls. Before shoutcast the
- mimetype was simply audio/x-pls. As you can see in the example below
- it looks very much like a standard windows INI file format.
-
- Example:
- [playlist]
- numberofentries=2
- File1=<uri>
- Title1=<title>
- Length1=<length or -1>
- File2=<uri>
- Title2=<title>
- Length2=<length or -1>
-
- . SDP
-
- This is the Session Description Protocol [RFC2327] which is heavily
- used within RTSP and is a standard way of describing how to subscribe
- to a particular RTP stream. The mime type is application/sdp with the
- extension .sdp .
-
- Sometimes you might see RTSL (Real-Time Streaming Language) floating
- around. This was an old Real Networks format that has been succeeded
- by SDP. It's mimetype was application/x-rtsl with the extension of .rtsl
-
- . ASX
-
- Is a Windows Media Metafile format [MSASX] that is based on early XML
- standards. It can be found with many extensions such as .wvx, .wax
- and .asx. I am not aware of a mime type for this format.
-
- . SMIL
-
- Is the Synchronized Multimedia Integration Language [SMIL20] that
- is now a W3C Recommendation [W3SYMM]. It was originally developed
- by Real Networks to provide an HTML-like language to their Real Player
- that was more focused on multimedia. The mime type is application/smil
- with the extensions of either .smil or .smi
-
- . MHEG
-
- Is a hypertext language developed by the ISO group. [MHEG1] [MHEG5]
- and [MHEG5COR]. It has been adopted by the Digital Audio Visual
- Council [DAVIC]. It is more used for teleconferencing, broadcasting
- and television, but close enough related that it receives a mention
- here. The mime type is application/x-mheg with the extension of
- .mheg
-
- 8. Configuring Apache HTTPD specificly to serve large Audio Files
-
- Some of the most common things that you will need to adjust to be
- able to serve many large audio files via the Apache HTTPD Server.
- Because of the difference in size between HTML files and Audio files,
- the MaxClients will need to be adjusted appropriatedly depending on
- the amount of time listeners end up tieing up a process. If you are
- serving high quality MP3 files at 128kbps for example you should
- expect more then 5 minute download times for most people.
-
- This will significantly impact your webserver since this means that
- that process is occupied for the entire time. Because of this you
- will also want to in crease the TimeOut Directive to a higher
- number. This is to ensure that connections do not get disconnected
- half way through a transfer and having that person hit "reload"
- and connect again.
-
- Because of the amount of time the downloads tie up the processes
- of the server, the smallest footprint of the server in memory would
- be recommended because that would mean you could run more processes
- on the machine.
-
- After that normal performance tweaks such as max file descriptor
- changes and longer tcp listen queues apply.
-
- 9. Icecast/Shoutcast Protocol.
-
- Both protocols are very tightly based on HTTP/1.0. The main difference
- is a group of new headers such as the icy headers by Shoutcast and the
- new x-audiocast headers provided by Icecast.
-
- A typical shoutcast request from the client.
-
- GET / HTTP/1.0
-
- ICY 200 OK
- icy-notice1:<BR>This stream requires <a href="http://www.winamp.com/">
- Winamp</a><BR>
- icy-notice2:SHOUTcast Distributed Network Audio Server/posix v1.0b<BR>
- icy-name: Great Songs
- icy-genre: Jazz
- icy-url: http://shout.serv.dom/
- icy-pub: 1
- icy-br: 24
-
- <data><songtitle><data>
-
- The icy headers display the song title and other formation including if
- this stream is public and what the bitrate is.
-
- A typical icecast request from the client.
-
- GET / HTTP/1.0
- Host: icecast.serv.dom
- x-audiocast-udpport: 6000
- Icy-MetaData: 0
- Accept: */*
-
- HTTP/1.0 200 OK
- Server: Icecast/VERSION
- Content-Type: audio/mpeg
- x-audiocast-name: Great Songs
- x-audiocast-genre: Jazz
- x-audiocast-url: http://icecast.serv.dom/
- x-audiocast-streamid:
- x-audiocast-public: 0
- x-audiocast-bitrate: 24
- x-audiocast-description: served by Icecast
-
- <data>
-
- NOTE: I am mixing the headers of the controlling client with those form
- a listening client. This might be better explained at a latter
- date.
-
- The CPAN Perl Package Apache::MP3 by Lincoln Stein implements a little of
- each which works because MP3 players tend to support both.
-
- One of the big differences in implementations between the listening clients
- is that Icecast uses an out of band UDP channel to update metadata
- while the Shoutcast server gets it meta data from the client embedded within
- the MP3 stream. The general meta data for the stream is set up via the
- icy and x-audiocast HTTP headers.
-
- Although the MP3 standard documents were written for interrupted communication
- it is not very specific on that. So although it doesn't state that there is
- anything wrong with embedding garbage between MPEG frames the players that
- do not understand it might make a noisy bleep and chirps because of it.
-
-References and Further Reading:
-
-[DAVIC]
- Digital Audio Visual Council
- <http://www.davic.org/>
-
-[FLASH4AUDIO]
- L. J. Lotus, "Flash 4: Audio Options", ZD, Inc. 2000.
- <http://www.zdnet.com/devhead/stories/articles/0,4413,2580376,00.html>
-
-[HTML4]
- D. Ragget, A. Le Hors, I. Jacobs, "HTML 4.01 Specification", W3C
- Recommendation, December, 1999.
- <http://www.w3.org/TR/html401/>
-
-[IANA]
- Internet Assigned Numbers Authority.
- <http:/www.iana.org/>
-
-[ICECAST]
- Icecast Open Source Streaming Audio System.
- <http://www.icecast.org/>
-
-[IETFAVT]
- Audio/Video Transport WG, Internet Engineering Task Force.
- <http://www.ietf.org/html.charters/avt-charter.html>
-
-[IETFMMUSIC]
- Multiparty Multimedia Session Control WG, Internet Engineering Task
- Force. <http://www.ietf.org/html.charters/mmusic-charter.html>
-
-[IETFSIP]
- Session Initiation Protocol WG, Internet Engineering Task Force.
- <http://www.ietf.org/html.charters/sip-charter.html>
-
-[IPMULTICAST]
- Transmit information to a group of recipients via a single transmission
- by the source, in contrast to unicast.
- IP Multicast Initiative
- <http://www.ipmulticast.com/>
-
-[MIDISPEC]
- The International MIDI Association,"MIDI File Format Spec 1.1",
- <http://www.vanZoest.com/sander/apachecon/2001/midispec.html>
-
-[MHEG1]
- ISO/IEC, "Information Technology - Coding of Multimedia and Hypermedia
- Information - Part 1: MHEG Object Representation, Base Notation (ASN.1)";
- Draft International Standard ISO 13522-1;1997;
- <http://www.ansi.org/>
- <http://www.iso.ch/cate/d22153.html>
-
-[MHEG5]
- ISO/IEC, "Information Technology - Coding of Multimedia and Hypermedia
- Information - Part 5: Support for Base-Level Interactive Applications";
- Draft International Standard ISO 13522-5:1997;
- <http://www.ansi.org/>
- <http://www.iso.ch/cate/d26876.html>
-
-[MHEG5COR]
- Information Technology - Coding of Multimedia and Hypermedia Information
- - Part 5: Support for base-level interactive applications -
- - Technical Corrigendum 1; ISO/IEC 13552-5:1997/Cor.1:1999(E)
- <http://www.ansi.org/>
- <http://www.iso.ch/cate/d31582.html>
-
-[MSASX]
- Microsoft Corp. "All About Windows Media Metafiles". October 2000.
- <http://msdn.microsoft.com/workshop/imedia/windowsmedia/
- crcontent/asx.asp>
-
-[ORAMP3]
- S. Hacker; MP3: The Definitive Guide; O'Reilly and Associates, Inc.
- March, 2000.
- <http://www.oreilly.com/catalog/mp3/>
-[RFC2045]
- N. Freed and N. Borenstein, "Multipurpose Internet Mail
- Extensions (MIME) Part One: Format of Internet Message Bodies",
- RFC 2045, November 1996. <http://www.ietf.org/rfc/2045.txt>
-
-[RFC2327]
- M. Handley and V. Jacobson, "SDP: Session Description Protocol",
- RFC 2327, April 1998. <http://www.ietf.org/rfc/rfc2327.txt>
-
-[RFC3003]
- M. Nilsson, "The audio/mpeg Media Type", RFC 3003, November 2000.
- <http://www.ietf.org/rfc/rfc3003.txt>
-
-[SHOUTCAST]
- Nullsoft Shoutcast MP3 Streaming Technology.
- <http://www.shoutcast.com/>
-
-[SMIL20]
- L. Rutledge, J. van Ossenbruggen, L. Hardman, D. Bulterman,
- "Anticipating SMIL 2.0: The Developing Cooperative Infrastructure
- for Multimedia on the Web"; 8th International WWW Conference,
- Proc. May, 1999.
- <http://www8.org/w8-papers/3c-hypermedia-video/anticipating/
- anticipating.html>
-
-[W39CIR]
- V. Krishnan and S. G. Chang, "Customized Internet Radio"; 9th
- International WWW Conference Proc. May 2000.
- <http://www9.org/w9cdrom/353/353.html>
-
-[VORBIS]
- Ogg Vorbis - Open Source Audio Codec
- <http://www.xiph.org/ogg/vorbis/>
-
-[W3SYMM]
- W3C Synchronized Multimedia Activity (SYMM Working Group);
- <http://www.w3.org/AudioVideo/>