LINUXZONE






 >> Hlavní stránka

(1740/07.09.2010)


 >> Administrace

(161/05.08.2010)


 >> Literatura

(311/07.09.2010)


 >> Bezpečnost

(345/03.09.2010)


 >> Programování

(307/19.04.2010)


 >> Distribuce

(97/09.06.2010)


 >> Síťování

(86/03.06.2010)


 >> Lokalizace

(10/15.09.2004)


 >> Aplikace

(176/12.08.2010)


 >> Multimedia

(32/31.03.2006)


 >> Hardware

(45/02.03.2007)


 >> Začínáme

(228/24.06.2010)


 >> Aktuálně

(562/06.09.2010)


 >> RELAX

(209/02.09.2010)


 >> Jinde vyšlo

přehled ostatních serverů




 Přihlášení




Login:
Heslo:
 uložit v prohlížeči


Nejste-li ješte zaregistrováni, můžete tak učinit zde.





 Vyhledávání




Hledaný výraz:
v klíčových slovech
v titulku
v anotaci
v textu








 Reklama









 Servis




*   Vaše náměty a připomínky
Máte k Linuxzone.cz nějaké připomínky nebo náměty? Našli jste na stránkách chybu? Dejte nám o tom vědět pomocí formuláře nebo v diskuzi.
Komentářů: 30
*   Podpořte Linuxzone.cz
Chcete podpořit náš server umístěním odkazu nebo zveřejněním backendu? Zde najdete vše potřebné.
*   Pište pro Linuxzone.cz
Máte zájem podílet se na obsahu Linuxzone.cz ať už jako redaktoři nebo i jinak? Dejte nám o sobě vědět!





 Aktuálně z bezpečnosti




-- 
6.12.2005, 19:01
Na serveru informit.com vyšla ukázková kapitola týkající se práce s řetězci z knihy Secure Coding in C and C++. (lz)

-- 
3.12.2005, 12:34
Bugtraq: Format String Vulnerabilities in Perl Programs. (lz)

-- 
3.12.2005, 12:32
Linux Advisory Watch December 2nd 2005. (lz)

-- 
23.10.2005, 13:28
Rozhovor na téma klasické zálohování versus CDP. (lz)

-- 
23.10.2005, 13:24
Linux Advisory Watch October 21st 2005. (lz)

další >>





 Aktuálně o software




-- 
6.12.2005, 19:07
Potřebujete-li pod linuxem rozchodit bezdrát založený na čipsetech Broadcom 43xx, konečně existuje linuxový ovladač. (lz)

-- 
6.12.2005, 19:04
Byla uvolněna verze Xen 3.0.0 virtualizační technologie XEN. (lz)

-- 
6.12.2005, 18:59
Byla uvolněna verze X11R6.9/X11R7 RC 3 grafickérho rozhraní X Window System. (lz)

-- 
3.12.2005, 12:45
Co je nového okolo projektu Amanda (open source zálohovací software)? Více na osnews.com. (lz)

-- 
3.12.2005, 12:40
Jak to akuálně v linuxu vypadá s podporou SATA.. (lz)

další >>





 Aktuálně z IT




-- 
3.12.2005, 12:51
Novellu se daří prodej linuxových produktů, oproti loňskému roku se Novell dočkal výrazného nárůstu. (lz)

-- 
3.12.2005, 12:48
Třetí verzi licence GPL by měla být publikována během jara 2007. (lz)

-- 
23.10.2005, 13:20
V Peru nyní mají zákon, který umožňuje nasazení open source software ve vládní správě. (lz)

-- 
23.10.2005, 13:14
Proč se Microsoft bojí Google? (lz)

-- 
27.9.2005, 22:01
Peru má zákon podporující free software. (lz)

další >>





 Nejčtenější články




-- 
Virtualizace - Praktický průvodce

-- 
Novinky ze světa svobodného software (21/2010)

-- 
Security Digest (20/2010)

-- 
Proč by software neměl mít majitele (2/2)

-- 
Novinky ze světa svobodného software (22/2010)

-- 
Security Digest (21/2010)

-- 
Bezpečnost bezdrátové komunikace

-- 
Patentová reforma nestačí

-- 
Prodej svobodného software? (2/2)

-- 
Prodej svobodného software? (1/2)






 Nejlepší články




-- 
Security Digest (22/2010)

-- 
Virtualizace - Praktický průvodce

-- 
Security Digest (21/2010)

-- 
Novinky ze světa svobodného software (21/2010)

-- 
Security Digest (20/2010)

-- 
Novinky ze světa svobodného software (22/2010)

-- 
Novinky ze světa svobodného software (23/2010)

-- 
Prodej svobodného software? (2/2)

-- 
Proč by software neměl mít majitele (2/2)

-- 
Bezpečnost bezdrátové komunikace






 Anketa




Používáte nějaké rozšíření bezpečnostního modelu linuxového jádra?

Openwall (18%)

LIDS (12%)

Pax/Grsecurity (3%)

SELinux (6%)

RSBAC (1%)

jiné (1%)

používám standardní jádro (59%)







Linuxzone.cz - server o Linuxu pro programátory, administrátory a fanoušky.
Provozuje společnost Impossible.
ISSN: 1213-8738





GINI - Streamované multimédiá jednoducho a rýchlo

S problematikou sprevádzkovania streamovaného audia a videa sa už iste snažili vysporiadať mnohí z nás. Aj keď sa jedná o veľmi komplexnú problematiku, v mnohých prípadoch postačí základný prístup k celkovej realizácii, ktorý môže byť častokrát omnoho jednoduchší, ako by sa na prvý pohľad mohlo zdať. V dnešnom príspevku si ukážeme ako na to.

1. Úvod

Zaujímavým projektom, ktorý sa v poslednej dobe začína čoraz častejšie objavovať v reálnych nasadeniach okolo nás je GINI pochádzajúci z aktivít vývojára menom Krisztian Pifko. Jedná sa o kompletný balík pozostávajúci z troch samostatných funkčných súčastí, ktorého domovská stránka projektu je k dispozícii na http://gini.sourceforge.net. Samotný mechanizmus spoľahlivo pracuje na množstve platforiem, pričom je natívne zakomponovaná podpora streamingu audioformátov MP3, Ogg Vorbis, videoformátov RIFF AVI (vrátane DivX enkódovania), Microsoft ASF/ASX/WMV/WMA, rozpracovaná je možnosť streamovania Apple QuickTime video a RealNetworks RealMedia, ktorá je experimentálne k dispozícii, i keď zatiaľ s istými nedostatkami. Toľko asi na úvod, pustíme sa do inštalácie

2. Inštalácia

Domovská stránka projektu nás okamžite nalinkuje prostredníctvom download sekcie k balíčku zdrojového kódu aktuálnej verzie nesúcej označenie 0.5.1. Pristúpime primárne k dekomprimácii

tar xzvf gini-0.5.1.tar.gz
cd gini-0.5.1

Nasledujúcou úlohou je typicky predkompilačná konfigurácia nasledovaná samotným kompilovaním a rozdistribuovaním vzniknutých bináriek. Vďaka prepracovanosti prebehne kompilácia na takmer všetkých systémoch vybavenými príslušnými knižnicami bezproblémovo, takže je vhodné vopred skontrolovať, či sú v systéme prítomné knižnice glib 1.2 a vyššie, libogg a libvorbis. V prípade, že je všetko vporiadku, pustíme sa do práce

./configure
make
make install

Keďže nie je potrebné uskutočniť žiadnu dodatočnú ručnú distribúciu, ani presun konfiguračných súborov, môžeme pokojne s úsmevom na tvári pokračovať v našej práci. To najdôležitejšie už máme za sebou.

3. Architektúra

Streamovací balík GINI sa skladá z troch základných komponentov. Prvým je streamovací server GINI, ktorý je v značnej miere kompatibilný so svojimi kolegami z brandže, takže sa niet čoho obávať. Druhý dôležitý prvok je reprezentovaný feederom GINIFEED, ktorého úlohou je dopraviť vopred pripravené audio/video streamy streamovaciemu serveru. V úlohe feedera je však možné použiť alternatívne ľubovoľný balík kompatibilný so štandardom icecast, ako sú napríklad shout, xmms-liveice a podobne. Posledným prvkom je administratívna konzola GINICON, ktorá slúži na správu a získanie prehľadu o systéme, či už lokálne, alebo prostredníctvom sieťového interkonektu. Hneď na úvod je vhodné uvedomiť si, že každý z týchto komponentov môže byť hostovaný na inom stroji, pričom viacero feederov a administratívnych konzol môže súčasne pristupovať k streamovaciemu serveru, ktorý poskytuje dodávané streamy jednotlivým klientom prezentovaným širokou škálou multimediálnych prehrávačov.

4. Spustenie streamovacieho servera

Pred spustením streamovacieho servera je vhodné vopred si vyčleniť na ktorom porte bude prevádzkovaný (implicitne 8000), aké obmedzenia nastavíme pre počet súčasne pripojených klientov, feederov prípadne administratívnych konzol, pričom je možné pripraviť si zabezpečenie vstupným heslom, čo je viac ako nevyhnutné. V najjednoduchšom prípade pre beh na porte HTTP v daemon móde pri zabezpečení heslom využime spustenie pomocou

#gini -P 80 -z -w opensesami

Pri neskorších pokusoch budeme dbať na limitovanie počtu obsluhovaných klientov parametrom -m, počtu feederov parametrom -s a počtu konzol pomocou -c pričom implicitné hodnoty dosahujú 8/2/2, napríklad

#gini -z -w opensesami -m 50 -s 3 -c 1

zaujímavá je aj možnosť špecifikovania umiestnenia jednotlivých logov, ktoré budú cenným prostriedkom pri vyhodnocovaní ako využitia a prístupov, tak systémových udalostí, ktoré nám pomôžu pri hľadaní a riešení problémov

#gini -z -w opensesami -S /var/log/gini/status.log -Y /var/log/gini/system.log \
   -A /var/log/gini/access.log

5. Playlisty pre dodávanie streamov

Vopred si treba uvedomiť, že GINIFEED je určený pre dodávanie vopred pripravených hotových streamov. Tento feeder žiadnym spôsobom neupravuje dodávaný stream, nedochádza teda k jeho resamplovaniu, ani online tvorbe z príslušného zdroja audio alebo videosignálu. Základom je teda playlist, ktorý špecifikuje zoradený zoznam súborov jednotlivých streamov. Aby sme si ušetrili ich ručnú tvorbu, jednoduchým spôsobom využijeme príkazy ako

ls /foodir/*.avi > playlist.foo
find /mnt/cdrom -type f -name "*.mp3" > playlist.cdmpeg

V prípade vytvárania playlistov pre videostreamy je doporučované dodržať rovnakú kvalitu všetkých súborov v rámci playlistu, aby sa predišlo zbytočným komplikáciám

6. Streamujeme audio

V prípade, že máme pripravené playlisty a streamovací sever GINI beží, začať môžeme najjednoduchšie implicitným dodávaním z playlistu na server chránený heslom pomocou

ginifeed -M localhost -P 80 -p plist -n lz-stream -w opensesami -m lz -G

V tomto prípade zasielame obsah playlistu na server chránený heslom "opensesami" bežiaci na localhost:80, pričom v úlohe playlistu účinkuje súbor s názvom plist. Názov streamu sme si zvolili pre náš príklad lz-stream, pričom z použitých mp3 súborov preberáme ID3 tagy. Veľmi dôležitú úlohu hrá parameter -m, ktorý špecifikuje mountpoint, cez ktorý bude príslušný stream k dispozícii, čo umožňuje odlíšiť jednotlivé streamy, ktoré sú na serveri k dispozícii

Veľmi často sa stáva, že chceme sprístupniť k dispozícii rovnaký stream v rozličných kvalitách. V tomto prípade je potrebné mať pripravené audiostreamy vo viacerých kvalitách pričom pre jednoduchosť tvorby playlistu využijeme možnosť priradenia prefixov a suffixov. V praxi to môže znamenať pripravenie adresárovej štruktúry

/mnt/musiclab/ogg24/
/mnt/musiclab/ogg56/
/mnt/musiclab/mp324/
.... 

kde sú umiestnené jednotlivé skladby v rovnakej adresárovej štruktúre pri zachovaní rovnakých mien. Keďže v našom prípade budeme poskytovať dve kvality ogg a jednu mp3, fixnými zostávajú iba časti ciest a názvy súborov bez ich prípon. Kompletizáciu plných názvov playlistu ktoré majú formu

album1/song1
...
album99/song12

dosiahneme pomocou využitia parametrov -d a -s

ginifeed -p playlist -d /mnt/musiclab/ogg24/ -s .ogg
ginifeed -p playlist -d /mnt/musiclab/ogg56/ -s .ogg
ginifeed -p playlist -d /mnt/musiclab/mp324/ -s .mp3

Problém by mohol naoko nastať pri využití možnosti náhodného výberu poradia, čo je možné zabezpečiť parametrom -r. V tomto prípade prichádza na pomoc možnosť špecifikovať rovnaké random seed hodnoty parametrom -S, čo nám zabezpečí zhodnú pseudonáhodnosť pre všetky bežiace inštancie feedera. Za zmienku stojí spomenúť, že implicitne sa pri dosiahnutí konca playlistu pokračuje jeho spracovaním od začiatku, čiže jedná sa o autorepeat.

Kto by si chcel doplniť streamovanie audia o možnosť rozšírenia o živé streamy pochádzajúce napríklad z rádiovej karty, alebo linkového vstupu, ten môže v úlohe feedera použiť xmms-liveice, ktorý sme si v minulosti už priblížili

7. Streamujeme video

Dopravenie videostreamu serveru prostredníctvom nástroja GINIFEED uskutočňujeme rovnako, ako je tomu pri audiostreamoch, pričom sú k dispozícii rovnaké konfiguračné parametre. Vhodné je podotknúť, že v niektorých ojedinelých prípadoch môže dôjsť k problematickému stavu, kedy GINI odmietne dodaný stream z dôvodu, že jeho hlavička je dlhšia, ako veľkosť buffera. V tomto prípade je vhodné parametrom -b indikovať vyšší bitrate. Pri streamovaní videa je vhodné držať sa stropu 300-400 kbps, aby sa zamedzilo

Pre príklad nám teda môže poslúžiť

#ginifeed -H localhost -P 80 -p mlist -n TestMovie -m trailer -w opensesami

8. Prehrávame streamy

Čo sa týka prehrávania audiostreamov, situácia je na tomto poli veľmi stabilná. Pre prehrávanie audiostreamov je možné použiť mpg123, ogg123, xmms, zinf, winamp, ms media player alebo realplayer, pričom jednotlivé streamy identifikujeme použitým mountpointom, v našom prípade napríklad

#mpg123 http://192.168.0.1:80/lz

Na poli videostreamov je situácia zatiaľ v štádiu dolaďovania. Pre prehrávanie videostreamov je možné efektívne bezproblémovo použiť mplayer, či už samostatne, alebo v prípade embedded riešení projekt Movix http://movix.sourceforge.net, tento prehrávač využívajúci. Pre predídenie prípadným problémom je vhodné definovať veľkosť vyrovnávajúceho bufferu v rozmedzí od 1 do 2MB, čo v mnohých prípadoch rieši situáciu odmietnutia prehratia.

#mplayer -cache 1024 -vo aa http://192.168.0.1/trailer

Playing http://192.168.0.1/trailer
Connecting to server 192.168.0.1...
Cache size set to 1024 KBytes
Connected to server: 192.168.0.1
Cache fill: 19.53% (204800 bytes) Detected AVI file format!
VIDEO: [DIV3] 320x240 24bpp 29.97 fps 195.4 kbps (23.9 kbyte/s) 

9. Administrujeme a analyzujeme

Na rad sa dostáva posledný prvok nášho balíka a to GINICON. Jedná sa do užívateľské rozhranie k serverovej časti, ktoré zabezpečuje prostredníctvom jednoduchých príkazov realizovať prístup k informáciám súvisiacich s aktuálnymi spojeniami s možnosťou sledovania priebehu a zrušenia vybraných konekcií. V prípade behu GINI v pozadí v daemon móde využijeme túto konzolu, v prípade, že pri spustení servera parameter -z vynecháme dostávame sa do administratívnej konzoly priamo. Konekt uskutočníme pomocou

#ginicon -H 192.168.0.1 -P 80 -w opensesami

Bohaté informácie sú k dispozícii prostredníctvom logových súborov. status.log sprístupňuje cyklicky generované údaje vhodné pre popisnú informáciu s možnosťou publikovania na webovej stránke, popri možnosti generovania .cue súborov prostredníctvom parametra -c aplikovateľného pri feederi.

Uptime: 2 days, 13 hours, 45 minutes and 58 seconds
Connections: all: 514, feed: 12, recv: 851; Active: temp: 0, feed: 4, recv 3
Data: in all: 384032 G, in feed: 384012 G, out all: 38846 G, out stream: 38313 G
Bandwidth: in: 125 kbps out: 548 kbps
Feeds:4
Admins:1
Clients:3

Systémový logový súbor pre zmenu zaznamenáva jednotlivé operácie, čo nám umožňuje vyhľadávať chyby a operačné nedostatky. Prekvapí značná prehľadnosť a vysoká informačná hodnota.

 [04/Feb/2003:11:19:47 +0000]: new connection from: 127.0.0.1
[04/Feb/2003:11:19:48 +0000]: incoming feed 128 kbps
[04/Feb/2003:11:19:48 +0000]: incoming stream is MP3
[04/Feb/2003:11:20:15 +0000]: remote feeder closed

Posledným zdrojom informácií je log poskytujúci informácie o prístupoch. Vzhľadom na to, že bola dodržaná štandardizovaná štruktúra, jednoduchým spôsobom je možné uskutočniť vizualizáciu a spracovanie prostredníctvom nástrojov ako sú webalizer a podobne.

192.168.1.17 - - [04/Feb/2003:13:01:34 +0000] "GET /film HTTP/1.0" \
   200 8499 "-" "MPlayer/0.90rc2-2.95.4 "

10. Záver

Úlohou dnešného príspevku bolo demonštrovať možnosti jednoduchého streamingu audia a videa. Dúfam, že s dôrazom na podrobnú popisnosť a dodržanie súslednosti sa nám úlohu podarilo splniť. S pomocou softwarového balíčka GINI sa teda každý môže pustiť do streamovania, čo nám pripraví živný podklad pre ďalšie experimentovanie s komplexnejšími projektami. Prehľadnosť, jednoduchosť prístupu a implementácie sú hlavnými črtami tohto projektu, ktorý si nájde nejedno uplatnenie v praxi.

Čo sa týka zabezpečenia podpory a konzultácií jednotlivých implementácií, k dispozícii je viacero spôsobov. Na IRC je k dispozícii kanál s názvom #gini, prístup k aktívnemu mailinglistu zabezpečuje rozhranie http://lists.sourceforge.net/lists/listinfo/gini-user Podporu zabezpečujú ako samotní užívatelia, tak autor, pričom v systémoch aktívne cykluje množstvo informácií.

Autor: Milan Gigel, 05. 02. 2003, 12:00
Sekce Multimedia, Komentářů: 3
Průměrné hodnocení: 3,02

o Poslat e-mailem
o Tisk článku
o Uložit do profilu


 Přispějte nám




Líbil se Vám tento článek? Můžete ho ocenit zavoláním na tel. číslo 906 460 134.
Cena hovoru za 1 minutu je 46 Kč.





 Hodnocení článku




Článek hodnotím jako:  [1] výborný   [2] dobrý   [3] průměr   [4] špatný   [5] hrůza  





 Komentáře




Neregistrovaný uživatel
Sebastian, 07. 07. 2003 19:14
stream /dev/video :-)

Nevedel by niekto poradit ako streamovat z TV karty?
Uz sa o to snazim pol roka a nejak nist.
 












Neregistrovaný uživatel
Milan Gigel, 11. 02. 2003 13:15
RE: DIKES

No v tej dobe GINI este neexistoval. Neviem o nicom podobnom takto jednoducho pouzitelnom  












Neregistrovaný uživatel
Polish, 05. 02. 2003 14:19
dikes

Ahoj,
dikes za moc pekny clanek. Kdyz jsem pred pulrokem hledal, nejaky streamovaci server, tak jsem na tento projekt nenarazil, coz je celkem skoda. Jeste jednou dik.
 















PŘIDAT KOMENTÁŘ SKRÝT VŠE >>










2002 © Impossible, s.r.o.   >> Kontaktujte redakci >> Právní upozornění >> Reklama