mirror of
https://github.com/mpv-player/mpv
synced 2024-12-19 05:15:12 +00:00
3750f06d96
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@26859 b3059339-0415-0410-9bf9-f77b7e298cf2
5328 lines
194 KiB
XML
5328 lines
194 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- 41% synced with r22753 (row 2212) -->
|
|
<chapter id="encoding-guide">
|
|
<title>La codifica con <application>MEncoder</application></title>
|
|
|
|
<sect1 id="menc-feat-dvd-mpeg4">
|
|
<title>Produrre un rip di un film da DVD in un
|
|
MPEG-4 ("DivX") di alta qualità</title>
|
|
|
|
<para>
|
|
Una domanda frequente è "Come posso generare il rip con la migliore qualità
|
|
per una dimensione data?". Un'altra domanda è "Come posso fare il rip da DVD
|
|
migliore in assoluto? Non mi interessa la dimensione del file, voglio solo la
|
|
più alta qualità."
|
|
</para>
|
|
|
|
<para>
|
|
L'ultima domanda è perlomeno forse posta malamente. Dopo tutto, se non ti
|
|
interessa la dimensione del file, perché non ti copi semplicemente l'intero
|
|
flusso video MPEG-2 dal DVD? Certo, avrai un AVI di 5GB, prendere o lasciare,
|
|
ma se vuoi la miglior qualità e non ti importa della dimensione, è
|
|
sicuramente la scelta migliore.
|
|
</para>
|
|
|
|
<para>
|
|
Invero, la ragione per cui vuoi codificare un DVD in MPEG-4 è proprio perché
|
|
ti interessa <emphasis role="bold">davvero</emphasis> la dimensione del file.
|
|
</para>
|
|
|
|
<para>
|
|
E' difficile offrire una ricetta da libro su come generare un rip da DVD in
|
|
qualità molto alta. Bisogna considerare vari fattori, e dovresti comprendere
|
|
questi dettagli, altrimenti alla fine probabilmente sarai insoddisfatto del
|
|
risultato. Più sotto evidenziamo alcuni di questi argomenti e poi passiamo ad
|
|
esaminare un esempio. Partiamo dal principio che per codificare il video tu
|
|
stia usando <systemitem class="library">libavcodec</systemitem> anche se la
|
|
teoria si applica allo stesso modo agli altri codec.
|
|
</para>
|
|
|
|
<para>
|
|
Se questo ti sembra troppo, dovresti probabilmente usare una delle belle
|
|
interfacce elencate nella
|
|
<ulink url="http://www.mplayerhq.hu/design7/projects.html#mencoder_frontends">sezione su MEncoder</ulink>
|
|
nella pagina dei progetti collegati (related projects).
|
|
In tal modo riuscirai ad ottenere rip di alta qualità senza pensarci troppo,
|
|
dato che la maggior parte di questi strumenti sono progettati per prendere
|
|
decisioni sagge al tuo posto.
|
|
</para>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-preparing-encode">
|
|
<title>Prepararsi alla codifica: identificare il materiale sorgente e la frequenza fotogrammi (framerate)</title>
|
|
|
|
<para>
|
|
Prima ancora di pensare a codificare un film, devi fare alcuni passi
|
|
preliminari.
|
|
</para>
|
|
|
|
<para>
|
|
Il primo e più importante passo prima della codifica dovrebbe essere
|
|
determinare il tipo di contenuto che stai trattando.
|
|
Se il tuo materiale di partenza arriva da un DVD o da TV in
|
|
broadcast/via cavo/satellite, sarà salvato in uno dei due formati: NTSC per
|
|
il Nord America e il Giappone, PAL per l'Europa, etc...
|
|
E' importante tuttavia comprendere che questo è solo il formato per la
|
|
trasmissione in televisione, e spesso <emphasis role="bold">non</emphasis>
|
|
corrisponde al formato originario del film.
|
|
L'esperienza insegna che il materiale NTSC è molto più difficile da
|
|
codificare, perché ci sono più elementi da identificare nel sorgente.
|
|
Per generare una codifica adeguata, devi sapere il formato originario.
|
|
Il non tenerne conto porterà a molti __flaws__ nella tua codifica, inclusi
|
|
artefatti orrendi __combing__ (interlacing) e fotogrammi duplicati o addirittura
|
|
perduti.
|
|
Oltre ad essere brutti, gli artefatti influenzano negativamente l'efficienza
|
|
della codifica: otterrai una peggior qualità a parità di bitrate.
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-fps">
|
|
<title>Identificare la frequenza fotogrammi (framerate) del sorgente</title>
|
|
|
|
<para>
|
|
C'è qui un elenco di tipi comuni di materiale sorgente, dove facilmente si
|
|
trovano e le loro proprietà:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
<emphasis role="bold">Film standard</emphasis>: prodotti per la visione
|
|
su schermi da cinema a 24fps.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Video PAL</emphasis>: registrati con una videocamera
|
|
PAL a 50 campi al secondo.
|
|
Un campo è composto dalle sole linee pari o dispari di un fotogramma.
|
|
La televisione è stata progettata per aggiornarle alternativamente come un
|
|
metodo economico di compressione analogica.
|
|
L'occhio umano teoricamente compensa la cosa, ma una volta che capisci come
|
|
funziona l'interlacciatura imparerai a vederla anche in TV e non ti piacerà
|
|
più la TV.
|
|
Due campi <emphasis role="bold">non</emphasis> fanno un fotogramma intero,
|
|
poiché sono registrati a 1/50 di secondo di distanza nel tempo e quindi non
|
|
si allineano a meno che non ci sia movimento alcuno.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Video NTSC</emphasis>: registrati con una videocamera
|
|
NTSC a 60000/1001 campi al secondi, o 60 campi al secondo nell'era precedente
|
|
al colore.
|
|
Per il resto sono simili ai PAL.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Animazione</emphasis>: solitamente disegnati a 24fps,
|
|
ma se ne trovano anche in tipologie con frequenza di fotogrammi mista.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Computer Graphics (CG)</emphasis>: possono essere con
|
|
qualsiasi frequenza di fotogrammi, ma alcuni sono più comuni di altri;
|
|
sono tipici 24 e 30 fotogrammi al secondo per NTSC e 25fps per PAL.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Vecchi Film</emphasis>: varie e più basse frequenze di
|
|
fotogrammi.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-material">
|
|
<title>Identificare il materiale sorgente</title>
|
|
|
|
<para>
|
|
I film composti da fotogrammi sono indicati come "progressivi", mentre quelli
|
|
composti da campi indipendenti sono chiamati "interlacciati" o video - anche se
|
|
quest'ultimo termine è ambiguo.
|
|
</para>
|
|
|
|
<para>
|
|
Per complicare ulteriormente le cose, alcuni film possono essere un misto di
|
|
molti dei suddetti.
|
|
</para>
|
|
|
|
<para>
|
|
La più importante distinzione da farsi tra tutti questi formati è che alcuni
|
|
sono basati su fotogrammi mentre gli altri sono basati su campi.
|
|
<emphasis role="bold">Ogniqualvolta</emphasis> un film viene preparato per la
|
|
visualizzazione in televisione (DVD inclusi), viene convertito in un formato
|
|
basato su campi.
|
|
I vari metodi con cui si può fare sono conosciuti nel loro insieme come
|
|
"telecine", di cui il tristemente famoso "3:2 pulldown" NTSC è una tipologia.
|
|
A meno che il materiale originale sia anch'esso basato su campi (e con la stessa
|
|
frequenza di campi) otterrai un filmato in un formato diverso da quello che è
|
|
in origine.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<title>Ci sono vari tipi usuali di "pulldown":</title>
|
|
<listitem><para>
|
|
<emphasis role="bold">Pulldown PAL 2:2</emphasis>: il più bello di tutti.
|
|
Ciascun fotogramma viene mostrato per la durata di due campi, estraendo le
|
|
linee pari e dispari e mostrandole alternativamente.
|
|
Se il materiale di origine è a 24fps questo processo velocizza il filmato
|
|
del 4%.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Pulldown PAL 2:2:2:2:2:2:2:2:2:2:2:3</emphasis>:
|
|
Ogni dodicesimo fotogramma viene mostrato per la durata di tre campi, invece
|
|
che solamente per due.
|
|
Questo evita il problema dell'aumento del 4% di velocità, ma rende il
|
|
processo molto più difficile da __reversare__.
|
|
Solitamente viene usato nelle produzioni musicali, dove modificare del 4% la
|
|
velocità rovinerebbe pesantemente la colonna sonora.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Telecine NTSC 3:2</emphasis>: i fotogrammi vengono
|
|
mostrati alternativamente per la durata di 3 o 2 campi.
|
|
Questo porta ad una frequenza di campi di 2.5 volte la frequenza orginaria.
|
|
Il risultato viene anche leggermente rallentato da 60 campi al secondo fino a
|
|
60000/1001 campi al secondo, per mantenere la frequenza dei campi di NTSC.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Pulldown NTSC 2:2</emphasis>: utilizzato per mostrare
|
|
materiale a 30fps su NTSC.
|
|
Carino, proprio come il pulldown PAL 2:2.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Ci sono anche alcuni metodi per convertire tra video NTSC e PAL, ma gli
|
|
arogmenti relativi non sono obiettivo di questa guida.
|
|
Se ti trovi di fronte a un film di questo genere e lo vuoi codificare, la tua
|
|
scelta migliore è cercarne una copia nel formato originale.
|
|
La conversione tra questi due formati è altamente distruttiva e non può
|
|
essere __reversed__ in maniera pulita, perciò la tua codifica __soffrirà__
|
|
molto se eseguita da una sorgente convertita.
|
|
</para>
|
|
|
|
<para>
|
|
Quando il video viene salvato du un DVD, coppie consecutive di campi sono
|
|
raggruppati in un fotogramma, anche se non sono pensati per esser mostrati
|
|
nello stesso momento.
|
|
Lo standard MPEG-2 usato sui DVD e per la TV digitale fornisce un modo sia per
|
|
codificare i fotogrammi progressivi originali, che uno per memorizzare
|
|
nell'intestazione del fotogramma il numero dei campi per cui il fotogramma
|
|
stesso debba essere mostrato.
|
|
Se viene usato questo metodo il filmato verrà spesso indicato come
|
|
"soft telecine", visto che il procedimento indica semplicemente al lettore DVD
|
|
di applicare il pulldown al film, invece che modificare il film stesso.
|
|
Questa situazione è decisamente preferibile, dato che può essere facilmente
|
|
__reversed__ (__actually ignored__) dal condificatore, e dato che mantiene la
|
|
massima qualità.
|
|
Tuttavia, molti studi di produzione DVD e di trasmissione non usano tecniche di
|
|
codifica appropriate, ma al contrario producono filmati con "hard telecine", in
|
|
cui i campi sono sotanzialmente duplicati nell'MPEG-2 codificato.
|
|
</para>
|
|
|
|
<para>
|
|
Le modalità per gestire questi casi verranno descritte
|
|
<link linkend="menc-feat-telecine">più avanti in questa guida</link>.
|
|
Per adesso ti lasciamo alcune indicazioni su come identificare il tipo di
|
|
materiale che stai trattando:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<title>Regioni NTSC:</title>
|
|
<listitem><para>
|
|
Se <application>MPlayer</application> dice che la frequenza fotogrammi passa
|
|
a 24000/1001 durante la visione del film e non ritorna come prima, è quasi
|
|
sicuramente un qualche contenuto progressivo che è stato modificato in
|
|
"soft telecine".
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Se <application>MPlayer</application> dice che la frequenza fotogrammi va
|
|
avanti e indietro tra 24000/1001 e 30000/1001 e ogni tanto vedi delle "righe",
|
|
allora ci sono varie possibilità.
|
|
Le parti a 24000/1001 fps sono quasi certamente contenuto progressivo, in
|
|
"soft telecine", ma le parti a 30000/1001 fps possono essere sia contenuto in
|
|
"hard telecine" a 24000/1001 fps che video NTSC a 60000/1001 campi al secondo.
|
|
Usa le stesse linee guida dei due casi seguenti per determinare quale.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Se <application>MPlayer</application> non mostra mai una modifica alla
|
|
frequenza dei fotogrammi e ogni singolo fotogramma con del movimento appare
|
|
"rigato", il tuo filmato è video NTSC a 60000/1001 campi al secondo.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Se <application>MPlayer</application> non mostra mai una modifica alla
|
|
frequenza dei fotogrammi e due fotogrammi ogni cinque sono "rigati", il tuo
|
|
film è contenuto a 24000/1001fps in "hard telecine".
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<itemizedlist>
|
|
<title>Regioni PAL:</title>
|
|
<listitem><para>
|
|
Se non vedi mai alcuna "riga", il tuo film è pulldown 2:2.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Se vedi delle "righe" che vanno e vengono ogni mezzo secondo,
|
|
allora il tuo film è pulldown 2:2:2:2:2:2:2:2:2:2:2:3.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Se vedi sempre "righe" durante il movimento, allora il tuo film è video
|
|
PAL a 50 campi al secondo.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<note><title>Consiglio:</title>
|
|
<para>
|
|
<application>MPlayer</application> può rallentare la riproduzione del film
|
|
con l'opzione -speed o riprodurlo fotogramma per fotogramma.
|
|
Prova ad usare <option>-speed</option> 0.2 per guardare molto lentamente il
|
|
film o premi ripetutamente il tasto "<keycap>.</keycap>" per riprodurre un
|
|
fotogramma per volta ed identificare la sequenza, se non riesci a vederla a
|
|
velocità normale.
|
|
</para>
|
|
</note>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-2pass">
|
|
<title>Quantizzatore costante vs. multipassaggio</title>
|
|
|
|
<para>
|
|
E' possibile codificare il filmato in un'ampia gamma di qualità.
|
|
Con i codificatori video moderni e un pelo di compressione pre-codec
|
|
(ridimensionando e ripulendo), è possibile raggiungere una qualità molto
|
|
buona in 700 MB, per un film di 90-110 minuti in widescreen.
|
|
Inoltre tutti i film tranne i più lunghi possono essere codificati con una
|
|
qualità pressoché perfetta in 1400 MB.
|
|
</para>
|
|
|
|
<para>
|
|
Ci sono tre approcci per codificare il video: bitrate costante (CBR),
|
|
quantizzatore costante, e multipassaggio (ABR, o bitrate medio).
|
|
</para>
|
|
|
|
<para>
|
|
La complessità dei fotogrammi di un filmato, e di conseguenza il numero di
|
|
bit necessari per comprimerli, può variare molto da una scena ad un'altra.
|
|
I codificatori video moderni possono adattarsi via via a queste necessità
|
|
e cambiare il bitrate.
|
|
In modalità semplici come CBR, tuttavia, i codificatori non sanno il bitrate
|
|
necessario alle scene venture e perciò non possono stare sopra al bitrate
|
|
richiesto per lunghi periodi di tempo.
|
|
Modalità più avanzate, come la codifica in multipassaggio, possono tener
|
|
conto delle statistiche del passo precedente; questo corregge il problema
|
|
suddetto.
|
|
</para>
|
|
|
|
<note><title>Nota:</title>
|
|
<para>
|
|
La maggior parte dei codec che gestisce la codifica in ABR può usare solo la
|
|
codifica a due passaggi mentre altri come
|
|
<systemitem class="library">x264</systemitem>,
|
|
<systemitem class="library">Xvid</systemitem> e
|
|
<systemitem class="library">libavcodec</systemitem> gestiscono il
|
|
multipassaggio, che migliora leggermente la qualità ad ogni passo, anche se
|
|
tale moglioramento non è più misurabile né visibile veramente oltre il
|
|
quarto passo o giù di lì.
|
|
Perciò in questa sezione due passaggi e multipassaggio avranno lo stesso
|
|
significato.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
In ambedue i modi, il codec video (come
|
|
<systemitem class="library">libavcodec</systemitem>) spezza il fotogramma video
|
|
in macroblocchi da 16x16 pixel e poi applica un quantizzatore a ciascun
|
|
macroblocco. Più basso è il quantizzatore, migliore sarà la qualità e
|
|
più alto il bitrate.
|
|
Il metodo usato dal codificatore del filmato per determinare quale quantizzatore
|
|
utilizzare per un dato macroblocco varia ed è altamente configurabile.
|
|
(Questa è una semplificazione estrema del vero processo, ma il concetto di base
|
|
è comodo per capire.)
|
|
</para>
|
|
|
|
<para>
|
|
Quando specifichi un bitrate constante, il codec video codificherà il video,
|
|
scartando dettagli tanto quanto è necessario e il meno possibile, in modo da
|
|
rimanere al di sotto del bitrate voluto. Se non ti interessa davvero la
|
|
dimensione del file, potresti anche usare CBR e specificare un bitrate
|
|
infinito. (In pratica, questo significa un valore abbastanza alto da non porre
|
|
limiti, come 10000Kbit.) Con nessun limite sul bitrate, il risultato è che il
|
|
codec userà il quantizzatore più basso possibile per ciascun macroblocco
|
|
(come specificato da <option>vqmin</option> per
|
|
<systemitem class="library">libavcodec</systemitem>, che è 2 di default).
|
|
Appena specifichi un bitrate abbastanza basso tale che il codec venga forzato
|
|
ad utilizzare un quantizzatore più alto, allora stai sicuramente diminuendo la
|
|
qualità del tuo video.
|
|
Per evitarlo, dovresti probabilmente ridurre la dimensione del tuo video,
|
|
seguendo il metodo descritto più avanti in questa guida.
|
|
In generale dovresti evitare del tutto CBR se ti interessa la qualità.
|
|
</para>
|
|
|
|
<para>
|
|
Con il quantizzatore costante, il codec utilizza lo stesso quantizzatore per
|
|
ogni macroblocco, come specificato dall'opzione <option>vqscale</option> (per
|
|
<systemitem class="library">libavcodec</systemitem>).
|
|
Se vuoi la più alta qualità possibile di rip, sempre ignorantdo il bitrate,
|
|
puoi usare <option>vqscale=2</option>.
|
|
Ciò porterà gli stessi bitrate e PSNR (peak signal-to-noise ratio) come CBR
|
|
con <option>vbitrate</option>=infinito e <option>vqmin</option> di default a 2.
|
|
</para>
|
|
|
|
<para>
|
|
Il problema con la quantizzazione costante è che usa il quantizzatore indicato
|
|
sia che il macroblocco ne abbia bisogno o no. Perciò è possibile che venga
|
|
usato un quantizzatore più alto su un macroblocco senza sacrificare la
|
|
qualità visiva. Perché sprecare i bit di un quantizzatore basso che non
|
|
serve? La tua CPU ha tanti cicli fin quando c'è tempo, ma c'è solo un certo
|
|
numero di bit sul tuo disco rigido.
|
|
</para>
|
|
|
|
<para>
|
|
Con una codifica a due passi, il primo codificherà il filmato come se fosse
|
|
CBR, ma manterrà una registrazione delle caratteristiche di ogni fotogramma.
|
|
Questi dati sono poi utilizzati durante il secondo passo in modo da effettuare
|
|
scelte intelligenti su quale quantizzatore usare. Durante le scene con azione
|
|
veloce o molti dettagliate, verrano usati più probabilmente quantizzatori più
|
|
alti, e durante scene lente o con pochi dettagli, verranno usati quantizzatori
|
|
più bassi. Solitamente è molto più importante la quantità di movimento
|
|
che la quantità di dettagli.
|
|
</para>
|
|
|
|
<para>
|
|
Se usi <option>vqscale=2</option>, allora stai sprecando dei bit. Se usi
|
|
<option>vqscale=3</option>, allora non stai ottenendo la miglior qualità.
|
|
Supponi di rippare un DVD a <option>vqscale=3</option> e che il risultato sia
|
|
1800Kbit. Se fai una codifica a due passi con <option>vbitrate=1800</option> il
|
|
video risultante avrà una <emphasis role="bold">qualità superiore</emphasis>
|
|
a <emphasis role="bold">parità di bitrate</emphasis>.
|
|
</para>
|
|
|
|
<para>
|
|
Dato che ora sei convinto che i due passaggi siano la strada da percorrere, la
|
|
vera domanda adesso è quale bitrate usare? La risposta à che non c'è una
|
|
risposta definitiva. Idealmente vuoi scegliere un bitrate che porti al miglior
|
|
equilibrio tra qualità e dimensione del file. Tutto ciò varia in dipendenza
|
|
del video di origine.
|
|
</para>
|
|
|
|
<para>
|
|
Se la dimensione non è importante, un buon punto di partenza per un rip di
|
|
qualità molto elevata è intorno a 2000Kbit più o meno 200Kbit.
|
|
Per video con scene di azione veloce o con molti dettagli, oppure se
|
|
semplicemente hai l'occhio critico, potresti scegliere 2400 o 2600.
|
|
Per alcuni DVD potresti non notare alcuna differenza a 1400Kbit. Sperimentare
|
|
con alcune scene a vari bitrate è una buona idea per farsi un'opinione.
|
|
</para>
|
|
|
|
<para>
|
|
Se punti a una data dimensione, dovrai calcolare il bitrate in un qualche modo.
|
|
Prima di farlo, però, devi sapere quanto spazio devi riservare per la traccia
|
|
(le tracce) audio, per cui devi dapprima fare il
|
|
<link linkend="menc-feat-dvd-mpeg4-audio">rip di queste</link>.
|
|
Puoi calcolare il bitrate con l'equazione che segue:
|
|
<systemitem>bitrate = (dimensione_voluta_in_Mbytes - dimensione_audio_in_Mbytes)
|
|
* 1024 * 1024 / lunghezza_in_secondi * 8 / 1000</systemitem>
|
|
Per esempio, per far stare un film di due ore su un CD da 702MB, con 60MB di
|
|
traccia audio, il bitrate video diventerà:
|
|
<systemitem>(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000
|
|
= 740kbps</systemitem>
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-constraints">
|
|
<title>Vincoli per una codifica efficiente</title>
|
|
|
|
<para>
|
|
A causa della natura del tipo di compressione MPEG, ci sono alcuni vincoli da
|
|
seguire per avere la massima qualità.
|
|
L'MPEG divide il video in quadrati da 16x16 chiamati macroblocchi, ciascuno di
|
|
essi composto da blocchi 4x4 con informazioni sulla luminanza (intensità) e
|
|
due blocchi da 8x8 a metà risoluzione per la crominanza (colore) (uno per
|
|
l'asse rosso-ciano e l'altro per l'asse blu-giallo).
|
|
Anche se la larghezza e l'altezza del tuo filmato non sono multipli di 16 il
|
|
codificatore userà tanti macroblocchi 16x16 in modo da coprire tutta la
|
|
superficie dell'immagine, e lo spazio in esubero sarà sprecato.
|
|
Indi, per migliorare la qualità a una dimensione prefissata è una brutta
|
|
idea utilizzare dimensioni che non siano multiple di 16.
|
|
</para>
|
|
|
|
<para>
|
|
La maggior parte dei DVD ha anche alcune con bordi neri sui lati. Lasciarli lì
|
|
avrà un'influenza <emphasis role="bold">molto</emphasis> negativa sulla
|
|
qualità in svariati modi.
|
|
</para>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<para>
|
|
Il tipo di compressione MPEG è pesantemente dipendente dalle trasformazioni
|
|
di dominio frequenti, in particolare la "trasformazione discreta del coseno"
|
|
(Discrete Cosine Transform (DCT)), che xxièe' simile alla trasformazione di
|
|
Fourier. Quest'approccio di codifica è efficiente nella rappresentazione di
|
|
motivi e transizioni delicate, ma trova difficoltà con spigoli più
|
|
definiti. Per codificarli deve usare molti più bit oppure apparirà un
|
|
artefatto conosciuto come 'ringing'.
|
|
</para>
|
|
|
|
<para>
|
|
La trasformazione di frequenza (DCT) prende luogo separatemente in ogni
|
|
macroblocco (praticamente in ogni blocco) perciò questo problema si applica
|
|
solo quando lo spigolo definito è dentro a un blocco. Se il bordo nero inizia
|
|
esattamente sul lato di un multiplo di 16, questo non e' un problema.
|
|
Tuttavia i bordi neri sui DVD difficilmente sono ben allineati, perciò
|
|
nella realtà dovrai sempre tagliarli via per evitare questi problemi.
|
|
</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>
|
|
Oltre alle trasformazioni del dominio di frequenza, il tipo di compressione
|
|
MPEG usa dei vettori di movimento per rappresetare le variazioni da un
|
|
fotogramma al successivo. Naturalmente i vettori di movimento funzionano molto
|
|
meno bene per i nuovi contenuti che arrivano dai bordi dell'immagine, dato che
|
|
non erano presenti nel fotogramma precedente. Fintanto che l'immagine arriva
|
|
fino al bordo dell'area codificata, i vettori di movimento non incontrano
|
|
alcun problema con li contenuto che esce dall'immagine. Tuttavia ci possono
|
|
esser problemi quando ci sono dei bordi neri:
|
|
</para>
|
|
|
|
<orderedlist continuation="continues">
|
|
<listitem>
|
|
<para>
|
|
Per ogni macroblocco il tipo di compressione MPEG memorizza un vettore, che
|
|
identifica quale parte del fotogramma precedente debba essere copiata nel
|
|
macroblocco stesso, come base per predire il fotogramma successivo. Serve
|
|
codificare solo le differenze restanti. Se un macroblocco oltrepassa il
|
|
bordo dell'immagine e contiene parte del bordo nero, allora i vettori di
|
|
movimento provenienti da altre zone dell'immagine ricopriranno il bordo
|
|
nero. Questo significa che si devono utilizzare molti bit o per riannerire il
|
|
bordo che è stato ricoperto, oppure (più verosimilmente) un vettore di
|
|
movimento non sarà proprio usato e tutti i cambiamenti in questo
|
|
macroblocco dovranno venir esplicitamente codificate. In un modo o nell'altro
|
|
si ricuce di gran lunga l'efficienza della codifica.
|
|
</para>
|
|
|
|
<para>
|
|
Inoltre questo problema si applica solo se i bordi neri non sono allinati
|
|
su limiti di multipli di 16.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
Immagina infine di avere un macroblocco all'interno dell'immagine, ed un
|
|
oggetto che passa da questo blocco verso il bordo dell'immagine. La
|
|
codifica MPEG non può dire "copia la parte che è dentro all'immagine, ma
|
|
non il bordo nero". Perciò anche il bordo nero vi verrà copiato
|
|
all'interno, e molti bit saranno sprecati codificando l'immagine che si
|
|
suppone stia lì.
|
|
</para>
|
|
|
|
<para>
|
|
Se l'immagine arriva al limite della superficie codificata, l'MPEG ha una
|
|
particolare ottimizzazione che consta nel copiare ripetutamente i pixel sul
|
|
bordo dell'immagine quando un vettore di movimento arriva dall'esterno della
|
|
superficie codificata. Questa funzionalità diventa inutile quando il film
|
|
ha dei bordi neri. Diversamente dai problemi 1 e 2, allineare i bordi a
|
|
multipli di 16 in questo caso non aiuta.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>
|
|
A dispetto del fatto che i bordi siano completamente neri e non cambino mai,
|
|
c'è perlomeno un piccolo spreco nell'avere più macroblocchi.
|
|
</para></listitem>
|
|
</orderedlist>
|
|
|
|
<para>
|
|
Per tutte queste ragioni si consiglia di tagliar via completamente i bordi neri.
|
|
Inoltre, se c'è una zona di rumore/distorsione sui bordi dell'immagine,
|
|
tagliarla migliorerà ancora l'efficienza di codifica. I puristi videofili che
|
|
vogliono mantenere il più possibile l'originale potrebbero obiettare su questo
|
|
taglio, ma a meno di non codificare a una quantizzazione costante, la qualità
|
|
guadagnata tagliando sorpasserà di gran lunga la quantità di informazioni
|
|
perse sui bordi.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-crop">
|
|
<title>Tagliare e Ridimensionare</title>
|
|
|
|
<para>
|
|
Ricorda dalla sezione precedente che la dimensione finale dell'immagine che
|
|
codifichi dovrebbe essere un multiplo di 16 (sia in larghezza che altezza).
|
|
Si può ottenere ciò tagliando, ridimensionando o combinando le due cose.
|
|
</para>
|
|
|
|
<para>
|
|
Quando tagli, ci sono alcune linee guida che si devono seguire per evitare di
|
|
rovinare il tuo filmato.
|
|
Il formato YUV abituale, 4:2:0, memorizza le informazioni sulla crominanza
|
|
(colore) sottocampionate, per es. la crominanza viene campionata in ogni
|
|
direzione solo la metà di quanto venga la luminanza (intensità).
|
|
Osserva questo diagramma, dove L indica i punti di campionamente della
|
|
luminanza e C quelli della crominanza.
|
|
</para>
|
|
|
|
<informaltable>
|
|
<?dbhtml table-width="40%" ?>
|
|
<?dbfo table-width="40%" ?>
|
|
<tgroup cols="8" align="center">
|
|
<colspec colnum="1" colname="col1"/>
|
|
<colspec colnum="2" colname="col2"/>
|
|
<colspec colnum="3" colname="col3"/>
|
|
<colspec colnum="4" colname="col4"/>
|
|
<colspec colnum="5" colname="col5"/>
|
|
<colspec colnum="6" colname="col6"/>
|
|
<colspec colnum="7" colname="col7"/>
|
|
<colspec colnum="8" colname="col8"/>
|
|
<spanspec spanname="spa1-2" namest="col1" nameend="col2"/>
|
|
<spanspec spanname="spa3-4" namest="col3" nameend="col4"/>
|
|
<spanspec spanname="spa5-6" namest="col5" nameend="col6"/>
|
|
<spanspec spanname="spa7-8" namest="col7" nameend="col8"/>
|
|
<tbody>
|
|
<row>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
</row>
|
|
<row>
|
|
<entry spanname="spa1-2">C</entry>
|
|
<entry spanname="spa3-4">C</entry>
|
|
<entry spanname="spa5-6">C</entry>
|
|
<entry spanname="spa7-8">C</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
</row>
|
|
<row>
|
|
<entry spanname="spa1-2">C</entry>
|
|
<entry spanname="spa3-4">C</entry>
|
|
<entry spanname="spa5-6">C</entry>
|
|
<entry spanname="spa7-8">C</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>
|
|
Come puoi vedere, le righe e le colonne dell'immagine vengono sempre a coppie.
|
|
Quindi i tuoi valori di spostamento e dimensione <emphasis>devono</emphasis>
|
|
essere numeri pari.
|
|
Se non lo sono la crominanza non sarà più allineata correttamente con la
|
|
luminanza.
|
|
In teoria è possibile tagliare con uno spostamento dispari, ma richiede che la
|
|
crominanza venga ricampionata, il che potenzialmente è un'operazione in perdita
|
|
e non è gestita dal filtro crop.
|
|
</para>
|
|
|
|
<para>
|
|
Inoltre, il video interlacciato viene campionato come segue:
|
|
</para>
|
|
|
|
<informaltable>
|
|
<?dbhtml table-width="80%" ?>
|
|
<?dbfo table-width="80%" ?>
|
|
<tgroup cols="16" align="center">
|
|
<colspec colnum="1" colname="col1"/>
|
|
<colspec colnum="2" colname="col2"/>
|
|
<colspec colnum="3" colname="col3"/>
|
|
<colspec colnum="4" colname="col4"/>
|
|
<colspec colnum="5" colname="col5"/>
|
|
<colspec colnum="6" colname="col6"/>
|
|
<colspec colnum="7" colname="col7"/>
|
|
<colspec colnum="8" colname="col8"/>
|
|
<colspec colnum="9" colname="col9"/>
|
|
<colspec colnum="10" colname="col10"/>
|
|
<colspec colnum="11" colname="col11"/>
|
|
<colspec colnum="12" colname="col12"/>
|
|
<colspec colnum="13" colname="col13"/>
|
|
<colspec colnum="14" colname="col14"/>
|
|
<colspec colnum="15" colname="col15"/>
|
|
<colspec colnum="16" colname="col16"/>
|
|
<spanspec spanname="spa1-2" namest="col1" nameend="col2"/>
|
|
<spanspec spanname="spa3-4" namest="col3" nameend="col4"/>
|
|
<spanspec spanname="spa5-6" namest="col5" nameend="col6"/>
|
|
<spanspec spanname="spa7-8" namest="col7" nameend="col8"/>
|
|
<spanspec spanname="spa9-10" namest="col9" nameend="col10"/>
|
|
<spanspec spanname="spa11-12" namest="col11" nameend="col12"/>
|
|
<spanspec spanname="spa13-14" namest="col13" nameend="col14"/>
|
|
<spanspec spanname="spa15-16" namest="col15" nameend="col16"/>
|
|
<tbody>
|
|
<row>
|
|
<entry namest="col1" nameend="col8">Campo superiore</entry>
|
|
<entry namest="col9" nameend="col16">Campo inferiore</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry spanname="spa1-2">C</entry>
|
|
<entry spanname="spa3-4">C</entry>
|
|
<entry spanname="spa5-6">C</entry>
|
|
<entry spanname="spa7-8">C</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry spanname="spa9-10">C</entry>
|
|
<entry spanname="spa11-12">C</entry>
|
|
<entry spanname="spa13-14">C</entry>
|
|
<entry spanname="spa15-16">C</entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry spanname="spa1-2">C</entry>
|
|
<entry spanname="spa3-4">C</entry>
|
|
<entry spanname="spa5-6">C</entry>
|
|
<entry spanname="spa7-8">C</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
</row>
|
|
<row>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry spanname="spa9-10">C</entry>
|
|
<entry spanname="spa11-12">C</entry>
|
|
<entry spanname="spa13-14">C</entry>
|
|
<entry spanname="spa15-16">C</entry>
|
|
</row>
|
|
<row>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
<entry>L</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>
|
|
Come puoi notare, il motivo non si ripete fino a dopo 4 linee.
|
|
Quindi per il video interlacciato, il tuo spostamento sull'asse y e l'altezza
|
|
devono essere multipli di 4.
|
|
</para>
|
|
|
|
<para>
|
|
La risoluzione nativa DVD è 720x480 per NTSC e 720x576 per PAL, ma c'è un
|
|
flag per l'aspetto che indica se è full-screen (4:3) o wide-screen (16:9).
|
|
Molti (se non quasi tutti) i DVD in widescreen non sono esattamente 16:9 e
|
|
possono essere sia 1.85:1 o 2.35:1 (cinescope). Questo significa che nel video
|
|
ci saranno bordi neri che bisogna tagliare via.
|
|
</para>
|
|
|
|
<para>
|
|
<application>MPlayer</application> fornisce un filtro che rileva i valori di
|
|
taglio e fornisce il rettangolo per crop (<option>-vf cropdetect</option>).
|
|
Esegui <application>MPlayer</application> con <option>-vf cropdetect</option> ed
|
|
emetterà le impostazioni di taglio per crop al fine di rimuovere i bordi.
|
|
Dovresti lasciare andare avanti il film abbastanza da ottenere valori di taglio
|
|
precisi.
|
|
</para>
|
|
|
|
<para>
|
|
Dopodiché prova con <application>MPlayer</application> i valori ottenuti usando
|
|
la linea comando emessa da <option>cropdetect</option>, e correggi il
|
|
rettangolo se e come serve.
|
|
Il filtro <option>rectangle</option> può esserti di aiuto, dato che ti
|
|
permette di impostare interattivamente la posizione del rettangolo di taglio
|
|
sopra al filmato.
|
|
Ricordati di seguire le linee guida sui multipli in modo da non disallineare
|
|
i piani di crominanza.
|
|
</para>
|
|
|
|
<para>
|
|
In talune occasioni, il ridimensionamento può essere indesiderabile.
|
|
Il ridimensionamento sulla direzione verticale è difficoltoso con video
|
|
interlacciato e se vuoi mantenere l'interlacciamento, dovresti evitare il
|
|
ridimensionamento.
|
|
Se non ridimensionerai, ma vuoi comunque usare dimensioni multiple di 16,
|
|
dovrai tagliare di più.
|
|
Evita di tagliare di meno, dato che i bordi neri sono un male per la codifica!
|
|
</para>
|
|
|
|
<para>
|
|
Dato che MPEG-4 usa macroblocchi 16x16 vorrai esser sicuro che ambedue le
|
|
dimensioni del video che stai per codificare siano multiple di 16, altrimenti
|
|
perderai in qualità, soprattutto a bitrate più bassi. Puoi farlo abbassando
|
|
la larghezza e l'altezza del rettangolo di taglio al multiplo di 16 più vicino.
|
|
Come detto precedentemente, quando tagli, vorrai aumentare lo scostamento Y
|
|
della metà della differenza tra la nuova e la vecchia altezza, in modo che il
|
|
video risultante sia preso dal centro del fotogramma. Inoltre, a causa del modo
|
|
in cui il video DVD viene campionato, assicurati che lo scostamento sia un
|
|
numero pari. (Infatti, come regola, non utilizzare mai valori dispari per alcun
|
|
parametro quando tagli e ridimensioni un video.) Se non ti va di scartare dei
|
|
pixel in più, potresti piuttosto preferire il ridimensionamento del video.
|
|
Prenderemo in esame questa situazione più avanti.
|
|
Puoi in verità lasciare che tutte le considerazioni suddette vengano fatte
|
|
dal filtro <option>cropdetect</option>, visto che ha un parametro
|
|
<option>round</option> facoltativo, che è impostato a 16 di default.
|
|
</para>
|
|
|
|
<para>
|
|
Fai anche attenzione ai pixel "mezzi neri" sui bordi. Assicurati di tagliare
|
|
anch'essi, altrimenti sprecherai bit più utili altrove.
|
|
</para>
|
|
|
|
<para>
|
|
Dopo aver detto e fatto tutto ciò, probabilmente avrei un vide i cui pixel
|
|
non saranno proprio 1.85:1 o 2.35:1, ma piuttosto un valore vicino. Potresti
|
|
calcolare a mano il nuovo rapporto di aspetto, ma
|
|
<application>MEncoder</application> ha un'opzione per <systemitem
|
|
class="library">libavcodec</systemitem> chiamata <option>autoaspect</option>
|
|
che lo farà per te. Non aumentare assolutamente le dimensioni del video per
|
|
avere i pixel quadrati, a meno che tu non voglia sprecare il tuo spazio disco.
|
|
Il ridimensionamento dovrebbe essere eseguito in riproduzione, e per definire
|
|
la risoluzione giusta il riproduttore userà l'aspetto memorizzato nell'AVI.
|
|
Sfortunatamente non tutti i riproduttori verificano l'informazione sul rapporto
|
|
perciò potresti voler comunque effettuare il ridimensionamento.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-resolution-bitrate">
|
|
<title>Scegliere la risoluzione e il bitrate</title>
|
|
|
|
<para>
|
|
A meno che tu non stia per codificare con quantizzazione costante devi
|
|
impostare un bitrate.
|
|
La logica del bitrate è abbastanza semplice.
|
|
Normalmente il bitrate viene misurato in kilobit (1000 bit) al secondo.
|
|
La dimensione del filmato sul disco è il bitrate moltiplicato per la durata
|
|
del filmato, più un piccolo quantitativo in "surplus" (vedi per esempio la
|
|
sezione sul
|
|
<link linkend="menc-feat-dvd-mpeg4-muxing-avi-limitations">contenitore AVI</link>).
|
|
Altri parametri come ridimensionamento, taglio, etc...
|
|
<emphasis role="bold">non</emphasis> influiscono sulla dimensione del file a
|
|
meno che tu non cambi anche il bitrate!
|
|
</para>
|
|
|
|
<para>
|
|
Il bitrate <emphasis role="bold">non</emphasis> è direttamente proporzionale
|
|
alla risoluzione.
|
|
Tanto per capirci, un file 320x240 a 200 kbit/sec non avrà la stessa qualità
|
|
dello stesso filmato a 640x480 e 800 kbit/sec!
|
|
Ci sono due ragioni per ciò:
|
|
<orderedlist>
|
|
<listitem><para>
|
|
<emphasis role="bold">Percettiva</emphasis>: noti di più gli artefatti MPEG
|
|
quando sono più grandi!
|
|
Gli artefatti appaiono a livello dei blocchi (8x8).
|
|
Il tuo occhio non noterà errori in 4800 piccoli blocchi tanti quanti ne
|
|
vedrà in 1200 grossi blocchi (assumendo che tu li stia ridimensionando tutti
|
|
e due a schermo intero).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Teorica</emphasis> : quando rimpicciolisci un immagine
|
|
ma usi la stessa dimensione dei blocchi (8x8) per la trasformazione spaziale
|
|
della frequenza, hai più dati nelle bande ad alta frequenza. In parole
|
|
povere, ogni pixel contiene più dettagli di quanti ne contenesse prima.
|
|
Quindi anche se la tua immagine rimpicciolita contiene 1/4 delle informazioni
|
|
sulle direzioni spaziali, potrebbe ancora contenere una gran parte delle
|
|
informazioni nel dominio delal frequenza (assumendo che le alte frequenze
|
|
siano sotto-utilizzate nell'immagine di origine a 640x480).
|
|
</para></listitem>
|
|
</orderedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Guide precendenti hanno consigliato di scegliere un bitrate e una risoluzione
|
|
in base ad un approccio "bit al secondo", ma di solito ciò non è valido a
|
|
causa delle ragioni suddette.
|
|
Una stima migliore pare essere che il bitrate è proporzionale alla radice
|
|
quadrata della risoluzione, per cui 320x240 e 400 kbit/sec sarà
|
|
paragonabile a 640x480 a 800 kbit/sec.
|
|
Tuttavia ciò non è stato verificato con certezza empirica o teorica.
|
|
Inoltre, dato che i filmati hanno diversi livelli di disturbo, dettaglio, angoli
|
|
di movimento, etc..., è vano dare consigli generici su bit per lunghezza della
|
|
diagonale (analogamente a bit per pixel, usando la radice quadrata).
|
|
</para>
|
|
<para>
|
|
Finora abbiamo parlato della difficoltà nel scegliere un bitrate e una
|
|
risoluzione.
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-dvd-mpeg4-resolution-bitrate-compute">
|
|
<title>Calcolare la risoluzione</title>
|
|
|
|
<para>
|
|
I passaggi seguenti ti guideranno nel calcolo della risoluzione per la tua
|
|
codifica senza distorcere troppo il video, tenendo in considerazione vari tipo
|
|
di informazioni riguardo la sorgente video.
|
|
Per prima cosa dovresti calcolare il rapporto di aspetto codificato:
|
|
<systemitem>ARc = (Wc x (ARa / PRdvd )) / Hc</systemitem>
|
|
|
|
<itemizedlist>
|
|
<title>dove:</title>
|
|
<listitem><para>
|
|
Wc e Hc sono la larghezza e l'altezza del video tagliato,
|
|
</para></listitem>
|
|
<listitem><para>
|
|
ARa è il rapporto di aspetto mostrato, che di solito è 4/3 o 16/9,
|
|
</para></listitem>
|
|
<listitem><para>
|
|
PRdvd à il rapporto del pixel del DVD che è uguale a 1.25=(720/576) per DVD
|
|
PAL e 1.5=(720/480) per DVD NTSC.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Dopo puoi calcolare la risoluzione X e Y, basandoti su un dato fattore
|
|
di qualità di compressione (Compression Quality, CQ):
|
|
<systemitem>ResY = INT(SQRT( 1000*Bitrate/25/ARc/CQ )/16) * 16</systemitem>
|
|
and
|
|
<systemitem>ResX = INT( ResY * ARc / 16) * 16</systemitem>
|
|
</para>
|
|
|
|
<para>
|
|
Okay, ma cos'è la CQ?
|
|
Il CQ rappresenta il numero di bit per pixel e per fotogramma in codifica.
|
|
Parlando più semplicemente, più alto è la CQ, più difficilmente si vedranno
|
|
codificati degli artefatti.
|
|
Tuttavia, se desideri una particolare dimensione per il tuo film (per esempio
|
|
1 o 2 CD), hai un numero limitato di bit da utilizzare; devi quindi trovare un
|
|
buon compromesso tra compressione e qualità.
|
|
</para>
|
|
|
|
<para>
|
|
La CQ dipende dal bitrate, dall'efficienza del codec video e dalla risoluzione
|
|
del filmato.
|
|
Per alzare la CQ, di solito dovrai rimpicciolire il filmato visto che il bitrate
|
|
viene calcolato in funzione della dimensione voluta e della lunghezza del
|
|
filmato, che sono delle costanti.
|
|
Con codec MPEG-4 ASP come <systemitem class="library">Xvid</systemitem> e
|
|
<systemitem class="library">libavcodec</systemitem>, una CQ inferiore a 0.18
|
|
solitamente genera un'immagine abbastanza squadrettata, perché non ci sono
|
|
abbastanza bit per codificare l'informazione di ogni macroblocco. (MPEG4, come
|
|
molti altri codec, ragruppa i pixel in blocchi di pixel per comprimere
|
|
l'immagine; se non ci sono abbastanza bit, si vedono i bordi dei blocchi.)
|
|
E' saggio anche prendere una CQ compresa tra 0.20 e 0.22 per un rip a 1 CD,
|
|
e 0.26-0.28 per un rip a 2 CD con impostazioni standard di codifica.
|
|
Opzioni più evolute di codifica come quelle qui indicate per
|
|
<link linkend="menc-feat-mpeg4-lavc-example-settings"><systemitem class="library">libavcodec</systemitem></link>
|
|
e
|
|
<link linkend="menc-feat-xvid-example-settings"><systemitem class="library">Xvid</systemitem></link>
|
|
dovrebbero permetterti di ottenere la stessa qualità con CQ compresa tra
|
|
0.18 e 0.20 per un rip da 1 CD, e da 0.24 a 0.26 per 2 CD.
|
|
Con codec MPEG-4 AVC come <systemitem class="library">x264</systemitem>,
|
|
puoi usare una CQ che varia da 0.14 a 0.16 con opzioni standard di codifica, e
|
|
dovresti riuscire a scendere tra 0.10 e 0.12 con <link linkend="menc-feat-x264-example-settings">impostazioni avanzate di codifica
|
|
<systemitem class="library">x264</systemitem></link>.
|
|
</para>
|
|
|
|
<para>
|
|
Prendi per favore nota che CQ è solo un valore indicativo, dato che dipende dal
|
|
contenuto che viene codificato, una CQ di 0.18 può andar bene per un Bergman,
|
|
mentre per un film come Matrix, che contiene molte scene ad alta velocità, no.
|
|
D'altro canto è inutile portare la CQ oltre 0.30 dato che sprecherai dei bit
|
|
senza avere alcun guadagno visibile in qualità.
|
|
Nota anche che come detto precedentemente in questa guida, per video a bassa
|
|
risoluzione serve una CQ più alta (in rapporto, per esempio, alla risoluzione
|
|
DVD) perché si vedano bene.
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-filtering">
|
|
<title>Filtraggio</title>
|
|
|
|
<para>
|
|
Imparare come usare i filtri video di <application>MEncoder</application> è
|
|
essenziale per produrre delle buone codfiche.
|
|
Tutta l'elaborazione video è eseguita attraverso i filtri -- taglio,
|
|
ridimensionamento, aggiustamento del colore, rimozione del disturbo, rilevamento
|
|
margini, deinterlacciatura, telecine, telecine inverso, e deblocco, solo per
|
|
nominarne qualcuno.
|
|
Insieme con la vasta gamma di formati di entrata gestiti, la varietà dei
|
|
filtri disponibili in <application>MEncoder</application> è uno dei suoi
|
|
più grandi vantaggi sugli altri programmi similari.
|
|
</para>
|
|
|
|
<para>
|
|
I filtri vengono caricati in catena usando l'opzione -vf:
|
|
|
|
<screen>-vf filtro1=opzioni,filtro2=opzioni,...</screen>
|
|
|
|
La maggior parte dei filtri riceve alcune opzioni numeriche separate da due
|
|
punti, ma la sintassi per le opzioni cambia da filtro a filtro, indi leggiti la
|
|
pagina man per i dettagli sul filtro che desideri usare.
|
|
</para>
|
|
|
|
<para>
|
|
I filtri lavorano sul video nell'ordine in cui vengono caricati.
|
|
Per esempio la catena seguente:
|
|
|
|
<screen>-vf crop=688:464:12:4,scale=640:464</screen>
|
|
|
|
dapprima taglia la zona 688x464 dell'immagine con uno scostamento dall'alto a
|
|
sinistra di (12,4), e poi ridimensiona il risultato a 640x464.
|
|
</para>
|
|
|
|
<para>
|
|
Taluni filtri devono essere caricati all'inizio o vicino all'inizio della
|
|
catena di filtri, in modo da trarre vantaggio dalle informazioni che arrivano
|
|
dal decoder video, che potrebbero essere perse o invalidate da altri filtri.
|
|
Gli esempi principali sono <option>pp</option> (post elaborazione
|
|
(postprocessing), solo quando esegue operazioni di deblock o dering),
|
|
<option>spp</option> (un altra post elaborazione per eliminare artefatti MPEG),
|
|
<option>pullup</option> (telecine inverso), e <option>softpulldown</option>
|
|
(per passare da telecine soft a hard).
|
|
</para>
|
|
|
|
<para>
|
|
In generale vorrai filtrare il meno possibile in modo da rimaner fedele alla
|
|
sorgente DVD originale. Il taglio è spesso necessario (com detto sopra), ma
|
|
evita di ridimensionare il video. Anche se alcune volte si preferisce
|
|
rimpicciolire per poter usare quantizzatori più alti, vogliamo evitare ciò:
|
|
ricorda che abbiamo sin dall'inizio deciso di investire bit in qualità.
|
|
</para>
|
|
|
|
<para>
|
|
In più, non reimpostare la gamma, il contrasto, la luminosità, etc...
|
|
Quello che si vede bene sul tuo schermo potrebbe non vedersi bene su altro.
|
|
Queste modifiche dovrebbero esser fatte solo durante la riproduzione.
|
|
</para>
|
|
|
|
<para>
|
|
Una cosa che voresti però fare è tuttavia far passare il video attraverso un
|
|
leggero filtro di rimozione disturbo, come <option>-vf hqdn3d=2:1:2</option>.
|
|
Ancora, è una questione di poter meglio utilizzare quei bit: perché sprecarli
|
|
codificando disturbo mentre puoi semplicemente aggiungerlo di nuovo durante la
|
|
riproduzione? Alzando i parametri per <option>hqdn3d</option> aumenterà
|
|
ancora la compressione, ma se aumenti troppo i valori, rischi un degrado pesante
|
|
dell'immagine. I valori sopra consigliati (<option>2:1:2</option>) sono
|
|
abbastanza conservativi; sentiti libero di sperimentare con valori più alti e
|
|
verificare da solo il risultato.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-interlacing">
|
|
<title>Interlacciamento e Telecine</title>
|
|
|
|
<para>
|
|
Quasi tutti i film vengono ripresi a 24 fps. Dato che NTSC è 30000/1001 fps,
|
|
si devono eseguire alcune elaborazioni affinché questo video a 24 fps sia
|
|
letto al giusto framerate NTSC. Il processo è chiamato "3:2 pulldown", meglio
|
|
conosciuto come "telecine" (poiché pulldown viene spesso applicato durante il
|
|
processo di telecine), e descritto rozzamente, agisce rallentando il film a
|
|
24000/1001 fps, e ripetendo ogni quarto fotogramma.
|
|
</para>
|
|
|
|
<para>
|
|
Non viene invece eseguita alcuna elaborazione sul video per i DVD PAL, che
|
|
girano a 25 fps. (Tecnicamente, PAL può subire il telecine, chiamato
|
|
"2:2 pulldown", ma non è usanza abituale.) Il film a 24 fps viene
|
|
semplicemente riprodotto a 25 fps. Il risultato è che il filmato è leggermente
|
|
più veloce, ma a meno che tu non sia un alieno, probabilmente non noterai la
|
|
differenza.
|
|
La maggior parte dei DVD PAL hanno audio corretto ai picchi, in modo che quando
|
|
siano riprodotti a 25 fps le cose suonino giuste, anche se la traccia audio
|
|
(e quindi tutto il filmato) ha un tempo di riproduzione che è il 4% inferiore
|
|
ai DVD NTSC.
|
|
</para>
|
|
|
|
<para>
|
|
A causa del fatto che il video nei DVD PAL non è stato alterato, non dovrai
|
|
preoccuperti molto della frequenza fotogrammi. La sorgente è 25 fps, e il tuo
|
|
rip sarà a 25 fps. Tuttavia, se stai codificando un film da DVD NTSC,
|
|
potresti dover applicare il telecine inverso.
|
|
</para>
|
|
|
|
<para>
|
|
Per film ripresi a 24 fps, il video sul DVD NTSC è o con telecine a 30000/1001,
|
|
oppure è progressivo a 24000/1001 fps e destinato a subire il telecine al volo
|
|
da un lettore DVD. D'altro canto le serie TV sono solitamente solo
|
|
interlacciate, senza telecine. Questa non è una regola ferrea: alcune serie TV
|
|
sono interlacciate (come Buffy the Vampire Slayer) mentre alcune sono un misto
|
|
di progressivo e interlacciato (come Angel, o 24).
|
|
</para>
|
|
|
|
<para>
|
|
Si consiglia vivamente di leggere la sezione su
|
|
<link linkend="menc-feat-telecine">Come trattare il telecine e l'interlacciamento nei DVD NTSC</link>
|
|
per imparare come gestire le varie possibilità.
|
|
</para>
|
|
|
|
<para>
|
|
Ciononostante, se stai principalmente rippando solo film, solitamente ti
|
|
troverai di fronte a video a 24 fps progressivo o con telecine, nel qual caso
|
|
puoi usare il filtro <option>pullup</option> <option>-vf
|
|
pullup,softskip</option>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-encoding-interlaced">
|
|
<title>Codificare video interlacciato</title>
|
|
|
|
<para>
|
|
Se il film che vuoi codificare è interlacciato (video NTSC o PAL) dovrai
|
|
scegliere se vuoi de-interlacciare o no.
|
|
Se da un lato de-interlacciare renderà il tuo filmato utilizzabile su
|
|
schermi a scansione progressiva come monitor di computer o proiettori, porta
|
|
con sé un costo: la frequenza dei campi di 50 o 60000/1001 campi al secondo
|
|
viene dimezzata a 25 o 30000/1001 fotogrammi al secondo, e circa la metà delle
|
|
informazioni nel tuo film saranno perdute, in scene con movimento significativo.
|
|
</para>
|
|
|
|
<para>
|
|
Per di più, se stai codificando puntando ad alta qualità di archiviazione.
|
|
si consiglia di non de-interlacciare.
|
|
Puoi sempre de-interlacciare il film durante la riproduzione attraverso
|
|
dispositivi a scansione progressiva.
|
|
La potenza dei computer attuali forza per i riproduttori l'utilizzo di un filtro
|
|
di de-interlacciamento, che porta un leggero degrado dell'immagine.
|
|
Ma i lettori del futuro saranno in grado di simulare lo schermo di una TV,
|
|
de-interlacciando a piena frequenza di campi e interpolando 50 o 60000/1001
|
|
fotogrammi interi al secondo dal video interlacciato
|
|
</para>
|
|
|
|
<para>
|
|
Bisogna porre speciale attenzione quando si lavora con video interlacciato:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
<listitem><para>
|
|
Altezza e scostamento del taglio devono essere multipli di 4.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Qualsiasi ridimensionamento verticale va fatto in modalità interlacciata.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
I filtri di post elaborazione e di rimozione disturbo potrebbero non
|
|
funzionare come ci si aspetta a meno che tu non ponga particolare attenzione
|
|
per farli lavorare su un campo per volta, e possono rovinare il video quando
|
|
usati in modo non corretto.
|
|
</para></listitem>
|
|
</orderedlist>
|
|
|
|
<para>
|
|
Tenendo a mente queste cose, ecco il nostro primo esempio:
|
|
<screen>
|
|
mencoder <replaceable>capture.avi</replaceable> -mc 0 -oac lavc -ovc lavc -lavcopts \
|
|
vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224
|
|
</screen>
|
|
Nota le opzioni <option>ilme</option> e <option>ildct</option>.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-av-sync">
|
|
<title>Note sulla sincronizzazione Audio/Video</title>
|
|
|
|
<para>
|
|
Gli algoritmi di sincronizzazione audio/video di
|
|
<application>MEncoder</application> sono stati progettati con l'intento di
|
|
recuperare file con sincronia danneggiata.
|
|
In alcuni casi tuttavia, possono generare inutili duplicazioni o scarti di
|
|
fotogrammi, e possibilmente leggera desincronia A/V quando vengono usati con
|
|
sorgenti buone (i problemi di sincronizzazione A/V accadono solo se elabori o
|
|
copi la traccia audio mentre transcodifichi il video, il che è decisamente
|
|
consigliato).
|
|
Perciò potresti dover passare ad una sincronizzazione di base con l'opzione
|
|
<option>-mc 0</option>, o metterla nel tuo file di configurazione
|
|
<systemitem>~/.mplayer/mencoder</systemitem>, sempre che tu stia lavorando con
|
|
buone sorgenti (DVD, acquisizione TV, rip MPEG-4 ad alta qualità, etc) e non
|
|
con file ASF/RM/MOV rovinati.
|
|
</para>
|
|
|
|
<para>
|
|
Se vuoi proteggerti ulteriormente da strani salti e duplicazioni di fotogrammi,
|
|
puoi usare sia <option>-mc 0</option> che <option>-noskip</option>.
|
|
Questo disabiliterà <emphasis>tutte</emphasis> le sincronizzazioni A/V, e
|
|
copierà i fotogrammi uno ad uno, perciò è inutilizzabile se stai usando dei
|
|
filtri che aggiungono o rimuovono arbitrariamente fotogrammi, ovvero se il
|
|
tuo file sorgente ha una frequenza fotogrammi non costante!
|
|
Quindi l'utilizzo di <option>-noskip</option> in linea di massima si sconsiglia.
|
|
</para>
|
|
|
|
<para>
|
|
Si sa che la cosiddetta codifica audio in "tre passi", che
|
|
<application>MEncoder</application> gestisce, può causare desincronizzazione
|
|
A/V.
|
|
Il che capiterà prontamente se viene usata insieme con alcuni filtri, per cui
|
|
si consiglia di <emphasis>non</emphasis> usare la modalità audio a tre passi.
|
|
Questa caratteristica viene lasciata solo per finalità di compatibilità e
|
|
per utenti esperti che sanno quando sia adeguato usarla e quando no.
|
|
Se non hai mai sentito parlar prima della modalità a tre passi, dimenticati
|
|
di averla anche solo sentita nominare!
|
|
</para>
|
|
|
|
<para>
|
|
Ci sono anche stati rapporti di desincronia A/V codificando con
|
|
<application>MEncoder</application> da stdin.
|
|
Non farlo! Usa sempre come ingresso un file o un dispositivo CD/DVD/etc.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-codec">
|
|
<title>Scegliere il codec video</title>
|
|
|
|
<para>
|
|
Quale possa esere il miglior codec video dipende da molti fattori, come
|
|
dimensione, qualità, possibilita di farne lo streaming, usabilit, diffusione,
|
|
alcuni dei quali dipendono fortemente dai gusti personali e dalle variabili
|
|
tecniche in gioco.
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
E' abbastanza facile da capire che i codec più recenti sono fatti per
|
|
aumentare qualità e compressione.
|
|
Quindi gli autori di questa guida e moltra altra gente suggeriscono che non
|
|
potete sbagliare
|
|
<footnote id='fn-menc-feat-dvd-mpeg4-codec-cpu'><para>
|
|
Fai comunque attenzione: la decodifica di video MPEG-4 AVC a risoluzione DVD
|
|
richiede una macchina veloce (per es. un Pentium 4 oltre 1.5GHz o un Pentium
|
|
M superiore a 1GHz).
|
|
</para></footnote>
|
|
quando scegliete un qualche codec MPEG-4 AVC come
|
|
<systemitem class="library">x264</systemitem> piuttosto che un codec MPEG-4
|
|
ASP come l'MPEG-4 di <systemitem class="library">libavcodec</systemitem> o
|
|
<systemitem class="library">Xvid</systemitem>.
|
|
(Per sviluppatori avenzati di codec potrebbe essere interessante leggere
|
|
l'opinione di Michael Niedermayer sul
|
|
"<ulink url="http://guru.multimedia.cx/?p=10">perché MPEG-4 ASP faccia schifo</ulink>"
|
|
(in inglese).)
|
|
Analogamente dovresti ottenere una miglior qualità usando MPEG-4 ASP rispetto
|
|
a quella ottenuta con codec MPEG-2.
|
|
</para>
|
|
|
|
<para>
|
|
Tuttavia, i codec più recenti che sono sotto pesante sviluppo possono avere
|
|
problemi che non sono ancora stati scoperti, e che possono rovinare una
|
|
codifica.
|
|
Questo è semplicemente il contrappasso per usare la tecnologia di punta.
|
|
</para>
|
|
|
|
<para>
|
|
Inoltre iniziare ad utilizzare un codec nuovo richiede l'utilizzo di un po'
|
|
di tempo per familiarizzare con le sue opzioni, affinché tu sappia cosa
|
|
impostare per ottenere la qualità dell'immagine voluta.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>
|
|
<emphasis role="bold">Compatibilità Hardware</emphasis>:
|
|
Solitamente ci va un po' di tempo prima che i lettori da tavolo incomincino ad
|
|
includere il supporto per il video codec più recente.
|
|
Il risultato è che la maggior parte legge MPEG-1 (come i VCD, XVCD e KVCD),
|
|
MPEG-2 (come DVD, SVCD e KVCD) e MPEG-4 ASP (come DivX,
|
|
LMP4 di <systemitem class="library">libavcodec</systemitem> e
|
|
<systemitem class="library">Xvid</systemitem>)
|
|
(attenzione: solitamente non sono gestite tutte le caratteristiche
|
|
MPEG-4 ASP).
|
|
Fai per favore riferimento alle specifiche tecniche del tuo lettore (ove
|
|
disponibili) o cerca su internet per ulteriori informazioni.
|
|
</para></listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Miglior qualità per tempo di codifica</emphasis>:
|
|
Codec che sono in giro da parecchio tempo (come MPEG-4 di
|
|
<systemitem class="library">libavcodec</systemitem> e
|
|
<systemitem class="library">Xvid</systemitem>) sono spesso molto ottimizzati
|
|
con ogni tipo di algoritmo furbo e codice SIMD in assembly.
|
|
Per questo tendono a fornire il miglior rapporto tra qualità e tempo di
|
|
codifica. Tuttavia, possono avere delle opzioni avanzate che, quando
|
|
abilitate, rendono la codifica molto lenta fornendo poco guadagno.
|
|
</para>
|
|
|
|
<para>
|
|
Se stai cercando di incrementare la velocità dovresti cercare di non
|
|
modificare troppo le impostazioni di default del codec video (anche se
|
|
dovresti comunque provare le altre opzioni che sono citate in altre sezioni
|
|
di questa guida).
|
|
</para>
|
|
|
|
<para>
|
|
Puoi tenere in considerazione anche la scelta di un codec che possa eseguire
|
|
elaborazioni multi-thread, anche se ciò è utile solo per utenti di macchine
|
|
con più di una CPU.
|
|
MPEG-4 di <systemitem class="library">libavcodec</systemitem> lo permette,
|
|
ma il guadagno in velocità è limitato, e c'è un leggere effetto negativo
|
|
sulla qualità dell'immagine.
|
|
La codifica multi-thread di <systemitem class="library">Xvid</systemitem>,
|
|
attivata dall'opzione <option>threads</option>, può essere usata per
|
|
accelerare la velocità di codifica — tipicamente di circa il 40-60%
|
|
— con poco se non nessun degrado dell'immagine.
|
|
Anche <systemitem class="library">x264</systemitem> permette la codifica in
|
|
multi-thread, la quale attualmente velocizza la codifica del 94% per core di
|
|
CPU mentre abbassa il PSNR tra 0.005dB e 0.01dB, con impostazioni tipiche.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Gusto personale</emphasis>:
|
|
Qui è dove capita l'irrazionale: per la stessa ragione per cui alcuni
|
|
restano attaccati a DivX 3 per anni, mentre nuovi codec stanno
|
|
facendo meraviglie, alcuni personaggi preferiranno
|
|
<systemitem class="library">Xvid</systemitem> o MPEG-4 di
|
|
<systemitem class="library">libavcodec</systemitem> a
|
|
<systemitem class="library">x264</systemitem>.
|
|
</para>
|
|
<para>
|
|
Dovresti prendere le tue decisioni; non prendere consigli da gente che
|
|
fanno giuramenti su un codec.
|
|
Prendi alcuni pezzi di esempio da sorgenti grezze e compara le diverse
|
|
opzioni di codifica e di codec per trovare quello che ti garba di più.
|
|
Il miglior codec è quello che riesci a gestire al meglio, e quello che ai
|
|
tuoi occhi e sul tuo schermo si vede meglio.
|
|
<footnote id='fn-menc-feat-dvd-mpeg4-codec-playback'><para>
|
|
La stessa codifica potrebbe non apparire uguale sullo schermo di qualcun
|
|
altro o se riprodotta con un decodificatore differente, perciò controlla
|
|
i tuoi risultati riproducendoli in diverse condizioni.
|
|
</para></footnote>!
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<para>
|
|
Fai per favore riferimento alla sezione
|
|
<link linkend="menc-feat-selecting-codec">selezionare codec e formati contenitore</link>
|
|
per avere un elenco dei codec usabili.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-audio">
|
|
<title>Audio</title>
|
|
|
|
<para>
|
|
L'audio è un problema di decisamente più facile soluzione: se ti interessa la
|
|
qualità, lascialo semplicemente com'è.
|
|
Anche i flussi AC-3 5.1 sono al massimo a 448Kbit/s, e ne valgono ogni bit.
|
|
Potresti esser tentato di trascodificare l'audio in Vorbis ad alta qualità, ma
|
|
solo perché a tutt'oggi non hai un decodificatore AC-3 pass-through ciò non
|
|
significa che non ne avrai uno in futuro. Assicura un futuro ai tuoi rip da DVD
|
|
preservando il flusso in AC-3.
|
|
Puoi mantenere il flusso AC-3 anche copiandolo direttamente nel flusso video
|
|
<link linkend="menc-feat-mpeg4">durante la codifica</link>.
|
|
Puoi anche estrarre il flusso AC-3 al fine di farne il mux in contenitori come
|
|
NUT o Matroska.
|
|
<screen>
|
|
mplayer <replaceable>file_sorgente.vob</replaceable> -aid 129 -dumpaudio -dumpfile <replaceable>suono.ac3</replaceable>
|
|
</screen>
|
|
effettuerà il dump della traccia audio numero 129 dal file
|
|
<replaceable>file_sorgente.vob</replaceable> nel file
|
|
<replaceable>suono.ac3</replaceable> (NB: i file VOB da DVD spesso usano una
|
|
numerazione dell'audio diversa, il che significa che la traccia audio 129 è la
|
|
seconda traccia del file).
|
|
</para>
|
|
|
|
<para>
|
|
Alcune volte invece, non hai davvero altra scelta se non comprimere
|
|
ulteriormente il suono per poter usare più bit per il video.
|
|
La maggior parte delle persone sceglie di comprimere l'audio con i codec MP3
|
|
ovvero Vorbis.
|
|
Mentre quest'ultimo è un codec decisamente efficiente per lo spazio, MP3 è
|
|
meglio supportato dai lettori da tavolo, anche se la situazione sta cambiando.
|
|
</para>
|
|
|
|
<para>
|
|
<emphasis>Non</emphasis> usare <option>-nosound</option> mentre codifichi un
|
|
file con dell'audio, anche se farai la codifica e il mux dell'audio
|
|
separatamente in seguito.
|
|
Anche se potesse andar bene in casi ideali, facilmente usare
|
|
<option>-nosound</option> nasconderà alcuni problemi nelle tue impostazioni di
|
|
codifica sulla riga comando.
|
|
In altre parole mantenere la colonna sonora durante la codifica ti assicura,
|
|
a patto che tu non veda messaggi del tipo
|
|
<quote>Troppi pacchetti audio nel buffer</quote>, di ottenere un'adeguata
|
|
sincronizzazione.
|
|
</para>
|
|
|
|
<para>
|
|
Devi fare in modo che <application>MEncoder</application> processi il suono.
|
|
Puoi per esempio copiare la colonna sonora originaria durante la codifica con
|
|
<option>-oac copy</option>, o convertirla in un "leggero" PCM WAV mono a 4 kHz
|
|
con <option>-oac pcm -channels 1 -srate 4000</option>.
|
|
In caso contrario in alcuni casi verrà generato un file video che sarà
|
|
desincronizzato con l'audio.
|
|
Casi del genere sono quelli in cui il numero dei fotogrammi video nel file di
|
|
origine non corrisponde alla lunghezza totale dei fotogrammi audio oppure
|
|
ogniqualvolta vi siano delle discontinuità/splice in cui mancano o ci sono
|
|
fotogrammi audio in più.
|
|
Il modo giusto di gestire questo tipo di problemi è inserire del silenzio o
|
|
tagliare l'audio in quei punti.
|
|
Tuttavia <application>MPlayer</application> non è in grado di farlo, per cui se
|
|
fai il demux dell'audio AC-3 e lo codifichi con un'altro programma (o ne fai il
|
|
dump in PCM con <application>MPlayer</application>), gli splice rimarranno
|
|
sbagliati e l'unico modo per correggerli è scartare/duplicare fotogrammi video
|
|
nel punto di splice.
|
|
Fintantochè <application>MEncoder</application> vede l'audio mentre codifica il
|
|
video, può eseguire questo scarto/duplicazione (che solitamente è OK, dato che
|
|
capita con scene nere o cambi scena), ma se <application>MEncoder</application>
|
|
non vede l'audio, processerà i fotogrammi così come sono e alla fine non
|
|
corrisponderanno al flusso audio finale quando per esempio inserirai i flussi
|
|
audio e video dentro a un file Matroska.
|
|
</para>
|
|
|
|
<para>
|
|
Prima di tutto dovrai convertire l'audio DVD in un file WAV che il codec audio
|
|
possa usare come ingresso.
|
|
Per esempio:
|
|
<screen>
|
|
mplayer <replaceable>file_sorgente.vob</replaceable> -ao pcm:file=<replaceable>suono_destinazione.wav</replaceable> \
|
|
-vc dummy -aid 1 -vo null
|
|
</screen>
|
|
eseguirà il dump della seconda traccia audio dal file
|
|
<replaceable>file_sorgente.vob</replaceable> sul file
|
|
<replaceable>suono_destinazione.wav</replaceable>.
|
|
Potresti voler normalizzare il suono prima della codifica, visto che le tracce
|
|
audio dei DVD spesso sono registrate a volumi bassi.
|
|
Puoi usare per esempio lo strumento <application>normalize</application>, che
|
|
è disponibile nella maggior parte delle distribuzioni.
|
|
Se stai usando Windows, lo stesso mestiere lo può fare uno strumento tipo
|
|
<application>BeSweet</application>.
|
|
Effettuerai la compressione in Vorbis ovvero in MP3.
|
|
|
|
Per esempio:
|
|
<screen>oggenc -q1 <replaceable>suono_destinazione.wav</replaceable></screen>
|
|
codificherà <replaceable>suono_destinazione.wav</replaceable> con qualità
|
|
di codifica 1, che equivale circa a 80Kb/s, ed è la qualità minima in cui
|
|
dovresti codificare se ti interessa la qualità.
|
|
Fai per favore attenzione che attualmente <application>MEncoder</application>
|
|
non è in grado di fare il mux di tracce audio Vorbis nel file di uscita,
|
|
perché gestisce solo contenitori AVI e MPEG in uscita, ognuno dei quali può
|
|
portare a problemi di sincronizzazione audio/video durante la riproduzione con
|
|
alcuni lettori quando il file AVI contiene flussi audio VBR come Vorbis.
|
|
Non preoccuparti, questa documentazione ti mostrerà come tu possa farlo
|
|
comunque con programmi di terze parti.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-muxing">
|
|
<title>Muxing</title>
|
|
|
|
<para>
|
|
Ora che hai codificato il tuo video, vorrai verosimilmente farne il mux in un
|
|
contenitore di filmati con una o più tracce audio, come AVI, MPEG, Matroska o
|
|
NUT.
|
|
<application>MEncoder</application> è attualmente in grado di generare in modo
|
|
nativo solo video in formati contenitore MPEG o AVI.
|
|
Per esempio:
|
|
<screen>
|
|
mencoder -oac copy -ovc copy -o <replaceable>film_in_uscita.avi</replaceable> \
|
|
-audiofile <replaceable>audio_in_ingresso.mp2</replaceable> <replaceable>video_in_ingresso.avi</replaceable>
|
|
</screen>
|
|
Questo miscelerà i file video <replaceable>video_in_ingresso.avi</replaceable>
|
|
e audio <replaceable>audio_in_ingresso.mp2</replaceable> nel file AVI
|
|
<replaceable>film_in_uscita.avi</replaceable>.
|
|
Questo comando funziona con audio MPEG-1 layer I, II e III (più comunemente
|
|
conosciuto come MP3), WAV e qualche altro formato audio.
|
|
</para>
|
|
|
|
<para>
|
|
<application>MEncoder</application> vanta un supporto sperimentale per
|
|
<systemitem class="library">libavformat</systemitem>, che è una libreria del
|
|
progetto FFmpeg che può fare il mux e il demux di svariati contenitori.
|
|
Per esempio:
|
|
<screen>
|
|
mencoder -oac copy -ovc copy -o <replaceable>film_di_uscita.asf</replaceable> -audiofile <replaceable>audio_in_ingresso.mp2</replaceable> \
|
|
<replaceable>video_in_ingresso.avi</replaceable> -of lavf -lavfopts format=asf
|
|
</screen>
|
|
Questo farà la stessa cosa dell'esempio precedente, trannce che il contenitore
|
|
di uscita sarà ASF.
|
|
Per favore nota che questo supporto è altamente sperimentale (ma migliora di
|
|
giorno in giorno), e funzionerà solo se hai compilato
|
|
<application>MPlayer</application> con il supporto per
|
|
<systemitem class="library">libavformat</systemitem> abilitato (il che
|
|
significa che una versione precompilata nella maggior parte dei casi non
|
|
funzionerà).
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-dvd-mpeg4-muxing-filter-issues">
|
|
<title>Migliorare il mux e l'affidabilità di sincronizzazione A/V</title>
|
|
|
|
<para>
|
|
Potresti avere dei seri problemi di sincronizzazione cercando di fare il mux
|
|
del tuo video con alcune tracce audio, indipendentemente da come tu corregga il
|
|
ritardo audio, non otterrai mai una sincronia corretta.
|
|
Ciò potrebbe succedere quando usi un qualche filtro video che scarti o duplichi
|
|
alcuni fotogrammi, come il filtro di telecine inverso.
|
|
Si consiglia vivamente di appendere il filtro video <option>harddup</option>
|
|
alla fine della catena dei filtri, per evitare questo tipo di problema.
|
|
</para>
|
|
|
|
<para>
|
|
Senza <option>harddup</option>, se <application>MEncoder</application> vuole
|
|
duplicare un fotogramma, chiede al muxer di mettere un segno sul contenitore
|
|
affinché l'ultimo fotogramma venga mostrato di nuovo per mantenere la
|
|
sincronia, senza scriverne effettivamente alcuno.
|
|
Con <option>harddup</option>, <application>MEncoder</application> farà
|
|
semplicemente passare di nuovo l'ultimo fotogramma nella catena di filtri.
|
|
Questo significa che il codificatore riceve <emphasis>esattamente</emphasis> lo
|
|
stesso fotogramma due volte, e lo comprime.
|
|
Ciò genera un file leggermente più grosso, ma non causerà problemi
|
|
effettuando il demux o il remux in altri formati contenitore.
|
|
</para>
|
|
|
|
<para>
|
|
Potresti non avere altra scelta che usare <option>harddup</option> con formati
|
|
contenitore che non siano così legati a <application>MEncoder</application>
|
|
come quelli gestiti attraverso
|
|
<systemitem class="library">libavformat</systemitem>, e che possano non gestire
|
|
la duplicazione fotogrammi a livello contenitore.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-dvd-mpeg4-muxing-avi-limitations">
|
|
<title>Limitazioni del contenitore AVI</title>
|
|
|
|
<para>
|
|
Anche se AVI è il formato contenitore più ampiamente gestito dopo MPEG-1, ha
|
|
anche molti gravi inconvenienti.
|
|
Forse il più ovvio è lo spreco di banda.
|
|
Per ogni blocco del file AVI, 24 byte sono sprecati per intestazione e indice.
|
|
Questo porta a poco più di 5 MB per ora, o 1-2.5% di dimensione supplementare
|
|
per un film da 700 MB. Potrebbe non sembrare poi così tanto, ma potrebbe far
|
|
la differenza tra poter utilizzare 700 oppure 714 kbit/sec per il video, e ogni
|
|
bit è importante per la qualità.
|
|
</para>
|
|
|
|
<para>
|
|
Oltre a questa grave inefficenza, AVI ha anche le grandi limitazioni che
|
|
seguono:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
<listitem><para>
|
|
Può essere immagazzinato solo contenuto a fps costanti. Questo è decisamente
|
|
limitante se il materiale di origine che vuoi codificare è contenuto misto,
|
|
per esempio un misto di video NTSC e film.
|
|
Ci sono invero alcuni trucchi che possono essere usati per salvare negli AVI
|
|
contenuto a frequenza di fotogrammi mista, ma aumentano il (già immenso)
|
|
spreco di banda di cinque volte o giù di lì e quindi non sono pratici.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
L'audio nei file AVI deve essere a bitrate costante (CBR) o a dimensione di
|
|
fotogramma fissa (per es. tutti i fotogrammi decodificano lo stesso numero di
|
|
campioni).
|
|
Sfortunatamente, il codec più efficente, Vorbis, non ha alcuna delle suddette
|
|
caratteristiche.
|
|
Se decidi di salvare il tuo film in AVI, dovrai perciò usare un codec meno
|
|
efficente, come MP3 o AC-3.
|
|
</para></listitem>
|
|
</orderedlist>
|
|
|
|
<para>
|
|
Detto tutto ciò, <application>MEncoder</application> non gestisce attualmente
|
|
la codifica in uscita a fps variabile o la codifica in Vorbis.
|
|
Quindi non noterai le limitazioni su citate se
|
|
<application>MEncoder</application> è l'unico strumento che userai per produrre
|
|
le tue codifiche.
|
|
Tuttavia è possibile usare <application>MEncoder</application> solo per la
|
|
codifica del video, e poi utilizzare strumenti di terze parti per codificare
|
|
l'audio e farne il mux in un altro formato contenitore.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-dvd-mpeg4-muxing-matroska">
|
|
<title>Mux nel contenitore Matroska</title>
|
|
|
|
<para>
|
|
Matroska è un formato contenitore libero, a standard aperti, che punta ad
|
|
offrire molte caratteristiche avanzate, che contenitori più vecchi come AVI non
|
|
sono in grado di manipolare.
|
|
Per esempio Matroska supporta contenuto audio a bitrate variabile (VBR),
|
|
frequenza fotogrammi variabile (VFR), capitoli, file allegati, codice di
|
|
gestione errori (EDC) e Codec A/V moderni come "Advanced Audio Coding" (AAC),
|
|
"Vorbis" or "MPEG-4 AVC" (H.264), comparato al nulla gestito da AVI.
|
|
</para>
|
|
|
|
<para>
|
|
Gli strumenti necessari per creare file Matroska sono chiamati nel loro insieme
|
|
<application>mkvtoolnix</application> e sono disponibili per la maggior parte
|
|
delle piattaforme Unix, così come per <application>Windows</application>.
|
|
Dato che Matroska è uno standard aperto, potresti trovare altri strumenti che
|
|
ti tornino più utili, ma dato che mkvtoolnix è il più diffuso, ed è
|
|
supportato dal team stesso di Matroska, illustreremo il suo solo utilizzo.
|
|
</para>
|
|
|
|
<para>
|
|
Probabilmente il modo più semplice di avvicinarsi a Matroska è utilizzare
|
|
<application>MMG</application>, il frontend grafico fornito con
|
|
<application>mkvtoolnix</application>, e seguire la <ulink url="http://www.bunkus.org/videotools/mkvtoolnix/doc/mkvmerge-gui.html">guida della GUI di mkvmerge (mmg)</ulink>.
|
|
</para>
|
|
|
|
<para>
|
|
Puoi anche fare il mux dei file audio e video usando la riga comando:
|
|
<screen>
|
|
mkvmerge -o <replaceable>destinazione.mkv</replaceable> <replaceable>video_sorgente.avi</replaceable> <replaceable>audio_sorgente1.mp3</replaceable> <replaceable>audio_sorgente2.ac3</replaceable>
|
|
</screen>
|
|
Questo unirà il file video <replaceable>video_sorgente.avi</replaceable> e i
|
|
due file audio <replaceable>audio_sorgente1.mp3</replaceable> e
|
|
<replaceable>audio_sorgente2.ac3</replaceable> nel file Matroska
|
|
<replaceable>destinazione.mkv</replaceable>.
|
|
Matroska, come detto precedentemente, è in grado di far molto più di questo,
|
|
come tracce audio multiple (inclusa una fine sincronia audio/video), capitoli,
|
|
sottotitoli, salti, etc...
|
|
Fai per favore riferimento alla documentazione di queste applicazioni per
|
|
maggiori delucidazioni.
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-telecine">
|
|
<title>Come trattare telecine e interlacciamento nei DVD NTSC</title>
|
|
|
|
<sect2 id="menc-feat-telecine-intro">
|
|
<title>Introduzione</title>
|
|
|
|
<formalpara>
|
|
<title>Cos'è telecine?</title>
|
|
<para>
|
|
Se non comprendi molto quello che è scritto in questo documento, leggi la
|
|
<ulink url="http://en.wikipedia.org/wiki/Telecine">definizione di telecine su Wikipedia</ulink>
|
|
(<ulink url="http://en.wikipedia.org/wiki/Telecine">pagina inglese</ulink>).
|
|
E' una descrizione comprensibile e ragionevolmente completa di cosa si indichi
|
|
con telecine.
|
|
</para></formalpara>
|
|
|
|
<formalpara>
|
|
<title>Una nota riguardo i numeri.</title>
|
|
<para>
|
|
Molti documenti, inclusa la guida su indicata, fanno riferimento al valore dei
|
|
campi per secondo del video NTSC come 59.94 e i valori corrispondenti di
|
|
fotogrammi al secondo come 29.97 (con telecine e interlacciamento) e 23.976
|
|
(per il progressivo). Per semplicità alcune documentazioni arrotondano tali
|
|
cifre a 60, 30 e 24.
|
|
</para></formalpara>
|
|
|
|
<para>
|
|
Strettamente parlando, tutti questi numeri sono approssimati. Il video NTSC in
|
|
bianco e nero era esattamente 60 campi al secondo, ma successivamente venne
|
|
scelto 60000/1001 per incastrare i dati del colore e rimanere compatibili con
|
|
le televisioni bianco e nero contemporanee. Anche il video NTSC digitale (come
|
|
quello sui DVD) è a 60000/1001 campi al secondo. Da ciò discende che il video
|
|
interlacciato e telecine è 30000/1001 fotogrammi al secondo; il video
|
|
progressivo è 24000/1001 fotogrammi al secondo.
|
|
</para>
|
|
|
|
<para>
|
|
Precedenti versioni della documentazioni di <application>MEncoder</application>
|
|
a molti post archiviati della mailig list fanno riferimento a 59.94, 29.97 e
|
|
23.976.
|
|
Tutta la documentazioni di <application>MEncoder</application> è stata
|
|
aggiornata per usare i valori in frazione, e anche tu dovresti usare questi.
|
|
</para>
|
|
|
|
<para>
|
|
<option>-ofps 23.976</option> è sbagliato.
|
|
<option>-ofps 24000/1001</option> dovrebbe invece essere usato.
|
|
</para>
|
|
|
|
<formalpara>
|
|
<title>Come viene usato telecine.</title>
|
|
<para>
|
|
Tutto il video pensato per essere riprodotto su televisione NTSC deve essere a
|
|
60000/1001 campi al secondo. I film per la TV e gli spettacoli sono spesso
|
|
registrati direttamente a 60000/1001 campi al secondo, ma la stragrande
|
|
maggioranzna dei film per cinema è filmata a 24 o 24000/1001 fotogrammi al
|
|
secondo. Quando i film da cinema vengono masterizzati su DVD, il video viene
|
|
quindi convertito per la televisione usando un processo chiamato telecine
|
|
(o telecinema).
|
|
</para></formalpara>
|
|
|
|
<para>
|
|
Su un DVD il video non è praticamente mai memorizzato con 60000/1001 campi al
|
|
secondo. Per un video che originariamente era 60000/1001, ogni coppia di campi
|
|
viene combinata in un fotogramma, risultando in 30000/1001 fotogrammi al
|
|
secondo. I lettori DVD hardware leggono quindi un parametro codificato nel
|
|
flusso video pe rdeterminare se le linee pari o quelle dispari debbano formare
|
|
il primo campo.
|
|
</para>
|
|
|
|
<para>
|
|
Solitamente il contenuto a 24000/1001 fotogrammi per secondi resta così com'è
|
|
quando viene codificato per un DVD, e il lettore DVD deve eseguire il telecine
|
|
al momento. Alcune volte invece, il video subisce il telecine
|
|
<emphasis>prima</emphasis> di essere scritto su DVD; anche se in origine era a
|
|
24000/1001 fotogrammi al secondi, diventa 60000/1001 campi al secondo. Quando
|
|
viene memorizzato su DVD, le coppie di campi vengono assemblate per formare
|
|
30000/1001 fotogrammi al secondo.
|
|
</para>
|
|
|
|
<para>
|
|
Guardando i singoli fotogrammi generati da video a 60000/1001 campi al secondo,
|
|
che sia telecine o no, l'interlacciamento è chiaramente visibile ovunque vi sia
|
|
del movimento, dato che un campo (diciamo le linee pari) rappresenta un istante
|
|
nel tempo 1/(60000/1001) secondi dopo l'altro. Riprodurre video interlacciato
|
|
su un computer risulta brutto sia perché il monitor ha una risoluzione maggiore
|
|
sia perché il video viene mostrato un fotogramma dopo l'altro invece che un
|
|
campo dopo l'altro.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<title>Note:</title>
|
|
<listitem><para>
|
|
Questa sezione si applica solo ai DVD NTSC, e non a quelli PAL.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Le righe di esempio per <application>MEncoder</application> proposte nella
|
|
documentazione <emphasis role="bold">non</emphasis> sono pensate per un
|
|
utilizzo reale. Sono solo quelle minimali richieste per codificare la
|
|
relativa categoria di video. Come fare buoni rip di DVD o configurare bene
|
|
<systemitem class="library">libavcodec</systemitem> per la massima qualità
|
|
non è lo scopo di questa documentazione.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Ci sono alcune note a piè di pagina specifiche di questa guida, così
|
|
indicate:
|
|
<link linkend="menc-feat-telecine-footnotes">[1]</link>
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-telecine-ident">
|
|
<title>Come scoprire il tipo di video che possiedi</title>
|
|
|
|
<sect3 id="menc-feat-telecine-ident-progressive">
|
|
<title>Progressivo</title>
|
|
|
|
<para>
|
|
Il video progressivo è stato originariamente filmato a 24000/1001 fps, e
|
|
memorizzato sul DVD senza modifica alcuna.
|
|
</para>
|
|
|
|
<para>
|
|
Quando riproduci un DVD progressivo con <application>MPlayer</application>,
|
|
<application>MPlayer</application> emette la riga seguente appena il video
|
|
inizia la riproduzione:
|
|
<screen>
|
|
demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.
|
|
</screen>
|
|
Da qui in poi, demux_mpg non dovrebbe mai comunicare di aver trovato
|
|
"30000/1001 fps NTSC content" (contenuto NTSC a 30000/1001 fps).
|
|
</para>
|
|
|
|
<para>
|
|
Quando guardi video progressivo, non dovresti mai vedere alcuna interlacciatura.
|
|
Fai tuttavia attenzione, poiché alcune volte c'è una piccola parte in telecine
|
|
infilata dove non te la aspetteresti. Ho trovato alcuni DVD di spettacoli
|
|
televisivi che hanno un secondo di telecine ad ogni cambio di scena, o anche in
|
|
momenti casuali. Una volta ho guardato un DVD che aveva una prima parte
|
|
progressiva e la seconda in telecine. Se vuoi esserne
|
|
<emphasis>davvero</emphasis> certo, devi controllare tutto il video:
|
|
<screen>mplayer dvd://1 -nosound -vo null -benchmark</screen>
|
|
Using <option>-benchmark</option> makes
|
|
L'utilizzo di <option>-benchmark</option> fa sì che
|
|
<application>MPlayer</application> riproduca il filmato il più velocemente
|
|
possibile; tuttavia, in dipendenza dal tuo hardware, può metterci un po'.
|
|
Ogni volta che demux_mpg segnala un cambio nella frequenza fotogrammi
|
|
(framerate), la linea immediatamente sopra ti dirà il tempo ove è cambiata.
|
|
</para>
|
|
|
|
<para>
|
|
Alcune volte il video progressivo sui DVD viene indicato come "soft-telecine"
|
|
perché è fatto in modo che il lettore DVD esegua il telecine.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-ident-telecined">
|
|
<title>Telecine</title>
|
|
|
|
<para>
|
|
Il video in telecine è stato filmato in origine a 24000/1001, ma ha subito il
|
|
telecine <emphasis>prima</emphasis> di essere scritto sul DVD.
|
|
</para>
|
|
|
|
<para>
|
|
Quando <application>MPlayer</application> riproduce video in telecine non
|
|
segnala (mai) alcun cambio di framerate.
|
|
</para>
|
|
|
|
<para>
|
|
Guardado un video in telecine, noterai artefatti che sembrano "lampeggiare":
|
|
appaiono e scompaiono ripetutamente.
|
|
Puoi notarlo meglio facendo quello che segue
|
|
<orderedlist>
|
|
<listitem><screen>mplayer dvd://1</screen></listitem>
|
|
<listitem><para>
|
|
Ricerca una parte con movimento.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Usa il tasto <keycap>.</keycap> per avanzare di un fotogramma per volta.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Guarda il pattern dei fotogrammi che paiono interlacciati e di quelli
|
|
progressivi. Se il pattern che vedi è PPPII,PPPII,PPPII,... allora il video
|
|
è in telecine. Se vedi qualche altro pattern, allora il video può aver
|
|
subito il telecine attraverso qualche metodo strano;
|
|
<application>MEncoder</application> può effettuare la conversione senza
|
|
perdita da telecine non standard a progressivo. Se non vedi alcun pattern,
|
|
allora molto probabilmente è interlacciato.
|
|
</para></listitem>
|
|
</orderedlist>
|
|
</para>
|
|
|
|
<para>
|
|
Alcune volte il video in telecine sui DVD viene indicato come "hard-telecine".
|
|
Dato che l'hard-telecine è già a 60000/1001 campi al secondi, il lettore DVD
|
|
riproduce il video senza elaborazione alcuna.
|
|
</para>
|
|
|
|
<para>
|
|
Un altro modo per scoprire se la tua sorgente è in telecine o no è riprodurla
|
|
con le opzioni <option>-vf pullup</option> e <option>-v</option> da riga
|
|
comando per vedere come <option>pullup</option> relaziona i fotogrammi.
|
|
Se la sorgente è in telecine, dovresti vedere sulla console un pattern 3:2 con
|
|
<systemitem>0+.1.+2</systemitem> e <systemitem>0++1</systemitem> che si
|
|
alternano.
|
|
Questa tecnica ha il vantaggio di evitare di guardare la sorgente per doverla
|
|
identificare, il che può tornare utile se vuoi automatizzare la procedura di
|
|
codifica ovvero se vuoi eseguire tale procedura in remoto su una connessione
|
|
lenta.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-ident-interlaced">
|
|
<title>Interlacciato</title>
|
|
|
|
<para>
|
|
Il video interlacciato è stato filmato in origine a 60000/1001 campi al
|
|
secondo ed è memorizzato sul DVD a 30000/1001 fotogrammi al secondo. L'effetto
|
|
di interlacciatura (spesso chimato "combing") è un risultato di coppie di
|
|
campi che vengono combinate in fotogrammi. Ogni campo è spostato di
|
|
1/(60000/1001) secondi e quando vengono mostrati contemporaneamente la
|
|
differenza si nota.
|
|
</para>
|
|
|
|
<para>
|
|
Come per il video in telecine, <application>MPlayer</application> non dovrebbe
|
|
mai segnalare alcun cambio di framerete, riproducendo contenuto interlacciato.
|
|
</para>
|
|
|
|
<para>
|
|
Quando guardi attentamente un video interlacciato avanzando fotogramma per
|
|
fotogramma col tasto <keycap>.</keycap>, noterai che ogni singolo fotogramma è
|
|
interlacciato.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-ident-mixedpt">
|
|
<title>Progressivo e telecine miscelati</title>
|
|
|
|
<para>
|
|
Tutto il contenuto di un video "progressivo e telecine miscelato" è stato
|
|
in origine filmato a 24000/1001 fotogrammi al secondo, ma alcune parti alla
|
|
fine hanno subito il telecine.
|
|
</para>
|
|
|
|
<para>
|
|
Quando <application>MPlayer</application> riproduce questa tipologia di video
|
|
salta (spesso ripetutamente) avanti e indietro tra "30000/1001 fps NTSC" e
|
|
"24000/1001 fps progressive NTSC". Controlla le ultime righe dell'emissione di
|
|
<application>MPlayer</application> per vedere questi messaggi.
|
|
</para>
|
|
|
|
<para>
|
|
Dovresti controllare le sezioni "30000/1001 fps NTSC" per assicurarti che siano
|
|
davvero in telecine e non solamente interlacciate.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-ident-mixedpi">
|
|
<title>Progressivo e interlacciato miscelati</title>
|
|
|
|
<para>
|
|
Nei contenuti con video "progressivo e interlacciato miscelati", il video
|
|
progressivo e interlacciato sono mescolati tra loro.
|
|
</para>
|
|
|
|
<para>
|
|
Questa categoria è decisamente simile a "progressivo e telecine miscelato",
|
|
fino a quando non controlli le parti a 30000/1001 fps e scopri che non hanno
|
|
il pattern del telecine.
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-telecine-encode">
|
|
<title>Come codificare ciascuna categoria</title>
|
|
<para>
|
|
Come menzionato all'inizio, le linee di esempio qui sotto per
|
|
<application>MEncoder</application> <emphasis role="bold">non</emphasis> sono
|
|
pensate per essere usate davvero; dimostrano solamente i parametri minimi per
|
|
codificare correttamente ciascuna categoria.
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-encode-progressive">
|
|
<title>Progressivo</title>
|
|
<para>
|
|
Il video progressivo non richiede particolari filtri per la codifica. L'unico
|
|
parametrioche devi assicurarti di usare è <option>-ofps 24000/1001</option>.
|
|
Se non lo usi, <application>MEncoder</application> cercherà di codificare a
|
|
30000/1001 fps e duplicherà i fotogrammi.
|
|
</para>
|
|
|
|
<para>
|
|
<screen>mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001</screen>
|
|
</para>
|
|
|
|
<para>
|
|
Spesso e volentieri capita che un video che sembra progressivo contenga anche
|
|
alcune brevi parti di telecine miscelate. A meno che tu non sia sicuro,
|
|
conviene trattare il video come
|
|
<link linkend="menc-feat-telecine-encode-mixedpt">progressivo e telecine miscelati</link>.
|
|
Il calo di prestazioni è piccolo
|
|
<link linkend="menc-feat-telecine-footnotes">[3]</link>.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-encode-telecined">
|
|
<title>Telecine</title>
|
|
|
|
<para>
|
|
Il telecine può essere invertito per ricavare il contenuto originario a
|
|
24000/1001 usando un processo conosciuto come telecine-inverso.
|
|
<application>MPlayer</application> include vari filtri per ottenere ciò;
|
|
il filtro migliore, <option>pullup</option>, è descritto nella sezione
|
|
<link linkend="menc-feat-telecine-encode-mixedpt">progressivo e telecine
|
|
miscelati</link>.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-encode-interlaced">
|
|
<title>Interlacciato</title>
|
|
|
|
<para>
|
|
Nella maggior parte dei casi reali non è possibile ricavare un video
|
|
progressivo completo da contenuto interlacciato. L'unico modo di farlo senza
|
|
perdere metà della risoluzione verticale è raddoppiare il framerate e provare
|
|
ad "indovinare" quello che forma le linee corrispondenti per ogni campo
|
|
(questo ha delle controindicazioni - vedi il metodo 3).
|
|
</para>
|
|
|
|
<orderedlist>
|
|
<listitem><para>
|
|
Codifica il video in forma interlacciata. Normalmente l'interlacciatura fa a
|
|
pugni con l'abilità del codificatore di comprimere bene, ma
|
|
<systemitem class="library">libavcodec</systemitem> ha due parametri
|
|
appositamente per gestire un pochino meglio il video interlacciato:
|
|
<option>ildct</option> e <option>ilme</option>. Inoltre viene caldamente
|
|
consigliato l'utilizzo di <option>mbd=2</option>
|
|
<link linkend="menc-feat-telecine-footnotes">[2] </link> poiché
|
|
codificherà i macroblocchi come non interlacciati in posti dove non c'è
|
|
movimento. Nota che <option>-ofps</option> qui NON serve.
|
|
<screen>mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2</screen>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Usa un filtro di de-interlacciatura prima della codifica. Ci sono vari filtri
|
|
disponibili tra cui scegliere, ognuno dei quali con i suoi pro e i suoi
|
|
contro. Controlla <option>mplayer -pphelp</option> e
|
|
<option>mplayer -vf help</option> per vedere cosa c'è disponibile
|
|
(fa in grep per "deint"), leggi il <ulink url="http://guru.multimedia.cx/deinterlacing-filters/">confronto tra filtri di deinterlacciatura
|
|
(Deinterlacing filters comparison)</ulink> di Michael Niedermayer, e cerca
|
|
nelle <ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html">
|
|
mailing list di MPlayer</ulink> per trovare discussioni riguardanti i vari
|
|
filtri.
|
|
Di nuovo il framerate non cambia, indi niente <option>-ofps</option>.
|
|
Inoltre, la deinterlacciatura dovrebbe essere eseguita dopo il ritaglio
|
|
<link linkend="menc-feat-telecine-footnotes">[1]</link> e prima del
|
|
ridimensionamento.
|
|
<screen>mencoder dvd://1 -oac copy -vf yadif -ovc lavc</screen>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Sfortunatamente, quest'opzione non funziona bene con
|
|
<application>MEncoder</application>; dovrebbe funzionar bene con
|
|
<application>MEncoder G2</application>, ma ancora non esiste. Puoi subire
|
|
dei crash. Tuttavia l'obiettivo di <option>-vf tfields</option> è di
|
|
generare un fotogramma completo da ogni campo, portando il framerate a
|
|
60000/1001. Il vantaggio di questo approccio è che non viene mai perso alcun
|
|
dato; d'altro canto, dato che ogni fotogramma deriva da un solo campo, le
|
|
righe mancanti devono essere interpolate in qualche modo. Non ci sono metodi
|
|
veramente validi per ricreare i dati mancanti, quindi il risultato apparirà
|
|
molto simile a quando vengono usati dei filtri di deinterlacciatura.
|
|
La generazione delle righe che mancano è foriera di altri problemi,
|
|
solamente per il fatto che i dati sono raddoppiati. Conseguentemente per
|
|
mantenere la qualità si rendono necessari bitrate più elevati e viene usata
|
|
una maggior potenza di CPU sia per la codifica che la decodifica.
|
|
tfields ha varie opzioni su come generare le righe mancanti di ogni
|
|
fotogramma. Se usi questo metodo, fai riferimento al manuale, e scegli
|
|
l'opzione che può andar meglio per il tuo materiale sorgente. Fai attenzione
|
|
che usando <option>tfields</option> <emphasis role="bold">devi</emphasis>
|
|
specificare sia <option>-fps</option> che <option>-ofps</option> pari al
|
|
doppio della sorgente originaria.
|
|
<screen>
|
|
mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \
|
|
-fps 60000/1001 -ofps 60000/1001<!--
|
|
--></screen>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Se conti di ridurre drasticamente le dimensioni puoi estrarre e decodificare
|
|
sono uno dei due campi. Perderai di sicuro metà della risoluzione verticale,
|
|
ma se pensi di ridurla almeno a 1/2 dell'originale, la perdità non sarà poi
|
|
molta. Il risultato sarà un file progressivo a 30000/1001 fotogrammi per
|
|
secondo. La procedura è utilizzare <option>-vf field</option>, poi crop
|
|
<link linkend="menc-feat-telecine-footnotes">[1]</link> e scale in modo
|
|
corretto. Ricorda che dovrai correggere scale per compensare la risoluzione
|
|
verticale dimezzata.
|
|
<screen>mencoder dvd://1 -oac copy -vf field=0 -ovc lavc</screen>
|
|
</para></listitem>
|
|
</orderedlist>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-encode-mixedpt">
|
|
<title>Progressivo e telecine miscelati</title>
|
|
|
|
<para>
|
|
Per poter portare un video progressivo e telecine miscelati in un video
|
|
completamente progressivo, le parti in telecine devono essere passate in
|
|
telecine inverso. Ci son tre modi per ottenere ciò, e sono descritti qui sotto.
|
|
Nota che dovresti <emphasis role="bold">sempre</emphasis> effettuare il
|
|
telecine inverso prima di ogni ridimensionamento; a meno che tu non sappia
|
|
davvero cosa tu stia facendo, applica il telecine inverso anche prima del ritaglio (crop)
|
|
<link linkend="menc-feat-telecine-footnotes">[1]</link>.
|
|
In questo caso serve <option>-ofps 24000/1001</option> perché il video in
|
|
uscita sarà a 24000/1001 fotogrammi al secondo.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
<option>-vf pullup</option> is designed to inverse-telecine
|
|
telecined material while leaving progressive data alone. In order to
|
|
work properly, <option>pullup</option> <emphasis role="bold">must</emphasis>
|
|
be followed by the <option>softskip</option> filter or
|
|
else <application>MEncoder</application> will crash.
|
|
<option>pullup</option> is, however, the cleanest and most
|
|
accurate method available for encoding both telecine and
|
|
"mixed progressive and telecine".
|
|
<screen>
|
|
mencoder dvd://1 -oac copy -vf pullup,softskip
|
|
-ovc lavc -ofps 24000/1001<!--
|
|
--></screen>
|
|
</para></listitem>
|
|
<listitem><para>
|
|
An older method
|
|
is to, rather than inverse-telecine the telecined parts, telecine
|
|
the non-telecined parts and then inverse-telecine the whole
|
|
video. Sound confusing? softpulldown is a filter that goes through
|
|
a video and makes the entire file telecined. If we follow
|
|
softpulldown with either <option>detc</option> or
|
|
<option>ivtc</option>, the final result will be entirely
|
|
progressive. <option>-ofps 24000/1001</option> is needed.
|
|
<screen>
|
|
mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
|
|
</screen>
|
|
</para></listitem>
|
|
|
|
<listitem><para>
|
|
I have not used <option>-vf filmdint</option> myself, but here is what
|
|
D Richard Felker III has to say:
|
|
|
|
<blockquote><para>It is OK, but IMO it tries to deinterlace rather
|
|
than doing inverse telecine too often (much like settop DVD
|
|
players & progressive TVs) which gives ugly flickering and
|
|
other artifacts. If you are going to use it, you at least need to
|
|
spend some time tuning the options and watching the output first
|
|
to make sure it is not messing up.
|
|
</para></blockquote>
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-telecine-encode-mixedpi">
|
|
<title>Mixed progressive and interlaced</title>
|
|
|
|
<para>
|
|
There are two options for dealing with this category, each of
|
|
which is a compromise. You should decide based on the
|
|
duration/location of each type.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Treat it as progressive. The interlaced parts will look interlaced,
|
|
and some of the interlaced fields will have to be dropped, resulting
|
|
in a bit of uneven jumpiness. You can use a postprocessing filter if
|
|
you want to, but it may slightly degrade the progressive parts.
|
|
</para>
|
|
|
|
<para>
|
|
This option should definitely not be used if you want to eventually
|
|
display the video on an interlaced device (with a TV card, for
|
|
example). If you have interlaced frames in a 24000/1001 frames per
|
|
second video, they will be telecined along with the progressive
|
|
frames. Half of the interlaced "frames" will be displayed for three
|
|
fields' duration (3/(60000/1001) seconds), resulting in a flicking
|
|
"jump back in time" effect that looks quite bad. If you
|
|
even attempt this, you <emphasis role="bold">must</emphasis> use a
|
|
deinterlacing filter like <option>lb</option> or
|
|
<option>l5</option>.
|
|
</para>
|
|
|
|
<para>
|
|
It may also be a bad idea for progressive display, too. It will drop
|
|
pairs of consecutive interlaced fields, resulting in a discontinuity
|
|
that can be more visible than with the second method, which shows
|
|
some progressive frames twice. 30000/1001 frames per second interlaced
|
|
video is already a bit choppy because it really should be shown at
|
|
60000/1001 fields per second, so the duplicate frames do not stand out as
|
|
much.
|
|
</para>
|
|
|
|
<para>
|
|
Either way, it is best to consider your content and how you intend to
|
|
display it. If your video is 90% progressive and you never intend to
|
|
show it on a TV, you should favor a progressive approach. If it is
|
|
only half progressive, you probably want to encode it as if it is all
|
|
interlaced.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><para>
|
|
Treat it as interlaced. Some frames of the progressive parts will
|
|
need to be duplicated, resulting in uneven jumpiness. Again,
|
|
deinterlacing filters may slightly degrade the progressive parts.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-telecine-footnotes">
|
|
<title>Footnotes</title>
|
|
|
|
<orderedlist>
|
|
<listitem>
|
|
<formalpara>
|
|
<title>About cropping:</title>
|
|
<para>
|
|
Video data on DVDs are stored in a format called YUV 4:2:0. In YUV
|
|
video, luma ("brightness") and chroma ("color")
|
|
are stored separately. Because the human eye is somewhat less
|
|
sensitive to color than it is to brightness, in a YUV 4:2:0 picture
|
|
there is only one chroma pixel for every four luma pixels. In a
|
|
progressive picture, each square of four luma pixels (two on each
|
|
side) has one common chroma pixel. You must crop progressive YUV
|
|
4:2:0 to even resolutions, and use even offsets. For example,
|
|
<option>crop=716:380:2:26</option> is OK but
|
|
<option>crop=716:380:3:26 </option> is not.
|
|
</para>
|
|
</formalpara>
|
|
|
|
<para>
|
|
When you are dealing with interlaced YUV 4:2:0, the situation is a
|
|
bit more complicated. Instead of every four luma pixels in the
|
|
<emphasis>frame</emphasis> sharing a chroma pixel, every four luma
|
|
pixels in each <emphasis> field</emphasis> share a chroma
|
|
pixel. When fields are interlaced to form a frame, each scanline is
|
|
one pixel high. Now, instead of all four luma pixels being in a
|
|
square, there are two pixels side-by-side, and the other two pixels
|
|
are side-by-side two scanlines down. The two luma pixels in the
|
|
intermediate scanline are from the other field, and so share a
|
|
different chroma pixel with two luma pixels two scanlines away. All
|
|
this confusion makes it necessary to have vertical crop dimensions
|
|
and offsets be multiples of four. Horizontal can stay even.
|
|
</para>
|
|
|
|
<para>
|
|
For telecined video, I recommend that cropping take place after
|
|
inverse telecining. Once the video is progressive you only need to
|
|
crop by even numbers. If you really want to gain the slight speedup
|
|
that cropping first may offer, you must crop vertically by multiples
|
|
of four or else the inverse-telecine filter will not have proper data.
|
|
</para>
|
|
|
|
<para>
|
|
For interlaced (not telecined) video, you must always crop
|
|
vertically by multiples of four unless you use <option>-vf
|
|
field</option> before cropping.
|
|
</para>
|
|
</listitem>
|
|
|
|
<listitem><formalpara>
|
|
<title>About encoding parameters and quality:</title>
|
|
<para>
|
|
Just because I recommend <option>mbd=2</option> here does not mean it
|
|
should not be used elsewhere. Along with <option>trell</option>,
|
|
<option>mbd=2</option> is one of the two
|
|
<systemitem class="library">libavcodec</systemitem> options that
|
|
increases quality the most, and you should always use at least those
|
|
two unless the drop in encoding speed is prohibitive (e.g. realtime
|
|
encoding). There are many other options to
|
|
<systemitem class="library">libavcodec</systemitem> that increase
|
|
encoding quality (and decrease encoding speed) but that is beyond
|
|
the scope of this document.
|
|
</para>
|
|
</formalpara></listitem>
|
|
|
|
<listitem><formalpara>
|
|
<title>About the performance of pullup:</title>
|
|
<para>
|
|
It is safe to use <option>pullup</option> (along with <option>softskip
|
|
</option>) on progressive video, and is usually a good idea unless
|
|
the source has been definitively verified to be entirely progressive.
|
|
The performace loss is small for most cases. On a bare-minimum encode,
|
|
<option>pullup</option> causes <application>MEncoder</application> to
|
|
be 50% slower. Adding sound processing and advanced <option>lavcopts
|
|
</option> overshadows that difference, bringing the performance
|
|
decrease of using <option>pullup</option> down to 2%.
|
|
</para>
|
|
</formalpara></listitem>
|
|
</orderedlist>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-enc-libavcodec">
|
|
<title>Encoding with the <systemitem class="library">libavcodec</systemitem>
|
|
codec family</title>
|
|
|
|
<para>
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>
|
|
provides simple encoding to a lot of interesting video and audio formats.
|
|
You can encode to the following codecs (more or less up to date):
|
|
</para>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-enc-libavcodec-video-codecs">
|
|
<title><systemitem class="library">libavcodec</systemitem>'s
|
|
video codecs</title>
|
|
|
|
<para>
|
|
<informaltable frame="all">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row><entry>Video codec name</entry><entry>Description</entry></row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>mjpeg</entry>
|
|
<entry>Motion JPEG</entry>
|
|
</row>
|
|
<row>
|
|
<entry>ljpeg</entry>
|
|
<entry>lossless JPEG</entry>
|
|
</row>
|
|
<row>
|
|
<entry>jpegls</entry>
|
|
<entry>JPEG LS</entry>
|
|
</row>
|
|
<row>
|
|
<entry>targa</entry>
|
|
<entry>Targa image</entry>
|
|
</row>
|
|
<row>
|
|
<entry>gif</entry>
|
|
<entry>GIF image</entry>
|
|
</row>
|
|
<row>
|
|
<entry>bmp</entry>
|
|
<entry>BMP image</entry>
|
|
</row>
|
|
<row>
|
|
<entry>png</entry>
|
|
<entry>PNG image</entry>
|
|
</row>
|
|
<row>
|
|
<entry>h261</entry>
|
|
<entry>H.261</entry>
|
|
</row>
|
|
<row>
|
|
<entry>h263</entry>
|
|
<entry>H.263 </entry>
|
|
</row>
|
|
<row>
|
|
<entry>h263p</entry>
|
|
<entry>H.263+</entry>
|
|
</row>
|
|
<row>
|
|
<entry>mpeg4</entry>
|
|
<entry>ISO standard MPEG-4 (DivX, Xvid compatible)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>msmpeg4</entry>
|
|
<entry>pre-standard MPEG-4 variant by MS, v3 (AKA DivX3)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>msmpeg4v2</entry>
|
|
<entry>pre-standard MPEG-4 by MS, v2 (used in old ASF files)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>wmv1</entry>
|
|
<entry>Windows Media Video, version 1 (AKA WMV7)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>wmv2</entry>
|
|
<entry>Windows Media Video, version 2 (AKA WMV8)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>rv10</entry>
|
|
<entry>RealVideo 1.0</entry>
|
|
</row>
|
|
<row>
|
|
<entry>rv20</entry>
|
|
<entry>RealVideo 2.0</entry>
|
|
</row>
|
|
<row>
|
|
<entry>mpeg1video</entry>
|
|
<entry>MPEG-1 video</entry>
|
|
</row>
|
|
<row>
|
|
<entry>mpeg2video</entry>
|
|
<entry>MPEG-2 video</entry>
|
|
</row>
|
|
<row>
|
|
<entry>huffyuv</entry>
|
|
<entry>lossless compression</entry>
|
|
</row>
|
|
<row>
|
|
<entry>ffvhuff</entry>
|
|
<entry>FFmpeg modified huffyuv lossless</entry>
|
|
</row>
|
|
<row>
|
|
<entry>asv1</entry>
|
|
<entry>ASUS Video v1</entry>
|
|
</row>
|
|
<row>
|
|
<entry>asv2</entry>
|
|
<entry>ASUS Video v2</entry>
|
|
</row>
|
|
<row>
|
|
<entry>ffv1</entry>
|
|
<entry>FFmpeg's lossless video codec</entry>
|
|
</row>
|
|
<row>
|
|
<entry>svq1</entry>
|
|
<entry>Sorenson video 1</entry>
|
|
</row>
|
|
<row>
|
|
<entry>flv</entry>
|
|
<entry>Sorenson H.263 used in Flash Video</entry>
|
|
</row>
|
|
<row>
|
|
<entry>flashsv</entry>
|
|
<entry>Flash Screen Video</entry>
|
|
</row>
|
|
<row>
|
|
<entry>dvvideo</entry>
|
|
<entry>Sony Digital Video</entry>
|
|
</row>
|
|
<row>
|
|
<entry>snow</entry>
|
|
<entry>FFmpeg's experimental wavelet-based codec</entry>
|
|
</row>
|
|
<row>
|
|
<entry>zbmv</entry>
|
|
<entry>Zip Blocks Motion Video</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
The first column contains the codec names that should be passed after the
|
|
<literal>vcodec</literal> config,
|
|
like: <option>-lavcopts vcodec=msmpeg4</option>
|
|
</para>
|
|
|
|
<informalexample><para>
|
|
An example with MJPEG compression:
|
|
<screen>
|
|
mencoder dvd://2 -o <replaceable>title2.avi</replaceable> -ovc lavc -lavcopts vcodec=mjpeg -oac copy
|
|
</screen>
|
|
</para></informalexample>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-enc-libavcodec-audio-codecs">
|
|
<title><systemitem class="library">libavcodec</systemitem>'s
|
|
audio codecs</title>
|
|
|
|
<para>
|
|
<informaltable frame="all">
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row><entry>Audio codec name</entry><entry>Description</entry></row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>mp2</entry>
|
|
<entry>MPEG Layer 2</entry>
|
|
</row>
|
|
<row>
|
|
<entry>ac3</entry>
|
|
<entry>AC-3, AKA Dolby Digital</entry>
|
|
</row>
|
|
<row>
|
|
<entry>adpcm_ima_wav</entry>
|
|
<entry>IMA adaptive PCM (4 bits per sample, 4:1 compression)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>sonic</entry>
|
|
<entry>experimental FFmpeg lossy codec</entry>
|
|
</row>
|
|
<row>
|
|
<entry>sonicls</entry>
|
|
<entry>experimental FFmpeg lossless codec</entry>
|
|
</row>
|
|
<row>
|
|
<entry>vorbis</entry>
|
|
<entry>Xiph Ogg Vorbis codec</entry>
|
|
</row>
|
|
<row>
|
|
<entry>wmav1</entry>
|
|
<entry>Windows Media Audio v1 codec</entry>
|
|
</row>
|
|
<row>
|
|
<entry>wmav2</entry>
|
|
<entry>Windows Media Audio v2 codec</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
The first column contains the codec names that should be passed after the
|
|
<literal>acodec</literal> option, like: <option>-lavcopts acodec=ac3</option>
|
|
</para>
|
|
|
|
<informalexample><para>
|
|
An example with AC-3 compression:
|
|
<screen>
|
|
mencoder dvd://2 -o <replaceable>title2.avi</replaceable> -oac lavc -lavcopts acodec=ac3 -ovc copy
|
|
</screen>
|
|
</para></informalexample>
|
|
|
|
<para>
|
|
Contrary to <systemitem class="library">libavcodec</systemitem>'s video
|
|
codecs, its audio codecs do not make a wise usage of the bits they are
|
|
given as they lack some minimal psychoacoustic model (if at all)
|
|
which most other codec implementations feature.
|
|
However, note that all these audio codecs are very fast and work
|
|
out-of-the-box everywhere <application>MEncoder</application> has been
|
|
compiled with <systemitem class="library">libavcodec</systemitem> (which
|
|
is the case most of time), and do not depend on external libraries.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-lavc-encoding-options">
|
|
<title>Encoding options of libavcodec</title>
|
|
|
|
<para>
|
|
Ideally, you would probably want to be able to just tell the encoder to switch
|
|
into "high quality" mode and move on.
|
|
That would probably be nice, but unfortunately hard to implement as different
|
|
encoding options yield different quality results depending on the source
|
|
material. That is because compression depends on the visual properties of the
|
|
video in question.
|
|
For example, anime and live action have very different properties and
|
|
thus require different options to obtain optimum encoding.
|
|
The good news is that some options should never be left out, like
|
|
<option>mbd=2</option>, <option>trell</option>, and <option>v4mv</option>.
|
|
See below for a detailed description of common encoding options.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<title>Options to adjust:</title>
|
|
<listitem><para>
|
|
<emphasis role="bold">vmax_b_frames</emphasis>: 1 or 2 is good, depending on
|
|
the movie.
|
|
Note that if you need to have your encode be decodable by DivX5, you
|
|
need to activate closed GOP support, using
|
|
<systemitem class="library">libavcodec</systemitem>'s <option>cgop</option>
|
|
option, but you need to deactivate scene detection, which
|
|
is not a good idea as it will hurt encode efficiency a bit.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vb_strategy=1</emphasis>: helps in high-motion scenes.
|
|
On some videos, vmax_b_frames may hurt quality, but vmax_b_frames=2 along
|
|
with vb_strategy=1 helps.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">dia</emphasis>: motion search range. Bigger is better
|
|
and slower.
|
|
Negative values are a completely different scale.
|
|
Good values are -1 for a fast encode, or 2-4 for slower.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">predia</emphasis>: motion search pre-pass.
|
|
Not as important as dia. Good values are 1 (default) to 4. Requires preme=2
|
|
to really be useful.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">cmp, subcmp, precmp</emphasis>: Comparison function for
|
|
motion estimation.
|
|
Experiment with values of 0 (default), 2 (hadamard), 3 (dct), and 6 (rate
|
|
distortion).
|
|
0 is fastest, and sufficient for precmp.
|
|
For cmp and subcmp, 2 is good for anime, and 3 is good for live action.
|
|
6 may or may not be slightly better, but is slow.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">last_pred</emphasis>: Number of motion predictors to
|
|
take from the previous frame.
|
|
1-3 or so help at little speed cost.
|
|
Higher values are slow for no extra gain.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">cbp, mv0</emphasis>: Controls the selection of
|
|
macroblocks. Small speed cost for small quality gain.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">qprd</emphasis>: adaptive quantization based on the
|
|
macroblock's complexity.
|
|
May help or hurt depending on the video and other options.
|
|
This can cause artifacts unless you set vqmax to some reasonably small value
|
|
(6 is good, maybe as low as 4); vqmin=1 should also help.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">qns</emphasis>: very slow, especially when combined
|
|
with qprd.
|
|
This option will make the encoder minimize noise due to compression
|
|
artifacts instead of making the encoded video strictly match the source.
|
|
Do not use this unless you have already tweaked everything else as far as it
|
|
will go and the results still are not good enough.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vqcomp</emphasis>: Tweak ratecontrol.
|
|
What values are good depends on the movie.
|
|
You can safely leave this alone if you want.
|
|
Reducing vqcomp puts more bits on low-complexity scenes, increasing it puts
|
|
them on high-complexity scenes (default: 0.5, range: 0-1. recommended range:
|
|
0.5-0.7).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vlelim, vcelim</emphasis>: Sets the single coefficient
|
|
elimination threshold for luminance and chroma planes.
|
|
These are encoded separately in all MPEG-like algorithms.
|
|
The idea behind these options is to use some good heuristics to determine
|
|
when the change in a block is less than the threshold you specify, and in
|
|
such a case, to just encode the block as "no change".
|
|
This saves bits and perhaps speeds up encoding. vlelim=-4 and vcelim=9
|
|
seem to be good for live movies, but seem not to help with anime;
|
|
when encoding animation, you should probably leave them unchanged.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">qpel</emphasis>: Quarter pixel motion estimation.
|
|
MPEG-4 uses half pixel precision for its motion search by default,
|
|
therefore this option comes with an overhead as more information will be
|
|
stored in the encoded file.
|
|
The compression gain/loss depends on the movie, but it is usually not very
|
|
effective on anime.
|
|
qpel always incurs a significant cost in CPU decode time (+25% in
|
|
practice).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">psnr</emphasis>: does not affect the actual encoding,
|
|
but writes a log file giving the type/size/quality of each frame, and
|
|
prints a summary of PSNR (Peak Signal to Noise Ratio) at the end.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
<itemizedlist>
|
|
<title>Options not recommended to play with:</title>
|
|
<listitem><para>
|
|
<emphasis role="bold">vme</emphasis>: The default is best.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">lumi_mask, dark_mask</emphasis>: Psychovisual adaptive
|
|
quantization.
|
|
You do not want to play with those options if you care about quality.
|
|
Reasonable values may be effective in your case, but be warned this is very
|
|
subjective.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">scplx_mask</emphasis>: Tries to prevent blocky
|
|
artifacts, but postprocessing is better.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-mpeg4-lavc-example-settings">
|
|
<title>Encoding setting examples</title>
|
|
|
|
<para>
|
|
The following settings are examples of different encoding
|
|
option combinations that affect the speed vs quality tradeoff
|
|
at the same target bitrate.
|
|
</para>
|
|
|
|
<para>
|
|
All the encoding settings were tested on a 720x448 @30000/1001 fps
|
|
video sample, the target bitrate was 900kbps, and the machine was an
|
|
AMD-64 3400+ at 2400 MHz in 64 bits mode.
|
|
Each encoding setting features the measured encoding speed (in
|
|
frames per second) and the PSNR loss (in dB) compared to the "very
|
|
high quality" setting.
|
|
Please understand that depending on your source, your machine type
|
|
and development advancements, you may get very different results.
|
|
</para>
|
|
|
|
<para>
|
|
<informaltable frame="all">
|
|
<tgroup cols="4">
|
|
<thead>
|
|
<row>
|
|
<entry>Description</entry>
|
|
<entry>Encoding options</entry>
|
|
<entry>speed (in fps)</entry>
|
|
<entry>Relative PSNR loss (in dB)</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>Very high quality</entry>
|
|
<entry><option>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</option></entry>
|
|
<entry>6fps</entry>
|
|
<entry>0dB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>High quality</entry>
|
|
<entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo</option></entry>
|
|
<entry>15fps</entry>
|
|
<entry>-0.5dB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Fast</entry>
|
|
<entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:turbo</option></entry>
|
|
<entry>42fps</entry>
|
|
<entry>-0.74dB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Realtime</entry>
|
|
<entry><option>vcodec=mpeg4:mbd=2:turbo</option></entry>
|
|
<entry>54fps</entry>
|
|
<entry>-1.21dB</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="custommatrices">
|
|
<title>Custom inter/intra matrices</title>
|
|
|
|
<para>
|
|
With this feature of
|
|
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>
|
|
you are able to set custom inter (I-frames/keyframes) and intra
|
|
(P-frames/predicted frames) matrices. It is supported by many of the codecs:
|
|
<systemitem>mpeg1video</systemitem> and <systemitem>mpeg2video</systemitem>
|
|
are reported as working.
|
|
</para>
|
|
|
|
<para>
|
|
A typical usage of this feature is to set the matrices preferred by the
|
|
<ulink url="http://www.kvcd.net/">KVCD</ulink> specifications.
|
|
</para>
|
|
|
|
<para>
|
|
The <emphasis role="bold">KVCD "Notch" Quantization Matrix:</emphasis>
|
|
</para>
|
|
|
|
<para>
|
|
Intra:
|
|
<screen>
|
|
8 9 12 22 26 27 29 34
|
|
9 10 14 26 27 29 34 37
|
|
12 14 18 27 29 34 37 38
|
|
22 26 27 31 36 37 38 40
|
|
26 27 29 36 39 38 40 48
|
|
27 29 34 37 38 40 48 58
|
|
29 34 37 38 40 48 58 69
|
|
34 37 38 40 48 58 69 79
|
|
</screen>
|
|
|
|
Inter:
|
|
<screen>
|
|
16 18 20 22 24 26 28 30
|
|
18 20 22 24 26 28 30 32
|
|
20 22 24 26 28 30 32 34
|
|
22 24 26 30 32 32 34 36
|
|
24 26 28 32 34 34 36 38
|
|
26 28 30 32 34 36 38 40
|
|
28 30 32 34 36 38 42 42
|
|
30 32 34 36 38 40 42 44
|
|
</screen>
|
|
</para>
|
|
|
|
<para>
|
|
Usage:
|
|
<screen>
|
|
mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replaceable> -oac copy -ovc lavc \
|
|
-lavcopts inter_matrix=...:intra_matrix=...
|
|
</screen>
|
|
</para>
|
|
|
|
<para>
|
|
<screen>
|
|
mencoder <replaceable>input.avi</replaceable> -ovc lavc -lavcopts \
|
|
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,\
|
|
12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,\
|
|
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79\
|
|
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,\
|
|
28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,\
|
|
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg
|
|
</screen>
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-dvd-mpeg4-example">
|
|
<title>Example</title>
|
|
|
|
<para>
|
|
So, you have just bought your shiny new copy of Harry Potter and the Chamber
|
|
of Secrets (widescreen edition, of course), and you want to rip this DVD
|
|
so that you can add it to your Home Theatre PC. This is a region 1 DVD,
|
|
so it is NTSC. The example below will still apply to PAL, except you will
|
|
omit <option>-ofps 24000/1001</option> (because the output framerate is the
|
|
same as the input framerate), and of course the crop dimensions will be
|
|
different.
|
|
</para>
|
|
|
|
<para>
|
|
After running <option>mplayer dvd://1</option>, we follow the process
|
|
detailed in the section <link linkend="menc-feat-telecine">How to deal
|
|
with telecine and interlacing in NTSC DVDs</link> and discover that it is
|
|
24000/1001 fps progressive video, which means that we need not use an inverse
|
|
telecine filter, such as <option>pullup</option> or
|
|
<option>filmdint</option>.
|
|
</para>
|
|
|
|
<para id="menc-feat-dvd-mpeg4-example-crop">
|
|
Next, we want to determine the appropriate crop rectangle, so we use the
|
|
cropdetect filter:
|
|
<screen>mplayer dvd://1 -vf cropdetect</screen>
|
|
Make sure you seek to a fully filled frame (such as a bright scene,
|
|
past the opening credits and logos), and
|
|
you will see in <application>MPlayer</application>'s console output:
|
|
<screen>crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)</screen>
|
|
We then play the movie back with this filter to test its correctness:
|
|
<screen>mplayer dvd://1 -vf crop=720:362:0:58</screen>
|
|
And we see that it looks perfectly fine. Next, we ensure the width and
|
|
height are a multiple of 16. The width is fine, however the height is
|
|
not. Since we did not fail 7th grade math, we know that the nearest
|
|
multiple of 16 lower than 362 is 352.
|
|
</para>
|
|
|
|
<para>
|
|
We could just use <option>crop=720:352:0:58</option>, but it would be nice
|
|
to take a little off the top and a little off the bottom so that we
|
|
retain the center. We have shrunk the height by 10 pixels, but we do not
|
|
want to increase the y-offset by 5-pixels since that is an odd number and
|
|
will adversely affect quality. Instead, we will increase the y-offset by
|
|
4 pixels:
|
|
<screen>mplayer dvd://1 -vf crop=720:352:0:62</screen>
|
|
Another reason to shave pixels from both the top and the bottom is that we
|
|
ensure we have eliminated any half-black pixels if they exist. Note that if
|
|
your video is telecined, make sure the <option>pullup</option> filter (or
|
|
whichever inverse telecine filter you decide to use) appears in the filter
|
|
chain before you crop. If it is interlaced, deinterlace before cropping.
|
|
(If you choose to preserve the interlaced video, then make sure your
|
|
vertical crop offset is a multiple of 4.)
|
|
</para>
|
|
|
|
<para>
|
|
If you are really concerned about losing those 10 pixels, you might
|
|
prefer instead to scale the dimensions down to the nearest multiple of 16.
|
|
The filter chain would look like:
|
|
<screen>-vf crop=720:362:0:58,scale=720:352</screen>
|
|
Scaling the video down like this will mean that some small amount of
|
|
detail is lost, though it probably will not be perceptible. Scaling up will
|
|
result in lower quality (unless you increase the bitrate). Cropping
|
|
discards those pixels altogether. It is a tradeoff that you will want to
|
|
consider for each circumstance. For example, if the DVD video was made
|
|
for television, you might want to avoid vertical scaling, since the line
|
|
sampling corresponds to the way the content was originally recorded.
|
|
</para>
|
|
|
|
<para>
|
|
On inspection, we see that our movie has a fair bit of action and high
|
|
amounts of detail, so we pick 2400Kbit for our bitrate.
|
|
</para>
|
|
|
|
<para>
|
|
We are now ready to do the two pass encode. Pass one:
|
|
<screen>
|
|
mencoder dvd://1 -ofps 24000/1001 -oac copy -o <replaceable>Harry_Potter_2.avi</replaceable> -ovc lavc \
|
|
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=1 \
|
|
-vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2
|
|
</screen>
|
|
And pass two is the same, except that we specify <option>vpass=2</option>:
|
|
<screen>
|
|
mencoder dvd://1 -ofps 24000/1001 -oac copy -o <replaceable>Harry_Potter_2.avi</replaceable> -ovc lavc \
|
|
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=2 \
|
|
-vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2
|
|
</screen>
|
|
</para>
|
|
|
|
<para>
|
|
The options <option>v4mv:mbd=2:trell</option> will greatly increase the
|
|
quality at the expense of encoding time. There is little reason to leave
|
|
these options out when the primary goal is quality. The options
|
|
<option>cmp=3:subcmp=3</option> select a comparison function that
|
|
yields higher quality than the defaults. You might try experimenting with
|
|
this parameter (refer to the man page for the possible values) as
|
|
different functions can have a large impact on quality depending on the
|
|
source material. For example, if you find
|
|
<systemitem class="library">libavcodec</systemitem> produces too much
|
|
blocky artifacting, you could try selecting the experimental NSSE as
|
|
comparison function via <option>*cmp=10</option>.
|
|
</para>
|
|
|
|
<para>
|
|
For this movie, the resulting AVI will be 138 minutes long and nearly
|
|
3GB. And because you said that file size does not matter, this is a
|
|
perfectly acceptable size. However, if you had wanted it smaller, you
|
|
could try a lower bitrate. Increasing bitrates have diminishing
|
|
returns, so while we might clearly see an improvement from 1800Kbit to
|
|
2000Kbit, it might not be so noticeable above 2000Kbit. Feel
|
|
free to experiment until you are happy.
|
|
</para>
|
|
|
|
<para>
|
|
Because we passed the source video through a denoise filter, you may want
|
|
to add some of it back during playback. This, along with the
|
|
<option>spp</option> post-processing filter, drastically improves the
|
|
perception of quality and helps eliminate blocky artifacts in the video.
|
|
With <application>MPlayer</application>'s <option>autoq</option> option,
|
|
you can vary the amount of post-processing done by the spp filter
|
|
depending on available CPU. Also, at this point, you may want to apply
|
|
gamma and/or color correction to best suit your display. For example:
|
|
<screen>
|
|
mplayer <replaceable>Harry_Potter_2.avi</replaceable> -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3
|
|
</screen>
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-xvid">
|
|
<title>Encoding with the <systemitem class="library">Xvid</systemitem>
|
|
codec</title>
|
|
|
|
<para>
|
|
<systemitem class="library">Xvid</systemitem> is a free library for
|
|
encoding MPEG-4 ASP video streams.
|
|
Before starting to encode, you need to <link linkend="xvid">
|
|
set up <application>MEncoder</application> to support it</link>.
|
|
</para>
|
|
|
|
<para>
|
|
This guide mainly aims at featuring the same kind of information
|
|
as x264's encoding guide.
|
|
Therefore, please begin by reading
|
|
<link linkend="menc-feat-x264-encoding-options-intro">the first part</link>
|
|
of that guide.
|
|
</para>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-xvid-intro">
|
|
<title>What options should I use to get the best results?</title>
|
|
|
|
<para>
|
|
Please begin by reviewing the
|
|
<systemitem class="library">Xvid</systemitem> section of
|
|
<application>MPlayer</application>'s man page.
|
|
This section is intended to be a supplement to the man page.
|
|
</para>
|
|
|
|
<para>
|
|
The Xvid default settings are already a good tradeoff between
|
|
speed and quality, therefore you can safely stick to them if
|
|
the following section puzzles you.
|
|
</para>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-xvid-encoding-options">
|
|
<title>Encoding options of <systemitem class="library">Xvid</systemitem></title>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
<emphasis role="bold">vhq</emphasis>
|
|
This setting affects the macroblock decision algorithm, where the
|
|
higher the setting, the wiser the decision.
|
|
The default setting may be safely used for every encode, while
|
|
higher settings always help PSNR but are significantly slower.
|
|
Please note that a better PSNR does not necessarily mean
|
|
that the picture will look better, but tells you that it is
|
|
closer to the original.
|
|
Turning it off will noticeably speed up encoding; if speed is
|
|
critical for you, the tradeoff may be worth it.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">bvhq</emphasis>
|
|
This does the same job as vhq, but does it on B-frames.
|
|
It has a negligible impact on speed, and slightly improves quality
|
|
(around +0.1dB PSNR).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">max_bframes</emphasis>
|
|
A higher number of consecutive allowed B-frames usually improves
|
|
compressibility, although it may also lead to more blocking artifacts.
|
|
The default setting is a good tradeoff between compressibility and
|
|
quality, but you may increase it up to 3 if you are bitrate-starved.
|
|
You may also decrease it to 1 or 0 if you are aiming at perfect
|
|
quality, though in that case you should make sure your
|
|
target bitrate is high enough to ensure that the encoder does not
|
|
have to increase quantizers to reach it.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">bf_threshold</emphasis>
|
|
This controls the B-frame sensitivity of the encoder, where a higher
|
|
value leads to more B-frames being used (and vice versa).
|
|
This setting is to be used together with <option>max_bframes</option>;
|
|
if you are bitrate-starved, you should increase both
|
|
<option>max_bframes</option> and <option>bf_threshold</option>,
|
|
while you may increase <option>max_bframes</option> and reduce
|
|
<option>bf_threshold</option> so that the encoder may use more
|
|
B-frames in places that only <emphasis role="bold">really</emphasis>
|
|
need them.
|
|
A low number of <option>max_bframes</option> and a high value of
|
|
<option>bf_threshold</option> is probably not a wise choice as it
|
|
will force the encoder to put B-frames in places that would not
|
|
benefit from them, therefore reducing visual quality.
|
|
However, if you need to be compatible with standalone players that
|
|
only support old DivX profiles (which only supports up to 1
|
|
consecutive B-frame), this would be your only way to
|
|
increase compressibility through using B-frames.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">trellis</emphasis>
|
|
Optimizes the quantization process to get an optimal tradeoff
|
|
between PSNR and bitrate, which allows significant bit saving.
|
|
These bits will in return be spent elsewhere on the video,
|
|
raising overall visual quality.
|
|
You should always leave it on as its impact on quality is huge.
|
|
Even if you are looking for speed, do not disable it until you
|
|
have turned down <option>vhq</option> and all other more
|
|
CPU-hungry options to the minimum.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">hq_ac</emphasis>
|
|
Activates a better coefficient cost estimation method, which slightly
|
|
reduces filesize by around 0.15 to 0.19% (which corresponds to less
|
|
than 0.01dB PSNR increase), while having a negligible impact on speed.
|
|
It is therefore recommended to always leave it on.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">cartoon</emphasis>
|
|
Designed to better encode cartoon content, and has no impact on
|
|
speed as it just tunes the mode decision heuristics for this type
|
|
of content.
|
|
</para></listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">me_quality</emphasis>
|
|
This setting is to control the precision of the motion estimation.
|
|
The higher <option>me_quality</option>, the more
|
|
precise the estimation of the original motion will be, and the
|
|
better the resulting clip will capture the original motion.
|
|
</para>
|
|
<para>
|
|
The default setting is best in all cases;
|
|
thus it is not recommended to turn it down unless you are
|
|
really looking for speed, as all the bits saved by a good motion
|
|
estimation would be spent elsewhere, raising overall quality.
|
|
Therefore, do not go any lower than 5, and even that only as a last
|
|
resort.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">chroma_me</emphasis>
|
|
Improves motion estimation by also taking the chroma (color)
|
|
information into account, whereas <option>me_quality</option>
|
|
alone only uses luma (grayscale).
|
|
This slows down encoding by 5-10% but improves visual quality
|
|
quite a bit by reducing blocking effects and reduces filesize by
|
|
around 1.3%.
|
|
If you are looking for speed, you should disable this option before
|
|
starting to consider reducing <option>me_quality</option>.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">chroma_opt</emphasis>
|
|
Is intended to increase chroma image quality around pure
|
|
white/black edges, rather than improving compression.
|
|
This can help to reduce the "red stairs" effect.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">lumi_mask</emphasis>
|
|
Tries to give less bitrate to part of the picture that the
|
|
human eye cannot see very well, which should allow the encoder
|
|
to spend the saved bits on more important parts of the picture.
|
|
The quality of the encode yielded by this option highly depends
|
|
on personal preferences and on the type and monitor settings
|
|
used to watch it (typically, it will not look as good if it is
|
|
bright or if it is a TFT monitor).
|
|
</para></listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">qpel</emphasis>
|
|
Raise the number of candidate motion vectors by increasing
|
|
the precision of the motion estimation from halfpel to
|
|
quarterpel.
|
|
The idea is to find better motion vectors which will in return
|
|
reduce bitrate (hence increasing quality).
|
|
However, motion vectors with quarterpel precision require a
|
|
few extra bits to code, but the candidate vectors do not always
|
|
give (much) better results.
|
|
Quite often, the codec still spends bits on the extra precision,
|
|
but little or no extra quality is gained in return.
|
|
Unfortunately, there is no way to foresee the possible gains of
|
|
<option>qpel</option>, so you need to actually encode with and
|
|
without it to know for sure.
|
|
</para>
|
|
<para>
|
|
<option>qpel</option> can be almost double encoding time, and
|
|
requires as much as 25% more processing power to decode.
|
|
It is not supported by all standalone players.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">gmc</emphasis>
|
|
Tries to save bits on panning scenes by using a single motion
|
|
vector for the whole frame.
|
|
This almost always raises PSNR, but significantly slows down
|
|
encoding (as well as decoding).
|
|
Therefore, you should only use it when you have turned
|
|
<option>vhq</option> to the maximum.
|
|
<systemitem class="library">Xvid</systemitem>'s GMC is more
|
|
sophisticated than DivX's, but is only supported by few
|
|
standalone players.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-xvid-encoding-profiles">
|
|
<title>Encoding profiles</title>
|
|
|
|
<para>
|
|
Xvid supports encoding profiles through the <option>profile</option> option,
|
|
which are used to impose restrictions on the properties of the Xvid video
|
|
stream such that it will be playable on anything which supports the
|
|
chosen profile.
|
|
The restrictions relate to resolutions, bitrates and certain MPEG-4
|
|
features.
|
|
The following table shows what each profile supports.
|
|
</para>
|
|
|
|
<informaltable>
|
|
<tgroup cols="16" align="center">
|
|
<colspec colnum="1" colname="col1"/>
|
|
<colspec colnum="2" colname="col2"/>
|
|
<colspec colnum="3" colname="col3"/>
|
|
<colspec colnum="4" colname="col4"/>
|
|
<colspec colnum="5" colname="col5"/>
|
|
<colspec colnum="6" colname="col6"/>
|
|
<colspec colnum="7" colname="col7"/>
|
|
<colspec colnum="8" colname="col8"/>
|
|
<colspec colnum="9" colname="col9"/>
|
|
<colspec colnum="10" colname="col10"/>
|
|
<colspec colnum="11" colname="col11"/>
|
|
<colspec colnum="12" colname="col12"/>
|
|
<colspec colnum="13" colname="col13"/>
|
|
<colspec colnum="14" colname="col14"/>
|
|
<colspec colnum="15" colname="col15"/>
|
|
<colspec colnum="16" colname="col16"/>
|
|
<colspec colnum="17" colname="col17"/>
|
|
<spanspec spanname="spa2-5" namest="col2" nameend="col5"/>
|
|
<spanspec spanname="spa6-11" namest="col6" nameend="col11"/>
|
|
<spanspec spanname="spa12-17" namest="col12" nameend="col17"/>
|
|
<tbody>
|
|
<row>
|
|
<entry></entry>
|
|
<entry spanname="spa2-5">Simple</entry>
|
|
<entry spanname="spa6-11">Advanced Simple</entry>
|
|
<entry spanname="spa12-17">DivX</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Profile name</entry>
|
|
<entry>0</entry>
|
|
<entry>1</entry>
|
|
<entry>2</entry>
|
|
<entry>3</entry>
|
|
<entry>0</entry>
|
|
<entry>1</entry>
|
|
<entry>2</entry>
|
|
<entry>3</entry>
|
|
<entry>4</entry>
|
|
<entry>5</entry>
|
|
<entry>Handheld</entry>
|
|
<entry>Portable NTSC</entry>
|
|
<entry>Portable PAL</entry>
|
|
<entry>Home Theater NTSC</entry>
|
|
<entry>Home Theater PAL</entry>
|
|
<entry>HDTV</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Width [pixels]</entry>
|
|
<entry>176</entry>
|
|
<entry>176</entry>
|
|
<entry>352</entry>
|
|
<entry>352</entry>
|
|
<entry>176</entry>
|
|
<entry>176</entry>
|
|
<entry>352</entry>
|
|
<entry>352</entry>
|
|
<entry>352</entry>
|
|
<entry>720</entry>
|
|
<entry>176</entry>
|
|
<entry>352</entry>
|
|
<entry>352</entry>
|
|
<entry>720</entry>
|
|
<entry>720</entry>
|
|
<entry>1280</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Height [pixels]</entry>
|
|
<entry>144</entry>
|
|
<entry>144</entry>
|
|
<entry>288</entry>
|
|
<entry>288</entry>
|
|
<entry>144</entry>
|
|
<entry>144</entry>
|
|
<entry>288</entry>
|
|
<entry>288</entry>
|
|
<entry>576</entry>
|
|
<entry>576</entry>
|
|
<entry>144</entry>
|
|
<entry>240</entry>
|
|
<entry>288</entry>
|
|
<entry>480</entry>
|
|
<entry>576</entry>
|
|
<entry>720</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Frame rate [fps]</entry>
|
|
<entry>15</entry>
|
|
<entry>15</entry>
|
|
<entry>15</entry>
|
|
<entry>15</entry>
|
|
<entry>30</entry>
|
|
<entry>30</entry>
|
|
<entry>15</entry>
|
|
<entry>30</entry>
|
|
<entry>30</entry>
|
|
<entry>30</entry>
|
|
<entry>15</entry>
|
|
<entry>30</entry>
|
|
<entry>25</entry>
|
|
<entry>30</entry>
|
|
<entry>25</entry>
|
|
<entry>30</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Max average bitrate [kbps]</entry>
|
|
<entry>64</entry>
|
|
<entry>64</entry>
|
|
<entry>128</entry>
|
|
<entry>384</entry>
|
|
<entry>128</entry>
|
|
<entry>128</entry>
|
|
<entry>384</entry>
|
|
<entry>768</entry>
|
|
<entry>3000</entry>
|
|
<entry>8000</entry>
|
|
<entry>537.6</entry>
|
|
<entry>4854</entry>
|
|
<entry>4854</entry>
|
|
<entry>4854</entry>
|
|
<entry>4854</entry>
|
|
<entry>9708.4</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Peak average bitrate over 3 secs [kbps]</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>800</entry>
|
|
<entry>8000</entry>
|
|
<entry>8000</entry>
|
|
<entry>8000</entry>
|
|
<entry>8000</entry>
|
|
<entry>16000</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Max. B-frames</entry>
|
|
<entry>0</entry>
|
|
<entry>0</entry>
|
|
<entry>0</entry>
|
|
<entry>0</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>0</entry>
|
|
<entry>1</entry>
|
|
<entry>1</entry>
|
|
<entry>1</entry>
|
|
<entry>1</entry>
|
|
<entry>2</entry>
|
|
</row>
|
|
<row>
|
|
<entry>MPEG quantization</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>Adaptive quantization</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Interlaced encoding</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Quaterpixel</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>Global motion compensation</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry>X</entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
<entry></entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-xvid-example-settings">
|
|
<title>Encoding setting examples</title>
|
|
|
|
<para>
|
|
The following settings are examples of different encoding
|
|
option combinations that affect the speed vs quality tradeoff
|
|
at the same target bitrate.
|
|
</para>
|
|
|
|
<para>
|
|
All the encoding settings were tested on a 720x448 @30000/1001 fps
|
|
video sample, the target bitrate was 900kbps, and the machine was an
|
|
AMD-64 3400+ at 2400 MHz in 64 bits mode.
|
|
Each encoding setting features the measured encoding speed (in
|
|
frames per second) and the PSNR loss (in dB) compared to the "very
|
|
high quality" setting.
|
|
Please understand that depending on your source, your machine type
|
|
and development advancements, you may get very different results.
|
|
</para>
|
|
|
|
<informaltable frame="all">
|
|
<tgroup cols="4">
|
|
<thead>
|
|
<row><entry>Description</entry><entry>Encoding options</entry><entry>speed (in fps)</entry><entry>Relative PSNR loss (in dB)</entry></row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>Very high quality</entry>
|
|
<entry><option>chroma_opt:vhq=4:bvhq=1:quant_type=mpeg</option></entry>
|
|
<entry>16fps</entry>
|
|
<entry>0dB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>High quality</entry>
|
|
<entry><option>vhq=2:bvhq=1:chroma_opt:quant_type=mpeg</option></entry>
|
|
<entry>18fps</entry>
|
|
<entry>-0.1dB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Fast</entry>
|
|
<entry><option>turbo:vhq=0</option></entry>
|
|
<entry>28fps</entry>
|
|
<entry>-0.69dB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Realtime</entry>
|
|
<entry><option>turbo:nochroma_me:notrellis:max_bframes=0:vhq=0</option></entry>
|
|
<entry>38fps</entry>
|
|
<entry>-1.48dB</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-x264">
|
|
<title>Encoding with the
|
|
<systemitem class="library">x264</systemitem> codec</title>
|
|
|
|
<para>
|
|
<systemitem class="library">x264</systemitem> is a free library for
|
|
encoding H.264/AVC video streams.
|
|
Before starting to encode, you need to
|
|
<link linkend="codec-x264-encode">set up <application>MEncoder</application> to support it</link>.
|
|
</para>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-x264-encoding-options">
|
|
<title>Encoding options of x264</title>
|
|
|
|
<para>
|
|
Please begin by reviewing the
|
|
<systemitem class="library">x264</systemitem> section of
|
|
<application>MPlayer</application>'s man page.
|
|
This section is intended to be a supplement to the man page.
|
|
Here you will find quick hints about which options are most
|
|
likely to interest most people. The man page is more terse,
|
|
but also more exhaustive, and it sometimes offers much better
|
|
technical detail.
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-x264-encoding-options-intro">
|
|
<title>Introduction</title>
|
|
|
|
<para>
|
|
This guide considers two major categories of encoding options:
|
|
</para>
|
|
|
|
<orderedlist>
|
|
<listitem><para>
|
|
Options which mainly trade off encoding time vs. quality
|
|
</para></listitem>
|
|
<listitem><para>
|
|
Options which may be useful for fulfilling various personal
|
|
preferences and special requirements
|
|
</para></listitem>
|
|
</orderedlist>
|
|
|
|
<para>
|
|
Ultimately, only you can decide which options are best for your
|
|
purposes. The decision for the first class of options is the simplest:
|
|
you only have to decide whether you think the quality differences
|
|
justify the speed differences. For the second class of options,
|
|
preferences may be far more subjective, and more factors may be
|
|
involved. Note that some of the "personal preferences and special
|
|
requirements" options can still have large impacts on speed or quality,
|
|
but that is not what they are primarily useful for. A couple of the
|
|
"personal preference" options may even cause changes that look better
|
|
to some people, but look worse to others.
|
|
</para>
|
|
|
|
<para>
|
|
Before continuing, you need to understand that this guide uses only one
|
|
quality metric: global PSNR.
|
|
For a brief explanation of what PSNR is, see
|
|
<ulink url="http://en.wikipedia.org/wiki/PSNR">the Wikipedia article on PSNR</ulink>.
|
|
Global PSNR is the last PSNR number reported when you include
|
|
the <option>psnr</option> option in <option>x264encopts</option>.
|
|
Any time you read a claim about PSNR, one of the assumptions
|
|
behind the claim is that equal bitrates are used.
|
|
</para>
|
|
|
|
<para>
|
|
Nearly all of this guide's comments assume you are using two pass.
|
|
When comparing options, there are two major reasons for using
|
|
two pass encoding.
|
|
First, using two pass often gains around 1dB PSNR, which is a
|
|
very big difference.
|
|
Secondly, testing options by doing direct quality comparisons
|
|
with one pass encodes introduces a major confounding
|
|
factor: bitrate often varies significantly with each encode.
|
|
It is not always easy to tell whether quality changes are due
|
|
mainly to changed options, or if they mostly reflect essentially
|
|
random differences in the achieved bitrate.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-x264-encoding-options-speedvquality">
|
|
<title>Options which primarily affect speed and quality</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">subq</emphasis>:
|
|
Of the options which allow you to trade off speed for quality,
|
|
<option>subq</option> and <option>frameref</option> (see below) are usually
|
|
by far the most important.
|
|
If you are interested in tweaking either speed or quality, these
|
|
are the first options you should consider.
|
|
On the speed dimension, the <option>frameref</option> and
|
|
<option>subq</option> options interact with each other fairly
|
|
strongly.
|
|
Experience shows that, with one reference frame,
|
|
<option>subq=5</option> (the default setting) takes about 35% more time than
|
|
<option>subq=1</option>.
|
|
With 6 reference frames, the penalty grows to over 60%.
|
|
<option>subq</option>'s effect on PSNR seems fairly constant
|
|
regardless of the number of reference frames.
|
|
Typically, <option>subq=5</option> achieves 0.2-0.5 dB higher global
|
|
PSNR in comparison <option>subq=1</option>.
|
|
This is usually enough to be visible.
|
|
</para>
|
|
<para>
|
|
<option>subq=6</option> is slower and yields better quality at a reasonable
|
|
cost.
|
|
In comparison to <option>subq=5</option>, it usually gains 0.1-0.4 dB
|
|
global PSNR with speed costs varying from 25%-100%.
|
|
Unlike other levels of <option>subq</option>, the behavior of
|
|
<option>subq=6</option> does not depend much on <option>frameref</option>
|
|
and <option>me</option>. Instead, the effectiveness of <option>subq=6
|
|
</option> depends mostly upon the number of B-frames used. In normal
|
|
usage, this means <option>subq=6</option> has a large impact on both speed
|
|
and quality in complex, high motion scenes, but it may not have much effect
|
|
in low-motion scenes. Note that it is still recommended to always set
|
|
<option>bframes</option> to something other than zero (see below).
|
|
</para>
|
|
<para>
|
|
<option>subq=7</option> is the slowest, highest quality mode.
|
|
In comparison to <option>subq=6</option>, it usually gains 0.01-0.05 dB
|
|
global PSNR with speed costs varying from 15%-33%.
|
|
Since the tradeoff encoding time vs. quality is quite low, you should
|
|
only use it if you are after every bit saving and if encoding time is
|
|
not an issue.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">frameref</emphasis>:
|
|
<option>frameref</option> is set to 1 by default, but this
|
|
should not be taken to imply that it is reasonable to set it to 1.
|
|
Merely raising <option>frameref</option> to 2 gains around
|
|
0.15dB PSNR with a 5-10% speed penalty; this seems like a good tradeoff.
|
|
<option>frameref=3</option> gains around 0.25dB PSNR over
|
|
<option>frameref=1</option>, which should be a visible difference.
|
|
<option>frameref=3</option> is around 15% slower than
|
|
<option>frameref=1</option>.
|
|
Unfortunately, diminishing returns set in rapidly.
|
|
<option>frameref=6</option> can be expected to gain only
|
|
0.05-0.1 dB over <option>frameref=3</option> at an additional
|
|
15% speed penalty.
|
|
Above <option>frameref=6</option>, the quality gains are
|
|
usually very small (although you should keep in mind throughout
|
|
this whole discussion that it can vary quite a lot depending on your source).
|
|
In a fairly typical case, <option>frameref=12</option>
|
|
will improve global PSNR by a tiny 0.02dB over
|
|
<option>frameref=6</option>, at a speed cost of 15%-20%.
|
|
At such high <option>frameref</option> values, the only really
|
|
good thing that can be said is that increasing it even further will
|
|
almost certainly never <emphasis role="bold">harm</emphasis>
|
|
PSNR, but the additional quality benefits are barely even
|
|
measurable, let alone perceptible.
|
|
</para>
|
|
<note><title>Note:</title>
|
|
<para>
|
|
Raising <option>frameref</option> to unnecessarily high values
|
|
<emphasis role="bold">can</emphasis> and
|
|
<emphasis role="bold">usually does</emphasis>
|
|
hurt coding efficiency if you turn CABAC off.
|
|
With CABAC on (the default behavior), the possibility of setting
|
|
<option>frameref</option> "too high" currently seems too remote
|
|
to even worry about, and in the future, optimizations may remove
|
|
the possibility altogether.
|
|
</para></note>
|
|
<para>
|
|
If you care about speed, a reasonable compromise is to use low
|
|
<option>subq</option> and <option>frameref</option> values on
|
|
the first pass, and then raise them on the second pass.
|
|
Typically, this has a negligible negative effect on the final
|
|
quality: You will probably lose well under 0.1dB PSNR, which
|
|
should be much too small of a difference to see.
|
|
However, different values of <option>frameref</option> can
|
|
occasionally affect frametype decision.
|
|
Most likely, these are rare outlying cases, but if you want to
|
|
be pretty sure, consider whether your video has either
|
|
fullscreen repetitive flashing patterns or very large temporary
|
|
occlusions which might force an I-frame.
|
|
Adjust the first-pass <option>frameref</option> so it is large
|
|
enough to contain the duration of the flashing cycle (or occlusion).
|
|
For example, if the scene flashes back and forth between two images
|
|
over a duration of three frames, set the first pass
|
|
<option>frameref</option> to 3 or higher.
|
|
This issue is probably extremely rare in live action video material,
|
|
but it does sometimes come up in video game captures.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">me</emphasis>:
|
|
This option is for choosing the motion estimation search method.
|
|
Altering this option provides a straightforward quality-vs-speed
|
|
tradeoff. <option>me=dia</option> is only a few percent faster than
|
|
the default search, at a cost of under 0.1dB global PSNR. The
|
|
default setting (<option>me=hex</option>) is a reasonable tradeoff
|
|
between speed and quality. <option>me=umh</option> gains a little under
|
|
0.1dB global PSNR, with a speed penalty that varies depending on
|
|
<option>frameref</option>. At high values of
|
|
<option>frameref</option> (e.g. 12 or so), <option>me=umh</option>
|
|
is about 40% slower than the default <option> me=hex</option>. With
|
|
<option>frameref=3</option>, the speed penalty incurred drops to
|
|
25%-30%.
|
|
</para>
|
|
<para>
|
|
<option>me=esa</option> uses an exhaustive search that is too slow for
|
|
practical use.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">partitions=all</emphasis>:
|
|
This option enables the use of 8x4, 4x8 and 4x4 subpartitions in
|
|
predicted macroblocks (in addition to the default partitions).
|
|
Enabling it results in a fairly consistent
|
|
10%-15% loss of speed. This option is rather useless in source
|
|
containing only low motion, however in some high-motion source,
|
|
particularly source with lots of small moving objects, gains of
|
|
about 0.1dB can be expected.
|
|
</para></listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">bframes</emphasis>:
|
|
If you are used to encoding with other codecs, you may have found
|
|
that B-frames are not always useful.
|
|
In H.264, this has changed: there are new techniques and block
|
|
types that are possible in B-frames.
|
|
Usually, even a naive B-frame choice algorithm can have a
|
|
significant PSNR benefit.
|
|
It is interesting to note that using B-frames usually speeds up
|
|
the second pass somewhat, and may also speed up a single
|
|
pass encode if adaptive B-frame decision is turned off.
|
|
</para>
|
|
<para>
|
|
With adaptive B-frame decision turned off
|
|
(<option>x264encopts</option>'s <option>nob_adapt</option>),
|
|
the optimal value for this setting is usually no more than
|
|
<option>bframes=1</option>, or else high-motion scenes can suffer.
|
|
With adaptive B-frame decision on (the default behavior), it is
|
|
safe to use higher values; the encoder will reduce the use of
|
|
B-frames in scenes where they would hurt compression.
|
|
The encoder rarely chooses to use more than 3 or 4 B-frames;
|
|
setting this option any higher will have little effect.
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">b_adapt</emphasis>:
|
|
Note: This is on by default.
|
|
</para>
|
|
<para>
|
|
With this option enabled, the encoder will use a reasonably fast
|
|
decision process to reduce the number of B-frames used in scenes that
|
|
might not benefit from them as much.
|
|
You can use <option>b_bias</option> to tweak how B-frame-happy
|
|
the encoder is.
|
|
The speed penalty of adaptive B-frames is currently rather modest,
|
|
but so is the potential quality gain.
|
|
It usually does not hurt, however.
|
|
Note that this only affects speed and frametype decision on the
|
|
first pass.
|
|
<option>b_adapt</option> and <option>b_bias</option> have no
|
|
effect on subsequent passes.
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">b_pyramid</emphasis>:
|
|
You might as well enable this option if you are using >=2 B-frames;
|
|
as the man page says, you get a little quality improvement at no
|
|
speed cost.
|
|
Note that these videos cannot be read by libavcodec-based decoders
|
|
older than about March 5, 2005.
|
|
</para></listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">weight_b</emphasis>:
|
|
In typical cases, there is not much gain with this option.
|
|
However, in crossfades or fade-to-black scenes, weighted
|
|
prediction gives rather large bitrate savings.
|
|
In MPEG-4 ASP, a fade-to-black is usually best coded as a series
|
|
of expensive I-frames; using weighted prediction in B-frames
|
|
makes it possible to turn at least some of these into much smaller
|
|
B-frames.
|
|
Encoding time cost is minimal, as no extra decisions need to be made.
|
|
Also, contrary to what some people seem to guess, the decoder
|
|
CPU requirements are not much affected by weighted prediction,
|
|
all else being equal.
|
|
</para>
|
|
<para>
|
|
Unfortunately, the current adaptive B-frame decision algorithm
|
|
has a strong tendency to avoid B-frames during fades.
|
|
Until this changes, it may be a good idea to add
|
|
<option>nob_adapt</option> to your x264encopts, if you expect
|
|
fades to have a large effect in your particular video
|
|
clip.
|
|
</para>
|
|
</listitem>
|
|
<listitem id="menc-feat-x264-encoding-options-speedvquality-threads">
|
|
<para>
|
|
<emphasis role="bold">threads</emphasis>:
|
|
This option allows to spawn threads to encode in parallel on multiple CPUs.
|
|
You can manually select the number of threads to be created or, better, set
|
|
<option>threads=auto</option> and let
|
|
<systemitem class="library">x264</systemitem> detect how many CPUs are
|
|
available and pick an appropriate number of threads.
|
|
If you have a multi-processor machine, you should really consider using it
|
|
as it can to increase encoding speed linearly with the number of CPU cores
|
|
(about 94% per CPU core), with very little quality reduction (about 0.005dB
|
|
for dual processor, about 0.01dB for a quad processor machine).
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-x264-encoding-options-misc-preferences">
|
|
<title>Options pertaining to miscellaneous preferences</title>
|
|
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">Two pass encoding</emphasis>:
|
|
Above, it was suggested to always use two pass encoding, but there
|
|
are still reasons for not using it. For instance, if you are capturing
|
|
live TV and encoding in realtime, you are forced to use single-pass.
|
|
Also, one pass is obviously faster than two passes; if you use the
|
|
exact same set of options on both passes, two pass encoding is almost
|
|
twice as slow.
|
|
</para>
|
|
<para>
|
|
Still, there are very good reasons for using two pass encoding. For
|
|
one thing, single pass ratecontrol is not psychic, and it often makes
|
|
unreasonable choices because it cannot see the big picture. For example,
|
|
suppose you have a two minute long video consisting of two distinct
|
|
halves. The first half is a very high-motion scene lasting 60 seconds
|
|
which, in isolation, requires about 2500kbps in order to look decent.
|
|
Immediately following it is a much less demanding 60-second scene
|
|
that looks good at 300kbps. Suppose you ask for 1400kbps on the theory
|
|
that this is enough to accomodate both scenes. Single pass ratecontrol
|
|
will make a couple of "mistakes" in such a case. First of all, it
|
|
will target 1400kbps in both segments. The first segment may end up
|
|
heavily overquantized, causing it to look unacceptably and unreasonably
|
|
blocky. The second segment will be heavily underquantized; it may look
|
|
perfect, but the bitrate cost of that perfection will be completely
|
|
unreasonable. What is even harder to avoid is the problem at the
|
|
transition between the two scenes. The first seconds of the low motion
|
|
half will be hugely over-quantized, because the ratecontrol is still
|
|
expecting the kind of bitrate requirements it met in the first half
|
|
of the video. This "error period" of heavily over-quantized low motion
|
|
will look jarringly bad, and will actually use less than the 300kbps
|
|
it would have taken to make it look decent. There are ways to
|
|
mitigate the pitfalls of single-pass encoding, but they may tend to
|
|
increase bitrate misprediction.
|
|
</para>
|
|
<para>
|
|
Multipass ratecontrol can offer huge advantages over a single pass.
|
|
Using the statistics gathered from the first pass encode, the encoder
|
|
can estimate, with reasonable accuracy, the "cost" (in bits) of
|
|
encoding any given frame, at any given quantizer. This allows for
|
|
a much more rational, better planned allocation of bits between the
|
|
expensive (high-motion) and cheap (low-motion) scenes. See
|
|
<option>qcomp</option> below for some ideas on how to tweak this
|
|
allocation to your liking.
|
|
</para>
|
|
<para>
|
|
Moreover, two passes need not take twice as long as one pass. You can
|
|
tweak the options in the first pass for higher speed and lower quality.
|
|
If you choose your options well, you can get a very fast first pass.
|
|
The resulting quality in the second pass will be slightly lower because size
|
|
prediction is less accurate, but the quality difference is normally much
|
|
too small to be visible. Try, for example, adding
|
|
<option>subq=1:frameref=1</option> to the first pass
|
|
<option>x264encopts</option>. Then, on the second pass, use slower,
|
|
higher-quality options:
|
|
<option>subq=6:frameref=15:partitions=all:me=umh</option>
|
|
</para>
|
|
</listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Three pass encoding</emphasis>?
|
|
x264 offers the ability to make an arbitrary number of consecutive
|
|
passes. If you specify <option>pass=1</option> on the first pass,
|
|
then use <option>pass=3</option> on a subsequent pass, the subsequent
|
|
pass will both read the statistics from the previous pass, and write
|
|
its own statistics. An additional pass following this one will have
|
|
a very good base from which to make highly accurate predictions of
|
|
framesizes at a chosen quantizer. In practice, the overall quality
|
|
gain from this is usually close to zero, and quite possibly a third
|
|
pass will result in slightly worse global PSNR than the pass before
|
|
it. In typical usage, three passes help if you get either bad bitrate
|
|
prediction or bad looking scene transitions when using only two passes.
|
|
This is somewhat likely to happen on extremely short clips. There are
|
|
also a few special cases in which three (or more) passes are handy
|
|
for advanced users, but for brevity, this guide omits discussing those
|
|
special cases.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">qcomp</emphasis>:
|
|
<option>qcomp</option> trades off the number of bits allocated
|
|
to "expensive" high-motion versus "cheap" low-motion frames. At
|
|
one extreme, <option>qcomp=0</option> aims for true constant
|
|
bitrate. Typically this would make high-motion scenes look completely
|
|
awful, while low-motion scenes would probably look absolutely
|
|
perfect, but would also use many times more bitrate than they
|
|
would need in order to look merely excellent. At the other extreme,
|
|
<option>qcomp=1</option> achieves nearly constant quantization parameter
|
|
(QP). Constant QP does not look bad, but most people think it is more
|
|
reasonable to shave some bitrate off of the extremely expensive scenes
|
|
(where the loss of quality is not as noticeable) and reallocate it to
|
|
the scenes that are easier to encode at excellent quality.
|
|
<option>qcomp</option> is set to 0.6 by default, which may be slightly
|
|
low for many peoples' taste (0.7-0.8 are also commonly used).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">keyint</emphasis>:
|
|
<option>keyint</option> is solely for trading off file seekability against
|
|
coding efficiency. By default, <option>keyint</option> is set to 250. In
|
|
25fps material, this guarantees the ability to seek to within 10 seconds
|
|
precision. If you think it would be important and useful to be able to
|
|
seek within 5 seconds of precision, set <option>keyint=125</option>;
|
|
this will hurt quality/bitrate slightly. If you care only about quality
|
|
and not about seekability, you can set it to much higher values
|
|
(understanding that there are diminishing returns which may become
|
|
vanishingly low, or even zero). The video stream will still have seekable
|
|
points as long as there are some scene changes.
|
|
</para></listitem>
|
|
<listitem>
|
|
<para>
|
|
<emphasis role="bold">deblock</emphasis>:
|
|
This topic is going to be a bit controversial.
|
|
</para>
|
|
<para>
|
|
H.264 defines a simple deblocking procedure on I-blocks that uses
|
|
pre-set strengths and thresholds depending on the QP of the block
|
|
in question.
|
|
By default, high QP blocks are filtered heavily, and low QP blocks
|
|
are not deblocked at all.
|
|
The pre-set strengths defined by the standard are well-chosen and
|
|
the odds are very good that they are PSNR-optimal for whatever
|
|
video you are trying to encode.
|
|
The <option>deblock</option> allow you to specify offsets to the preset
|
|
deblocking thresholds.
|
|
</para>
|
|
<para>
|
|
Many people seem to think it is a good idea to lower the deblocking
|
|
filter strength by large amounts (say, -3).
|
|
This is however almost never a good idea, and in most cases,
|
|
people who are doing this do not understand very well how
|
|
deblocking works by default.
|
|
</para>
|
|
<para>
|
|
The first and most important thing to know about the in-loop
|
|
deblocking filter is that the default thresholds are almost always
|
|
PSNR-optimal.
|
|
In the rare cases that they are not optimal, the ideal offset is
|
|
plus or minus 1.
|
|
Adjusting deblocking parameters by a larger amount is almost
|
|
guaranteed to hurt PSNR.
|
|
Strengthening the filter will smear more details; weakening the
|
|
filter will increase the appearance of blockiness.
|
|
</para>
|
|
<para>
|
|
It is definitely a bad idea to lower the deblocking thresholds if
|
|
your source is mainly low in spacial complexity (i.e., not a lot
|
|
of detail or noise).
|
|
The in-loop filter does a rather excellent job of concealing
|
|
the artifacts that occur.
|
|
If the source is high in spacial complexity, however, artifacts
|
|
are less noticeable.
|
|
This is because the ringing tends to look like detail or noise.
|
|
Human visual perception easily notices when detail is removed,
|
|
but it does not so easily notice when the noise is wrongly
|
|
represented.
|
|
When it comes to subjective quality, noise and detail are somewhat
|
|
interchangeable.
|
|
By lowering the deblocking filter strength, you are most likely
|
|
increasing error by adding ringing artifacts, but the eye does
|
|
not notice because it confuses the artifacts with detail.
|
|
</para>
|
|
<para>
|
|
This <emphasis role="bold">still</emphasis> does not justify
|
|
lowering the deblocking filter strength, however.
|
|
You can generally get better quality noise from postprocessing.
|
|
If your H.264 encodes look too blurry or smeared, try playing with
|
|
<option>-vf noise</option> when you play your encoded movie.
|
|
<option>-vf noise=8a:4a</option> should conceal most mild
|
|
artifacting.
|
|
It will almost certainly look better than the results you
|
|
would have gotten just by fiddling with the deblocking filter.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-x264-example-settings">
|
|
<title>Encoding setting examples</title>
|
|
|
|
<para>
|
|
The following settings are examples of different encoding
|
|
option combinations that affect the speed vs quality tradeoff
|
|
at the same target bitrate.
|
|
</para>
|
|
|
|
<para>
|
|
All the encoding settings were tested on a 720x448 @30000/1001 fps
|
|
video sample, the target bitrate was 900kbps, and the machine was an
|
|
AMD-64 3400+ at 2400 MHz in 64 bits mode.
|
|
Each encoding setting features the measured encoding speed (in
|
|
frames per second) and the PSNR loss (in dB) compared to the "very
|
|
high quality" setting.
|
|
Please understand that depending on your source, your machine type
|
|
and development advancements, you may get very different results.
|
|
</para>
|
|
|
|
<informaltable frame="all">
|
|
<tgroup cols="4">
|
|
<thead>
|
|
<row>
|
|
<entry>Description</entry>
|
|
<entry>Encoding options</entry>
|
|
<entry>speed (in fps)</entry>
|
|
<entry>Relative PSNR loss (in dB)</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>Very high quality</entry>
|
|
<entry><option>subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid:weight_b</option></entry>
|
|
<entry>6fps</entry>
|
|
<entry>0dB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>High quality</entry>
|
|
<entry><option>subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b</option></entry>
|
|
<entry>13fps</entry>
|
|
<entry>-0.89dB</entry>
|
|
</row>
|
|
<row>
|
|
<entry>Fast</entry>
|
|
<entry><option>subq=4:bframes=2:b_pyramid:weight_b</option></entry>
|
|
<entry>17fps</entry>
|
|
<entry>-1.48dB</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-video-for-windows">
|
|
<title>
|
|
Encoding with the <systemitem class="library">Video For Windows</systemitem>
|
|
codec family
|
|
</title>
|
|
|
|
<para>
|
|
Video for Windows provides simple encoding by means of binary video codecs.
|
|
You can encode with the following codecs (if you have more, please tell us!)
|
|
</para>
|
|
|
|
<para>
|
|
Note that support for this is very experimental and some codecs may not work
|
|
correctly. Some codecs will only work in certain colorspaces, try
|
|
<option>-vf format=bgr24</option> and <option>-vf format=yuy2</option>
|
|
if a codec fails or gives wrong output.
|
|
</para>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-enc-vfw-video-codecs">
|
|
<title>Video for Windows supported codecs</title>
|
|
|
|
<para>
|
|
<informaltable frame="all">
|
|
<tgroup cols="4">
|
|
<thead>
|
|
<row>
|
|
<entry>Video codec file name</entry>
|
|
<entry>Description (FourCC)</entry>
|
|
<entry>md5sum</entry>
|
|
<entry>Comment</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>aslcodec_vfw.dll</entry>
|
|
<entry>Alparysoft lossless codec vfw (ASLC)</entry>
|
|
<entry>608af234a6ea4d90cdc7246af5f3f29a</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>avimszh.dll</entry>
|
|
<entry>AVImszh (MSZH)</entry>
|
|
<entry>253118fe1eedea04a95ed6e5f4c28878</entry>
|
|
<entry>needs <option>-vf format</option></entry>
|
|
</row>
|
|
<row>
|
|
<entry>avizlib.dll</entry>
|
|
<entry>AVIzlib (ZLIB)</entry>
|
|
<entry>2f1cc76bbcf6d77d40d0e23392fa8eda</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>divx.dll</entry>
|
|
<entry>DivX4Windows-VFW</entry>
|
|
<entry>acf35b2fc004a89c829531555d73f1e6</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>huffyuv.dll</entry>
|
|
<entry>HuffYUV (lossless) (HFYU)</entry>
|
|
<entry>b74695b50230be4a6ef2c4293a58ac3b</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>iccvid.dll</entry>
|
|
<entry>Cinepak Video (cvid)</entry>
|
|
<entry>cb3b7ee47ba7dbb3d23d34e274895133</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>icmw_32.dll</entry>
|
|
<entry>Motion Wavelets (MWV1)</entry>
|
|
<entry>c9618a8fc73ce219ba918e3e09e227f2</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>jp2avi.dll</entry>
|
|
<entry>ImagePower MJPEG2000 (IPJ2)</entry>
|
|
<entry>d860a11766da0d0ea064672c6833768b</entry>
|
|
<entry><option>-vf flip</option></entry>
|
|
</row>
|
|
<row>
|
|
<entry>m3jp2k32.dll</entry>
|
|
<entry>Morgan MJPEG2000 (MJ2C)</entry>
|
|
<entry>f3c174edcbaef7cb947d6357cdfde7ff</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>m3jpeg32.dll</entry>
|
|
<entry>Morgan Motion JPEG Codec (MJPG)</entry>
|
|
<entry>1cd13fff5960aa2aae43790242c323b1</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>mpg4c32.dll</entry>
|
|
<entry>Microsoft MPEG-4 v1/v2</entry>
|
|
<entry>b5791ea23f33010d37ab8314681f1256</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>tsccvid.dll</entry>
|
|
<entry>TechSmith Camtasia Screen Codec (TSCC)</entry>
|
|
<entry>8230d8560c41d444f249802a2700d1d5</entry>
|
|
<entry>shareware error on windows</entry>
|
|
</row>
|
|
<row>
|
|
<entry>vp31vfw.dll</entry>
|
|
<entry>On2 Open Source VP3 Codec (VP31)</entry>
|
|
<entry>845f3590ea489e2e45e876ab107ee7d2</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>vp4vfw.dll</entry>
|
|
<entry>On2 VP4 Personal Codec (VP40)</entry>
|
|
<entry>fc5480a482ccc594c2898dcc4188b58f</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>vp6vfw.dll</entry>
|
|
<entry>On2 VP6 Personal Codec (VP60)</entry>
|
|
<entry>04d635a364243013898fd09484f913fb</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>vp7vfw.dll</entry>
|
|
<entry>On2 VP7 Personal Codec (VP70)</entry>
|
|
<entry>cb4cc3d4ea7c94a35f1d81c3d750bc8d</entry>
|
|
<entry>wrong FourCC?</entry>
|
|
</row>
|
|
<row>
|
|
<entry>ViVD2.dll</entry>
|
|
<entry>SoftMedia ViVD V2 codec VfW (GXVE)</entry>
|
|
<entry>a7b4bf5cac630bb9262c3f80d8a773a1</entry>
|
|
<entry></entry>
|
|
</row>
|
|
<row>
|
|
<entry>msulvc06.DLL</entry>
|
|
<entry>MSU Lossless codec (MSUD)</entry>
|
|
<entry>294bf9288f2f127bb86f00bfcc9ccdda</entry>
|
|
<entry>
|
|
Decodable by <application>Window Media Player</application>,
|
|
not <application>MPlayer</application> (yet).
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>camcodec.dll</entry>
|
|
<entry>CamStudio lossless video codec (CSCD)</entry>
|
|
<entry>0efe97ce08bb0e40162ab15ef3b45615</entry>
|
|
<entry>sf.net/projects/camstudio</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
The first column contains the codec names that should be passed after the
|
|
<literal>codec</literal> parameter,
|
|
like: <option>-xvfwopts codec=divx.dll</option>
|
|
The FourCC code used by each codec is given in the parentheses.
|
|
</para>
|
|
|
|
<informalexample>
|
|
<para>
|
|
An example to convert an ISO DVD trailer to a VP6 flash video file
|
|
using compdata bitrate settings:
|
|
<screen>
|
|
mencoder -dvd-device <replaceable>zeiram.iso</replaceable> dvd://7 -o <replaceable>trailer.flv</replaceable> \
|
|
-ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=onepass.mcf -oac mp3lame \
|
|
-lameopts cbr:br=64 -af lavcresample=22050 -vf yadif,scale=320:240,flip \
|
|
-of lavf -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
|
|
</screen>
|
|
</para>
|
|
</informalexample>
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-video-for-windows-bitrate-settings">
|
|
<title>Using vfw2menc to create a codec settings file.</title>
|
|
|
|
<para>
|
|
To encode with the Video for Windows codecs, you will need to set bitrate
|
|
and other options. This is known to work on x86 on both *NIX and Windows.
|
|
</para>
|
|
<para>
|
|
First you must build the <application>vfw2menc</application> program.
|
|
It is located in the <filename class="directory">TOOLS</filename> subdirectory
|
|
of the MPlayer source tree.
|
|
To build on Linux, this can be done using <application>Wine</application>:
|
|
<screen>winegcc vfw2menc.c -o vfw2menc -lwinmm -lole32</screen>
|
|
|
|
To build on Windows in <application>MinGW</application> or
|
|
<application>Cygwin</application> use:
|
|
<screen>gcc vfw2menc.c -o vfw2menc.exe -lwinmm -lole32</screen>
|
|
|
|
To build on <application>MSVC</application> you will need getopt.
|
|
Getopt can be found in the original <application>vfw2menc</application>
|
|
archive available at:
|
|
The <ulink url="http://oss.netfarm.it/mplayer-win32.php">MPlayer on win32</ulink> project.
|
|
</para>
|
|
<informalexample>
|
|
<para>
|
|
Below is an example with the VP6 codec.
|
|
<screen>
|
|
vfw2menc -f VP62 -d vp6vfw.dll -s firstpass.mcf
|
|
</screen>
|
|
This will open the VP6 codec dialog window.
|
|
Repeat this step for the second pass
|
|
and use <option>-s <replaceable>secondpass.mcf</replaceable></option>.
|
|
</para>
|
|
</informalexample>
|
|
<para>
|
|
Windows users can use
|
|
<option>-xvfwopts codec=vp6vfw.dll:compdata=dialog</option> to have
|
|
the codec dialog display before encoding starts.
|
|
</para>
|
|
</sect2>
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-quicktime-7">
|
|
<title>Using <application>MEncoder</application> to create
|
|
<application>QuickTime</application>-compatible files</title>
|
|
|
|
|
|
<sect2 id="menc-feat-quicktime-7-why-use-it">
|
|
<title>Why would one want to produce <application>QuickTime</application>-compatible Files?</title>
|
|
|
|
<para>
|
|
There are several reasons why producing
|
|
<application>QuickTime</application>-compatible files can be desirable.
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
You want any computer illiterate to be able to watch your encode on
|
|
any major platform (Windows, Mac OS X, Unices …).
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<application>QuickTime</application> is able to take advantage of more
|
|
hardware and software acceleration features of Mac OS X than
|
|
platform-independent players like <application>MPlayer</application>
|
|
or <application>VLC</application>.
|
|
That means that your encodes have a chance to be played smoothly by older
|
|
G4-powered machines.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<application>QuickTime</application> 7 supports the next-generation codec H.264,
|
|
which yields significantly better picture quality than previous codec
|
|
generations (MPEG-2, MPEG-4 …).
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-quicktime-7-constraints">
|
|
<title><application>QuickTime</application> 7 limitations</title>
|
|
|
|
<para>
|
|
<application>QuickTime</application> 7 supports H.264 video and AAC audio,
|
|
but it does not support them muxed in the AVI container format.
|
|
However, you can use <application>MEncoder</application> to encode
|
|
the video and audio, and then use an external program such as
|
|
<application>mp4creator</application> (part of the
|
|
<ulink url="http://mpeg4ip.sourceforge.net/">MPEG4IP suite</ulink>)
|
|
to remux the video and audio tracks into an MP4 container.
|
|
</para>
|
|
|
|
<para>
|
|
<application>QuickTime</application>'s support for H.264 is limited,
|
|
so you will need to drop some advanced features.
|
|
If you encode your video with features that
|
|
<application>QuickTime</application> 7 does not support,
|
|
<application>QuickTime</application>-based players will show you a pretty
|
|
white screen instead of your expected video.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
<emphasis role="bold">B-frames</emphasis>:
|
|
<application>QuickTime</application> 7 supports a maximum of 1 B-frame, i.e.
|
|
<option>-x264encopts bframes=1</option>. This means that
|
|
<option>b_pyramid</option> and <option>weight_b</option> will have no
|
|
effect, since they require <option>bframes</option> to be greater than 1.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Macroblocks</emphasis>:
|
|
<application>QuickTime</application> 7 does not support 8x8 DCT macroblocks.
|
|
This option (<option>8x8dct</option>) is off by default, so just be sure
|
|
not to explicitly enable it. This also means that the <option>i8x8</option>
|
|
option will have no effect, since it requires <option>8x8dct</option>.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">Aspect ratio</emphasis>:
|
|
<application>QuickTime</application> 7 does not support SAR (sample
|
|
aspect ratio) information in MPEG-4 files; it assumes that SAR=1. Read
|
|
<link linkend="menc-feat-quicktime-7-scale">the section on scaling</link>
|
|
for a workaround.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-quicktime-7-crop">
|
|
<title>Cropping</title>
|
|
<para>
|
|
Suppose you want to rip your freshly bought copy of "The Chronicles of
|
|
Narnia". Your DVD is region 1,
|
|
which means it is NTSC. The example below would still apply to PAL,
|
|
except you would omit <option>-ofps 24000/1001</option> and use slightly
|
|
different <option>crop</option> and <option>scale</option> dimensions.
|
|
</para>
|
|
|
|
<para>
|
|
After running <option>mplayer dvd://1</option>, you follow the process
|
|
detailed in the section <link linkend="menc-feat-telecine">How to deal
|
|
with telecine and interlacing in NTSC DVDs</link> and discover that it is
|
|
24000/1001 fps progressive video. This simplifies the process somewhat,
|
|
since you do not need to use an inverse telecine filter such as
|
|
<option>pullup</option> or a deinterlacing filter such as
|
|
<option>yadif</option>.
|
|
</para>
|
|
|
|
<para>
|
|
Next, you need to crop out the black bars from the top and bottom of the
|
|
video, as detailed in <link linkend="menc-feat-dvd-mpeg4-example-crop">this</link>
|
|
previous section.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-quicktime-7-scale">
|
|
<title>Scaling</title>
|
|
|
|
<para>
|
|
The next step is truly heartbreaking.
|
|
<application>QuickTime</application> 7 does not support MPEG-4 videos
|
|
with a sample aspect ratio other than 1, so you will need to upscale
|
|
(which wastes a lot of disk space) or downscale (which loses some
|
|
details of the source) the video to square pixels.
|
|
Either way you do it, this is highly inefficient, but simply cannot
|
|
be avoided if you want your video to be playable by
|
|
<application>QuickTime</application> 7.
|
|
<application>MEncoder</application> can apply the appropriate upscaling
|
|
or downscaling by specifying respectively <option>-vf scale=-10:-1</option>
|
|
or <option>-vf scale=-1:-10</option>.
|
|
This will scale your video to the correct width for the cropped height,
|
|
rounded to the closest multiple of 16 for optimal compression.
|
|
Remember that if you are cropping, you should crop first, then scale:
|
|
|
|
<screen>-vf crop=720:352:0:62,scale=-10:-1</screen>
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-quicktime-7-avsync">
|
|
<title>A/V sync</title>
|
|
|
|
<para>
|
|
Because you will be remuxing into a different container, you should
|
|
always use the <option>harddup</option> option to ensure that duplicated
|
|
frames are actually duplicated in the video output. Without this option,
|
|
<application>MEncoder</application> will simply put a marker in the video
|
|
stream that a frame was duplicated, and rely on the client software to
|
|
show the same frame twice. Unfortunately, this "soft duplication" does
|
|
not survive remuxing, so the audio would slowly lose sync with the video.
|
|
</para>
|
|
|
|
<para>
|
|
The final filter chain looks like this:
|
|
<screen>-vf crop=720:352:0:62,scale=-10:-1,harddup</screen>
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-quicktime-7-bitrate">
|
|
<title>Bitrate</title>
|
|
|
|
<para>
|
|
As always, the selection of bitrate is a matter of the technical properties
|
|
of the source, as explained
|
|
<link linkend="menc-feat-dvd-mpeg4-resolution-bitrate">here</link>, as
|
|
well as a matter of taste.
|
|
This movie has a fair bit of action and lots of detail, but H.264 video
|
|
looks good at much lower bitrates than XviD or other MPEG-4 codecs.
|
|
After much experimentation, the author of this guide chose to encode
|
|
this movie at 900kbps, and thought that it looked very good.
|
|
You may decrease bitrate if you need to save more space, or increase
|
|
it if you need to improve quality.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-quicktime-7-example">
|
|
<title>Encoding example</title>
|
|
|
|
<para>
|
|
You are now ready to encode the video. Since you care about
|
|
quality, of course you will be doing a two-pass encode. To shave off
|
|
some encoding time, you can specify the <option>turbo</option> option
|
|
on the first pass; this reduces <option>subq</option> and
|
|
<option>frameref</option> to 1. To save some disk space, you can
|
|
use the <option>ss</option> option to strip off the first few seconds
|
|
of the video. (I found that this particular movie has 32 seconds of
|
|
credits and logos.) <option>bframes</option> can be 0 or 1.
|
|
The other options are documented in <link
|
|
linkend="menc-feat-x264-encoding-options-speedvquality">Encoding with
|
|
the <systemitem class="library">x264</systemitem> codec</link> and
|
|
the man page.
|
|
|
|
<screen>mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \
|
|
-x264encopts pass=1:turbo:bitrate=900:bframes=1:\
|
|
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
|
|
-vf crop=720:352:0:62,scale=-10:-1,harddup \
|
|
-oac faac -faacopts br=192:mpeg=4:object=1 -channels 2 -srate 48000 \
|
|
-ofps 24000/1001</screen>
|
|
|
|
If you have a multi-processor machine, don't miss the opportunity to
|
|
dramatically speed-up encoding by enabling
|
|
<link linkend="menc-feat-x264-encoding-options-speedvquality-threads">
|
|
<systemitem class="library">x264</systemitem>'s multi-threading mode</link>
|
|
by adding <option>threads=auto</option> to your <option>x264encopts</option>
|
|
command-line.
|
|
</para>
|
|
|
|
<para>
|
|
The second pass is the same, except that you specify the output file
|
|
and set <option>pass=2</option>.
|
|
|
|
<screen>mencoder dvd://1 <emphasis role="bold">-o narnia.avi</emphasis> -ss 32 -ovc x264 \
|
|
-x264encopts <emphasis role="bold">pass=2</emphasis>:turbo:bitrate=900:frameref=5:bframes=1:\
|
|
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
|
|
-vf crop=720:352:0:62,scale=-10:-1,harddup \
|
|
-oac faac -faacopts br=192:mpeg=4:object=1 -channels 2 -srate 48000 \
|
|
-ofps 24000/1001</screen>
|
|
</para>
|
|
|
|
<para>
|
|
The resulting AVI should play perfectly in
|
|
<application>MPlayer</application>, but of course
|
|
<application>QuickTime</application> can not play it because it does
|
|
not support H.264 muxed in AVI.
|
|
So the next step is to remux the video into an MP4 container.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-quicktime-7-remux">
|
|
<title>Remuxing as MP4</title>
|
|
|
|
<para>
|
|
There are several ways to remux AVI files to MP4. You can use
|
|
<application>mp4creator</application>, which is part of the
|
|
<ulink url="http://mpeg4ip.sourceforge.net/">MPEG4IP suite</ulink>.
|
|
</para>
|
|
|
|
<para>
|
|
First, demux the AVI into separate audio and video streams using
|
|
<application>MPlayer</application>.
|
|
|
|
<screen>mplayer narnia.avi -dumpaudio -dumpfile narnia.aac
|
|
mplayer narnia.avi -dumpvideo -dumpfile narnia.h264</screen>
|
|
|
|
The filenames are important; <application>mp4creator</application>
|
|
requires that AAC audio streams be named <systemitem>.aac</systemitem>
|
|
and H.264 video streams be named <systemitem>.h264</systemitem>.
|
|
</para>
|
|
|
|
<para>
|
|
Now use <application>mp4creator</application> to create a new
|
|
MP4 file out of the audio and video streams.
|
|
|
|
<screen>mp4creator -create=narnia.aac narnia.mp4
|
|
mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4</screen>
|
|
|
|
Unlike the encoding step, you must specify the framerate as a
|
|
decimal (such as 23.976), not a fraction (such as 24000/1001).
|
|
</para>
|
|
|
|
<para>
|
|
This <systemitem>narnia.mp4</systemitem> file should now be playable
|
|
with any <application>QuickTime</application> 7 application, such as
|
|
<application>QuickTime Player</application> or
|
|
<application>iTunes</application>. If you are planning to view the
|
|
video in a web browser with the <application>QuickTime</application>
|
|
plugin, you should also hint the movie so that the
|
|
<application>QuickTime</application> plugin can start playing it
|
|
while it is still downloading. <application>mp4creator</application>
|
|
can create these hint tracks:
|
|
|
|
<screen>mp4creator -hint=1 narnia.mp4
|
|
mp4creator -hint=2 narnia.mp4
|
|
mp4creator -optimize narnia.mp4</screen>
|
|
|
|
You can check the final result to ensure that the hint tracks were
|
|
created successfully:
|
|
|
|
<screen>mp4creator -list narnia.mp4</screen>
|
|
|
|
You should see a list of tracks: 1 audio, 1 video, and 2 hint tracks.
|
|
|
|
<screen>Track Type Info
|
|
1 audio MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz
|
|
2 video H264 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps
|
|
3 hint Payload mpeg4-generic for track 1
|
|
4 hint Payload H264 for track 2
|
|
</screen>
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="menc-feat-quicktime-7-metadata">
|
|
<title>Adding metadata tags</title>
|
|
|
|
<para>
|
|
If you want to add tags to your video that show up in iTunes, you can use
|
|
<ulink url="http://atomicparsley.sourceforge.net/">AtomicParsley</ulink>.
|
|
|
|
<screen>AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite</screen>
|
|
|
|
The <option>--metaEnema</option> option removes any existing metadata
|
|
(<application>mp4creator</application> inserts its name in the
|
|
"encoding tool" tag), and <option>--freefree</option> reclaims the
|
|
space from the deleted metadata.
|
|
The <option>--stik</option> option sets the type of video (such as Movie
|
|
or TV Show), which iTunes uses to group related video files.
|
|
The <option>--overWrite</option> option overwrites the original file;
|
|
without it, <application>AtomicParsley</application> creates a new
|
|
auto-named file in the same directory and leaves the original file
|
|
untouched.
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|
|
|
|
|
|
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
|
|
|
|
|
<sect1 id="menc-feat-vcd-dvd">
|
|
<title>Using <application>MEncoder</application>
|
|
to create VCD/SVCD/DVD-compliant files</title>
|
|
|
|
<sect2 id="menc-feat-vcd-dvd-constraints">
|
|
<title>Format Constraints</title>
|
|
|
|
<para>
|
|
<application>MEncoder</application> is capable of creating VCD, SCVD
|
|
and DVD format MPEG files using the
|
|
<systemitem class="library">libavcodec</systemitem> library.
|
|
These files can then be used in conjunction with
|
|
<ulink url="http://www.gnu.org/software/vcdimager/vcdimager.html">vcdimager</ulink>
|
|
or
|
|
<ulink url="http://dvdauthor.sourceforge.net/">dvdauthor</ulink>
|
|
to create discs that will play on a standard set-top player.
|
|
</para>
|
|
|
|
<para>
|
|
The DVD, SVCD, and VCD formats are subject to heavy constraints.
|
|
Only a small selection of encoded picture sizes and aspect ratios are
|
|
available.
|
|
If your movie does not already meet these requirements, you may have
|
|
to scale, crop or add black borders to the picture to make it
|
|
compliant.
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-constraints-resolution">
|
|
<title>Format Constraints</title>
|
|
|
|
<informaltable frame="all">
|
|
<tgroup cols="9">
|
|
<thead>
|
|
<row>
|
|
<entry>Format</entry>
|
|
<entry>Resolution</entry>
|
|
<entry>V. Codec</entry>
|
|
<entry>V. Bitrate</entry>
|
|
<entry>Sample Rate</entry>
|
|
<entry>A. Codec</entry>
|
|
<entry>A. Bitrate</entry>
|
|
<entry>FPS</entry>
|
|
<entry>Aspect</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>NTSC DVD</entry>
|
|
<entry>720x480, 704x480, 352x480, 352x240</entry>
|
|
<entry>MPEG-2</entry>
|
|
<entry>9800 kbps</entry>
|
|
<entry>48000 Hz</entry>
|
|
<entry>AC-3,PCM</entry>
|
|
<entry>1536 kbps (max)</entry>
|
|
<entry>30000/1001, 24000/1001</entry>
|
|
<entry>4:3, 16:9 (only for 720x480)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>NTSC DVD</entry>
|
|
<entry>352x240<footnote id='fn-rare-resolutions'><para>
|
|
These resolutions are rarely used for DVDs because
|
|
they are fairly low quality.</para></footnote></entry>
|
|
<entry>MPEG-1</entry>
|
|
<entry>1856 kbps</entry>
|
|
<entry>48000 Hz</entry>
|
|
<entry>AC-3,PCM</entry>
|
|
<entry>1536 kbps (max)</entry>
|
|
<entry>30000/1001, 24000/1001</entry>
|
|
<entry>4:3, 16:9</entry>
|
|
</row>
|
|
<row>
|
|
<entry>NTSC SVCD</entry>
|
|
<entry>480x480</entry>
|
|
<entry>MPEG-2</entry>
|
|
<entry>2600 kbps</entry>
|
|
<entry>44100 Hz</entry>
|
|
<entry>MP2</entry>
|
|
<entry>384 kbps (max)</entry>
|
|
<entry>30000/1001</entry>
|
|
<entry>4:3</entry>
|
|
</row>
|
|
<row>
|
|
<entry>NTSC VCD</entry>
|
|
<entry>352x240</entry>
|
|
<entry>MPEG-1</entry>
|
|
<entry>1150 kbps</entry>
|
|
<entry>44100 Hz</entry>
|
|
<entry>MP2</entry>
|
|
<entry>224 kbps</entry>
|
|
<entry>24000/1001, 30000/1001</entry>
|
|
<entry>4:3</entry>
|
|
</row>
|
|
<row>
|
|
<entry>PAL DVD</entry>
|
|
<entry>720x576, 704x576, 352x576, 352x288</entry>
|
|
<entry>MPEG-2</entry>
|
|
<entry>9800 kbps</entry>
|
|
<entry>48000 Hz</entry>
|
|
<entry>MP2,AC-3,PCM</entry>
|
|
<entry>1536 kbps (max)</entry>
|
|
<entry>25</entry>
|
|
<entry>4:3, 16:9 (only for 720x576)</entry>
|
|
</row>
|
|
<row>
|
|
<entry>PAL DVD</entry>
|
|
<entry>352x288<footnoteref linkend='fn-rare-resolutions'/></entry>
|
|
<entry>MPEG-1</entry>
|
|
<entry>1856 kbps</entry>
|
|
<entry>48000 Hz</entry>
|
|
<entry>MP2,AC-3,PCM</entry>
|
|
<entry>1536 kbps (max)</entry>
|
|
<entry>25</entry>
|
|
<entry>4:3, 16:9</entry>
|
|
</row>
|
|
<row>
|
|
<entry>PAL SVCD</entry>
|
|
<entry>480x576</entry>
|
|
<entry>MPEG-2</entry>
|
|
<entry>2600 kbps</entry>
|
|
<entry>44100 Hz</entry>
|
|
<entry>MP2</entry>
|
|
<entry>384 kbps (max)</entry>
|
|
<entry>25</entry>
|
|
<entry>4:3</entry>
|
|
</row>
|
|
<row>
|
|
<entry>PAL VCD</entry>
|
|
<entry>352x288</entry>
|
|
<entry>MPEG-1</entry>
|
|
<entry>1152 kbps</entry>
|
|
<entry>44100 Hz</entry>
|
|
<entry>MP2</entry>
|
|
<entry>224 kbps</entry>
|
|
<entry>25</entry>
|
|
<entry>4:3</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
|
|
<para>
|
|
If your movie has 2.35:1 aspect (most recent action movies), you will
|
|
have to add black borders or crop the movie down to 16:9 to make a DVD or VCD.
|
|
If you add black borders, try to align them at 16-pixel boundaries in
|
|
order to minimize the impact on encoding performance.
|
|
Thankfully DVD has sufficiently excessive bitrate that you do not have
|
|
to worry too much about encoding efficiency, but SVCD and VCD are
|
|
highly bitrate-starved and require effort to obtain acceptable quality.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-constraints-gop">
|
|
<title>GOP Size Constraints</title>
|
|
|
|
<para>
|
|
DVD, VCD, and SVCD also constrain you to relatively low
|
|
GOP (Group of Pictures) sizes.
|
|
For 30 fps material the largest allowed GOP size is 18.
|
|
For 25 or 24 fps, the maximum is 15.
|
|
The GOP size is set using the <option>keyint</option> option.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-constraints-bitrate">
|
|
<title>Bitrate Constraints</title>
|
|
|
|
<para>
|
|
VCD video is required to be CBR at 1152 kbps.
|
|
This highly limiting constraint also comes along with an extremly low vbv
|
|
buffer size of 327 kilobits.
|
|
SVCD allows varying video bitrates up to 2500 kbps, and a somewhat less
|
|
restrictive vbv buffer size of 917 kilobits is allowed.
|
|
DVD video bitrates may range anywhere up to 9800 kbps (though typical
|
|
bitrates are about half that), and the vbv buffer size is 1835 kilobits.
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-vcd-dvd-output">
|
|
<title>Output Options</title>
|
|
|
|
<para>
|
|
<application>MEncoder</application> has options to control the output
|
|
format.
|
|
Using these options we can instruct it to create the correct type of
|
|
file.
|
|
</para>
|
|
|
|
<para>
|
|
The options for VCD and SVCD are called xvcd and xsvcd, because they
|
|
are extended formats.
|
|
They are not strictly compliant, mainly because the output does not
|
|
contain scan offsets.
|
|
If you need to generate an SVCD image, you should pass the output file to
|
|
<ulink url="http://www.gnu.org/software/vcdimager/vcdimager.html">vcdimager</ulink>.
|
|
</para>
|
|
|
|
<para>
|
|
VCD:
|
|
<screen>-of mpeg -mpegopts format=xvcd</screen>
|
|
</para>
|
|
|
|
<para>
|
|
SVCD:
|
|
<screen>-of mpeg -mpegopts format=xsvcd</screen>
|
|
</para>
|
|
|
|
<para>
|
|
DVD (with timestamps on every frame, if possible):
|
|
<screen>-of mpeg -mpegopts format=dvd:tsaf</screen>
|
|
</para>
|
|
|
|
<para>
|
|
DVD with NTSC Pullup:
|
|
<screen>-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001</screen>
|
|
This allows 24000/1001 fps progressive content to be encoded at 30000/1001
|
|
fps whilst maintaing DVD-compliance.
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-output-aspect">
|
|
<title>Aspect Ratio</title>
|
|
|
|
<para>
|
|
The aspect argument of <option>-lavcopts</option> is used to encode
|
|
the aspect ratio of the file.
|
|
During playback the aspect ratio is used to restore the video to the
|
|
correct size.
|
|
</para>
|
|
|
|
<para>
|
|
16:9 or "Widescreen"
|
|
<screen>-lavcopts aspect=16/9</screen>
|
|
</para>
|
|
|
|
<para>
|
|
4:3 or "Fullscreen"
|
|
<screen>-lavcopts aspect=4/3</screen>
|
|
</para>
|
|
|
|
<para>
|
|
2.35:1 or "Cinemascope" NTSC
|
|
<screen>-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9</screen>
|
|
To calculate the correct scaling size, use the expanded NTSC width of
|
|
854/2.35 = 368
|
|
</para>
|
|
|
|
<para>
|
|
2.35:1 or "Cinemascope" PAL
|
|
<screen>-vf scale=720:432,expand=720:576 -lavcopts aspect=16/9</screen>
|
|
To calculate the correct scaling size, use the expanded PAL width of
|
|
1024/2.35 = 432
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-a-v-sync">
|
|
<title>Maintaining A/V sync</title>
|
|
|
|
<para>
|
|
In order to maintain audio/video synchronization throughout the encode,
|
|
<application>MEncoder</application> has to drop or duplicate frames.
|
|
This works rather well when muxing into an AVI file, but is almost
|
|
guaranteed to fail to maintain A/V sync with other muxers such as MPEG.
|
|
This is why it is necessary to append the
|
|
<option>harddup</option> video filter at the end of the filter chain
|
|
to avoid this kind of problem.
|
|
You can find more technical information about <option>harddup</option>
|
|
in the section
|
|
<link linkend="menc-feat-dvd-mpeg4-muxing-filter-issues">Improving muxing and A/V sync reliability</link>
|
|
or in the manual page.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-output-srate">
|
|
<title>Sample Rate Conversion</title>
|
|
|
|
<para>
|
|
If the audio sample rate in the original file is not the same as
|
|
required by the target format, sample rate conversion is required.
|
|
This is achieved using the <option>-srate</option> option and
|
|
the <option>-af lavcresample</option> audio filter together.
|
|
</para>
|
|
|
|
<para>
|
|
DVD:
|
|
<screen>-srate 48000 -af lavcresample=48000</screen>
|
|
</para>
|
|
|
|
<para>
|
|
VCD and SVCD:
|
|
<screen>-srate 44100 -af lavcresample=44100</screen>
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-vcd-dvd-lavc">
|
|
<title>Using libavcodec for VCD/SVCD/DVD Encoding</title>
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-lavc-intro">
|
|
<title>Introduction</title>
|
|
|
|
<para>
|
|
<systemitem class="library">libavcodec</systemitem> can be used to
|
|
create VCD/SVCD/DVD compliant video by using the appropriate options.
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-lavc-options">
|
|
<title>lavcopts</title>
|
|
|
|
<para>
|
|
This is a list of fields in <option>-lavcopts</option> that you may
|
|
be required to change in order to make a complaint movie for VCD, SVCD,
|
|
or DVD:
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>
|
|
<emphasis role="bold">acodec</emphasis>:
|
|
<option>mp2</option> for VCD, SVCD, or PAL DVD;
|
|
<option>ac3</option> is most commonly used for DVD.
|
|
PCM audio may also be used for DVD, but this is mostly a big waste of
|
|
space.
|
|
Note that MP3 audio is not compliant for any of these formats, but
|
|
players often have no problem playing it anyway.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">abitrate</emphasis>:
|
|
224 for VCD; up to 384 for SVCD; up to 1536 for DVD, but commonly
|
|
used values range from 192 kbps for stereo to 384 kbps for 5.1 channel
|
|
sound.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vcodec</emphasis>:
|
|
<option>mpeg1video</option> for VCD;
|
|
<option>mpeg2video</option> for SVCD;
|
|
<option>mpeg2video</option> is usually used for DVD but you may also use
|
|
<option>mpeg1video</option> for CIF resolutions.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">keyint</emphasis>:
|
|
Used to set the GOP size.
|
|
18 for 30fps material, or 15 for 25/24 fps material.
|
|
Commercial producers seem to prefer keyframe intervals of 12.
|
|
It is possible to make this much larger and still retain compatibility
|
|
with most players.
|
|
A <option>keyint</option> of 25 should never cause any problems.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vrc_buf_size</emphasis>:
|
|
327 for VCD, 917 for SVCD, and 1835 for DVD.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vrc_minrate</emphasis>:
|
|
1152, for VCD. May be left alone for SVCD and DVD.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vrc_maxrate</emphasis>:
|
|
1152 for VCD; 2500 for SVCD; 9800 for DVD.
|
|
For SVCD and DVD, you might wish to use lower values depending on your
|
|
own personal preferences and requirements.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vbitrate</emphasis>:
|
|
1152 for VCD;
|
|
up to 2500 for SVCD;
|
|
up to 9800 for DVD.
|
|
For the latter two formats, vbitrate should be set based on personal
|
|
preference.
|
|
For instance, if you insist on fitting 20 or so hours on a DVD, you
|
|
could use vbitrate=400.
|
|
The resulting video quality would probably be quite bad.
|
|
If you are trying to squeeze out the maximum possible quality on a DVD,
|
|
use vbitrate=9800, but be warned that this could constrain you to less
|
|
than an hour of video on a single-layer DVD.
|
|
</para></listitem>
|
|
<listitem><para>
|
|
<emphasis role="bold">vstrict</emphasis>:
|
|
<option>vstrict</option>=0 should be used to create DVDs.
|
|
Without this option, <application>MEncoder</application> creates a
|
|
stream that cannot be correctly decoded by some standalone DVD
|
|
players.
|
|
</para></listitem>
|
|
</itemizedlist>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-lavc-examples">
|
|
<title>Examples</title>
|
|
|
|
<para>
|
|
This is a typical minimum set of <option>-lavcopts</option> for
|
|
encoding video:
|
|
</para>
|
|
<para>
|
|
VCD:
|
|
<screen>
|
|
-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\
|
|
vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2
|
|
</screen>
|
|
</para>
|
|
|
|
<para>
|
|
SVCD:
|
|
<screen>
|
|
-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\
|
|
keyint=15:acodec=mp2
|
|
</screen>
|
|
</para>
|
|
|
|
<para>
|
|
DVD:
|
|
<screen>
|
|
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
|
|
keyint=15:vstrict=0:acodec=ac3
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-lavc-advanced">
|
|
<title>Advanced Options</title>
|
|
|
|
<para>
|
|
For higher quality encoding, you may also wish to add quality-enhancing
|
|
options to lavcopts, such as <option>trell</option>,
|
|
<option>mbd=2</option>, and others.
|
|
Note that <option>qpel</option> and <option>v4mv</option>, while often
|
|
useful with MPEG-4, are not usable with MPEG-1 or MPEG-2.
|
|
Also, if you are trying to make a very high quality DVD encode, it may
|
|
be useful to add <option>dc=10</option> to lavcopts.
|
|
Doing so may help reduce the appearance of blocks in flat-colored areas.
|
|
Putting it all together, this is an example of a set of lavcopts for a
|
|
higher quality DVD:
|
|
</para>
|
|
|
|
<para>
|
|
<screen>
|
|
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\
|
|
keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\
|
|
vqmin=1:lmin=1:dc=10:vstrict=0
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-vcd-dvd-audio">
|
|
<title>Encoding Audio</title>
|
|
|
|
<para>
|
|
VCD and SVCD support MPEG-1 layer II audio, using one of
|
|
<systemitem class="library">toolame</systemitem>,
|
|
<systemitem class="library">twolame</systemitem>,
|
|
or <systemitem class="library">libavcodec</systemitem>'s MP2 encoder.
|
|
The libavcodec MP2 is far from being as good as the other two libraries,
|
|
however it should always be available to use.
|
|
VCD only supports constant bitrate audio (CBR) whereas SVCD supports
|
|
variable bitrate (VBR), too.
|
|
Be careful when using VBR because some bad standalone players might not
|
|
support it too well.
|
|
</para>
|
|
|
|
<para>
|
|
For DVD audio, <systemitem class="library">libavcodec</systemitem>'s
|
|
AC-3 codec is used.
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-audio-toolame">
|
|
<title>toolame</title>
|
|
|
|
<para>
|
|
For VCD and SVCD:
|
|
<screen>-oac toolame -toolameopts br=224</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-audio-twolame">
|
|
<title>twolame</title>
|
|
|
|
<para>
|
|
For VCD and SVCD:
|
|
<screen>-oac twolame -twolameopts br=224</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-audio-lavc">
|
|
<title>libavcodec</title>
|
|
|
|
<para>
|
|
For DVD with 2 channel sound:
|
|
<screen>-oac lavc -lavcopts acodec=ac3:abitrate=192</screen>
|
|
</para>
|
|
|
|
<para>
|
|
For DVD with 5.1 channel sound:
|
|
<screen>-channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384</screen>
|
|
</para>
|
|
|
|
<para>
|
|
For VCD and SVCD:
|
|
<screen>-oac lavc -lavcopts acodec=mp2:abitrate=224</screen>
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
|
|
<!-- ********** -->
|
|
|
|
<sect2 id="menc-feat-vcd-dvd-all">
|
|
<title>Putting it all Together</title>
|
|
|
|
<para>
|
|
This section shows some complete commands for creating VCD/SVCD/DVD
|
|
compliant videos.
|
|
</para>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-all-pal-dvd">
|
|
<title>PAL DVD</title>
|
|
|
|
<para>
|
|
<screen>
|
|
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
|
|
-vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 \
|
|
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
|
|
keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 25 \
|
|
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-all-ntsc-dvd">
|
|
<title>NTSC DVD</title>
|
|
|
|
<para>
|
|
<screen>
|
|
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
|
|
-vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 \
|
|
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
|
|
keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 \
|
|
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-all-pal-ac3-copy">
|
|
<title>PAL AVI Containing AC-3 Audio to DVD</title>
|
|
|
|
<para>
|
|
If the source already has AC-3 audio, use -oac copy instead of re-encoding it.
|
|
<screen>
|
|
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
|
|
-vf scale=720:576,harddup -ofps 25 \
|
|
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
|
|
keyint=15:vstrict=0:aspect=16/9 -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-all-ntsc-ac3-copy">
|
|
<title>NTSC AVI Containing AC-3 Audio to DVD</title>
|
|
|
|
<para>
|
|
If the source already has AC-3 audio, and is NTSC @ 24000/1001 fps:
|
|
<screen>
|
|
mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \
|
|
-vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\
|
|
vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 24000/1001 \
|
|
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-all-pal-svcd">
|
|
<title>PAL SVCD</title>
|
|
|
|
<para>
|
|
<screen>
|
|
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
|
|
scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
|
|
vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\
|
|
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 25 \
|
|
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-all-ntsc-svcd">
|
|
<title>NTSC SVCD</title>
|
|
|
|
<para>
|
|
<screen>
|
|
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
|
|
scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
|
|
vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\
|
|
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 30000/1001 \
|
|
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-all-pal-vcd">
|
|
<title>PAL VCD</title>
|
|
|
|
<para>
|
|
<screen>
|
|
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
|
|
scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
|
|
vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:\
|
|
vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 25 \
|
|
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
|
|
|
|
<sect3 id="menc-feat-vcd-dvd-all-ntsc-vcd">
|
|
<title>NTSC VCD</title>
|
|
|
|
<para>
|
|
<screen>
|
|
mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
|
|
scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
|
|
vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:\
|
|
vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \
|
|
-o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable>
|
|
</screen>
|
|
</para>
|
|
</sect3>
|
|
</sect2>
|
|
</sect1>
|
|
</chapter>
|