|
CODIFICARE CON MEncoder di LinuxDesktop |
|---|
MEncoder (MPlayer's Movie Encoder, Codificatore Filmati di MPlayer) è un semplice encoder, studiato per codificare i filmati leggibili da MPlayer (AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET) in altri formati leggibili da MPlayer (vedi sotto). Può usare vari codec, come DivX4 (1 o 2 passaggi), libavcodec, audio PCM/MP3/VBRMP3. Ha anche un potente sistema di plugin per la manipolazione video.
Compilazione
lame non è sufficiente. Comunque: meno ottimizzazione usi per lame,
migliore sarà la qualità. Puoi testare la qualità eseguendo make test dopo aver finito il
processo di compilazione di lame. Il numero risultante dovrebbe essere minore
di 30. Non ti spaventare se è 400 o comunque alto, non dovresti
sentire una diminuzione di qualità. Oh, e se il tuo compilatore non esegue
nemmeno make test ... Bhe, cancella quel GCC 2.96 o aggiorna lame
almeno all versione 3.90.
libjpeg e libpng - come
descritto nella sezione Installazione
Sei pronto. Come forse saprai, altri strumenti per la codifica necessitano installata la libreria avifile. MEncoder non ne ha per niente bisogno.
Caratteristiche di MEncoder
-ofps (utile quando si codifica un VOB a 29.97fps in un AVI a 24fps)
Caratteristiche programmate :
Codificare DivX4 in 2 o 3 passaggi
codifica a 2 passaggi : il nome deriva dal fatto che questo metodo codifica il file due volte. La prima codifica (passaggio doppiato) crea dei file temporanei (*.log) con una grandezza di pochi megabyte, non cancellarli ancora (puoi cancellare l' AVI). Nel secondo passaggio, viene creato il file di output, usando i dati sul bitrate dei file temporanei. Il file risultante avrà una migliore qualità d'immagine. Se questa è la prima volta che ne senti parlare, dovresti consultare alcune guide disponibili in rete.
Questo esempio mostra come codificare un DVD in un
AVI DivX4 a 2 passaggi. Bisogna dare solo due comandi : rm
frameno.avi - rimuovi questo file che può
essere rimasto da una precedente codifica a 3 passaggi (interferisce col
processo attuale) mencoder -dvd 2 -lavcopts
vcodec=mpeg4:altre_opzioni -o movie.avi -pass
1
mencoder -dvd 2 -lavcopts
vcodec=mpeg4:altre_opzioni -o movie.avi -pass 2
codifica a 3 passaggi : questa è un' estensione della codifica a 2 passaggi, dove la codifica audio avviene in un passaggio separato. Questo metodo abilita la stima del bitrate video raccomandato per far stare il file risultante in un CD. In più, l'audio è codificato solo una volta, diversamente dalla modalità in 2 passaggi. Schema :
rm frameno.avi |
rimuovi il file temporaneo che va in conflitto |
mencoder <file/DVD> -ovc frameno
-o frameno.avi |
Primo passaggio : sarà creato un file avi di solo audio, contenente SOLO il flusso
audio richiesto. Non dimenticare -lameopts, se
ne hai bisogno. Se stai codificando un filmato lungo, MEncoder da i valori
di bitrate consigliati per dimensioni di destinazione di 650Mb, 700Mb, e
800Mb, dopo la fine di questo passaggio. |
mencoder <file/DVD> -oac copy
-pass 1 -ovc divx4 -divx4opts br=<bitrate> |
Secondo passaggio : cioè il primo passaggio della codifica del video DivX4. Puoi specificare il bitrate video dato da MEncoder alla fine del precedente passaggio. |
mencoder <file/DVD> -oac copy
-pass 2 -ovc divx4 -divx4opts br=<bitrate> |
Terzo passaggio : cioè il secondo passaggio della codifica video DivX4. Puoi
specificare il bitrate video dato da MEncoder alla fine del precedente
passaggio. In questo passaggio, l'audio da frameno.avi sarà inserito nel file di destinazione.. ed è tutto
pronto! |
Esempio di codifica a 3 passaggi :
rm
frameno.avi - rimuovi questo file, che
può essere rimasto da una precedente codifica a 3 passaggi (interferisce con
quella attuale) mencoder -dvd 2 -ovc frameno -o
frameno.avi mencoder -dvd 2 -lavcopts
vcodec=mpeg4:altre_opzioni -oac copy -o movie.avi -pass
1
mencoder -dvd 2 -lavcopts
vcodec=mpeg4:altre_opzioni -oac copy -o movie.avi -pass 2
Codifica a 2 o 3 passaggi usando il
controller interno di libavcodec : Opzionalmente puoi usare la modalità
interna a 2 o 3 passaggi di libavcodec, può risoltare una migliore accuratezza
del frame rate che usando il controller esterno, ispirato a DivX4 con
libavcodec.
codifica a 3
passaggi :
rm -f frameno.avi lavc_stats.txt
Ridimensionare i filmati
Spesso emerge l'esigenza di ridimensionare le immagini del filmato. Le ragioni possono essere molte, come diminuire la grandezza del file di output, codificare SVCD in DivX. I DVD "rippati" sono spesso da ridimensionare, per esempio un DVD in scala 4:3 dovrebbe essere in 640x480, specialmente se vuoi che entri in 1 CD, e avere una buona qualità allo stesso tempo. Gli SVCD hanno dimensione di 480x480, e la loro intestazione contiene le proporzioni che il lettore dovrebbe usare (Es.: 480x480 + 4:3 = 640x480). Però quando codifichi un file AVI (DivX), devi fare attenzione che l'intestazione dell'AVI non includa questo valore. Quindi, l'unica soluzione è ridimensionare.
Il processo di ridimensionamento è gestito dal
filtro video 'scale': -vop scale=X:Y. La qualità può essere
impostata tramite l'opzione -sws. Se non specificata, MEncoder
userà il valore 0 : bilineare veloce.
Utilizzo :
mencoder
esempio-svcd.mpg -lavcopts vcodec=mpeg4:altre_opzioni -vop scale=640:480 -sws 2
-o output.avi
Copia da stream
MEncoder può gestire i flussi in entrata in due modi : codificandoli o copiandoli. Questa sezione tratta la copia.
) :
semplice da capire. E' possibile prendere un file audio esterno (MP3, AC3,
Vorbis) e mixarlo nel flusso di output. Usa l'opzione -audiofile
<filename> per farlo.
Correggere gli AVI con indice o intervallo malformati
La cosa più semplice. Copiamo semplicemente i flussi audio e video, e MEncoder genera l'indice. Naturalmente questo non può correggere possibili bug nei flussi video e/o audio. Corregge anche i file mal intervallati, così non sarà più necessaria l'opzione -ni per leggerli.
Comando : mencoder -idx input.avi -ovc copy -oac copy -o output.avi
Codificare con le famiglia di codec libavcodec
libavcodec fornisce una semplice codifica in molti interessanti formati video e audio (al momento i suoi codec audio non sono supportati). Puoi codificare i seguenti codec :
La prima colonna contiene i nomi dei codec che
devono essere passati dopo l'opzione vcodec, come : -lavcopts
vcodec=msmpeg4
Un esempio, con la compressione MJPEG
:
mencoder -dvd 2 -o title2.avi -ovc lavc -lavcopts
vcodec=mjpeg
Codificare da file di immagine multipli (JPEG o PNG)
MEncoder è in grado di creare filmati a partire da uno o più file JPEG o PNG. Con un semplice framecopy può creare file MJPEG (Motion JPEG) o MPNG (Motion PNG).
Spiegazione del processo
MEncoder decodifica le immagini in input con un codec video MJPEG disponibile (per i PNG, usa libpng).
MEncoder quindi passa l' immagine decodificata al compressore video scelto (DivX4, Xvid, ffmpeg msmpeg4, ecc...). Attenzione al decoder PNG, dato che attualmente può fornire in output solo formati RGB, quindi non può essere usato con i codec che richiedono un input YUV, come il DivX4 o l' msmpeg4 di ffmpeg.
Esempi
La spiegazione dell'opzione -mf si trova più sotto nella sezione delle Opzioni generali e nella pagina di man.
Creare un file DivX4 da tutti i file JPEG
presenti nella directory attuale :
mencoder \*.jpg -mf
on:w=800:h=600:fps=25 -ovc divx4 -o output.avi
Creare un file DivX4 da alcuni dei file JPEG
presenti nella directory attuale :
mencoder
frame001.jpg,frame002.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o
output.avi
Creare un file Motion JPEG (MJPEG) da tutti i
file JPEG presenti nella directory attuale :
mencoder \*.jpg
-mf on:w=800:h=600:fps=25 -ovc copy -o output.avi
Creare un file non compresso da tutti i file PNG
presenti nella directory attuale :
mencoder \*.png -mf
on:w=800:h=600:fps=25:type=png -ovc raw -o output.avi
Creare un file Motion PNG (MPNG) da tutti i file
PNG presenti nella directory attuale :
mencoder \*.png -mf
on:w=800:h=600:fps=25:type=png -ovc copy -o output.avi
Estrarre i sottotitoli dei DVD in un file Vobsub
MEncoder è in grado di estrarre i sottotitoli dei DVD e codificarli nel formato file Vobsub. Questi consistono in un paio di file con estensione .idx e .sub e sono generalmente impacchettati in un unico archivio .rar. MPlayer può leggerli usando le opzioni -vobsub e -vobsubid.
Devi specificare il nome di base (cioè senza le estensioni .idx o .sub) dei file di output con -vobsubout e l'indice per questo sottotitolo nei file risultanti con -vobsuboutindex.
Se l'input non viene da un DVD dovresti usare -ifo per indicare il file .ifo necessario per costruire il file .idx risultante.
Se l'input non viene da un DVD e non hai il file .ifo devi usare l'opzione -vobsubid per fargli sapere quale identificativo di lingua mettere nel file .idx.
Ogni esecuzione aggiungerà l'attuale sottotitolo ai file .idx e .sub se questi esistono già. Quindi dovresti rimuoverli prima di ogni nuova esecuzione.
Esempi
Copiare due sottotitoli da un DVD usando la
codifica a tre passaggi
rm sottotitoli.idx
sottotitoli.submencoder -dvd 1 -vobsubout
sottotitoli -vobsuboutindex 0 -sid 2 -o frameno.avi -ovc frameno
mencoder -dvd 1 -oac copy -ovc divx4 -pass
1mencoder -dvd 1 -oac copy -ovc divx4 -pass 2
-vobsubout sottotitoli -vobsuboutindex 1 -sid 5
Copiare un sottotitolo francese da un file
MPEG
rm sottotitoli.idx
sottotitoli.submencoder movie.mpg -ifo movie.ifo
-vobsubout subtitles -vobsuboutindex 0 -vobsuboutid fr -sid 1
Sintassi
mencoder [opzioni] [file di input] [opzioni] ...
Opzioni disponibili
NOTA : per tutte le opzioni disponibili, leggi la pagina di man !
Dato che MEncoder è costruito sullo stesso codice di MPlayer, ci sono molte opzioni di MPlayer che hanno funzioni anche in MEncoder! Vedi, puoi usare -sid per "rippare" un DVD con i sottotitoli, o -noidx per ignorare in input l'indice malformato di un AVI. Sii sveglio!
| -ss tempo | comincia a codificare dal tempo dato (può partire solo dai frame chiave !) |
| -endpos tempo | smetti di codificare al tempo dato. Vedi la pagina di man per esempi ! |
| -o nomefile | specifica il nome del file di output |
| -sws 0-2 | metodo di
ridimensionamento 0 - bilineare veloce 1 - bilineare 2 - bicubico (migliore qualità) |
| -ovc nomecodec | Codifica col codec dato (i nomi
dei codec sono quelli presenti in codecs.conf).
Esempi: help - ottieni una lista dei codec disponibili rawrgb - ? copy - nessuna codifica, copia il flusso (solo da AVI/ASF per ora) divx4 - codifica in DivX4 lavc - codifica con un codec di libavcodec vfw - codifica con una DLL Windows |
| -oac nomecodec | Codifica col codec dato (i nomi
dei codec sono quelli presenti in codecs.conf).
Esempi: help - ottieni una lista dei codec disponibili copy - nessuna codifica, copia il flusso (solo da AVI/ASF per ora) pcm - codifica in un PCM non compresso mp3lame - codifica in MP3 (usando Lame) |
| -mf opzioni multifile | Usate per codificare da file JPEG
multipli. Le sue sotto-opzioni sono: on - abilita il supporto multifile w=<valore> - larghezza del file di output h=<valore> - altezza del file di output fps=<valore> - fps del file di output type=<valore> - tipo di file in input (tipi disponibili : jpeg,
png) |
| -divx4opts | Se codifichi in DivX4, puoi
specificare i sui parametri qui, come:-divx4opts br=1800:deinterlace:key=250 |
| -lavcopts | Se codifichi in libavcodec, puoi
specificare i sui parametri qui, come:-lavcopts
vcodec=msmpeg4:vbitrate=1800:vhq:keyint=250 |
| -lameopts | Se codifichi in MP3 con
libmp3lame, puoi specificare i sui parametri qui,
come:-lameopts
q=3 |
| -vobsubout nome base | Specifica il nome di base per i file .idx e .sub di output. Questo disabilita il rendering dei sottotitoli del filmato codificato. |
| -vobsuboutindex indice | Specifica l'indice di questi sottotitoli nei file di output. Il valore di default è 0 |
| -vobsuboutid langid | Specifica il codice di due lettere della lingua per questo sottotitolo. Questo scavalca quello che è letto dal DVD o dal file .ifo. |
Esempi
Usare MEncoder è la cosa più facile della Terra. Vedi il seguito :
Codificare da DVD, titolo 2
:
mencoder -dvd 2 -lavcopts
vcodec=mpeg4:altre_opzioni -o title2.avi
Lo stesso, ma con la famiglia libavcodec,
compressione MJPEG :
mencoder -dvd 2 -lavcopts
vcodec=mjpeg:altre_opzioni -ffourcc mjpg -o title2.avi
Codifica da DVD, titolo 2, con ridimensionamento
:
mencoder -dvd 2 -vop scale=640:480 -sws 2 -lavcopts
vcodec=mpeg4:altre_opzioni -o titolo2.avi
Codifica da HTTP
:
mencoder http://mplayer.hq/example.avi -lavcopts
vcodec=mpeg4:altre_opzioni -o example.avi
Codifica da pipe :
rar p
test-SVCD.rar | mencoder -lavcopts vcodec=mpeg4:altre_opzioni -ofps 24 -pass 1
-- -
Codificare file *.vob multipli
:
cat *.vob | mencoder <opzioni> -
Codifica da sintonizzatore TV (per le opzioni
vedi la sezione input TV !)
: mencoder -tv
on:driver=v4l:width=640:height=480 <opzioni>
Per tutte le opzioni disponibili, controlla la pagina man di MEncoder !