Multimedijalni IP server sa podrškom heterogenim mrežama Multimedia IP server with the support for heterogeneous networks Saša Matijašević, Zoran Veličković Visoka tehnička škola strukovnih studija, Niš Sadržaj Multimedijalne IP aplikacije pored velikog mrežnog protoka zahtevaju i obezbeđenje određenog QoS-a. Multimedijalnom serveru pristupa veliki broj različitih uređaja koji imaju ograničene mogućnosti reprodukovanja multimedijalnog sadržaja. Ovaj problem se može rešiti kodovanjem videa različitim kodecima i različitim bitskim brzinama. U ovom radu su objašnjeni principi kreiranja web aplikacije korišćenjem besplatnih alata za potrebe skladištenja multimedijalnih fajlova na server. Objašnjeni su neki pojmovi vezani za obradu multimedijalnog materijala. Dat je kratak prikaz alata za obradu i reprodukciju multimedijalnog materijala. Abstract - IP multimedia applications besides high bandwidth demand ensuring a QoS. A large number of different devices with limited playing multimedia content access multimedia server. This problem can be solved by different codecs and variable video bit rates. This paper presents the principles of creating web application using freeware tools for storing multimedia files on the server. The paper explain some concepts related to the processing of multimedia materials. Here is also a short review of tools for processing and playback of multimedia material. 1. UVOD Značajno obeležje današnjeg Interneta je njegova tranzicija ka opštoj funkcionalnoj multiservisnoj mreži. Ovu tranziciju u prvom redu karakteriše razvoj novih klasa komunikacionih protokola [1] za podršku Web baziranih RIA (engl. Rich Internet Application) aplikacija [2]. Pored ostalog, ovo podrazumeva podršku heterogenom skupu mrežnih uređaja kao i adaptaciju multimedijalnih sadržaja na karakteristike terminalne opreme korisnika. Ovome je značajno doprineo porast broja smart telefona i tablet uređaja koji poseduju bežičnu konekciju i dobru multimedijalnu podršku. Multimedijalne IP (engl. Internet Protocol) aplikacije zahtevaju relativno veliki mrežni protok za ostvarivanje odgovarajućeg QoS-a (engl. Quality of service) [3]. Za multimedijalne IP aplikacije se generalno može reći da su osetljive na kašnjenje paketa, a tolerantne na gubitke paketa. [4] Sa druge strane, standardne poslovne aplikacije su osetljive na gubitke paketa dok su tolerantne na kašnjenje paketa. Ove karakteristike različitih aplikacija u multiservisnoj mreži pružaju mogućnost optimizacije pri dodeli mrežnih resursa i time zadovoljenje svakog pojedinačnog aplikacijskog QoS-a. Evidentno je da u heterogenoj multiservisnoj mreži kakav je Internet, nije jednostavno ostvariti adaptaciju mrežnih parametara prema zahtevima korisnika. Cilj ovog rada je kreiranje Web bazirane aplikacije (multimedijalnog servera) koja omogućava korisnicima arhiviranje i pristup multimedijalnim sadržajima na serveru. Osnovna karakteristika ovako koncipiranog multimedijalnog servera je adaptacija multimedijalnog sadržaja prema terminalnim i mrežnim karakteristikama korisničkog uređaja. Za realizaciju ovog cilja korišćeni su alati otvorenog koda i besplatne aplikacije sa GPL (engl. GNU Public License) ili CC (engl. Creative Commons) licencom [5] kao što su FFmpeg i JWPlayer. Korišćene programerske tehnologije su bazirane na PHP-u i MySQL-u. U ovom radu se pod multimedijalnim serverom podrazumeva uređaj koji skladišti multimedijalni sadržaj dostupan korisnicima na svakom mestu u svakom trenutku putem IP-a. Razvoj računarskih, a posebno mrežnih tehnologija, omogućio je realizaciju multimedijalnog servera kako na snažnim hardverskim platformama koje obezbeđuju video na zahtev, tako i na platformi malih kućnih računara NAS (engl. Network Attached Storage). NAS se može realizovati u formi kućnog bioskopa sa operativnim sistemom Windows Media Center Edition [6] ili u formi komercijalnog Web servera koji hostuje medije za neki Web sajt. Multimedijalni server se u ovom radu razmatra kao arhiver i dostavljač multimedijalnih sadržaja, a posebno audio i video sadržaja, fotografija, knjiga itd. Pristup arhiviranim multimedijalnim sadržajima je omogućen sa samog servera ili pokretanjem Web aplikacije koja omogućava korisnicima pristup sa udaljene lokacije preko Interneta. U drugom poglavlju prikazane su metode obrade multimedijalnih fajlova kako bi se adaptirali uređaju kojim korisnik pristupa serveru. U trećem poglavlju su prikazani alati za obradu i reprodukciju multimedijalnih fajlova kao i njihova integracija sa PHP-om. U četvrtom poglavlju prikazana je konkretna realizacija multimedijalnog IP servera sa posebnim osvrtom na moguće probleme na koje nailazimo pri realizaciji sajta kao i razvoj sajta posvećenog mobilnim uređajima. 2. OBRADA MULTIMEDIJALNOG SADRŽAJA Kada se manipuliše zvukom i videom, jasno je da ovi sadržaji zahtevaju dosta prostora za skladištenje čak i kada su prethodno kompresovani. Pod pretpostavkom da je u pitanju PAL standard, nekompresovani video na rezoluciji 720 576 piksela, 25 frejmova po sekundi i 3x8- bitnom RGB bojom, zahteva 1.244.160 bajtova po frejmu. To je skoro 30MB u sekundi, ili preko 100GB za jedan sat filma. Kada se video sadaržaju pridoda audio sadržaj, zahtevani kapacitet komunikacionog kanala se znatno uvećava. Evidentno je da za komercijanu upotrebu videa treba obaviti kompresiju multimedijalnog sadržaja. 462
Konvencionalne kompresione tehnike bez gubitaka kao što je ZIP, ne redukuju količinu podataka na neophodni nivo potreban za prenos multimedijalnih sadržaja u realnom vremenu. Ovo je razlog zbog koga se koriste kompresije sa gubicima praveći kompromis između količine podataka i kvaliteta. Između uzastopnih video frejmova postoji korelacija, tako da algoritam za kompresiju može da redukuje količinu podataka koji opisuju ove frejmove. Na ovaj način se ostvaruje značajna ušteda u memorijskom prostoru potrebnom za skladištenje filma, odnosno kapacitetu komunikacionog kanala prilikom reprodukcije na zahtev. Kompresija sa gubicima se obično koristi za kompresiju multimedijalnih podataka kao što su audio, video i fotografija. Jedini negativan aspekt kompresije sa gubicima je u tome što kada se neki podaci uklone tokom kompresije može se smanjiti verodostojnost rezultata. Algoritmi koji nam omogućavaju da kodujemo i dekodujemo podatke, da li sa ili bez gubitaka zovu se kodeci. VBR zahteva veći protok, i više prostora za skladištenje složenijih segmenata, dok je manje prostora izdvojeno za jednostavnije segmente. Prosečna vrednost bitske brzine se određuje prema (1) i predstavlja bitsku brzinu za određeni fajl. VBR omogućava podešavanje maksimalne i minimalne bitske brzine, a algoritam kompresije pokušava da efikasno komprimuje podatke. Bitska brzina se postavlja na minimum kada nema promena u video frejmu, odnosno, na maksimim kada u videu preovladava brza promena kadrova. CBR se koristi kada se zahteva predvidljiva i stalna bitska brzina. Iako CBR u celom fajlu smanjuje efikasnost kodeka, i time rezultira većim fajlom, on u praksi daje ravnomerniju reprodukciju. CBR je koristan za reprodukciju multimedijalnih sadržaja kada je kapacitet dodeljenog komunikacionog kanala ograničen, mada nije optimalan izbor za skladištenje. Brzina frejmova (engl. Frame rate) predstavlja broj jedinstvenih uzastopnih slika koje se prikazuju u sekundi tako da stvaraju iluziju kretanja [8]. Minimalni broj Slika 1. Multimedijalni kontejner. Kada su audio i video podaci kodovani svaki svojim kodekom, potrebno je te podatke staviti u jedan fajl, koji se zove kontejner (sl. 1). Napredni formati multimedijalnih kontejnera kao što su Ogg i MKV (tabela 1.) mogu sadržati proizvoljan broj audio i video podataka, prevode, poglavlja i metapodatke zajedno sa sinhronizacionim informacijama potrebnim za reprodukciju. Format AVI MP4 MKV Vlasnik Microsoft MPEG Matroska.org B-frejm Ne Da Da VBR audio Ne Da Da Promnljiv fps Ne Da Da Poglavlja Ne Ne Da Prevodi Ne txt Bilo koji Tabela 1. Poređenje multimedijalnih kontejnera U telekomunikacijama i računarstvu bitska brzina (engl. Bitrate) predstavlja broj bitova koji se prenesu ili obrade u jedinici vremena [7]. Veća bitska brzina znači više informacija u multimedijalnom fajlu, viši kvalitet ali i veća veličina fajla. Zahtevana bitska brzna videa se može izračunati na osnovu izraza (1) Velicina- ( Audio_ bitska_ brzina* Dužina) Bitska_ brzina (1) Dužina gde je Dužina trajanje videa u s, Veličina kapacitet memorije koju zauzima video fajl u kb, voditi računa da je 1 kbyte = 8 kb, Audio_bitska_brzina i Bitska_brzina su predstavljeni u kb/s. Bitska brzina može biti promenljiva (engl. Variable Bit Rate VBR) i konstantna (engl. Constant Bit Rate CBR). Slika 2. Proces obrade multimedijalnog fajla. frejmova koje treba poslati u sekundi je 24, ali se standardno koristi 30 i više frejmova u sekundi. 3. ALATI ZA OBRADU I REPRODUKCIJU MULTIMEDIJALNOG SADRŽAJA FFmpeg je alat iz komandne linije za različite platforme koji, u svom najjednostavnijem obliku, omogućava kodovanje i dekodovanje multimedijalnih fajlova [9]. Pored konverzije multimedijalnih formata FFmpeg može da obavlja nekoliko osnovnih manipulacija nad audio i video podacima, kao što su promena brzine uzorkovanja zvuka, ubrzavanje ili odlaganje zvuka u odnosu na video, promena broja frejmova u sekundi, isecanje, promena rezolucije, postavljanje traka oko videa, ili promena razmere slike videa. Glavne komponente FFmpega su libavcodec, biblioteka sa audio i video kodecima, libavformat, biblioteka za multipleksiranje i demultipleksiranje audio i video kontejnera, i komandna linija za prosleđivanje opcija vezanih za manipulaciju multimedijalnim sadržajem glavnom programu. Proces obrade multimedijalnog fajla prikazan je na slici 2. FFmpeg poziva biblioteku libavformat, koja sadrži demultiplekser, kako bi pročitao ulazni fajl i kao rezultat dobio kodovane pakete podatka iz ulaznog fajla. Kodovani paketi se zatim prosleđuju dekoderu. Dekoder proizvodi nekompresovane podatke (sirovi video, PCM audio, itd.) koji se mogu dodatno obrađivati filtriranjem. Posle filtriranja podaci se prosleđuju koderu, koji ih koduje i kreira kodovane pakete podataka. Konačno oni se prosleđuju multiplekseru, koji ih zapisuje u izlazni fajl. Pre kodovanja, FFmpeg može da obradi sirov audio i video materijal koristeći filtere iz biblioteke libavfilter. 463
Filteri mogu biti jednostavni i kompleksni. Jednostavni filteri su oni koji imaju tačno jedan ulaz i jedan izlaz, i oba su istog tipa. Kompleksni filteri su oni koji se ne mogu opisati kao linearni u lancu obrade jednog signala. Za sve web programere koji imaju potrebu da obrade video materijal postavljen od strane korisnika, FFmpeg predstavlja nezamenljiv alat. Budući da je dostupan na većini platformi, integracija sa jezicima kao što je PHP je relativno laka. Jedan od uobičajenih načina integracije FFmpeg sa PHP-om je korišćenjem exec() funkcije. Takođe neophodna je i PHP ekstenzija FFMPEG-PHP koja je besplatna i dostupna za preuzimanje sa Interneta [10]. Povezivanje sa PHP-om se odvija u nekoliko koraka, kao što je prikazano na slikama 3 i 4. Slika 3. Povezivanje FFmpeg-a sa PHP-om Na početku se definišu lokacije potrebnih fajlova i kreira objekat za multimedijalni fajl koji treba da se obradi. Sledi podešavanje parametara koji su bitni za obradu multimedijalnog fajla, kao što su frekvencija uzorkovanja i bitska brzina audio signala, širina i visina video signala. Bitno je da su širina i visina parni brojevi jer se tako postižu bolji rezultati konverzije. Na kraju sledi kreiranje FFmpeg komande od definisanih parametara i samo izvršenje komande. Poslednja karika u lancu je reprodukcija multimedijalnog materijala. Ovde se postavlja pitanje zašto jednostavno ne postaviti video snimke na jutjub (eng l. YouTube) i koristiti njegov ugrađeni plejer? To je prilično dobro pitanje obzirom da on ima: Odličan plejer koji poznaje većina korisnika; Mnoštvo opcija za kontrolu izgleda; Visoku dostupnost propusnog opsega. Nasuprot tome postoji i nekoliko nedostataka: Ograničenje trajanja i veličine fajlova; Infrastruktura nije u našoj kontroli; Njihov logotip pojavljuje se na našem sajtu. Kao alternativa nameću se Flowplayer i JW Player. Oba plejera nude jednostavne opcije za konfigurisanje, kao i brojne dodatne opcije za korisnike koji su sposobni i voljni da promene nekoliko opcija za podešavanje ili napišu nekoliko redova javaskripta. Oba sadrže višeplatformsku fleš (engl. Flash) skript za ugrađivanje na sajt i imaju podršku za progresivno preuzimanje FLV i MP3 fajlova kao i razne striming servere. Flowplayer pored atraktivnog izgleda i jednostavnog javaskripta, ima nekoliko nedostataka: Česte nove verzije; Nedosledna dokumentacija i podrška; Nepostojanje striminga za MP3. JW Player, s druge strane, čini se da je zreliji proizvod. Njihov raspored novih izdanja je donekle više razuman, i <?php $ffmpeg = "/path/to/ffmpeg/ffmpeg"; $inputfile = "/path/to/inputfile/inputfile.avi"; $outputfile = "/path/to/outputfile/outputfile.flv"; $original = new ffmpeg_movie($inputfile); $samplerate = intval( $original->getaudiosamplerate()); $bitrate= intval( $original->getaudiobitrate())/1000; $width = intval( $original->getframewidth()); $height = intval( $original->getframeheight()); $width -= $width%2? 1: 0; $height -= $height%2? 1 : 0; $command = $ffmpeg. " -i ". $inputfile. " -ar ". $samplerate. "-ab". $bitrate. " -f flv -s ". $width. "x". $height. " ". $outputfile; $rezultat = exec($command);?> Slika 4. Veza između PHP-a i FFmpeg-a obuhvata značajan broj detalja o novim funkcijama i ispravki grešaka. Za konfiguraciju JW Playera treba manje vremena nego za Flowplayer, ali JW player ima i nekoliko nedostataka: Dokumentaciju je teško locirati na sajtu. Javaskript nije lagan. Generalno ne izgleda atraktivno kao Flowplayer. Oba su očigledno dobri plejeri, ali u ovom trenutku JW player se čini kao bolji izbor od Flowplayera. Iako Flowplayer atraktivnije izgleda, JW plejer je pouzdaniji i sveobuhvatno je zreliji proizvod. 4. REALIZACIJA MULTIMEDIJALNOG SERVISA Prilikom realizacije multimedijalnog servera pomoću PHP-a postoji par problema kao što su registracija na sajt, čuvanje lozinki, postavljanje velikih fajlova na server. Kako je potrebno omogućiti nesmetani pristup korisnicima bez obzira na terminal koji koriste, potrebno je na osnovu mrežnih karakteristika terminala ponuditi najbolji mogući kvalitet fajla koji može kontinualno da pregleda bez baferovanja. Kako je udeo na tržištu pametnih telefona iz dana u dan sve veći, i kako su ljudi sve više u pokretu server je potrebno prilagoditi i mobilnim uređajima. Danas je česta praksa da se pri registraciji na neki sajt od korisnika očekuje da izvršiti aktivaciju naloga putem linka koji dobija na email adresu 464
koju unosi prilikom registracije, što predstavlja dobar vid prevencije od lažnih registracija. Prilikom procesuiranja unetih podataka iz forme bitno je proveriti da li su sva neophodna polja popunjena kako ne bi neko ključno polje ostalo prazno. Takođe bitno je proveriti ispravnost unete email adrese. Ne postoji mogućnost provere da li je neka adresa aktivna ili ne, ali ona mora da sadrži neke karaktere, kao što su @, barem jednu tačku iza njega, kao i barem dva karaktera iza poslednje tačke. Lozinku je najbolje uneti dva puta kako bi osigurali da korisnik unese tačno onu lozinku koju je želeo. Algoritam Izlaz (bit) Tip podatka (MySQL) MD5 128 CHAR(32) ili BINARY(16) SHA-1 160 CHAR(40) ili BINARY(20) SHA-224 224 CHAR(56) ili BINARY(28) SHA-256 256 CHAR(64) ili BINARY(32) SHA-384 384 CHAR(96) ili BINARY(48) SHA-512 512 CHAR(128) ili BINARY(64) Tabela 2. Algoritmi za kriptovanje. Kako je potrebno izvršiti aktivaciju naloga, potrebno je generisati aktivacioni kod i sačuvati ga u bazi podataka. Za aktivacioni kod je potrebno omogućiti da može da bude NULL. Ukoliko je vrednost NULL nalog je aktiviran u suprotnom polje sadrži aktivacioni kod. Nakon registracije link za aktivaciju se šalje na email korisniku. Tek nakon aktivacije korisnik može da se prijavi na sistem i da koristi resurse servera. Lozinku ne treba čuvati u izvornom obliku jer ukoliko neko neovlašćeno pristupi bazi može da preuzme lozinke svih korisnika [11]. Zbog toga je najbolje koristiti neki od algoritama za kriptovanje (hash) koji su jednosmerni, što znači da se od lozinke može kreirati kriptovani string, ali od kriptovanog stringa se ne može kreirati originalna lozinka. Za razbijanje lozinke najčešće se koristi brutalna sila, gde napadač pokušava da pogodi lozinku tako što pokušava sve moguće kombinacije karaktera dok ne dobije prolaz do sajta. Kada su u pitanju kriptovane lozinke pokušaj razbijanja se svodi na upoređivanje kriptovanog stringa sa poznatim kriptovanim stringovima koji su dobijeni od nekih opšte poznatih reči. Za poboljšanje zaštite lozinki potrebno je lozinku kombinovati sa nekim drugim stringom, koji se naziva salt. [12] Ukoliko je salt isti za svaku lozinku, ukoliko dođe do njegovog razbijanja ponovo je kompromitovana kompletna baza. Da bi se ovo prevazišlo potrebno je da salt za svakog korisnika bude različit, i da se kriptuje pre spajanja sa kriptovanom lozinkom. Rezultat spajanja kriptovane lozinke i kriptovanog salta je najbolje kriptovati nekim drugim algoritmom od onog koji je upotrebljen za kriptovanje lozinke i salta. Na osnovu izabranog algoritma kriptovanja potrebno je izabrati tip podataka u bazi podataka kako je to dato u tabeli 2. Postavljanje fajlova na server sa web formi u PHP-u je lako. Kako je veličina multimedijalnih fajlova velika treba obratiti pažnju na neka podrazumevana podešavanja PHP-a. PHP dozvoljava postavljanje fajlova maksimalne veličine 2 MB, vreme izvršavanja skripta je ograničeno na 30 sekundi. Zato je potrebno povećati limit za veličinu fajlova i ukinuti vremenska ograničenja. Ove opcije se podešavaju u php.ini konfiguracionom fajlu, tako da se primenjuju na sve aplikacije, ili ukoliko se koristi Apache, mogu da se podese opcije u.htaccess fajlu aplikacije. Ove opcije je moguće podesiti iz same PHP aplikacije sledećim kodom: ini_set('upload_max_filesize', '128M'); ini_set('post_max_size', '128M'); ini_set('max_input_time', -1); ini_set('max_execution_time', -1); Slika 5. Sajt za mobilne uređaje a) spisak fotografija b) detaljan prikaz fotografije PHP ima funkciju set_time_limit() tako da nije neophodno direktno podešavati max_execution_time. Merenje brzine veze između korisnika i servera se realizuje pomoću javaskripta. Potrebno je preuzeti neki fajl sa servera poznate veličine, proveriti koliko je vremena potrebno za preuzimanje, a zatim podeliti veličinu fajla sa vremenom potrebnim za preuzimanje. U poslednje vreme pristup Internetu putem mobilnih ručnih uređaja postaje sve češća praksa. Očigledno je da se broj ljudi koji koriste Internet preko svog telefona svakim danom sve više povećava. Osim toga, mnoge potrošački usmerene kompanije su već shvatile važnost mobilne platforme i pored regularnih sajtova imaju alternativni sajt okrenut mobilnim uređajima. Najlakši način da se izgradi mobilni sajt je modifikacija postojećeg sajta da bi bio kompatibilan za mobilne uređaje. Pri realizaciji sajta za mobilne uređaje treba obratiti pažnju na neke ključne stvari pre nego što se krene u realizaciju. Nekada je potrebno malo više vremena za pregled mobilnog sajta tako da sve najvažnije informacije koje korisnici treba da vide stavljaju se na vrh stranice. Logo firme treba prilagoditi za mobilni sajt. Navigaciju levo desno treba svesti na minimum, jer predstavlja veliki problem na mobilnom uređaju, umesto toga sadržaj treba organizovati u jednu kolonu. Primer takve organizacije sajta je dat na slici 5. Podaci na sajtu treba da budu jednostavni za čitanje i navigaciju, posetioci ne treba da se naprežu da pronađu detalje na sajtu jer se verovatno nalaze u pokretu dok gledaju mobilni sajt. Sadržaj koji treba da se nađe na mobilnom sajtu potrebno je dizajnirati tako da se izbegne potreba za zumiranjem. Korišćenje slika i grafike treba 465
svesti na minimum koliko god je to moguće, samo gde su kontekstualno relevantne i treba da budu u JPEG, GIF ili PNG formatu. Skoro svi aktuelni uređaji mogu da prikazuju slike, međutim, korisnici mogu isključiti prikaz slika u svom web čitaču, tako da je poželjno uvek koristiti alt tekst. Veoma je bitno da sve stranice budu jednostavne i male veličine. Maksimalna veličina mobilne stranice je samo 20 KB, tako da je potrebno da čitav sadržaj stane u manje od 10 KB, posebno zbog činjanice da se korisnicima pristip Internetu preko mobilnih uređaja obično naplaćuje po KB prenetih podataka. multimedijalnog materijala video izvor se koduje različitim bitskim brzinama. Upotrebom programskih platformi baziranih na PHP-u i MySQL-u lako se može realizovati aplikacija za arhiviranje i reprodukciju multimedijalnog sadržaja sa servera posredstvom IP-a. Dostupnost besplatnih alata za obradu multimedijalnog materijala omogućava proširenje funkcionalnosti servera da pored arhiviranja vrši i prilagođavanje multimedijalnog sadržaja terminalima bez obzira na njihove tehničke i mrežne karakteristike. Slika 6. Sajt za mobilne uređaje a) spisak pesama b) preslušavanje pesme Dobar mobilni web dizajn ima dugme za prethodnu stranicu i linkove ka ostalim stranicama. Kako neki od uređaja nisu opremljeni dugmetom za povratak ovime se izbegava dovođenje korisnika u ćorsokak. Takođe, poželjno je postaviti link ka punoj verziji sajta. Kod skladištenja muzičkih fajlova postavlja se pitanje izbora najpogodnijeg formata. Dva najčešća formata su MP3 i Ogg Vorbis. Oba formata predstavljaju kompresiju sa gubicima i oba podržavaju promenljivu bitsku brzinu. Ogg podržava do 256 kanala dok MP3 podržava samo 2 kanala. Ogg je besplatan i otvoren format za kodovanje audio signala dok je MP3 vlasnički format. Zbog ranog ulaska u svet deljenja fajlova, MP3 je postao izuzetno popularan. Njegova popularnost je obeležena činjenicom da je termin MP3 postao sinonim za kompresovani audio. Primer audio dela sajta je prikazan na slici 6, dok je primer organizacije video sadržaja na mobilnom sajtu prikazan na slici 7. 4. ZAKLJUČAK Multimedijalne IP aplikacije osim velikog protoka zahtevaju i obezbeđivanje određenog QoS-a. Ispunjavanje potrebnog QoS-a u multimedijalnim mrežama nije jednostavan zadatak. Terminali koji pristupaju multimedijalnom serveru često imaju ograničenja u vidu tehničkih mogućnosti da reprodukuju određeni multimedijalni sadržaj, kao i ograničenje u vidu dostupnog propusnog opsega. Neka od rešenja koja se susreću u praksi su da se video izvor koduje različitim kodecima čime se povećava broj različitih terminalnih uređaja koji mogu da reprodukuju multimedijalni sadržaj. Da bi se terminalnim uređajima, koji imaju ograničen propusni opseg, omogućio kontinualan pregled Slika 7. Sajt za mobilne uređaje a) spisak video fajlova b) pregled video fajla LITERATURA [1] M. Jevtović, Z. Veličković, Protokoli prepletenih slojeva, Akademska misao, Beograd, 2013. [2] P. Deitel, H. Deitel, AJAX, Rich Internet Applications and Web Development for Programmers, Deitel, 2008. [3] Z. Veličković, M. Jevtović, Adaptive Cross-layer Optimization Based on Markov Decision Process, Electronics and electrical engineering, No. 2, (108), pp. 39-42, 2011. [4] Marco Ajmone Marsan, Giuseppe Bianchi, Marco Listanti, Michaela Meo, Quality of Service in Multiservice IP Networks, Catania, 2005 [5] Lucie Guibault, Christina Angelopoulos, Open Content Licensing: From Theory to Practice, Amsterdam University Press, 2011 [6] Uroš Veličković, PC Press broj 167: Računar kod kauča, Beograd, 2010. [7] Prakash C. Gupta, Data Communications And Computer Networks, New Delhi, 2006. [8] Ashley Shepherd, Pro tools: for video, film, and multimedia, Muska & Lipman Publishing, Boston, 2003. [9] http://ffmpeg.org/ffmpeg.html, FFmpeg documentation, preuzeto dana 15.01.2013. [10] http://ffmpeg-php.sourceforge.net/, ffmpeg-php, preuzeto dana 15.01.2013. [11] Luke Welling, Laura Thimson, PHP i MySQL razvoj aplikacija za veb, Beograd, Mikro knjiga, 2009. [12] Tim Converse, Joyce Park, Clark Morgan, PHP5 and MySQL Bible, Wiley Publishing, Inc., 2004. 466