V preteklih številkah Mojega mikra smo si lahko ogledali nekatere zanimive možnosti, ki jih ponujajo internet in podatkovna omrežja. Zagotavljanje prenosa kolikor toliko kakovostnega videa v »realnem« času pa sodi gotovo med izzive, pri katerih je treba pokazati nekaj več. Zakaj? Video v realnem času sodi podobno kot prenos govora prek protokola IP (VoIP – Voice over IP) med časovno kritične aplikacije. Drugače kot pri predvajanju že pripravljenih datotek, ki jih lahko predvajamo neposredno s strežnika ali pa jih prej prenesemo v svoj računalnik, moramo pri videu v »realnem« času zagotoviti stalen podatkovni niz od začetka do konca posnetka. Pri vnaprej pripravljenih datotekah lahko z nalaganjem v večji medpomnilnik (buffer) zagotovimo določeno varnost, da o datotekah, ki jih predvajamo neposredno s trdega diska, sploh ne govorimo. Ko gre za prenos v realnem času, pa se moramo kljub vsemu zavedati, da zaradi potrebnih korakov vendarle dobimo določen časovni zamik.

ZAHTEVE IN ŠE ENKRAT ZAHTEVE

Verjetno si je večina med vami že ogledala video datoteko, preneseno prek spleta. Hitro je mogoče ugotoviti, da so tovrstne datoteke (npr. filmi) bistveno manjše, kot so na originalnem mediju. Namesto potrebnega zapisa na nekajkrat večjem originalnem mediju (npr. DVD – Digital Video Disc) je mogoče film zapisati na običajno zgoščenko (CD – Compact Disc). Cena, ki jo uporabnik plača za nekajkrat manjšo datoteko – za prihranek tako pri mediju kot samem prenosu −, pa se pokaže v opazni izgubi kakovosti slike. Izguba je odvisna od uporabljenega načina stiskanja in stopnje kodiranja. Treba je opozoriti tudi na čas, ki je potreben za izdelavo tovrstne datoteke. Zmogljivost strojne opreme in čas, potreben za pretvorbo, sta v obratnem sorazmerju. Boljšo ko imamo opremo, krajši bo čas.

Marsikomu se verjetno postavlja vprašanje, zakaj govorimo o prej omenjenih postopkih, če smo napovedali, da bomo govorili o prenosu videa v realnem času. Razlog je preprost. Večino prej omenjenih korakov bomo morali zagotoviti tudi tukaj. Za lažje razumevanje pa si bomo tematiko ogledali na nekaterih praktičnih primerih.

OD IDEJE DO UPORABNE REŠITVE

Začnimo z nekoliko »lažjim« primerom. Zvok in sliko, ki ju zajamemo z digitalno kamero, želimo prenašali prek krajevnega omrežja na oddaljeni prostor in ju tam predvajati z LCD-projektorjem. Ker smo želeli to storiti s čim boljšimi rezultati in čim nižjimi stroški, smo za ta namen predvideli uporabo kamere MiniDV proizvajalca JVC, ki naj bi jo prek vmesnika firewire priključili na osebni računalnik. Ta računalnik bo skrbel za obdelavo slike in prav tako za prenos govornega signala in slike prek ethernetnega omrežja. Na drugi strani omrežja ethernetnega omrežja bomo priključili drug računalnik, ki ga bomo uporabili kot samostojni odjemalec oziroma vmesnik proti projektorju. Za solidne rezultate potrebujemo računalnik, ki glede strojne opreme ni ravno »podhranjen«, zlasti pri procesorski moči in količini delovnega pomnilnika (RAM).

Brez ustrezne programske opreme tudi tokrat ne bo šlo. Tako kot v večini dosedanjih primerov smo tudi tokrat rešitev najprej iskali v brezplačnih paketih. Na srečo se je pokazalo, da je kar nekaj paketov, ki jih lahko uporabimo za svoje potrebe.

PREPROSTO IN BREZPLAČNO

Strinjam se z znanim pravilom, da največkrat v 20 % časa dosežemo 80 % rezultata, preostalih 80 % časa pa porabimo za odpravljanje napak in dodelavo. S tem sicer pridobimo še dodatnih nekaj odstotkov, žal pa se v praksi vse prevečkrat izkaže, da preostalih težav/napak ne odpravimo nikoli. To je eden od razlogov, da dajem pogosto prednost preprostim rešitvam, tudi če včasih na ta račun trpi katera od funkcionalnosti, ki pa ni ključna.

Po namestitvi vmesnika firewire in priklopu kamere namestimo enega od paketov. Z vidika preprostosti je zanimiv U-Broadcast (www.uticasoft.com). Z njegovo pomočjo lahko zelo hitro pripravimo strežnik, prek katerega pošiljamo video signal v omrežje. Osnovne zahteve za zagon so za današnje čase dokaj skromne – potrebujemo napravo za zajem (npr. spletno kamero ali TV-kartico za zajem), nameščeno podporo za DirectX 8 ali novejšo ter podporo za zapis v format Windows Media 9. Že prvi pogled nam pove, da gre za preprost program, ki ima vse nastavitve v dveh menijih, kjer uporabnik najde praktično vse kar potrebuje. Vsekakor je ta program odlična priprava za zahtevnejša orodja, ki sicer omogočajo več, a za njihovo uspešno uporabo potrebujemo več časa/znanja.

U-Broadcast lahko deluje v treh načinih. Od izbranega načina pa je odvisno, katere možnosti v meniju lahko uporabljamo. Način Offline, kot daje že ime samo slutiti, v našem primeru ni uporaben, poleg tega pa ga ne podpira vrsta naprav. V tem načinu je poraba procesorske moči in pomnilnika minimalna, vendar v tem primeru nimamo možnosti zajema in oddajanja signala. Od uporabnikovih potreb je odvisno, katerega od dveh načinov za oddajanje bo izbral. Več možnosti ponuja način Streaming (video-filtered), podporo za FTP, vendar je zaradi teh možnosti počasnejši. Če uporabnik potrebuje le možnost pošiljanja, lahko izbere tretji način delovanja − Streaming no filter).

Pred zagonom strežnika določimo še druge parametre. Ker bomo prenašali tudi zvok, omogočimo tudi zajem zvoka. Če bi morda poleg živega prenosa želeli posneto shraniti tudi v datoteko, moramo aktivirati možnost Video capture (v tem primeru moramo izbirati možnosti). Če želimo še nekoliko povečati kakovost zajema, aktiviramo možnost Deinterlace. Za naš prenos sicer ni pomembno, pri oddajanju signala pa lahko dodamo strežniku tudi atribute, kot so ime strežnika, avtor, opis ...

Strežnik uporablja vrata 8080 kot privzeto možnost. Če imamo ta vrata že zasedena, jih lahko po potrebi spremenimo. Dostop do strežnika lahko tudi omejimo glede na število hkratnih uporabnikov. Privzeta vrednost je 4 in je v našem primeru ni treba spreminjati. Za konec nam je ostal še najpomembnejši del – določitev uporabljenih kodekov, ki jih bomo uporabili za zvok in sliko.

KODEKI

Ob priklopu kamere in njeni namestitvi v sistem (Microsoft DV Camera and VCR) lahko to uporabimo za zajem zvoka in slike. Zavedati se moramo, da določamo dvoje parametrov: prvega znotraj tako imenovanega profila WM (Windows Media), v drugi skupini pa so nastavitve za video oziroma avdio kodeke (Audio codec, Video codec). S slednjimi določamo, kako se bo izvajal zajem na vhodu, s čimer lahko vplivamo na velikost dobljenih datotek, profil WM pa nam določa način oddajanja v strežniku. Nabor možnosti je bogat (od 28 Kb/s do 2 Mb/s), žal pa med njimi ni možnosti PAL. Zato lahko izberemo možnost sistema NTSC ali pa si z Windows Media Encoderjem naredimo lasten profil in ga naložimo v U-Broadcast. »Lenoba nima meja«, zato verjamem, da ste uganili, katero možnost bomo izbrali. Ko določimo potrebne parametre, poženemo strežnik s pritiskom na tipko F4. Ko je strežnik aktiviran, parametrov ne moremo več spreminjati. Spremenimo jih tako, da strežnik ustavimo (tipka F5), parametre spremenimo in strežnik ponovno zaženemo.

Kot zanimivost naj omenim, da takoj ob namestitvi strežnika nisem imel omenjene kamere, zato sem uporabil kar TV-kartico z možnostjo zajema TV-signala (oziroma zunanjega video signala). U-Broadcast je tudi v tem primeru deloval praktično brez težav. Kot kaže so razvijalci to možnost predvideli, saj so se »čudežno« pojavile dodatne možnosti, povezane s TV−sprejemnikom (sprememba kanala, možnost izbire vhoda ...). Tako lahko torej brez težav oddajamo tudi TV-signal. Legalnost tega početja pa je seveda posebno vprašanje, povezano z vprašanjem avtorskih pravic.

NA DRUGI STRANI PA ...

Tu bo večina bralcev verjetno »razočarana«. Na drugi strani oziroma drugem računalniku (ki sprejema signal) posebni posegi niso bili potrebni. Vse, kar mora uporabnik storiti, je zagon Microsoftovega predvajalnika Windows Media Player (ustrezna različica!) in izvesti priklop LCD-projektorja. Sliko iz strežnika na drugi strani dobimo tako, da odpremo URL-naslov (File−Open URL), v katerega vnesemo IP-naslov strežnika v obliki http://IPnaslovstrežnika:uporabljenavrata. Nastavitve smo pustili pri privzetih vrednostih, zato je bilo v našem primeru videti takole http://192.168.200.2:8080. Če smo vse storili prav, se mora po nekaj sekundah po polnjenju medpomnilnika pojaviti živa slika (z večjim ali manjšim časovnim zamikom). Pri morebitnih težavah se razlog najverjetneje skriva v nastavitvah predvajalnika. Smiselno je preveriti nastavitve v Tools – Options – Network.

Nekaj nasvetov
• Za solidne rezultate pri pošiljanju kolikor toliko kakovostnega videa v realnem času potrebujemo zmogljivo strojno opremo ter ustrezne prenosne poti oziroma hitro in kakovostno omrežje vzdolž celotne poti med strežnikom in odjemalcem.
• Večina TV-kartic nam omogoča prenos TV-signala tudi prek omrežja. Moramo pa biti pazljivi, da pri prenašanju pomotoma ne bi kršili avtorskih pravic.
• Nesmiselno je pretiravati pri kakovosti zajema slike, če ne nameravamo oddajati v takšni kakovosti ali pa nimamo na voljo ustrezne transportne poti do oddaljene točke.
• Najrazličnejše rešitve, ki temeljijo na uporabi formata Windows Media, so priljubljene, niso pa edine. Uporabnik lahko glede na svoje potrebe poseže tudi po drugačnih rešitvah (RealMedia , Quicktime, MPEG ...).

TUDI VELIKI MICROSOFT

S programom Windows Media Player lahko dostopamo tudi do drugih strežnikov, ki jih lahko uporabimo za svoj namen. Eden od njih je tudi že prej omenjeni Windows Media Encoder (www.microsoft.com/windows/windowsmedia/forpros/encoder/default.mspx), ki ga lahko brezplačno prenesemo prek spleta. Dodane pripomočke bomo zanemarili, saj jih za svoj namen ne potrebujemo. Po zagonu programa izberemo v čarovniku možnost oddajanja živega dogodka (Broadcast a live event). Če smo kamero priključili pred zagonom programa, jo bo program samodejno zaznal. Pomembno je, da v nadaljevanju pri načinu oddajanja izberemo drugo možnost (Pull from the Encoder). Podobno kot pri U-Broadcastu določimo še vrata (ki so prav tako privzeto 8080). Če bomo ta vrata pustili pri tej vrednosti, bomo popolnoma enako dostopali do strežnika v obliki http://ipnaslov:vrata. Sledi še že znana izbira načina kodiranja za zvok in sliko. Zaradi prenosa prek krajevnega omrežja in potrebe po projiciranju smo izbrali DVD-prenos in CD-kakovost (hitrost 2073 Kbps, 30 slik na sekundo). Po potrditvi nastavitev lahko strežnik že zaženemo (Control – Start Encoding).

Sprehod po nastavitvah Windows Media Encoderja nam odpre znane možnosti, ki smo jih že spoznali pri U-Broadcastu, najdemo pa lahko tudi nekatere nove. Omenimo le možnost, pri kateri že v strežniku samem omejimo/dovolimo dostop do strežnika le določenim IP-naslovom. Vsi dostopi do strežnika se zapisujejo v dnevnik (log).
Če primerjamo oba izdelka glede požrešnosti virov strojne opreme se zdi, da je pri strojnih virih Microsoftov izdelek v določeni prednosti.

STREŽNIŠKI DVOJČEK

U-Broadcast in Windows Media Encoder sta razmeroma enostavna za uporabo. Nekoliko kompleksnejši za konfiguriranje pa je zanimiv dvojček, ki so ga razvili pri podjetju Unreal Streaming Technologies (www.umediaserver.net). Unreal Media Server, kot že ime samo pove, skrbi za oddajanje paketnega niza prek omrežja, Unreal Live Server pa skrbi, da se niz ustrezno pripravi v potrebnem zapisu (npr. WMV/MPEG-4).

Po namestitvi obeh programov zaženemo najprej Live Server Configurator. Prek tega bomo dodali zajem zvoka in slike (File – Add new media source). Pri izbiri profila moramo izbrati Real Time in na koncu dodamo še ime po lastni izbiri (npr. JVC kamera). Po končani konfiguraciji strežnik »restartamo«. Nato poženemo še konfigurator za Media Server. Dodamo svoje oddajanje signala (File – New live broadcast) in izberemo možnost Static Live broadcast. Kot parameter livecast Alias lahko navedemo poljubno ime (npr. mojMikro). Ker sta oba strežnika na istem IP-naslovu, vnesemo kar IP-naslov računalnika (npr. 192.168.200.1). Če imamo le eno kamero, pustimo ID pri vrednosti 1. ID-vrednost je pomembna, če imamo priključenih več kamer, z njo pa v predvajalniku povemo, katero kamero želimo opazovati. Parameter Live Broadcast Description je poljubno besedilo, ki nam olajša pregled (npr. pošiljanje videa prek LAN-a). Glede na naš primer lahko aktiviramo tako Unicast (pošiljanje enemu uporabniku) kot Multicast (pošiljanje več uporabnikom) način. Če želimo, lahko dostop do video vsebine tudi omejimo. Po končani konfiguraciji strežnik ustavimo in ponovno zaženemo (restart).

Na sprejemni strani uporabimo proizvajalčev Streaming Media Player. Dostop do strežnika izvedemo z ukazom Play – Play remote live source. V polja vnesemo IP-naslov strežnika (v našem primeru 192.168.200.2) in način dostopa (v našem primeru je izbran Unicast). Glede na zahteve lahko pri prenosu izbiramo med TCP, HTTP in HTTPS. Če bi izbrali distribucijo več uporabnikom, aktiviramo Multicast –RTP. Vnesemo le še IP- naslov in ID opazovanega vira. Ker opazujemo kamero številka 1 (v strežniku je to ID) dodamo to vrednost IP-naslovu strežnika. Po potrditvi vidimo živo sliko iz strežnika. Na spletni strani www.umediaserver.net/download.html najdemo tudi predvajalnik za naprave za Windows Mobile 5.0. S tem lahko na tovrstnih dlančnikih ali telefonih prav tako opazujemo živo sliko iz strežnika. Med drugimi dodatki velja izpostaviti UscreenCapture, s katerim lahko brez kamere pošiljamo sliko svojega namizja.

ZA KONEC

Opisani primer je bil do določene mere poenostavljen. Vprašanju zagotavljanja kakovosti storitve (QoS ) smo se elegantno izognili s pomočjo neposredne povezave (točka-točka). V realnem življenju pa te možnosti nimamo in se moramo tudi temu vprašanju posebej posvetiti, vendar to presega okvire, ki so nam na voljo.
Navedene aplikacije še zdaleč niso edine, ki nam omogočajo pošiljanje slike prek omrežja. Kot smo ugotovili, lahko uporabimo različne »sisteme«, čeprav je treba priznati, da si je veliki Microsoft tudi na tem segmentu zagotovil soliden položaj. Vsekakor pa je smiselno v vsakem primeru premisliti, kako bomo poskrbeli za distribucijo in namestitev morebitnega namenskega odjemalca

Marko Koblar