<HTML> <!-- Synced with english version 1.87 --> <HEAD> <TITLE>Codificare - MEncoder - Movie Encoder per Linux</TITLE> <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1"> </HEAD> <BODY> <H1><A NAME="encoding">7. Codificare con MEncoder</A></H1> <P>Per la lista completa delle opzioni disponibili per MEncoder e gli esempi, vedi la pagina di man. Per una serie di esempi pratici ed una guida dettagliata sull'uso dei parametri di codifica, leggi i <A HREF="tech/encoding-tips.txt">consigli per la codifica</A> raccolti da varie discussioni avvenute sulla mailing list <A HREF="http://mplayerhq.hu/mailman7listinfo/mplayer-users">mplayer-users</A>. Cerca negli <A HREF="http://mlayerhq.hu/mailman/mplayer-users">archivi</A> le discussioni sui dettagli ed i problemi relativi alla codifica con MEncoder. </P> <H3><A NAME="2pass">7.1 Codificare in MPEG-4 ("DivX") in 2 o 3 passaggii</H3> <P><U><B>codifica a 2 passaggi :</B></U> il nome deriva dal fatto che questo metodo codifica il file <I>due volte</I>. La prima codifica (<I>passaggio</I> 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.</P> <P>Questo esempio mostra come codificare un DVD in un AVI MPEG-4 ("DivX") a 2 passaggi. Bisogna dare solo due comandi :<BR> <CODE> rm frameno.avi</CODE> - rimuovi questo file che pu� essere rimasto da una precedente codifica a 3 passaggi (interferisce col processo attuale)<BR> <CODE> mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR> mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P> <P><U><B>codifica a 3 passaggi :</B></U> 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 :</P> <OL> <LI>Rimuovi il file temporaneo che va in conflitto: <P><CODE>rm frameno.avi</CODE></P></LI> <LI>Primo passaggio: <P><CODE>mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi</CODE></P> <P>Sar� creato un file avi di solo audio, contenente SOLO il flusso audio richiesto. Non dimenticare <CODE>-lameopts</CODE>, 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.</P></LI> <LI>Secondo passaggio: <P><CODE>mencoder <file/DVD> -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<bitrate></CODE></P> <P>Questo � il primo passaggio della codifica video. Puoi specificare il bitrate video dato da MEncoder alla fine del precedente passaggio.</P></LI> <LI>Terzo passaggio: <P><CODE>mencoder <file/DVD> -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<bitrate></CODE></P> <P>Questo � il secondo passaggio della codifica video. Specifica lo stesso bitrate del passo precedente a meno che tu sappia veramente cosa stai facendo. In questo passaggio, l'audio preso da <CODE>frameno.avi</CODE> sar� inserito nel file di destinazione.. ed � tutto pronto!</P></LI> </OL> <P><B>Esempio di codifica a 3 passaggi :</B></P> <P><CODE> rm frameno.avi</CODE> - rimuovi questo file, che pu� essere rimasto da una precedente codifica a 3 passaggi (interferisce con quella attuale)<BR> <CODE> mencoder dvd://2 -ovc frameno -o frameno.avi -oac mp3lame -lameopts vbr=3<BR> mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR> mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P> <H2><A NAME="rescaling">7.2 Codificare in formato MPEG</A></H2> <P>MEncoder pu� creare file in formato MPEG (MPEG-PS). Ci� � probabilmente utile solo con il codec <I>mpeg1video<I> di libavcodec, poich� i programmi - tranne MPlayer - si aspettano solo video MPEG1 ed audio MPEG1 layer 2 (MP2) nei file MPEG.</P> <P>Questa funzione non � molto utile al momento, oltre ad avere probabilmente molti bug, soprattutto perch� al momento MEncoder non pu� codificare l'audio MPEG1 layer 2 (MP2), che tutti gli altri player si aspetano di trovare nei file MPEG.</P> <P>Per modificare il formato d'uscita di MEncoder, usare l'opzione <CODE>-of mpeg</CODE>.</P> <P>Esempio:<BR> <CODE>mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy <other options> media.avi -o output.mpg</CODE></P> <H2><A NAME="rescaling">7.3 Ridimensionare i filmati</A></H2> <P>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. <B>Questo � male.</B> Invece di fare cos�, leggete la sezione <A HREF="#aspect">Conservare le proporzioni</A>.</P> <P>Il processo di ridimensionamento � gestito dal filtro video <I>'scale'</I>: <CODE>-vf scale=larghezza:altezza</CODE>. La qualit� pu� essere impostata tramite l'opzione <CODE>-sws</CODE>. Se non specificata, <B>MEncoder</B> user� il valore 0 : bilineare veloce.</P> <H5>Utilizzo :</H5> <P><CODE> mencoder input.mpg -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -oac copy -o output.avi</CODE></P> <H2><A NAME="copying">7.4 Copia da stream</A></H2> <P><B>MEncoder</B> pu� gestire i flussi in entrata in due modi : <B>codificandoli</B> o <B>copiandoli</B>. Questa sezione tratta la <B>copia</B>.</P> <P> <UL> <LI><B>Flusso video</B> (opzione <CODE>-ovc copy</CODE>) : si possono fare tante belle cose :)<BR> Come, mettere (non convertire!) video FLI o VIVO o MPEG1 in un file AVI ! Naturalmente solo <B>MPlayer</B> pu� leggere tali file :) E probabilmente non ha alcuna utilit� nella vita reale. Seriamente : la copia del flusso video pu� essere utile per esempio quando si vuole codificare solo il flusso audio (come, PCM non compresso in MP3).</LI> <LI><B>Flusso audio</B> (opzione <CODE>-oac copy</CODE>) : semplice da capire. E' possibile prendere un file audio esterno (MP3, AC3, Vorbis) e mixarlo nel flusso di output. Usa l'opzione <CODE>-audiofile <filename></CODE> per farlo.</LI> </UL> </P> <H2><A NAME="fixing">7.5 Correggere gli AVI con indice o intervallo malformati</A></H2> <P>E' semplicissimo. Copiamo semplicemente i flussi audio e video, e <B>MEncoder</B> 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 <CODE>-ni</CODE> per leggerli.</P> <P>Comando : <CODE>mencoder -idx input.avi -ovc copy -oac copy -o output.avi</CODE></P> <H3><A NAME="appending">7.5.1 Unire file AVI</A></H3> <P>Un utile effetto collaterale della funzione di riparazione dei file AVI � la possibilit� di usare MEncored per unire 2 (o pi�) file AVI:</P> <P>Comando: <CODE>cat 1.avi 3.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -</CODE></P> <P><B>Nota:</B>MEncoder si aspetta che <CODE>1.avi</CODE> e <CODE>2.avi</CODE> utilizzino gli stessi codec, risoluzione, stream rate, ecc, ed almeno 1.avi non deve avere errori. Se necessario, puoi riparare i file prima di unirli, come descritto <A HREF="#fixing">sopra</A>.</P> <H2><A NAME="libavcodec">7.6 Codificare con le famiglia di codec libavcodec</A></H2> <P><A HREF="codecs.html#libavcodec">Libavcodec</A> 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 :</P> <P> <UL> <LI>mjpeg - Motion JPEG</LI> <LI>h263 - H263</LI> <LI>h263p - H263 Plus</LI> <LI>mpeg4 - ISO standard MPEG-4 (DivX 5, XviD compatibile)</LI> <LI>msmpeg4 - variant MPEG-4 pre-standard di MS, v3 (noto anche come DivX3)</LI> <LI>msmpeg4v2 - MPEG-4 pre-standard di MS, v2 (usati in vecchi file asf)</LI> <LI>wmv1 - Windows Media Video, versione 1 (noto anche come WMV7)</LI> <LI>rv10 - un vecchio codec RealVideo</LI> <LI>mpeg1video - video MPEG1 :)</LI> <LI>huffyuv - compressione lossless (senza perdita di qualit�, ndt)</LI> </UL> </P> <P>La prima colonna contiene i nomi dei codec che devono essere passati dopo l'opzione <CODE>vcodec</CODE>, come : <CODE>-lavcopts vcodec=msmpeg4</CODE></P> <P>Un esempio, con la compressione MJPEG :<BR> <CODE> mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy</CODE></P> <H2><A NAME="image_files">7.7 Codificare da file di immagine multipli (JPEG, PNG o TGA)</A></H2> <P><B>MEncoder</B> � 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).</P> <P><B><I>Spiegazione del processo</I></B></P> <P><B>MEncoder</B> <I>decodifica</I> le immagini in input con un codec video MJPEG disponibile (per i PNG, usa <B>libpng</B>). </P> <P><B>MEncoder</B> quindi passa l' immagine decodificata al compressore video scelto (DivX4, Xvid, ffmpeg msmpeg4, ecc...).</P> <P><B><I>Esempi</I></B></P> <P>La spiegazione dell'opzione <CODE>-mf</CODE> si trova nella pagina di man.</P> <P><I>Creare un file DivX4 da tutti i file JPEG presenti nella directory attuale :</I><BR> <CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi \*.jpg</CODE></P> <P><I>Creare un file DivX4 da alcuni dei file JPEG presenti nella directory attuale :</I><BR> <CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi frame001.jpg,frame002.jpg</CODE></P> <P><I>Creare un file Motion JPEG (MJPEG) da tutti i file JPEG presenti nella directory attuale :</I><BR> <CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o output.avi \*.jpg</CODE></P> <P><I>Creare un file non compresso da tutti i file PNG presenti nella directory attuale :</I><BR> <CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb -o output.avi \*.png</CODE></P> <P><B>Nota:</B> La larghezza deve essere un multiplo intero di 4, � una limitazione del formato RAW RGB dei file AVI.</P> <P><I>Creare un file Motion PNG (MPNG) da tutti i file PNG presenti nella directory attuale :</I><BR> <CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy -o output.avi \*.png</CODE></P> <P><I>Creare un file Motion TGA (MTGA) da tutti i file TGA presenti nella directory attuale:</I><BR> <CODE>mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy -o output.avi \*.tga</CODE></P> <H2><A NAME="vobsub">7.8 Estrarre i sottotitoli dei DVD in un file Vobsub</A></H2> <P><B>MEncoder</B> � 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 <I>-vobsub</I> e <I>-vobsubid</I>.</P> <P>Devi specificare il nome di base (cio� senza le estensioni .idx o .sub) dei file di output con <I>-vobsubout</I> e l'indice per questo sottotitolo nei file risultanti con <I>-vobsuboutindex</I>.</P> <P>Se l'input non viene da un DVD dovresti usare <I>-ifo</I> per indicare il file .ifo necessario per costruire il file .idx risultante.</P> <P>Se l'input non viene da un DVD e non hai il file .ifo devi usare l'opzione <I>-vobsubid</I> per fargli sapere quale identificativo di lingua mettere nel file .idx.</P> <P>Ogni esecuzione aggiunger� l'attuale sottotitolo ai file .idx e .sub se questi esistono gi�. Quindi dovresti rimuoverli prima di ogni nuova esecuzione.</P> <P><B>Esempi</B></P> <P><I>Copiare due sottotitoli da un DVD usando la codifica a tre passaggi</I><BR> <CODE>rm sottotitoli.idx sottotitoli.sub</CODE><BR> <CODE>mencoder dvd://1 -vobsubout sottotitoli -vobsuboutindex 0 -sid 2 -o frameno.avi -ovc frameno -oac mp3lame -lameopts vbr=3</CODE><BR> <CODE>mencoder dvd://1 -oac copy -ovc divx4 -divx4opts pass=1</CODE><BR> <CODE>mencoder dvd://1 -oac copy -ovc divx4 -divx4opts pass=2 -vobsubout subtitles -vobsuboutindex 1 -sid 5</CODE></P> <P><I>Copiare un sottotitolo francese da un file MPEG</I><BR> <CODE>rm sottotitoli.idx sottotitoli.sub</CODE><BR> <CODE>mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles -vobsuboutindex 0 -vobsuboutid fr -sid 1</CODE></P> <H2><A NAME="aspect">7.9 Conservare le proporzioni</A></H2> <P>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!</P> <P>C'�.</P> <P>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, <U>non<U> ci sono lettori video la fuori che supportino questa possibilit�. Eccetto MPlayer.</P> <P>Si pu� usare questa caratteristica solo con il codec <CODE>mpeg4</CODE> di <B>libavcodec</B>. Ricorda: anche se MPlayer riproducer� correttamente il file creato, gli altri lettori useranno le proporzioni sbagliate.</P> <P>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 <CODE>cropdetect</CODE> e <CODE>crop</CODE>.</P> <H4>Utilizzo:</H4> <P><CODE>$ 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</CODE></P> </BODY> </HTML>