On Tue, 10 Jun 2003, Alex 'CAVE' Cernat wrote: > Poate faci (sau poate fac, daca o sa am timp) acelasi lucru pentru > mplayer. Nu de alta, dar desi l-am folosit la greu la encodari de sute > de filme, n-am folosit decat cateva optiuni ale lui si mai mult, destul > de putine codecuri, ca deh, n-aveam nevoie (nici macar xvid nu stiu daca > le puneam :-P). Dar dupa cum spuneam, de obicei le instalam pentru o > treaba anume. >
Ce urmeaza mai jos e un mail care l-am trimis unui prieten cand a cerut ajutor in legatura cu rip si encodare. Cititi-l ca atare si sper sa ajute cuiva (e foarte posibil sa aiba multe greseli dar ar trebui sa ajute pe unii). > 1. ripuit > - mplayer -dvd 1 -dvd-device /dev/hdc -dumpstream -dumpfile movie.dump > unde 1 este capitolul (lanseaza mplayer fara optiunile cu -dump ca sa vezi > care e capitolul principal cu filmul, unele dvd-uri avand si capitole cu > reclame and stuff), /dev/hdc e unitatea ta dvd, movie.dump e fisierul cu > dumpul (salveaza si streamul video mpeg2 si toate streamurile audio) > - verifici daca a salvat ok cu mplayer movie.dump :) > > 2. encodat > - din cauza compatibilitatii si a faptului ca inca e discutabil daca xvid > e mai bun ca divx5/lavc iti recomand totusi sa encodezi cu lavc > - cea mai misto encodare e in 3 pasi ca iti permite sa stii cat iti ramane > pt video si sa calculezi pe cate cd-uri il faci (desi poti face acest > calcul si fara asta :) ) > - deci : > pasul 1: > mencoder movie.dump -ofps 23.976 -ovc frameno -o frameno.avi -oac mp3lame > -lameopts cbr:br=128:aq=0 > > usually am considerat ca constant bitrate la 128kbps e ok pt un sunet de > film (chiar daca s-ar encoda mai calitativ vbr cu medie de 128kbps dar > problema e ca pe winblows o sa dea eroare la filme cu sunet mp3 vbr, cel > putin la ale mele a dat) > > -ofps 23.976 e nevoie pt dvd-urile NTSC in general care desi cand dai > mplayer (vezi pasul 1) pe ele iti zice ca sunt la 29.xxx de fapt e o > smecherie cu pelicula care e la 23.976 etc..etc... ideea e ca daca dvd-ul > care il encodezi e la 29.xxx (vezi pasul 1 cum sa il playezi) atunci cand > il encodezi sa NU uiti -ofps 23.976 :) (daca in schimb ai DVD-uri pe > PAL/25fps am impresia ca nu mai trebuie nici un parametru -ofps la > mencoder) > > la sfarsitul pasului 1 o sa-ti calculeze el si o sa-ti zica pt fiecare din > cazurile (1 sau 2 cd-uri de 650, 700, 800 mb) ce bitrate sa folosesti pe > video > > 2. pasul 2 (prima encodare video) > > intai trebuie sa decizi rezolutia la care vei face filmul. dvd-urile vin > in diferite rezolutii. fiind mpeg2 majoritatea sunt la o rezolutie in film > dar cu un factor de scalare (adica se afiseaza la alta, se scaleaza cand > vezi filmul). ce te intereseaza pe tine e rezolutia lui cu tot cu scalare. > de exemplu un mplayer pe un dump e la lotr1 Extended arata ceva de genul: > > VO: [xv] 720x480 => 854x480 Planar YV12 > Selected video codec: [mpeg12] vfm:libmpeg2 (MPEG 1 or 2 (libmpeg2)) > > ce ne intereseaza pe noi e 854x480. alt detaliu este ca in aceasta > rezolutie de 854x480 se afla encodata/inclusa si dungi negre de obicei. > acelea vrem sa le excludem din filmul encodat din motive obvious. mplayer > to the rescue again. si anume dai un play pe filmul care vrei sa-l > encodezi astfel: > > mplayer movie.dump -vop cropdetect > > si derulezi si tu prin zone ale filmului unde e multa lumina la ambele > margini (de sus si de jos) ca sa-si dea seama bine de unde incepe filmul. > apoi el o sa-ti dea linii de genul: > > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > crop area: X: 0..719 Y: 57..417 (-vop crop=720:360:0:58) 0.0% 0 0 0% > > ce ne intereseaza este -vop crop=720:360:0:58 . precum se vede el da > crop-ul relativ la rezolutia filmului inainte de scalare. oricum se vede > ca singura modificare e pe verticala , pe orizontala ramanand 720 pixeli. > > acum, alta ciudetenie care nu o vezi decat in practica. daca eu ma apuc sa > encodez filmul la 854x360 (precum vezi pe orizontala l-am scalat dar pe > verticala nu pt ca originalul pe verticala era la 480 iar scalat tot la > 480 deci pe verticala nu se aplica nici o scalare si deci e 360 cat ramane > dupa cropping) ok, encodeaza bine mersi. DAR, cand dau mplayer pe filmul > rezultat imi baga niste linii ciudate in jurul obiectelor distincte de > fundal. ca un bug de scalare dar habar nu am ce e. din cauza ca e cam > stupid sa faci un film la rezolutie asa mare, 640 fiind considerat de > multa lume acceptabil calitativ, mai facem noi o scalare inainte de > encodare. si anume vreau sa-l scot la 640x<vert> . Acel <vert> il calculam > inmultind 360 cu 640/854 :) (deja te-am aburit cred, hehehe). > > deci, filmul rezultat va avea rezolutia 640x`echo "360 * 640/854" | bc > -l` adica 640x270. BUN! am terminat cu rezolutia , acum avem alt pas > important :))) > > in decizia de a alege 1 cd sau 2 (mai mult de 2 cd-uri foarte rar la filme > foarte lungi dar se poate decide si asta dupa formula care o sa o dau > imediat) sta urmatoarea logica/calcul. trebuie sa calculam bpp (biti per > pixel) de informatie care il va avea filmul rezultat. asta se face astfel. > intai calculam cati bytes de video o sa avem disponibili. daca de exemplu > lucram cu cd-uri de 700 mb atunci avem: > > 700 * 2^20 - numarul de bytes audio rezultat la primul pas (care ti-l > scrie pe ecran la sfarsit) si inmultim tot acest rezultat cu 8 ca sa ne > dea in biti. > > acum trebuie sa calculam cati pixeli total are filmul raw, si anume: > <numarul de minute total al filmului> * 60 * 23.976 * 640 * 270 > > unde 23.976 e numarul de FPS al filmului, 640 rezolutia pe X, 270 > rezolutia pe Y. impartim numarul de biti pt video calculat mai inainte la > numarul de pixeli total din film calculati acum si avem acel raport magic > numit bpp (biti per pixel). > > axioma e asa: daca bpp > 0.2 atunci se considera ca filmul are o calitate > foarte buna (cu exceptia unor filme care au foarte mult animatie/miscare > si unde probabil ar trebui un 0.25). NU ARE SENS sa encodezi un film cu > bpp > 0.3 , irosesti bytes degeaba (decat daca astfel umpli un CD). deci > daca iti da ca bpp = 0.13 de exemplu atunci observam clar daca daca il > inmultim cu 2 (adica 2 CD-uri de 700mb) avem 0.26 care e o calitate foarte > buna. > > dupa ce te-ai decis pe cate cd-uri faci filmul, bitrate-ul video il poti > calcula sau il poti lua din cel calculat de catre mencoder la primul pas. > > in sfarsit dupa ce ai stabilit toate aceste detalii trecem la pasii de > encodare video. primul pas ar fi cam asa: > > mencoder movie.dump -ofps 23.976 -vop scale=640:270,crop=720:360:0:58 -sws > 2 -ovc lavc -lavcopts > vcodec=mpeg4:vpass=1:vbitrate=800:vme=4:vhq:v4mv:precmp=2:cmp=2:subcmp=2:trell > -oac copy -o movie.avi > > unde -ofps 23.976 e FPS (am explicam mai devreme cand il pui si cand nu), > scale=X:Y unde X e rezolutia pe orizontala si Y pe verticala, > crop=valorile care ti le-a dat cropdetect mai devreme, vbitrate=video > bitrate calculat de tine sau luat din outputul de la pasul (corespunzator > deciziei tale de cd-uri) > > 3. pasul 3 > > dupa ce termina pasul unu, poti sterge movie.avi (dar NU sterge .log creat > la pasul anterior), si repeta linia de encodare anterioara dar cu vpass=2: > > mencoder movie.dump -ofps 23.976 -vop scale=640:270,crop=720:360:0:58 -sws > 2 -ovc lavc -lavcopts > vcodec=mpeg4:vpass=2:vbitrate=800:vme=4:vhq:v4mv:precmp=2:cmp=2:subcmp=2:trell > -oac copy -o movie.avi > > > enjoy movie.avi :)) > > PS: daca tre sa faci dintr-un disc DVD, 2 sau mai multe divx-uri va trebui > sa faci unul mare si apoi sa-l tai cu ceva (recomand avidemux, o interfata > grafica cu care iti alegi tu unde tai, preferabil intre la keyframe :) , > etc...) ---------------------------- Mihai RUSU Disclaimer: Any views or opinions presented within this e-mail are solely those of the author and do not necessarily represent those of any company, unless otherwise specifically stated.
