Divx e dintorni
Pacchetti necessari
Installiamo tutti questi pacchetti
Mplayer ATTENZIONE:non quello ufficiale di slackware,è preferibile
quello di slacky
Ogg-vorbis per comprimere l'audio in formato ogg.
Ogm-tools
Lame per comprimere in Mp3
Xvid codec potete anche usarlo ma vista la lentezza ve lo sconsiglio
Vobcopy per copiare il contenuto del dvd su hd
Libdvdcss
Libdvdread
A52dec per gli streams ac3
X264
Avidemux
ProjectX per i files mpeg-ps
Transcode
FFmpeg
Mjpegtools
Copiamo il
dvd
$vobcopy -I /mnt/dvd |
il quale ci da le informazioni su capitoli,angoli,titolo.
poi
$vobcopy -n 2 -o /percorsodovevoletesalvareilfilm -l |
dove -n 2 e' il secondo titolo del dvd,che spesso sono composti da 2 o piu'
titoli
-l abilita il supporto per i files oltre i 2gb.
Appena vobcopy avrà terminato spostatevi nella directory ove avete copiato
i files e date
$ cat TITOLO.1 TITOLO.2 TITOLO.3 > titolo.vob |
$mplayer - cropdetect titolo.vob |
vi appariranno nella console linee simile a questa
crop area: X: 0..638 Y: 0..368 (-
crop=638:368:29:92)0% 0,8% 0 0 0%
dove
638 e' l'altezza H
368 la larghezza W
29 posizione sull'asse X
92 posizione sull'asse Y
in questo caso pertanto aggiungerete l'opzione crop=638:368:29:92
$mplayer -vf crop=638:368:29:92 |
se volete testare come apparirà il film e cosa verrà effetivamente tagliato
potete usare l'opzione "rectangle",che farà apparire un rettangolo bianco
sul video in uscita e indica cosa taglia effetivamente(le linee oltre il
rettangolo
bianco verranno tagliate nella successiva codifica)
$mplayer -vf rectangle=638:368:29:92 |
Nella foto sopra ecco rectangle in azione,in questo caso noterete che il
valore
di crop e' errato(sta tagliando troppo falsando cosi' il formato) ,pertanto
tocca correggerlo a
mano,modificando i valori(h,w,x,y) fino ad ottenere un crop preciso(ovvero
deve tagliare SOLO le linee
nere senza toccare il film),come nella foto sotto
Adesso noterete le linee bianche che escludono solo le bande nere,per aiutarvi
nelle operazioni
di crop usate il filtro autocrop di avidemux2 e segnatevi i valori
per spostare il rettangolo di posizione basatevi sui valori di X e Y
es..per spostare il rettangolo a sinistra,diminuite il valore di X
638:368:27:92
638:368:26:92
e via dicendo..finche' il risultato non vi soddisfa
per spostarlo invece a destra,aumentate il valore di X
638:368:31:92
638:368:32:92
per spostarlo in alto o in basso diminuite o aumentate
il valore di Y.
Adesso passiamo allo scale,lo scale come dice la parola
stessa vuol dire scalare la risoluzione del divx
vi consiglio vivamente di rispettare l'AR(aspect ratio) del formato
originale,almeno che non abbiate qualche buona
ragione per cambiarlo,facendo le cose a casaccio
rischiate di deformare l'immagine originale,ottenendo
effetti strani e sgradevoli come volti ovalizzati,o allungati
Altra regola da seguire e non alzare mai il valore
di scale oltre quello originale,pena la perdita di qualità
se un file .mpeg ha una risoluzione di 576:432 non ha
senso portarlo a 640:480.
Infine ricordate di aumentare il bitrate a seconda
della risoluzione(maggiore è la risoluzione maggiore
sarà il bitrate da impostare)
Per aiutarvi nello scale ecco alcune risoluzioni consigliate
a seconda del AR
1:33:1(formato 4/3 usato di solito nelle registrazioni televisive)
320 x 240 384 x 288 448 x 336 512 x 384 576 x 432 640 x 480 704 x 528 768 x 576 |
1:77:1 (formato 16/9 usato in alcuni dvd e nelle registrazioni tv)
256 x 144 512 x 288 768 x 432 |
1.85:1 (formato 16/9 usato nei dvd e nelle vhs)
384 x 208 416 x 224 560 x 304 592 x 320 624 x 336 768 x 416 |
2.35:1 (formato panavision)
304 x 128 336 x 144 416 x 176 528 x 224 640 x 272 752 x 320 |
altri valori possono essere ottenuti dividendo multipli di 16
(es. 528x288 1:84:1)
Divx a una sola
passata con mpeg4+lame
$mencoder titolo.vob -o temp.avi -vf yadif,crop=702:440,scale=544:304,harddup -sws 2 -oac mp3lame -lameopts br=128:cbr -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo:vbitrate=809:keyint=50 -noskip -ffourcc XVID |
#!/bin/bash mencoder titolo.vob -o /dev/null -vf yadif,crop=688:560:6:8,scale=496:288,harddup -sws 2 -nosound -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo:vbitrate=809:keyint=50:vpass=1 -noskip-ffourcc XVID mencoder titolo.vob -o temp.avi -vf yadif,crop=688:560:6:8,scale=496:288,harddup-sws 2 -oac mp3lame -lameopts br=192:cbr -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:v4mv:turbo:vbitrate=809:keyint=50:vpass=2 -noskip -ffourcc XVID |
Divx
ad altissima qualità
#!/bin/bash opts="vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2:vbitrate=922:keyint=50" mencoder titolo.vob -o /dev/null -vf yadif,crop=704:438:0:69,scale=496:288,harddup -sws 2 -nosound -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:$opts -noskip -ffourcc XVID mencoder titolo.vob -o temp.avi -vf yadif,crop=704:438:0:69,scale=496:288,harddup -sws 2 -oac mp3lame -lameopts br=128:cbr -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:$opts -noskip -ffourcc XVID |
Per ogni singola voce consultate il man di mplayer
Considerazioni sul bitrate
$mencoder -ovc frameno -oac mp3lame -lameopts br=128:cbr -o frameno.avi titolo.vob |
il file che otterrete(frameno.avi) potete anche eliminarlo
dopo
quello che vi interessa e' il bitrate consigliato a seconda
della dimensione del file che apparirà al termine della codifica
Recommended video bitrate
for 650MB CD: 713 Recommended video bitrate for 700MB CD: 779 Recommended video bitrate for 800MB CD: 911 Recommended video bitrate for 2 x 650MB CD: 1569 Recommended video bitrate for 2 x 700MB CD: 1701 Recommended video bitrate for 2 x 800MB CD: 1964 |
crop=720:556 scale=512:288 bitrate=980 opt2="frameref=6:analyse=all:me=umh:subme=7:trellis=2:bframes=1:subq=7:brdo:mixed_refs:weight_b:bime:no_fast_pskip:direct_pred=auto:mixed_refs:nr=200:threads=auto:turbo=2:pass=1:bitrate=$bitrate" opt3="frameref=6:analyse=all:me=umh:subme=7:trellis=2:bframes=1:subq=7:brdo:mixed_refs:weight_b:bime:no_fast_pskip:direct_pred=auto:mixed_refs:nr=200:threads=auto:pass=2:bitrate=$bitrate" mencoder -vf crop=$crop,scale=$scale,harddup -ovc x264 -x264encopts $opt2 -nosound -noskip -o /dev/null titolo.vob mencoder -vf crop=$crop,scale=$scale,harddup -ovc x264 -x264encopts $opt3 -oac faac -faacopts br=196 -noskip -o tmp2.avi titolo.vob |
Vediamo le opzioni una per una
crop=taglia le bande nere
scale=riscala alla risoluzione scelta
bitrate=indichiamo il bitrate che vogliamo usare
opt2=le opzioni di x264 per la prima passata
opt3=le opzioni di x264 per la seconda passata
ATTENZIONE:A causa di un bug di mplayer è sconsigliato usare faac(nessun altro
lettore
eccetto mplayer riuscirà a leggere l'audio)
se volete informarvi meglio sulle singole opzioni di x264 consultate il manuale
di mplayer
Ogg vorbis
$ mplayer titolo.vob -vc null -vo null -hardframedrop -aid 128 -ao pcm:file=italiano.wav |
con questo salviamo la traccia in italiano(indicata dal id 128) in formato
wav
Convertiamola ora in ogg
$ oggenc -q 3 -o italiano.ogg italiano.wav |
Adesso rippiamo il dvd a 2 passate ma senza il suono
#!/bin/bash mencoder titolo.vob -o /dev/null -vf crop=688:560:6:8,scale=496:288,yadif,harddup -sws 2 -nosound -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800:vpass=1:mbd=2:keyint=50 -noskip mencoder titolo.vob -o temp.avi -vf crop=688:560:6:8,scale=496:288,yadif,harddup -sws 2 -nosound -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=1800:vpass=2:mbd=2:keyint=50 -noskip |
e infine uniamo l'audio e il video con ogmmerge
$ ogmmerge -c 'TITLE=titolo del film'
-A tmp.avi -c 'LANGUAGE=italiano' italiano.ogg -o titolo.ogm |
Titolo.ogm e' il file finale
$ mencoder -vf scale=640:480 -ffourcc FLV1 -of lavf -lavfopts \ i_certify_that_my_video_stream_does_not_use_b_frames -ovc lavc -srate 22050 -oac lavc -lavcopts \ vcodec=flv:vbitrate=900:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:acodec=mp3:abitrate=56 -o out.swf fileinput |
Una precisazione:se avete una scheda firewire è meglio sfruttare l'acquisizione da digitale con kino
queste righe sono riferite all'acquisizione da sorgente analogica(vcr,videocamere),è necessaria ovviamente
anche una scheda di acquisizione video.
Dopo aver collegato il dispositivo alla scheda di acquisizione avvolgete il nastro dall'inzio e attendete
avviamo mplayer per una anteprima
ora avviate mencoder per la cattura
$ mencoder tv:// -tv driver=v4l2:width=720:height=576:device=/dev/video1:input=1:alsa:adevice=hw.1,0:amode=1:volume=100 -o out.avi -ovc lavc -lavcopts vcodec=mjpeg:aspect=16/9 -aspect 16:9 -noautoexpand -oac pcm -noskip -vf crop=716:574:3:2,scale=720:576 -endpos 00:40:00 |
-endpos qui mettete la durata del
filmato(se dura 40 minuti allora 00:40:00)
Il file generato sarà molto grosso,comprimiamolo e creiamo un mpg2 di buona
qualità
$
mencoder out.avi -of mpeg -vf
yadif,crop=716:574:3:2,scale=720:576,harddup -oac lavc -ovc lavc
-lavcopts
acodec=ac3:vcodec=mpeg2video:abitrate=128:vbitrate=2600:aspect=16/9
-noskip -mpegopts format=dvd -srate 48000 -ofps 25 -o movie.mpg
-aspect 16:9 |
Pillole
$mencoder -o sincronizzato.avi -audiofile traccia1 -oac copy -ovc copy desincronizzato.avi |
Concatenare diversi files
video
$cat file1 file2 file3|mencoder -oac copy -ovc lavc -vf harddup - |
Per i files avi,e' molto piu' complesso visto che hanno un indice,che determina
l'inizio
e la fine del file.
Iniziamo a concatenare i files avi
cat file1.avi file2.avi file3.avi > finale.avi |
poi
mencoder -o finale2.avi -noidx -oac copy -ovc copy finale.avi |
otterremo il file completo,ma dobbiamo fare un ulteriore passo per ricostruire
l'indice
mencoder -o finale3.avi -forceidx -oac copy -ovc copy finale2.avi |
$ mencoder filePAL.avi -ovc lavc -oac mp3lame -o fileNTSC.avi -ofps 30000/1001 |
mentre per fare il procedimento da ntsc a pal
$ mencoder fileNTSC.avi -ovc lavc -oac mp3lame -o filePAL.avi -ofps 25 |
Questo comporta una leggera perdita di qualità,visto che state ricodificando un
divx.
come vedete mancano 5 "chunks" per completarlo,le fonti sono 0 e ferme
da oltre un anno,se volessimo recuperare il recuperabile?
Se proviamo a usare mencoder mancando il chunk finale
si ferma al primo chunk mancante(pertanto ai primi 20 minuti)
percio' recupereremmo soltanto i primi 20 minuti
Supponiamo che il film sia associato al file 004.part
allora con ffmpeg diamo
$ffmpeg -i 004.part -acodec copy -vcodec copy outfile.avi |
il file che otterremo (outfile.avi) sarà quello che siamo riusciti
a recuperare,vi consiglio una riconversione grezza(modalità copy) con
mencoder
o avidemux in modo da ovviare agli eventuali errori video,audio.
Questo sistema non funziona con files senza il primo chunck
#!/bin/bash crop=488:410 scale=512:284 rate=1030 opt1="threads=3:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2:vbitrate=$rate:keyint=50" opt2="threads=3:mbd=2:trell:v4mv:turbo:vbitrate=$rate:keyint=50" opt3="threads=3:mbd=2:vbitrate=$rate:keyint=50" mencoder titolo.vob -o /dev/null -vf yadif,crop=$crop,scale=$scale,harddup -sws 2 -nosound -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:$opt2 -noskip -ffourcc XVID mencoder titolo.vob -o temp.avi -vf yadif,crop=$crop,scale=$scale,harddup -sws 2 -oac mp3lame -lameopts br=128:cbr -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:$opt2 -noskip -ffourcc XVID |
hqdn3d=4:3:6 |
si tratta di valori molto alti,utili per eliminare disturbi
molto forti,per disturbi dell'immagine leggeri potete usare
valori inferiori come
hqdn3d=2:2:4 |
mencoder file.wmv -ofps 23.976 -oac mp3lame -ovc lavc -lavcencopts bitrate=800 -o 1.avi |
abbiamo scelto come fps 23.976(validi per i video ntsc,se è pal usate 25)
mentre come bitrate 800k
È necessario usare ProjectX aprire il file di vdr o kaffeine
fare il demultiplex(quick start) e poi rimuxare i 2 files
m2v e m2a con mplex(che trovate nel pacchetto mjpegtools)
$ projectx 001.vdr
$ mplex -o file.mpg -f 3 001.m2v 001.m2a |
il file mpg dovrebbe avere salvo complicazioni l'audio e il video
sincronizzati.
Dvb-hd(h264)
Come gestire i flussi hd delle schede dvb?
Supponiamo lo stream sia nel file "stream.dump"
mplayer -vc ffmpeg12,ffh264,ffwmv3,ffvc1 -mc 2 stream.dump -vf yadif -mc 2 -delay -0.3 |
Se usate una scheda che non supporta VDPAU(ati,intel)
mentre se possedete una NVIDIA potete sfruttare l'accelerazione
VDPAU(il lavoro grava sulla gpu lasciando libera la cpu)
quindi la linea sarà
mplayer -vc ffmpeg12vdpau,ffh264vdpau,ffwmv3vdpau,ffvc1vdpau -vovdpau:deint=3 -mc 2 stream.dump -vf yadif -mc 2 -delay -0.3 |
Ultimo aggiornamento: 2010-05-05