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.



Raspunde prin e-mail lui