[Dati]

Sistema Operativo: FreeBSD 4.7
Mencoder Version: MPlayer-0.90rc4.tar.bz2
Data: 27 febbraio 2003
Durata film: 1 ora 35 minuti 13 secondi (5713 secs)

[Introduzione]

People I know e' un film che ho trovato molto interessante benche' la critica non gli abbia dato particolare attenzione, comunque passiamo all'encoding. Qui ho sperimentato finalmente ogg vorbis che in quanto a qualita' e' tale e quale all' mp3 benche' lo spazio occupato sia nettamente inferiore. In piu' ho provato due o tre tips raccolti qua e la dalla documentazione di mplayer. Gli script utilizzati potete trovarli nella directory TOOLS dei sorgenti. Per quanto riguarda i tools per ogg vorbis li potete scaricare sul sito di Moritz Bunkus a questo link.

[Sintassi]

E adesso entriamo nel merito dei comandi, in questo caso ho utilizzato esclusivamente mencoder, sia per rippare che per encodare il tutto.
Per rippare il film con la sola traccia audio in italiano basta un:

-su-2.05b# mencoder -o People_i_know.vob -dvd 3 -ovc copy -oac copy -aid 128
..........
Fixing AVI header...

Video stream: 6695.076 kbit/s  (836884 bps)  size: 486454968 bytes  5713.360 secs  142836 frames

Audio stream:  448.000 kbit/s  (56000 bps)  size: 319947264 bytes  5713.344 secs
Annotatevi la durata del film: 5713 secondi.

Avendo il vob bisogna estrare l'audio raw in pcm in quanto mencoder non puo' muxare da ogg e non puo neanche, a quanto mi risulta, comprimere senza l'audio. Quindi:
-su-2.05b# mencoder -ovc frameno -oac pcm -o frameno.avi People_i_know.vob

A questo punto bisogna trattare ogg vorbis, per prima cosa estrarre di nuovo l'audio, ma in wav, dal vob e in seguito encodarlo in ogg vorbis, cosi':
-su-2.05b# mplayer -vc dummy -vo null -hardframedrop -ao pcm -aofile People.wav People_i_know.vob
-su-2.05b# oggenc -q3 -o People-q3.ogg People.wav
Annotatevi la lunghezza di People-q3.ogg

Le opzioni sono sinceramente intuitive, sulla prima riga di queste ultime due il dump dell'audio viene velocizzato droppando al massimo il video. L'opzione -ao (audio output) indica ovviamente PCM/WAVE, -aofile e' il nome del file audio in out. La seconda riga e' l'encoding del wav in ogg con qualita' 3 (-q3) che e' gia' un'ottima qualita' (i livelli di qualita' sono da 1 a 10). oggenc fa parte degli ogmtools.
Finalmente passiamo al 2-pass video encoding. Troviamo l'aerea da croppare con:
-su-2.05b# mplayer -vop cropdetect  People_i_know.vob
..........
crop area: X: 2..717  Y: 12..563  (-vop crop=716:552:2:12)5%  5.7% 710 0 49%
..........
Annotatevi il crop. Poi troviamo il bitrate approssimativo da inserire nella codifica video con questa formula:
(file_finale - audio_size_ogg) / 1.0115 / durata_film_in_secondi / 1024 * 8 = BITRATE in kb/s
tradotto in concreto:
(733.000.000 - 68.400.000) / 1.0115 / 5713 / 1024 * 8 = 898.5
Annotatevi il bitrate.
Successivamente conviene trovare la migliore risoluzione rispetto al bpp (bit per pixel) che generalmente e' 24:
-bash-2.05b$ calcbpp.pl 715x552 16/9 898 25
Prescaled picture: 1016x552, AR 1.84
720x384, diff   7, new AR 1.88, AR error 1.75% scale=720:384 bpp: 0.130
704x384, diff  -2, new AR 1.83, AR error 0.48% scale=704:384 bpp: 0.133
688x368, diff   5, new AR 1.87, AR error 1.46% scale=688:368 bpp: 0.142
672x368, diff  -3, new AR 1.83, AR error 0.88% scale=672:368 bpp: 0.145
656x352, diff   4, new AR 1.86, AR error 1.15% scale=656:352 bpp: 0.156
640x352, diff  -5, new AR 1.82, AR error 1.32% scale=640:352 bpp: 0.159
624x336, diff   3, new AR 1.86, AR error 0.81% scale=624:336 bpp: 0.171
608x336, diff  -6, new AR 1.81, AR error 1.81% scale=608:336 bpp: 0.176
592x320, diff   1, new AR 1.85, AR error 0.42% scale=592:320 bpp: 0.190
576x320, diff  -7, new AR 1.80, AR error 2.34% scale=576:320 bpp: 0.195
560x304, diff   0, new AR 1.84, AR error 0.00% scale=560:304 bpp: 0.211
544x288, diff   7, new AR 1.89, AR error 2.47% scale=544:288 bpp: 0.229
528x288, diff  -1, new AR 1.83, AR error 0.48% scale=528:288 bpp: 0.236
512x272, diff   6, new AR 1.88, AR error 2.13% scale=512:272 bpp: 0.258
496x272, diff  -3, new AR 1.82, AR error 1.02% scale=496:272 bpp: 0.266
480x256, diff   5, new AR 1.88, AR error 1.75% scale=480:256 bpp: 0.292
464x256, diff  -4, new AR 1.81, AR error 1.64% scale=464:256 bpp: 0.302
448x240, diff   3, new AR 1.87, AR error 1.31% scale=448:240 bpp: 0.334
432x240, diff  -5, new AR 1.80, AR error 2.34% scale=432:240 bpp: 0.346
416x224, diff   2, new AR 1.86, AR error 0.81% scale=416:224 bpp: 0.385
400x224, diff  -7, new AR 1.79, AR error 3.16% scale=400:224 bpp: 0.401
384x208, diff   0, new AR 1.85, AR error 0.21% scale=384:208 bpp: 0.450
368x192, diff   8, new AR 1.92, AR error 3.89% scale=368:192 bpp: 0.508
352x192, diff  -1, new AR 1.83, AR error 0.48% scale=352:192 bpp: 0.531
336x176, diff   6, new AR 1.91, AR error 3.50% scale=336:176 bpp: 0.607
320x176, diff  -2, new AR 1.82, AR error 1.32% scale=320:176 bpp: 0.638
-bash-2.05b$ 

Gli argomenti di calcbpp.pl:
715x552    = la risuluzione del film originale croppata. 
16/9       = l'aspect. 
898        = il bitrate. 
25         = fps (frame per secondo, che minimo e' 25). 

Apparte il bitrate le altre info le trovate nell'output di mplayer.

Mentre l'output:
scale=528:288 = la risoluzione consigliata, che e' quella che piu' si avvicina a 24 come bpp, cioe' 0.236 (se il film e' in bianco e nero e' tutto un altro paio di maniche). 
0,48%          = la percentuale di errore sull'aspect. Per varie ragioni tale risoluzione falsa un pochinino l'aspect di conseguenza viene indicata la percentuale.

A questo punto abbiamo tutto per l'encoding video: crop area, bitrate, scale.

Quindi:
-bash-2.05b$ mencoder -v -o /dev/null -oac copy -ovc lavc -vop scale=528:288,crop=716:552:2:12 -lavcopts vcodec=mpeg4:vbitrate=898:vhq:vqscale=2:vqmin=2:v4mv:vpass=1 -sws 2 People_i_know.vob
-bash-2.05b$ mencoder -v -o People.divx -oac copy -ovc lavc -vop scale=528:288,crop=716:552:2:12 -lavcopts vcodec=mpeg4:vbitrate=898:vhq:vqmin=2:v4mv:vpass=2 -sws 2 People_i_know.vob

Alcuni commenti sulle opzioni non presenti nell'howto.
Noterete che nel primo passaggio esiste l'opzione vqscale=2 che non e' presente nel secondo passaggio. Si tratta del constant quantitazier ed e' particolarmente indicato per l'encoding di divx, pare che se inserito soltanto nel primo passaggio permette di creare encoding di migliore qualita'.
Anche l'opzione v4mv migliora leggermente la qualita del video ma anche il tempo di encoding, una cosa da tenere a mente (secondo quanto scritto nei doc) e' che questa opzione non e' compatibile con i b-frames.

E per finire muxiamo l'audio in ogg vorbis con il video usando ogmmerge cosi':
-bash-2.05b$ ogmmerge -o People_I_know.ogm -A People.divx People-q3.ogg

Ecco un ls dei file principali:
-bash-2.05b$ l People* frameno.avi
-rw-r--r--  1 root   wheel       68403573 Feb 26 16:45 People-q3.ogg
-rw-r--r--  1 root   wheel     1742220924 Feb 27 11:18 People.divx
-rw-r--r--  1 root   wheel     5105073860 Feb 25 17:35 People_i_know.vob
-rw-r--r--  1 root   wheel      716707024 Feb 27 13:49 People_I_know.ogm
-rw-r--r--  1 root   wheel     1101237716 Feb 26 05:03 frameno.avi
-bash-2.05b$



[Commenti]

Buona Visione!