This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
linux_streaming [2006/12/06 23:47] admin |
linux_streaming [2007/01/13 20:48] admin |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Linux Streaming ====== | ||
- | |||
- | This is a note-scrape-no-paper-book for a paper i should submit to get my credits for the class. Its mainly about streaming under linux. | ||
- | |||
- | ===== What is Streaming ===== | ||
- | |||
- | Streaming is a way how to produce and process media so that they can be seen during downloading. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ==== Architecture ==== | ||
- | |||
- | === Source === | ||
- | |||
- | * Any sound input (through Alsa, Jack, OSS) | ||
- | * Any internal player (xmms, mp123) | ||
- | * Source " | ||
- | |||
- | === Repeater === | ||
- | |||
- | * Provides content for the clients | ||
- | * Can serve more streams at once - mountpoints | ||
- | * Can be in relation to other repeaters | ||
- | * Can be the same machine then source | ||
- | |||
- | |||
- | |||
- | === Client === | ||
- | |||
- | * Client receives stream, decompresses, | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ===== Audio Streaming ===== | ||
- | |||
- | In this section we cover two main forms of audio streaming under linux: mp3 and ogg. We will not pay attention to other formats, like realmedia or windows media. Quicktime is a possibility ((have to check how is it with its freeness and openness)). | ||
- | |||
- | |||
- | ==== Source ==== | ||
- | |||
- | Any sound-input routed into the soundcard. Controllable through ALSA or OSS. Possible to steer audio in Jack. Can be also a XMMS player. There two main alternatives: | ||
- | |||
- | * External stream-forwarder | ||
- | * Plugin, built-in forwarding functionality | ||
- | |||
- | === External stream-forwarder === | ||
- | |||
- | In case of sound you use various softwares, icecast people have released a number of ices bindings to different programming languages, so the possibilities are broad. The most used are: | ||
- | |||
- | * ices http:// | ||
- | * Oddcast http:// | ||
- | * Darkice http:// | ||
- | * ezstream http:// | ||
- | * Nicecast http:// | ||
- | * IceGenerator http:// | ||
- | |||
- | |||
- | === Built-in stream-forwarder === | ||
- | |||
- | In case of various music products, the capability to send out the data to a streaming-server is allready built-in or in the possibillity of plugins. | ||
- | |||
- | * Muse http:// | ||
- | * SAM2 http:// | ||
- | * Orban http:// | ||
- | * freej http:// | ||
- | * Traktor http:// | ||
- | * PureData http:// | ||
- | |||
- | |||
- | |||
- | ==== Repeater ==== | ||
- | |||
- | === Darwin Streaming Server === | ||
- | |||
- | [[http:// | ||
- | |||
- | === Shoutcast === | ||
- | |||
- | [[http:// | ||
- | |||
- | < | ||
- | Do I need a license to stream mp3, mp3PRO or mp3surround encoded content over the Internet? | ||
- | |||
- | Yes. A license is needed for commercial (i.e., revenue-generating) use | ||
- | of mp3/mp3PRO in broadcast systems (terrestrial, | ||
- | other distribution channels), streaming applications (via Internet, | ||
- | intranets and/or other networks), other content distribution systems | ||
- | (pay-audio or audio-on-demand applications and the like) or for use | ||
- | of mp3/mp3PRO on physical media (compact discs, digital versatile | ||
- | discs, semiconductor chips, hard drives, memory cards and the like). | ||
- | |||
- | However, no license is needed for private, non-commercial activities | ||
- | (e.g., home-entertainment, | ||
- | music library), not generating revenue or other consideration of any | ||
- | kind or for entities with associated annual gross revenue less than | ||
- | US$ 100 000.00. | ||
- | </ | ||
- | [[http:// | ||
- | |||
- | === IceCast === | ||
- | |||
- | [[http:// | ||
- | |||
- | |||
- | |||
- | ==== Clients ==== | ||
- | |||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | * [[http:// | ||
- | |||
- | |||
- | |||
- | |||
- | ==== How-To ==== | ||
- | |||
- | === Server === | ||
- | |||
- | First of we should have a streaming server allready installed and at our disposal. If true, goto [[linux_streaming# | ||
- | |||
- | get the new libogg: | ||
- | < | ||
- | wget http:// | ||
- | </ | ||
- | |||
- | decompress: | ||
- | < | ||
- | tar -xzvf icecast-2.3.1.tar.gz | ||
- | </ | ||
- | |||
- | configure && make. The path to libogg can be different on your system, and depends on YOUR settings. | ||
- | < | ||
- | ./configure --with-ogg=/ | ||
- | </ | ||
- | |||
- | < | ||
- | make | ||
- | </ | ||
- | |||
- | Install: | ||
- | < | ||
- | make install | ||
- | </ | ||
- | |||
- | edit the configuration file ((the path to the config file can be also different)) | ||
- | More to the config-file options soon, or just [[http:// | ||
- | < | ||
- | vi / | ||
- | </ | ||
- | |||
- | Now just run icecast | ||
- | < | ||
- | icecast -c / | ||
- | </ | ||
- | |||
- | Depends on settings but the admin interface is on http:// | ||
- | |||
- | source "puts up" the data, with a password, then mounts it on some mountpoint. The mountpoint is accessible through: http:// | ||
- | |||
- | Icecast is able to stream .ogg streams and also mp3. Newest addistions include the Theora library which is used for streaming video in ogg/theora format. | ||
- | |||
- | === Source Setup === | ||
- | |||
- | As an stream forwarder we will use darkice.. Its robust, command-line orientated, and fast. We compile darkice from the sources. The we just modify an .conf file, for example / | ||
- | |||
- | < | ||
- | # this section describes general aspects of the live streaming session | ||
- | [general] | ||
- | duration | ||
- | bufferSecs | ||
- | |||
- | # this section describes the audio input that will be streamed | ||
- | [input] | ||
- | device | ||
- | sampleRate | ||
- | bitsPerSample | ||
- | channel | ||
- | |||
- | # this section describes a streaming connection to an IceCast2 server | ||
- | # there may be up to 8 of these sections, named [icecast2-0] ... [icecast2-7] | ||
- | # these can be mixed with [icecast-x] and [shoutcast-x] sections | ||
- | [icecast2-0] | ||
- | bitrateMode | ||
- | format | ||
- | bitrate | ||
- | quality | ||
- | # | ||
- | server | ||
- | port = 8000 # port of the IceCast2 server, usually 8000 | ||
- | username | ||
- | password | ||
- | mountPoint | ||
- | name = IRS TLIS LIVE | ||
- | description | ||
- | url = http:// | ||
- | genre = Mixed # genre of the stream | ||
- | public | ||
- | |||
- | [icecast2-1] | ||
- | bitrateMode | ||
- | format | ||
- | bitrate | ||
- | quality | ||
- | # | ||
- | server | ||
- | port = 8000 # port of the IceCast2 server, usually 8000 | ||
- | username | ||
- | password | ||
- | mountPoint | ||
- | name = IRS TLIS LIVE | ||
- | description | ||
- | url = http:// | ||
- | genre = Mixed # genre of the stream | ||
- | public | ||
- | |||
- | </ | ||
- | |||
- | After modification we just run darkice -c / | ||
- | |||
- | |||
- | |||
- | ===== Video Streaming ===== | ||
- | |||
- | Video sreaming under Linux was, for licencing issues a bit weak, until the fabulous libtheora came and with it the OGG/Theora format. This is now something like the flagship of linux video streaming, so we will cover only this option. | ||
- | |||
- | ==== Structure ==== | ||
- | |||
- | === Source === | ||
- | |||
- | various... | ||
- | |||
- | === Repeater === | ||
- | |||
- | we will use libtheora and libvorbis enabled IceCast streaming server | ||
- | |||
- | === Client === | ||
- | |||
- | various, see above which can playback video.. | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | ==== How-to ==== | ||
- | |||
- | |||
- | === Source === | ||
- | |||
- | You need to have either the video on your harddisk, or for live streaming, a FireWire compatible Camera, and firewire enabled in linux. I will not go into this, but it is the main source of problems, when the ieee1394 is not working. | ||
- | |||
- | When you have the firewire up & ready, get and install the utikity called [[http:// | ||
- | |||
- | We pretend we have ieee1394 running. We should have also installed dvgrab: | ||
- | |||
- | This grabs the input from firewire, converts it to .ogg and sends output standard out: | ||
- | < | ||
- | dvgrab --format raw - | ffmpeg2theora -a 0 -v 5 -f dv -x 320 -y 240 -o /dev/stdout | ||
- | </ | ||
- | |||
- | We install another utility called [[http:// | ||
- | |||
- | < | ||
- | dvgrab --format raw - | ffmpeg2theora -a 0 -v 5 -f dv -x 320 -y 240 -o /dev/stdout - | oggfwd | ||
- | </ | ||
- | where icecastserver - is the url of our streaming server | ||
- | |||
- | 8000 - can be any number for port number of icecast listener | ||
- | |||
- | pwd - password | ||
- | |||
- | /theora.ogg - mountpoint where we wish to have the video stream accesible | ||
- | |||
- | |||
- | === Server === | ||
- | |||
- | To use the Ogg/Theora options, we will need an libvorbis and libtheora enabled installation of IceCast Streaming Server. We download the additional libraries (we expect that we have allready installed libogg): | ||
- | |||
- | Get libvorbis: | ||
- | < | ||
- | wget http:// | ||
- | </ | ||
- | |||
- | Get libtheora: | ||
- | < | ||
- | wget http:// | ||
- | </ | ||
- | |||
- | then recompile icecast with these options (the exact location of the libs depends on YOUR settings) | ||
- | < | ||
- | ./configure --with-ogg=/ | ||
- | </ | ||
- | |||
- | === Client === | ||