270 likes | 434 Views
Streaming (nettiradio). Tuomas L Karhula Tite4. Sisältö. Mitä ’streaming’ on? Palvelinarkkitehtuurit Client/Server ja Peer-to-peer Asentaminen Icecast2 ja IceS2 Konfigurointi Ylläpito. Streaming - yleisesti.
E N D
Streaming (nettiradio) Tuomas L Karhula Tite4
Sisältö • Mitä ’streaming’ on? • Palvelinarkkitehtuurit • Client/Server ja Peer-to-peer • Asentaminen • Icecast2 ja IceS2 • Konfigurointi • Ylläpito
Streaming- yleisesti • Liikkuvan kuvan ja äänen reaaliaikaista tasaista siirtämistä Internetin välityksellä • Kolme päätekijää • Sisällöntuotanto-ohjelma, palvelin, toisto-ohjelma • Sisällöntuotanto-ohjelma vastaa sisällön tarjoamisesta palvelimelle muuntamalla median streaming-muotoon (.ogg tai .mp3), palvelin toistaa sitä käyttäjille, jotka voivat kuunnella sisällön toisto-ohjelman avulla • Tiedostoja ei tarvitse ladata kokonaisuudessaan ja tallentaa asiakkaan koneelle
Streaming- yleisesti • Voidaan jakaa kahteen tyyppiin • live-streaming • on-demand –streaming • Live-streamingissa lähetetään asiakkaalle lähetystä suorana jostain tapahtumasta (radion live-lähetykset, bändien live-konsertit) • On-demand –streamingissa lähetetään reaaliajassa ennakkoon nauhoitettua sisältöä, jota asiakas voi kuunnella haluamallaan hetkellä (esim playlist) • Lähetystavat unicast ja multicast • Streamingia kutsutaan myös termillä ’webcast’
Streaming- toiminta • Käyttäjä ottaa yhteyden streaming-palvelimeen ja valitsee lähetyksen • Palvelimelle lähetetään pyyntö kyseiseen dataan • Toisto-ohjelma alkaa lataamaan puskurimuistiin dataa kun tarpeeksi, alkaa toistamaan • Samanaikaisesti datan seuraavia osia ladataan puskurimuistiin, jotka siirretään toisto-ohjelmalle tasaisena virtana • Jos dataa ladataan nopeammin kuin mitä tarvitaan, ylimääräinen data tallennetaan puskuriin kunnes sitä tarvitaan taataan tasainen jatkuva tiedonsiirtovirta ja siten äänen tasainen kulku • Kun data esitetty, se poistetaan puskurimuistista
Streaming- toiminta • Toiminnan mahdollistavat RTP- (Real-Time Transport Protocol) sekä RTSP-protokollat (Real-Time Streaming Protocol) • RTP: palvelimelta käyttäjälle lähetettävän tiedon siirtämiseen (hyödyntää UDP:ta) • RTSP: palvelimen ja käyttäjän välinen viestintä • Streamingin merkittävin ero tiedostojen tavalliseen lataamiseen RTP-protokollan ominaisuus, että tiedostoja ei varsinaisesti ladata käyttäjälle vaan toistetaan ne
Streaming • Datasiirto voidaan jakaa kolmeen luokkaan: • Lataa ja soita (Download ’n’ Play) • Vähittäinen lataaminen (Progressive Download) • Varsinainen streaming (True Streaming) • D’n’P: Käyttäjän ensin ladattava koko audiotiedosto koneelleen ennen kuuntelua. • Vähittäinen lataaminen: Mahdollistaa musiikin toistamisen jo ladattaessa. Ei voida kontrolloida kuuntelua
Streaming • True Streaming: mahdollistaa käyttäjälle musiikin kuuntelun samalla kun sisältöä ladataan reaaliajassa verkosta (kuten progressiivinen). • Käyttäjä voi kontrolloida kuuntelua (pause, skip, kelaus jne)
Palvelinarkkitehtuurit • Verkkojen arkkitehtuuri voidaan jakaa kahteen pääasialliseen malliin palvelimien käytön perusteella: • Client/Server –malli (C/S) • Peer-to-Peer –malli (P2P)
Client/Server -malli • C/S –arkkitehtuurilla tarkoitetaan verkkoa, jossa jokainen verkon jäsen (solmu) on joko asiakas tai palvelin • Kommunikointi keskittynyt yhteen palvelimeen, johon asiakkaat ovat yhteydessä • Asiakkaat lähettävät palvelimelle pyyntöjä palveluista, joihin palvelin vastaa tarjoamalla kyseistä palvelua (esim resurssien jakaminen ja hallinnointi) • Asiakkaat riippuvaisia palvelimen tarjoamista palveluista
Peer-to-Peer -malli • Verkkoarkkitehtuuri, jossa jokaisella solmulla yhtäläiset ominaisuudet ja vastuut • Verkko ei ole keskittynyt yhteen palvelimeen (decentralization), vaan liikennöinti tapahtuu suoraan solmujen välillä • P2P-mallissa kaikki solmut periaatteessa sekä palvelin että asiakas
Peer-to-Peer -malli • P2P-mallissa voidaan hyödyntää myös palvelimia, jonka perusteella P2P-mallit voidaan jakaa kolmeen eri ryhmään • Puhdas P2P • P2P solmujen löytöpalvelimella • P2P solmujen löytö- ja listauspalvelimella
Peer-to-Peer -malli • Puhdas P2P • Ei hyödynnä palvelimia, tiedonsiirto ja kommunikointi solmujen välillä. Jokainen solmu joutuu etsimään ja paikantamaan solmujen sijainnit ja tarjoamat palvelut lähettämällä kyselyn jokaiselle solmulle erikseen • P2P solmujen löytöpalvelimella • Sisältää palvelimen, joka tarjoaa jokaiselle solmulle listan P2P-verkkoon liittyneistä jäsenistä nopeuttaa kohteiden löytymistä • P2P solmujen löytö- ja listauspalvelimella • Sisältää löytöpalvelimen lisäksi listauksen jokaisen solmun verkkoon tarjoamista palveluista solmut lähettävät kyselyt vain palvelimelle
Asentaminen • Sisällöntuotto-ohjelmisto • IceS 2.0.1 (vaatii libshout-kirjaston) • Palvelin • Icecast 2.2.0 • Vaatii kirjastot: • libxml2 • libxslt • libogg • libvorbis • Toisto-ohjelmisto XMMS valmiina Lähiverkot1 -koneessa
Icecast2 • Uusin versio Icecast 2.2.0 • Tukee mp3- ja Ogg/Vorbis –tiedostoja • Helpohko asentaa ja konfiguroida, selkeät ohjeet saatavilla • Palvelin asennettiin Lahiverkot10 -koneelle
Icecast2 –asennus1 of 3 • tar.gz –paketti kehittäjän sivuilta (downloads.xiph.org) komennolla # wget http://downloads.xiph.org/releases/icecast/ icecast-2.2.0.tar.gz • Purettiin komennolla # tar xzvf icecast-2.2.0.tar.gz • Vaatii kääntyäkseen kirjastot libxml2, libxslt, libogg ja libvorbis, löytyy pakettilähteistä valmiina # apt-get install libxml2 # apt-get install libxml2-dev # apt-get install libvorbis # apt-get install libvorbis-dev
Icecast2 –asennus2 of 3 • Olin hakenut myös libxslt- ja libogg –kirjastot pakettilähteistä, mutta nämä olivat liian vanhoja toimiakseen uuden Icecast 2.2.0:n kanssa syntyi eri kirjastojen versioristiriita, eri kirjastot riippuivat toisista kirjastoista. Tämän seurauksena jouduin asentamaan seuraavat paketit kokonaan uudestaan: libgcrypt11-dev_1.2.0-9 libgcrypt11_1.2.0-9 libgpg-error-dev_1.0-0 libgpg-error_1.0-0 libxml2-dev_2.6.11-4 libxml2_2.6.11-4 libxslt1-dev_1.1.8-4 libxslt1.1_1.1.8-4 libxslt1_1.1.8-4
Icecast2 –asennus3 of 3 • Hain Debian Backportsista kaikkien kyseisten kirjastojen uusimmat versiot • Asensin kyseiset paketit komennolla# dpkg –i ’*paketti*’ • Kun tarvittavat paketit haettu ja asennettu, voidaan kääntää ja asentaa itse Icecast2 # ./configure # make # make install • esimerkkikonfigurointitiedostoicecast.xml hakemistoon/usr/local/etc • varsinaiset konfigurointitiedostot hakemistoon/usr/local/share/icecast/conf/, jonne tallensin myös oman lopullisen konfigurointitiedostonicecast_testi.xml
IceS2 • Source client • Saman organisaation kehittämä ja ylläpitämä ’varma’ yhteensopivuus • Valitsin uusimman version eli IceS2.0.1, joka tukee Ogg/Vorbis –tiedostoja (mp3-tiedostoja varten tarvitaan lisäksi IceS0) • Asennettiin myös Lahiverkot10 –koneeseen • Valitsin playlist-menetelmän demostraatioon, sillä järkevää live-materiaalia hankala saada
IceS2 –asennus1 of 2 • tar.gz –paketti kehittäjän sivuilta (downloads.xiph.org) komennolla # wget http://downloads.xiph.org/releases/ices/ices-2.0.1.tar.gz • Vaatii kirjaston libshout # wget http://downloads.xiph.org/releases/libshout/ libshout-2.1.tar.gz • Purettiin komennoilla # tar xzvf libshout-2.1.tar.gz # tar zxvf ices-2.0.1.tar.gz • Käännettiin ja asennettiin (libshout ensin) # ./configure # make && make install
IceS2 –asennus2 of 2 • Asennuksen jälkeen konfigurointitiedostot luodaan hakemistoon /root/ices-2.0.1/conf • Esimerkkitiedosto ices-playlist.xml, josta konfiguroitiin tapauskohtainen tiedosto ices-playlist_testi.xml
Icecast2 -konfigurointi • Seuraavassa on esitelty icecast_testi.xml –tiedostoon tehdyt muutokset verrattuna valmiiseen esimerkkitiedostoon (itse konfiguraatiotiedostot näytetään demo-osuudessa) <sources>2</sources> <source-password>testi_01</source-password> <hostname>Lahiverkot10</hostname> <basedir>/usr/local/share/icecast</basedir> <logdir>/usr/local/share/icecast/logs</logdir> <webdir>/usr/local/share/icecast/web</webdir> <adminroot>/usr/local/share/icecast/admin</basedir> <user>nobody</user> <group>nogroup</group>
IceS2 -konfigurointi • Konfigurointitiedosto oli melko pitkälle oikeanlainen, kovin montaa oletusta ei tarvinnut vaihtaa. Muutin seuraavia parametreja: <logpath>/usr/local/share/icecast/logs</logpath> <name>Testi-playlist</name> <description>Lahiverkot –erikoistyokurssi</description> <hostname>Lahiverkot10</hostname> <password>testi_01</password> <mount>kokeilu.ogg</mount> <nominal-bitrate>192000</nominal-bitrate>
Ylläpito- Soittolistan luominen • Streaming-palvelun käyttöönotto tapahtuu seuraavasti • Ensin laitetaan .ogg –tiedostot (löytyy netistä kuten mp3-tiedostojakin) johonkin kansioon, itse valitsin /root/ -kansion luodaan kyseisistä tiedostoista soittolista komennolla # find /hakemisto/ -name ’*.ogg’ –print > playlist.txt ’Find’ etsii kyseisestä hakemistosta .ogg –päätteiset tiedostot ja kirjoittaa niiden polun ja nimen playlist.txt –tiedostoon, josta source client tietää, mitkä tiedostot tulee lukea ja streamata palvelimelle
Ylläpito- Palvelimen ja source clientin käynnistäminen • Seuraavaksi käynnistetään Icecast2 –palvelin init-skriptillä komennolla # /etc/init.d/icecast start Palvelimen käynnistymisen voi todetapstree –komennolla • Sitten käynnistetään source client komennolla # ices /root/ices-2.0.1/conf/ices-playlist_testi.xml Ices-log rupeaa rullaamaan ruudulla, josta näkee, toimiiko IceS2.
Ylläpito- Toisto-ohjelman käyttöönotto • Lahiverkot1 –koneessa on valmiina äänikortti ja XMMS –soitin. Oman streamin voi ottaa soitettavaksi ottamalla XMMS:n valikosta ’play location’ ja kirjoittaa riville http://Lahiverkot10:8000/streamin_nimi.ogg (Määritelty IceS2-konfiguraatiotiedostossa) Soitin alkaa toistamaan lähetystä Progressiivinen streaming radiolähetys, asiakas ei voi kontrolloida sisältöä
Ylläpito- Sammuttaminen • XMMS:n voi joko sulkea tai pysäyttää lähetyksen kuuntelun omalta osaltaan • IceS2 –source client pysäyttää lähettämisen ja sulkee itsensä painamalla ’Ctrl+C’ lokissa • Icecast2 –palvelin sammutetaan komennolla # /etc/init.d/icecast2 stop