Sunday, January 22, 2012

Comprimarea fisierelor VOB (DVD) sau MPEG cu AviDemux


Tutorialul de fata se refera la DVDrip-ul facut cu ajutorul programul AviDemux. Cu toate ca acest program n-a fost construit pentru rip-ul DVD ci pentru conversia fisierelor .TS si .MPEG in .AVI, felul profesional in care este construit poate sluji la mai multe activitati in domeniul rip-ului/conversiei. De asemenea, el este usor de utilizat si vine cu propriile codec-uri, nefiind necesara instalarea unor astfel de codec-uri in sistem.

DVDrip-ul cu Avidemux e o chestie cam fortata, dar functionala. In primul rind, identificam pe harddisk directorul unde se afla continutul DVD-ului.



Acest director va contine alte doua directoare la rindul sau: VIDEO_TS si AUDIO_TS. Continutul directorului VIDEO_TS este in genul acesta:



Pentru ca Avidemux nu recunoaste structura unui DVD, trebuie „ajutat” putin. Ceea ce ne intereseaza, de regula, este fisierul VTS_01_1.VOB – acesta fiind primul fisier de pe DVD care contine o parte efectiva a filmului, restul fiind fisiere-index, fisiere-meniu, etc.

Acest fisier, VTS_01_1.VOB este tras (prin drag-and-drop) deasupra executabilului Avidemux (avidemux2_gtk din directorul cu acelasi nume). Sau poate fi incarcat din meniul File al aceluiasi program. Poate, de asemenea, fi tras (prin drag-and-drop) deasupra unei scurtaturi a programului Avidemux (ca in imaginea de mai jos).



Odata ce Avidemux recunoaste tipul fisierului, veti fi intrebati daca doriti ca acesta sa fie indexat (procedura prin care Avidemux stringe o serie de informatii legate de continutul sau). Se alege „yes”.



Avidemux va recunoaste imediat si faptul ca in acelasi director mai exista citeva fisiere asemanatoare primului, si ne va intreba daca dorim sa le adauge primului. Optiunea este foarte utila, pentru ca astfel programul va reconstitui filmul existent pe DVD din partile acestuia. Se alege „yes”.



Procesul de indexare a inceput. El va dura in functie de puterea procesorului si a ram-ului. De regula nu ia mai mult de 3 minute, si asta chiar pe calculatoarele mai putin performante.



Daca DVD-ul are mai multe piste audio (ex. de fata are 2, in care prima pista audio este maghiara, si a doua engleza), Avidemux le recunoaste si solicita sa fie pastrata una singura.



Primul pas e sa mergem in meniul corespunzator:



Acest pas va fi urmat de selectarea pistei audio care ne convine.



Acum e timpul sa stabilim ce tip de compresie video si audio vom avea. In cazul de fata s-a ales compresia Xvid, pentru stream-ul video, si Lame MP3 pentru stream-ul audio.



Configuram meniul „Audio” din stinga – este meniul de compresie.



Configuram meniul „Video” din stinga – meniul de compresie video.



Primul pas e sa stabilim in functie de ce anume vom comprima – cuantizare (lasam codecul sa aleaga cei mai buni parametric pentru compresie) sau bitrate.

Cuantizare:



Bitrate:



Alegem, asadar, pentru codecul Xvid, un bitrate. Din pacate, pentru encodarea intr-un singur pas, Xvid-ul nu ofera decit posibilitatea unui bitrate variabil. Ce inseamna asta? Inseamna ca si in cazul in care cunoastem exact ce bitrate avem nevoie pentru un film de o anume durata (bitrate-ul se poate calcula aici - http://www.cole2k.net/bitrate-calculator.html ), indicarea acestui bitrate nu va garanta marimea scontata in cazul encodarii (compresiei) intr-un pas. Filmul poate iesi mai mic sau mai mare de dimensiunile standard (700 MB sau 1400 MB). Tocmai de asta, am prefera pentru encodarea intr-un pas un bitrate ceva mai mare (in imaginea de mai sus, 1800 kbps), care sa corecteze, in felul acesta, erorile de compresie.

Odata stabilite caracteristicile compresiei in mare, revenim la interfata principala a programului.



Este momentul sa mergem la meniul de filtre pentru compresie (in stinga, sub configuratia video, meniul „Filters”). Aici exista o multime de filtre destinate prelucrarii imaginii.

In primul rind ne intereseaza filtrul de „deinterlace” - deintretzesere. Desi in cazul de fata problema nu se pune, imaginea de pe DVD-ul cu care exemplificam fiind deja deintretesuta (deinterlaced), majoritatea filmelor pe DVD apar intretesute (interlaced). Pur si simplu cadrele pare si impare de imagine sunt separate, lucru care da o senzatie de „dungi”. Daca avem de-a face cu un astfel de DVD in care imaginea este interlaced (cadrele sint separate), primul filtru pe care il aplicam este acela de „Deinterlace”. Daca nu, vom renunta la acest filtru. In imaginea de dedesubt exemplificam alegerea unui filtru „Deinterlace” – dupa cum vedeti, odata ce este ales un filtru din multitudinea de filtre prezenta, exista un buton de „Preview” care va va ajuta sa estimati daca filtrul ales este corect sau nu.



Setarile filtrului Kernel Deinterlacer sint prezentate mai jos.



Odata ales un filtru, el va fi afisat in meniul din dreapta. Nu uitati: daca imaginea dvd-ului este interlaced, daca cadrele sunt separate, filtrul de „Deinterlace” trebuie ales intotdeauna inaintea oricarui alt filtru.



Un alt filtru important este acela de „Crop”.



Acesta ofera posibilitatea de a crop-a (de a decupa) marginile negre nedorite ale filmului.



Decupajul este simplu de realizat. Odata decupajul realizat, in meniul din dreapta ne vor fi indicate noile dimensiuni ale ferestrei filmului. Adesea acestea vor fi non-standard.



Pentru a aduce fereastra filmului la dimensiuni standard, trebuie sa apelam la filtrul de „Resize”.



In acesta indicam noile valori ale ferestrei filmului. Daca filmul este „Full screen” (4/3), rezolutii standard vor fi: 720 x 544, 704 x 520, 640 x 480, 544 x 408, 512 x 384. Daca este „Wide screen” (16/9), rezolutii standard vor fi 720 x 400, 720 x 384  sau 640 x 360.



Odata ce selectam aceste optiuni, revenim la interfata initiala si selectam un fragment din film pentru a face o verificare de calitate (compresia de proba, daca vreti s-o numim astfel). Observati cursorul de jos, stabilit intre 2 puncte A si B.



Salvam fragmentul de film pe care dorim sa-l comprimam „de proba” undeva pe harddisk. Dam si un nume generic, la alegera noastra (atentie – la salvarea fisierului, trebuie sa precizati si extensia, de pilda film.avi, pentru ca Avidemux nu o face de la sine).



Procesul de compresie a inceput. Lasam sa se comprime circa un minut de film, dupa care putem opri procesul.



Filmul rezultat il reproducem intr-un player, dupa preferinta. In felul acesta vom estima calitatea la care ne putem astepta.



Daca fisierul nu este pe masura asteptarilor, se poate reveni asupra setarilor initiale si face diferite ajustari, adauga, scadea filtre,

ATENTIE: daca imaginea rezultata vi se pare putin prea „soft”, daca contururile sint putin prea ingrosate, poate fi din pricina setarilor „default” de post-procesare a imaginii, setari existente in programul Avidemux. Acestea pot fi schimbate din meniul „Video” de sus:



Se debifeaza optiunile „Horizontal” si „Vertical deblocking” si se reduce nivelul postprocesarii la 1.



Odata ce sintem convinsi ca filmul are toate setarile corespunzatoare pentru encodare, e momentul sa sechimbam selectia destinata compresiei (intre punctele A si B) pentru a cuprinde intreg filmul.



Dupa aceasta, puteti linistiti merge sa beti o cafea, procesul de encodare (compresie) poate dura, de la caz la caz, pina la doua sau trei ore. Pe un Intel Core 2 Duo (4400) cu 2 GB memorie Ram, compresie filmului exemplificat mai sus, de aproximativ 90 min a durat undeva sub 2 ore, in conditiile in care encodarea a mers in background, s-au efectuat si alte task-uri iar prooritatea compresiei a fost „Below normal”. Pe calculatoare ceva mai performante, timpul compresiei se reduce dramatic, ajungind la circa 30 minute.

Tuesday, January 17, 2012

Extragerea stream-urilor flash online


Dupa cum probabil ca stiti, cea mai noua tehnica de streaming a posturilor TV live este facuta cu ajutorul formatului flash video (.flv) prin intermediul playerelor online bazate pe proptotipul produs de Adobe. Formatul este versatil si calitatea este buna si foarte buna, chiar si in conditiile unui bitrate redus. Cu toate acestea, marele inconvenient este tipul de servere securizate dedicate acestui tip de transmisii (protocolul RTMP, RTMPE si RTMPT). Toate solicita un player online dedicat, majoritatea solicita si un port dedicat (1935), precum si citeva informatii furnizate de pagina pe care este publicat stream-ul, in ideea descurajarii celor care vor sa „importe” sau sa redirectioneze acest stream catre alte site-uri ori playere.

Aplicatia initial conceputa pentru Linux, Rtmpdump este poate cel mai bun program pentru extragerea tuturor informatiilor necesare redirectionarii stream-ului .flv catre un alt player sau capturii acestui stream.

Aplicatia consta intr-un pachet de cinci utilitare: rtmpdump.exe, rtmpExplorer.exe, rtmpsrv.exe, rtmpsuck.exe si rtmpgw.exe, precum si un container librtmp.dll. Rtmpdump este programul de baza, in timp ce RtmpExplorer este doar un „GUI”, o interfata pentru extragerea adreselor si parametrilor necesari reproducerii streamului video.

Odata creat directorul rtmpdump pe harddisc si copiate aplicatiile in el, avem doua alternative pentru a opera cu programul. Fie il lansam scriind adresa stream-ului in casuta „Run” a meniului de start (sub forma C:/rtmpdump/rtmpdump.exe –r „adresa stream”), fie prin crearea unui fisier text amplasat in acelasi director si salvat cu extensia .bat.

1.Aflarea adreselor

Lansarea aplicatiei RtmpExplorer (o interfata pentru browserul Internet Explorer) lanseaza, de asemenea, si utilitarul Rtmpsrv, cel care in momentul in care vizitam o adresa web va indica adresa stream-ului continut de acea pagina.

Rtmpsrv este facut sa functioneze pe portul 1935. Daca acesta nu va este deschis din firewall, aplicatia nu va indica nimic. De regula, insa, portul este deschis by default prin utilizarea browserului.



Un exemplu de adresa de stream extrasa prin intermediul Rtmpsrv. Tastam url-ul in address bar-ul aplicatiei RtmpExplorer, dupa care asteptam incarcarea paginii. Daca playerul nu porneste instant, dam click pe butonul „Play”.


Daca programul Rtmpsrv nu reuseste sa afiseze adresa (unele site-uri blocheaza anumite informatii suplimentare sa treaca prin portul 1935), il inchidem si deschidem programul Rtmpsuck. Acesta functioneaza la fel, in conjunctie cu RtmpExplorer, numai ca reuseste sa treaca de restrictiile impuse de majoritatea site-urilor in afisarea parametrilor specifici stream-ului.


Atentie, comanda default a programelor Rtmpsrv si Rtmpsuck este una de inregistrare a streamului (singurele cazuri in care acesta nu va fi inregistrat sint acelea de eroare in „handshaking”, adica in protocolul de conectare la stream). Sa nu va surprinda daca stream-ul va incepe sa „curga” pe calculatoarele voastre, command box-ul aratind o succesiune de biti care se acumuleaza, asa ca in imaginea urmatoare.


Daca nu va intereseaza decit adresa in sine, nu inregistrarea stream-ului, trebuiesc facute urmatoarele:

a)      in cazul Rtmpsrv, pur si simplu inchideti casuta. Recording-ul se va opri, iar linia care contine adresa si parametrii de comanda va fi inregistrata intr-un fisier command.bat – aflat in acelasi director cu aplicatia rtmpdump.


b)      In cazul Rtmpsuck e necesar sa copiati parametrii inainte de a inchide command box-ul, pentru ca ei nu se salveaza nicaieri. De asemenea, linia de comanda pentru inregistrarea ori retransmisia stream-ului va trebui alcatuita parametru cu parametru.

Marcajul textului:


Copierea textului:


Inserarea textului intr-un editor de text:


O linie de comanda Rtmpdump arata astfel:

rtmpdump -r "rtmpe://fms15.mediadirect.ro:1935/live2/antena3?id=8342556" -a "live2/antena3?id=8342556" -f "WIN 11,1,102,55" -W "http://static1.mediadirect.ro/player-preload/swf/antena3_new_1037/player.swf?data=DAsQDA8FWi0LBgM=&url=CgAQPBMINhsLF1odDRQ=&app=FlUZRg0NHxdXTBUDEQEHAFc=&str=DAsQDA8FNkE6Dxsa" -p "http://www.antena3.ro/live.php" -C O:1 -C O:0 -y "antena_3_low" -o antena_3_low.flv

Linia de mai sus este destinata unui fisier care urmeaza a fi inregistrat. Semnificatia comenzilor este urmatoarea:

-r – link-ul rtmp
-a – numele aplicatiei care se conecteaza la serverul rtmp
-w – playerul flash
-p – adresa site-ului pe care se afla streamul
-C – o indicatie privind tipul conectarii
-y – denumirea streamului
-o – titlul sub care stream-ul .flv va fi salvat pe harddisc

2. Reproducerea stream-ului in VLC e partea cea mai usoara. Ea necesita inlocuirea ultimei comenzi (-o) cu o alta, care directioneaza stream-ul catre player.

Comanda va arata astfel:

rtmpdump -r "rtmpe://fms15.mediadirect.ro:1935/live2/antena3?id=8342556" -a "live2/antena3?id=8342556" -f "WIN 11,1,102,55" -W "http://static1.mediadirect.ro/player-preload/swf/antena3_new_1037/player.swf?data=DAsQDA8FWi0LBgM=&url=CgAQPBMINhsLF1odDRQ=&app=FlUZRg0NHxdXTBUDEQEHAFc=&str=DAsQDA8FNkE6Dxsa" -p "http://www.antena3.ro/live.php" -C O:1 -C O:0 -y "antena_3_low" --quiet | "C:/program files/videolan/vlc/vlc.exe" –

-quiet(q) – nu desemneaza un fisier „output”


Odata lansat player-ul, lucrurile vor arata astfel:


Spor la download/vizionare.

Conversia fisierelor MPEG in AVI cu ajutorul programului VirtualDub (2)


Pentru conversia MPEG2 – AVI am ales versiunea 1.6.11 a programului VirtualDub, optimizat pentru conversiile de acest tip.

Din meniul „File – Open video file” deschidem fisierul destinat conversiei. Va aparea imediat casuta ce indica incarcarea fisierului.



In primul rind trebuie sa stabilim dimensiunea finala a fisierului comprimat (AVI). Aceasta este, de regula, fie de 700 MB fie de 1400 MB (in conditiile unui bitrate mai mare). De regula, filmele cu durata de peste 1h 30min este bine sa fie comprimate intr-o dimensiune de 1400 MB.

Valoarea bitrate-ului trebuie stabilita in functie de durata filmului. Ne uitam, asadar, cit dureaza filmul. Cursorul amplasat in capatul liniei stream-ului in VirtualDub ne va indica durata filmului.



Pentru a calcula bitrate-ul necesar, mergem pe pagina aceasta:


Aici vom introduce valorile necesare pentru obtinerea bitrate-ului necesar pentru un fisier final de 700 MB respectiv 1400 MB (valori standard 699 MB si 1399 MB).



Mentionez ca pentru codecul Xvid trebuie sa introducem valoarea indicata pe site in dreptul codecului Divx 5/X264 (o scapare a editorilor, care n-au actualizat site-ul pentru parametrii ultimelor versiuni de Xvid). Ca atare pentru un film cu durata de 1 h 16 min si 54 sec vom avea un bitrate necesar de 1135 kbps.

Aceasta valoare se introduce in optiunea codecului (in meniul „Video” – Compression – Xvid MPEG4 Codec – Configure – Target bitrate) dupa cum se vede si in imaginea urmatoare:



Pentru audio bitrate valoarea standard este de 128 kbps. O introducem si pe aceasta in meniul corespunzator (Audio – bifam „Full processing mode” – Compression – Lame MP3 – 44100Hz, 128 kbps CBR, Stereo 16 KB/s).



Mentionez ca pentru o asemenea compresie atit codecul Xvid cit si encoderul Lame DLL trebuiesc instalate in sistem.

Odata setarile relativ la codecuri facute, e cazul sa intram in meniul filtrelor de editare a imaginii (aspectul, culoarea si rezolutia ei). Acest lucru se face intrind in meniul Video – Filters, fiecare filtru ales adaugindu-se prin apasarea butonului „Add”.

Daca imaginea din MPEG este intretesuta (interlaced), adica apare franjurata, semnul cadrelor despartite pe orizontala, e necesar ca primul filtru ales sa fie acela de „Deinterlace”. Acesta vine primul in ordinea filtrelor.



Se poate vedea diferenta intre imaginea dinaintea aplicarii acestui filtru si cea de dupa.



Urmatorul filtru ales este acela de „Null transform”, un filtru care permitea crop-area imaginii (taierea marginilor), prin accesarea butonului „Cropping” din dreapta si indicarea numarului de pixeli destinati taierii.



In ceea ce urmeaza, filtrul care se impune este acela de „Resize”, in care imaginea este redimensionata la o dimensiune standard. Daca filmul prelucrat este in format Fullscreen (ingust, adica 4:3), dimensiunile acceptate vor fi: 720 x 544, 704 x 528, 640 x 480, 576 x 432, 544 x 408, 512 x 384, 480 x 360, 320 x 240. Daca filmul prelucrat este format Widescreen (larg, adica 16:9), dimensiunile acceptate vor fi 720 x 400, 720 x 384, 720 x 348, 720 x 324, 720 x 304, 720 x 288, 640 x 348, 512 x 288. La rezolutiile mai mici, imaginea va fi de calitate mai slaba, dar compresia se va face mai repede. Pentru rezolutiile mai mari, compresia va dura ceva mai mult (in functie de procesor, intre 30 si 90 min).



Nota: daca formatul original in care a fost transmis filmul e unul mai ciudat, nestandard, si resize-ul va trebui sa respecte ratia corecta de aspect (forma lucrurilor, adica), e posibil sa avem si niste dimensiuni mai ciudate ale imaginii (un exemplu ar fi 720 x 448, un fel 16:12, obtinut dupa unele prelucrari ale materialelor care la origine au fost create in formatul video NTSC).

Daca imaginea originala are probleme de stralucire, contrast ori culoare, acestea se pot modifica accesind filtrul „Brightness/Contrast”. Intensitatea culorii se poate adauga sau scadea prin adaugarea filtrului HSV Adjust.



Adesea in cazul unor filme cu contururi mai mate ori mai spalacite, optez si pentru un filtru de Sharpness, care adauga putina duritate imaginii. Atentie, nu trebuie exagerata valoarea de „Sharp”, pentru ca odata cu ea va creste si zgomotul (defectele) de pe imaginea originala.



In cazul in care fisierul originar are si un logo prezent pe imagine (sigla unui post TV de pilda) exista un filtru care poate fi importat intre filtrele VirtualDub – si anume Logoaway. Explicatiile asupra lui nu intra in obiectivul acestui tutorial, insa trebuie sa stiti ca daca optati pentru folosirea lui, acest filtru trebuie folosit ultimul – dupa toate filtrele care prelucreaza imaginea. Alfel petecul de opacitate pe care il foloseste filtrul va fi prelucrat si el, acest lucru ducind la efecte nedorite.



In cele din urma, dupa alegerea tuturor filtrelor, se pot face cu usurinta comparatii intre imaginea originala (pe ecranul din stinga) si cea prelucrata (pe ecranul din dreapta). Daca aveti dubii, puteti selecta o portiune din film (cu ajutorul limitatoarelor stinga, dreapta din meniul de jos, unde este prezenta linia de stream) si o puteti comprima, pentru a vedea cum iese. 



Salvarea se face prin accesarea meniului „File” – Save as.

Bafta la compresie!