2.4. Codificare con MEncoder

Per la lista completa delle opzioni disponibili per Mencoder e gli esempi, vedi la pagina di man.

2.4.1. 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 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi
    mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi

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 :

  1. Rimuovi il file temporaneo che va in conflitto:

    rm frameno.avi

  2. Primo passaggio:

    mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi

    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.

  3. Secondo passaggio:

    mencoder <file/DVD> -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<bitrate>

    Cioè il primo passaggio della codifica del video DivX4. Puoi specificare il bitrate video dato da MEncoder alla fine del precedente passaggio.

  4. Terzo passaggio:

    mencoder <file/DVD> -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<bitrate>

    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 -oac mp3lame -lameopts vbr=3
    mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi
    mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi

2.4.2. Ridimensionare i filmati

Spesso emerge l'esigenza di ridimensionare le immagini del filmato. Le ragioni possono essere molte: diminuire la dimensione del file, la larghezza di banda della rete, ecc. Molte persone usano il ridimensionamento anche quando convertono DVD o SVCD in AVI DivX. Questo è male. Invece di fare così, leggete la sezione Conservare le proporzioni.

Il processo di ridimensionamento è gestito dal filtro video 'scale': -vf scale=larghezza:altezza. La qualità può essere impostata tramite l'opzione -sws. Se non specificata, MEncoder userà il valore 0 : bilineare veloce.

Utilizzo :

    mencoder input.mpg -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -oac copy -o output.avi

2.4.3. Copia da stream

MEncoder può gestire i flussi in entrata in due modi : codificandoli o copiandoli. Questa sezione tratta la copia.

2.4.4. Correggere gli AVI con indice o intervallo malformati

E' semplicissimo. 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

2.4.5. 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 -oac copy

2.4.6. Codificare da file di immagine multipli (JPEG, PNG o TGA)

MEncoder è in grado di creare filmati a partire da uno o più file JPEG, PNG o TGA. 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

Creare un file Motion TGA (MTGA) da tutti i file TGA presenti nella directory attuale:
  mencoder \*.tga -mf on:w=800:h=600:fps=25:type=tga -ovc copy -o output.avi

2.4.7. 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.sub
  mencoder -dvd 1 -vobsubout sottotitoli -vobsuboutindex 0 -sid 2 -o frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3
  mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=1
  mencoder -dvd 1 -oac copy -ovc divx4 -divx4opts pass=2 -vobsubout subtitles -vobsuboutindex 1 -sid 5

Copiare un sottotitolo francese da un file MPEG
  rm sottotitoli.idx sottotitoli.sub
  mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles -vobsuboutindex 0 -vobsuboutid fr -sid 1

2.4.8 Conservare le proporzioni

I file dei DVD e dei SVCD (cioè MPEG1/2) contengono un valore di proporzione, che descrive come il lettore dovrebbe ridimensionare il flusso video, così che le persone non abbiano teste a uovo (es.: 480x480 + 4:3 = 640x480). Comunque quando si codificano file AVI (DivX), bisogna considerare che le intestazioni degli AVI non salvano questo valore. Ridimensionare il filmato è disgustoso e spreca tempo, deve esserci un modo migliore!

C'è.

L'MPEG4 ha una caratteristica unica: il flusso video può contenere le proporzioni che gli servono. Si, proprio come i file MPEG1/2 (DVD, SVCD). Purtroppo, non ci sono lettori video la fuori che supportino questa possibilità. Eccetto MPlayer.

Si può usare questa caratteristica solo con il codec mpeg4 di libavcodec. Ricorda: anche se MPlayer riproducerà correttamente il file creato, gli altri lettori useranno le proporzioni sbagliate.

Dovresti considerare seriamente la possibilità di tagliare le bande nere sopra e sotto al filmato. Vedi la pagina di man per l'utilizzo dei filtri cropdetect e crop.

Utilizzo:

$ mencoder sample-svcd.mpg -ovc lavc -lavcopts vcodec=mpeg4:aspect=16.0/9.0 -vf crop=714:548:0:14 -oac copy -o output.avi