HTTP Streaming – Një guidë praktike - Guida | Tutoriale

×
Albanian Forums, Zerion Zeri yt Zeri Info, Forumi Shqiptar Al Virtual, Diskutime, Biseda, Chat Njofje, Informatika, Teknologjia, Gazeta Tema, Gazetat Shqiptare, Bota Sot, www Channel Albania, Telegrafi Kosovo, Ballkani Web, Gazeta Lajme shqip, Lajmet e Fundit Shqiperia Kosova, Dita, Panorama, Kryeartikull, Faqja Kryesore, Video Shqip, Muzike Shqipe, Njoftime, Lajmerime, Temat Online, Gazetat, Kosovare, Shtypi Ditor, Sporti Shqiptar, Dashuria, Pyetje Pergjigje, Keshilla, Ndihme, Webmaster Shqiptar, Familja, Shqiptaria, Muzika, Receta Gatimi, Imazhe, Vipat-shqiptar, Aktualiteti
Media Sociale
Mesazhe Private
Shqiptaret duke lexuar tema interesante dhe te ndryshme
Tema re

HTTP Streaming – Një guidë praktike

HTTP Streaming – Një guidë praktike

· 1 · 879

  • Postime: 28589
  • Karma: +48/-5
  • Gjinia: Mashkull

ne: 14-10-2010, 23:42:19
TTP Streaming është një teknikë për t’i servirur vizitorëve video. Duke përdorur ato që kam mësuar dhe testuar në projekte të mëparshme, do ju tregoj konfigurimet e duhura të serverit, formatet e ndryshme, lexuesit e videove, etj.

Kjo është guida e parë pas më shumë se një muaji dhe më vjen sinqerisht shumë keq për tërë këtë kohë mungesë. Punët, jeta e një kompleksitet gjërash të tjera s’na kanë lejuar të merremi me Feniksin, por shpresoj që në vijim të jemi më aktiv. S’po e zgjas më tepër këtu, se pak pasiv kemi qenë, edhe të mbaj fjalim hyrës na duhet.

Para pak kohësh ndihmova një klient të vinte në punë një server për të bërë stream video. Kisha shumë pak njohuri rreth temës, prandaj mu desh të eksperimentoja (së bashku me klientin) për disa ditë rreth mundësive që ofrohen, teknika optimizimi, kompresim, etj. Këto njohuri që kam përftuar po i ndaj me ju për t’ju lehtësuar punën nëse një ditë do ju duhet të bëni atë që bëra unë. Kuptohet që s’ka asgjë të komplikuar këtu, thjeshtë një guidë praktike për t’ju shkurtuar orë kërkime.
Cfarë është HTTP Streaming?

HTTP Streaming, ose më teknikisht HTTP Server Push, është një teknikë transmetimi të dhënash përmes protokollit HTTP. Shumë shpesh përshkruhet si “shkarkim progresiv” dhe në terma të thjeshta, ky është përshkrimi më i kuptueshëm. Kur dikush sheh një video të transmetuar përmes HTTP Streaming, ajo që ndodh në sfond është shkarkim progresiv. Pjesë të vogla të vidoes shkarkohen, i ofrohen klientit për t’u parë dhe në të njëjtën kohë vijon shkarkimi i pjesëve pasardhëse. Në këtë mënyrë klienti nuk duhet të presë minuta (apo orë për video të gjata) të tëra që shkarkimi të mbarojë për të parë videon, por e sheh në kohë reale me shkarkimin.

Më teknikisht, HTTP Streaming quhet HTTP Server Push. Në pak fjalë, në teknologjinë Push komunikimi niset nga serveri dhe jo nga klienti (si në Pull – shfletimi i një faqeje psh). Në HTTP Server Push, serveri e mban lidhjen me një klient të hapur dhe pret marrjen e udhëzimeve për të ofruar përmbajtje.
HTTP Streaming vs RMTP

Ju thashë më sipër çfarë është HTTP Streaming dhe kjo do jetë teknologjia për të cilën do flas në vazhdim të guidës. Megjithatë, më duhet t’ju them që HTTP Streaming nuk është më e mira që ofrohet. RMTP është shpesh një ide më e mirë, por vjen me anët e saj negative.

RMTP (Real Time Messaging Protocol) është një protokoll i zhvilluar nga Macromedia (tani Adobe) për të transmetuar video dhe audio në internet përmes një serveri dhe një klienti që zotëron Adobe Flash. RMTP është përgjithësisht superior mbi HTTP Streaming për performancën që ofron dhe sigurinë e pronës tuaj intelektuale duke qenë se videot serviren direkt nga serveri dhe bëhen cache direkt atje, jo tek klienti. Si çdo medalje, edhe ajo e RMTP-së ka kahun tjetër – atë negativ dhe çmimi i lartë është anë negative për pjesën më të madhe. Po ju tregoj alternativat që ofrohen për RMTP:

    * Adobe Flash Media Server. Kjo është zgjidhja më e mirë për ata që kanë para të harxhojnë. FMS vjen me çmime nga $1.000 (e konfirmuar) për paketën bazë dhe shkon deri në $40.000 (e pa komfirmuar) për paketën enterprise.
    * WOWZA. Kjo më duket si zgjidhje e mirë për buxhete të vogla apo për plane jo shumë afat-gjatë. Ka një paketë falas për zhvillues (shumë e limituar), ndërsa paketat e tjera nisin me $65/muaj/server. Ofron gjithashtu suport për një sërë platformash si iOS (iPod, iPhone, iPad), Android, Silverlight, Blackberry, Quicktime, etj. Jo se me platforma të tjera (qofshin RMTP apo HTTP Streaming) kjo është e vështirë të arrihet, por gjithmonë është mirë kur e ke të përfshirë.
    * Red5. Red5 është e vetmja alternativë Open Source dhe është i shkruar në Java. Për fat të keq, si shumë software Open Source, dokumentimi është skandaloz dhe për t’a instaluar duhet të dini shumë mirë çfarë bëni. Nëse ja arrini, do keni një server RMTP falas (paratë e serverit ku do hostohet sigurisht s’ju a fal njeri :) ).

Serverat RMTP i njoh shumë pak, prandaj më falni nëse kam dhënë ndonjë të dhënë të gabuar më sipër. Thjeshtë doja t’ju jepja një ide rreth alternativave dhe çmimeve. Në vazhdim do fokusohemi tek HTTP Streaming.

Për ta mbyllur këtë seksion, nëse nuk ju duhet një server streaming që performon maksimalisht dhe nuk ju bëhet vonë se ju shkarkojnë videot, atëherë me HTTP Streaming do keni një server për të cilin paguani vetëm hardware-in dhe trafikun. A thua se këto të fundit nuk janë mjaft të shtrenjta, edhe të paguajmë për software të dedikuar na duhet…
Resurset e Nevojshme

Në fakt nuk është se ju duhen shumë gjëra. Software-et që do përdorim për të konvertuar dhe luajtur videot janë falas. Të tilla janë edhe modulet që do instalojmë për Apache dhe lighthttpd. Por, pavarësisht se do përdorim software-e të lira, hostimi nuk është falas.

Shkarkimi progresiv nuk është proçes i lehtë për serverin. Imagjinoni tani të keni një faqe ku mesatarisht 50 persona shohin video në të njëjtën kohë. Nuk është aspak e lehtë për serverin! Prandaj nëse mendoni të ofroni streaming në një host shared apo VPS, thjeshtë harrojeni. VPS-të dhe hostet shared janë kompjutera që i ndajnë proçeset në shumë klientë dhe si rrjedhim keni në përdorim resurse shumë të limituara. Nga kahu tjetër, një server i dedikuar është një kompjuter (server dmth) që punon vetëm për ju dhe resurset nuk ndahen me askënd tjetër. Por as një server i dedikuar i lirë (psh me CPU Intel Atom, Celeron apo Pentium 4) nuk bën shumë punë sepse suporton pak proçese intensive në të njëjtën kohë. Flas këtu nëse keni ndërmend të ofroni video për masën, jo vetëm për vete dhe 2-3 shokë tuajët.

Përveç performancës, duhet të keni akses (ssh) në server për të instaluar module për Apache ose lighthttpd. Do të përdorim 2 module (do ju flas më vonë për to) respektivisht për 2 formate skedarësh: FLV dhe MP4 (H.264). Këto module duhen instaluar dhe duhet modifikuar konfigurimi i Apache ose lighthttpd për t’i aktivizuar ato. Në servera të dedikuar dhe VPS kjo s’duhet të jetë problem.

Një tjetër detaj i rëndësishëm në varësi të asaj që doni të ofroni është konvertimi dhe proçesimi i videove nga serveri. Nëse doni të ofroni një faqe të tipit YouTube, ku vizitorët kanë mundësi të ngarkojnë video, duhet t’i konvertoni videot e ngarkuara. Kjo arrihet lehtë me ffmpeg, por proçesi është goxha intensiv dhe kam përshtypjen se është synim i largët për buxhetet e shumë personave.

Në projektin që ju fola në hyrje të guidës, po përdorim një server nga ServerLoft (thnx Jonit për sugjerimin) dhe jemi [deri tani] tmerrësisht të kënaqur me çmimin dhe performancën. Serverat atje janë të pa menaxhuar për software dhe në krah të instalimit fillestar të sistemit operativ, jeni tërësisht të vetëm. I këshilloj ServerLoft tek ata persona që kanë eksperiencë në menaxhim serverash apo që njohin dikë të tillë (si unë – thnx Egi). Të tjerët të hedhin sytë diku tjetër.
Formati FLV

FLV është formati ndoshta më i njohur për të gjithë dhe ka qenë standart i streaming për shumë vite. Praktikisht është një format mbajtës për video që transmetohen në web dhe lexohen nga Adobe Flash. Videot zakonisht enkodohen me kodekët VP6 dhe Sorenson Spark.

Që të bësh stream një FLV, nuk mjafton thjeshtë ta konvertosh dhe t’a ngarkosh në server, fatkeqësisht. Duhen injektuar në çdo video disa të dhëna që quhen Metadata, të cilat shërbejnë për të informuar video player-at se çfarë formati është, madhësia, bitrate, vendodhja e keyframes, etj. Nga testet e mia, nuk gjeta një konvertues që i bën të gjitha automatikisht, prandaj m’u desh të përdorja software të posaçme. Për Windows mund të përdorni FLVMDI (FLV MetaData Injector – i limituar për video FLV deri në 700 MB), ndërsa për Linux është FLVTool2, një injektues i mirë dhe pa ndonjë limit në madhësi. Kini kujdes me këtë të fundit nëse i kryeni proçeset në server sepse përdor shumë resurse – ruan videon në memorje, i vendos metadatat dhe më pas e shkruan në skedarin origjinal.

Si ç’e mësova duke gabuar, videot FLV shumë të mëdha (disa GB) kanë probleme të lexohen nga video player-at. Përveç se krijojnë probleme me lexime të ngadalta apo bllokim i videove pa arsye, nuk i instruktojnë si ç’duhet player-at duke i dhënë buffer të gabuar. Si rrjedhim, m’u desh të merrem një ditë të tërë me testime dhe lexime pse një video e madhe nuk tregonte sa ishte ngaruar. Përfundimisht hoqa dorë!

Si c’thashë më sipër, për video të vogla FLV-të janë shumë në rregull. Natyra e kompresimit është pak antike dhe nëse nuk zgjidhni bitrate-in e duhur, mund të përfundoni me video shumë të mëdha, ose të vogla por me cilësi skandaloze. Sipas testeve që bëmë, bitrate mbi 2500 kbps rezulton në video 40-60% më të mëdha se ekuivalenti MP4 dhe çuditërisht me artifakte më të dallueshme. Edhe për bitrate më të ulta madhësia duhet të vlejë, por besoj në raporte më të vogla. Sidoqoftë, tentoni të përdorni bitrate rreth 1000 kbps, që do ju prodhojë cilësi dhe madhësi të pranueshme.
Formati MP4 (H.264)

Për këtë format do flas me pak më tepër entuziazëm, sepse e shoh si një alternativë shumë më të mirë se FLV. E mund në çdo sektor përveç suportit. Fatkeqësisht Adobe Flash suporton MP4 vetëm nga versioni 9.115 e tutje. E mira këtu është se Flash rifreskohet lehtë nga vizitorët, por gjithashtu videot H.264 mund të luhen nga tagu “video” i HTML5. Jo të gjithë kanë shfletues modernë, por të paktën keni në dorë një alternativë.

H.264 është formati standart në shumë ambjente, jo vetëm në atë të webit. YouTube e përdor, disqet Blue-Ray dhe transmetimet televizive po kalojnë në HD përmes H.264. Pra ndryshe nga FLV, H.264 është ideuar të përdoret jo vetëm në web dhe si i tillë, mund të suportojë rezolucione qiellore. YouTube ka testuar disa video në H.264 me rezolucion 4096 x 2304 që mund të shihen nga kushdo. Hidhini një sy! Cilësia është jashtë kësaj bote, por e tillë është edhe ngarkesa në kompjuter dhe linjën e internetit. Në të ardhmen do të shohim të tilla video për mëngjes :)

Ashtu si metadatat e FLV-ve, edhe H.264 kërkon disa të dhëna për të instruktuar player-at dhe për t’u lexuar si duhet. Pjesa e madhe e konvertuesëve i vendosin këto të dhëna në fund të videos dhe duhen spostuar në fillim që të jenë të vlefshme. Ffmpeg është një nga këto! Për fat të mirë, fare rastësisht zbulova që një program i lirë – të cilin e kisha instaluar prej kohësh për konvertime videosh – e bën këtë automatikisht. Programi quhet Handbrake dhe vjen për Mac, Windows dhe Linux. Më thjeshtë se kaq s’ka ku të shkojë. Më poshtë mund të shihni një pamje të programit në Mac (në platforma të tjera mund të ndryshojë disi).

Me shume ketu: http://www.feniksi.com/web/http-streaming-nje-guide-praktike

Temat e fundit