Diritto d'autore © 2000-2022 MPlayer team
License
MPlayer is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
MPlayer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with MPlayer; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
libcaca
– Libreria Color ASCII Art
libavcodec
codec familyXvid
codecx264
codecVideo For Windows
codec family
Se installi per la prima volta: assicurati di leggere tutto da qui fino alla fine della sezione sull'installazione e segui i collegamenti che troverai. Se hai altre domande, ritorna alla Tabella dei Contenuti e cerca l'argomento, leggi le FAQ, o prova a ricercare nei file (con grep, per esempio). Molte domande possono avere una risposta qui da qualche parte e le restanti probabilmente sono già state poste nelle nostre mailing list. Controlla gli archivi, ci sono un sacco di valide informazioni da trovare.
MPlayer è un visualizzatore di filmati per Linux (gira su molte altre piattaforme Unix e architetture di CPU non-x86, vedi Ports). Riproduce la maggior parte dei file del tipo MPEG, VOB, AVI, OGG/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, file Matroska, aiutato da molti codec nativi, di Xanim, RealPlayer, o codec DLL binari di Win32. Puoi guardare VideoCD, SVCD, DVD, 3ivx, RealMedia, Sorenson, Theora, e anche filmati MPEG-4 (DivX). Un'altra importante caratteristica di MPlayer è il supporto per un'ampia gamma di driver di uscita. Funziona con X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB, ma puoi anche usare GGI e SDL (e in questo modo tutti i loro driver) e pure alcuni driver specifici di basso livello (per Matrox, 3Dfx e Radeon, Mach64, Permedia3)! La maggior parte di essi supporta il ridimensionamento via software o hardware, così puoi gustarti i filmati a schermo intero. MPlayer supporta la riproduzione attraverso alcune schede di decodifica MPEG hardware, come DVB e DXR3/Hollywood+. E cosa dire dei grandi e bei sottotitoli sfumati con antialias (14 tipi supportati) con font europei/ISO 8859-1,2 (ungherese, inglese, ceco, etc), cirillici, coreani, e del visualizzatore su schermo (OnScreen Display, OSD)?
Il riproduttore è decisamente robusto nella riproduzione di file MPEG rovinati (utile per alcuni VCD) e riproduce file AVI imperfetti, che sono illeggibili con il famoso Windows Media Player. Si possono anche leggere gli AVI non indicizzati e puoi ricostruire il loro indice temporaneamente con l'opzione -idx o permanentemente con MEncoder, abilitando così la ricerca! Come puoi vedere, la stabilità e la qualità sono lo cose più importanti, ma anche la velocità è impressionante. C'è anche un potente sistema di filtri per la manipolazione audio e video.
MEncoder (MPlayer's Movie
Encoder, Codificatore di film di MPlayer) è un semplice codificatore di film,
progettato per codificare tutti i filmati visualizzabili da
MPlayer
(AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA)
in altri formati sempre visualizzabili da MPlayer
(vedi sotto). Può codificare con vari codec, come MPEG-4 (DivX4)
(uno o due passi), libavcodec
, audio
PCM/MP3/VBR MP3.
Caratteristiche di MEncoder
Codifica da un'ampia gamma di formati e decodificatori di MPlayer
Codifica in tutti i formati da
libavcodec
di FFmpeg
Codifica video da sintonizzatori TV compatibili V4L
Codifica/multiplex in file AVI con interleave con indici corretti
Creazione di file da flussi audio esterni
Codifica in 1, 2 o 3 passi
Audio MP3 VBR
Audio PCM
Copia dei flussi
Sincronizzazione A/V dell'input (basata su PTS, può esser disabilitata con l'opzione -mc 0)
Correzione dei fps con l'opzione -ofps (utile codificando VOB a 30000/1001 fps in AVI a 24000/1001 fps)
Usa il nostro potentissimo sistema di filtri (crop, expand, flip, postprocess, rotate, scale, conversione rgb/yuv)
Può codificare sottotitoli DVD/VOBsub e sottotitoli testuali nel file di uscita
Può codificare sottotitoli DVD in formato VOBsub
MPlayer e MEncoder possono esser distribuiti nei termini della GNU General Public License Version 2.
Una rapida guida di installazione si può trovare nel file README. Per favore leggi prima quello, poi torna qui per il resto dei dettagli scabrosi.
In questa sezione verrai guidato attraverso il processo di compilazione e di configurazione di MPlayer. Non è semplice, ma non sarà necessariamente difficile. Se ti si presenta un'esperienza diversa da quella descritta, per favore cerca in questa documentazione e troverai le risposte.
binutils - la versione consigliata è 2.11.x.
gcc - le versioni consigliate sono la 2.95 e le 3.4+. La 2.96 e le 3.0.x sono conosciute per generare codice bucato, anche la 3.1 e la 3.2 hanno problemi, la 3.3 alcuni piccoli. Su architettura PowerPC, usa le 4.x.
Xorg/XFree86 - la versione consigliata è 4.3 o successiva. Assicurati che anche i pacchetti di sviluppo (dev) siano installati, altrimenti non funzionerà. Non hai assolutamente bisogno di X, alcuni driver di uscita video funzionano senza.
GNU make 3.81
FreeType - per l'OSD e i sottotitoli è richiesta la versione 2.0.9 o successiva.
ALSA - facoltativo, per il supporto di uscita audio ALSA. Richiesta almeno la 0.9.0rc4.
libjpeg - richiesto per il driver opzionale di uscita video JPEG.
libpng - richiesto per il driver opzionale di uscita video PNG.
directfb - facoltativo, richiesta la versione 0.9.13 o successiva per il driver di uscita video directfb.
lame - 3.90 o successivo consigliato, necessario per codificare audio MP3 con MEncoder.
zlib - consigliato, usato da molti codec.
LIVE555 Streaming Media - facoltativo, necessario per alcuni flussi RTSP/RTP
cdparanoia - facoltativo, per supporto CDDA
libxmms - facoltativo, per il supporto del plugin di ingresso XMMS input plugin. Richiesta almeno la 1.2.7.
libsmb - facoltativo, per il supporto di rete SMB
libmad - facoltativo, per la decodifica MP3 veloce solo a interi su piattaforme senza FPU
Decidi se ti serve la GUI (interfaccia grafica). Se sì, vedi la sezione GUI prima di compilare.
Se vuoi installare MEncoder (il nostro grande codificatore per tutte le occasioni), vedi la sezione per MEncoder.
Se hai un sintonizzatore TV compatibile V4L e desideri vedere/catturare e codificare filmati con MPlayer, leggi la sezione ingresso TV.
Se hai un sintonizzatore radio compatibile V4L e desideri sentire e registrare il suono con MPlayer, leggi la sezione radio.
C'è un buon supporto per Menu OSD pronto per l'uso. Controlla la sezione Menu OSD.
Poi compila MPlayer:
./configure make make install
A questo punto, MPlayer è pronto per l'utilizzo. Controlla se hai un file codecs.conf nella tua directory utente (~/.mplayer/codecs.conf) rimasto da precedenti versioni di MPlayer. Se lo trovi, cancellalo.
Gli utenti Debian possono costruirsi un pacchetto .deb per conto loro, è molto semplice. Basta eseguire
fakeroot debian/rules binary
nella directory radice di MPlayer. Vedi pacchetti Debian per instruzioni dettagliate.
Controlla sempre l'output di ./configure e il file config.log, essi contengono informazioni su cosa sarà compilato e cosa no. Puoi anche voler guardare i file config.h e config.mak. Se hai alcune librerie installate, ma non rilevate da ./configure, allora controlla di avere anche i file header corretti (di solito i pacchetti -dev ) e di versioni corrispondenti. Il file config.log solitamente ti dice cosa manca.
Anche se non obbligatorio, i font dovrebbero essere installati, per avere l'OSD e la funzione sottotitoli. Il metodo consigliato è installare un file di font TTF e dire a MPlayer di usarlo. Vedi la sezione Sottotitoli e OSD per i dettagli.
La GUI abbisogna di GTK 1.2.x o GTK 2.0 (non è completamente in GTK, ma i
pannelli lo sono), per cui le GTK
(e
le controparti di sviluppo, solitamente chiamate
gtk-dev
) devono essere installate.
Puoi compilare la GUI specificando --enable-gui quando esegui
./configure.
Poi, per girare in modalità GUI, devi lanciare il binario
gmplayer.
Siccome MPlayer non ha una skin inclusa, devi
scaricarne una se vuoi usare la GUI. Vedi la
pagina di download.
Dovrebbe essere decompressa nella directory di sistema ($PREFIX/share/mplayer/skins) o dell'utente
$HOME/.mplayer/skins.
MPlayer di default cerca in questi percorsi una
directory chiamata default, ma puoi
usare l'opzione -skin nomeskin
,
o la voce skin=nomeskin
nel file di configurazione, per
utilizzare la skin nella directory
*/skins/nomeskin.
Devi dire a MPlayer quale font usare per usufruire dell'OSD e dei sottotitoli. Un qualsiasi font TrueType o basato su bitmap funzionerà. Tuttavia si consigliano i font TrueType in quanto hanno una resa grafica migliore, possono essere ridimensionati correttamente rispetto alla dimensione del filmato e gestiscono meglio differenti codifiche.
Ci sono due modi di far funzionare i font TrueType. Il primo consiste nel passare l'opzione -font sulla riga comando per specificare un file di font TrueType. Questa opzione sarà una buona candidata da mettere nel tuo file di configurazione (vedi la pagina di manuale per i dettagli). Il secondo è creare un collegamento simbolico al font di tua scelta, con nome subfont.ttf. Sia
ln -s /percorso/del/font_di_esempio.ttf
~/.mplayer/subfont.ttf
singolarmente per ciascun utente, oppure uno di sistema:
ln -s /percorso/del/font_di_esempio.ttf
$PREFIX/share/mplayer/subfont.ttf
Se MPlayer è compilato con il supporto per
fontconfig
, i metodi precedenti
non funzioneranno, piuttosto -font si aspetterà un nome di
font fontconfig
e il
suo default sarà il font sans-serif. Esempio:
mplayer -font'Bitstream Vera Sans'
anime.mkv
Per ottenere una lista dei font conosciuti da
fontconfig
, usa il comando
fc-list.
Se per qualche ragione desideri o ti serve utilizzare font bitmap, scaricali dal nostro sito. Puoi scegliere tra vari font ISO e qualche font creato dagli utenti in varie codifiche.
Decomprimi il file che hai scaricato, in ~/.mplayer o $PREFIX/share/mplayer. Poi rinomina o crea un collegamento simbolico ad una delle directory font, per esempio:
ln -s ~/.mplayer/arial-24
~/.mplayer/font
ln -s $PREFIX/share/mplayer/arial-24
$PREFIX/share/mplayer/font
I font dovrebbero avere un file font.desc appropriato che relazioni le posizioni unicode con la pagina di codici corrente dei sottotitoli di testo. Un'altra soluzione sarebbe avere sottotitoli in UTF-8 e usare l'opzione -utf8 oppure dare al file dei sottotitoli lo stesso nome del tuo file video, con un'estensione .utf e posizionarlo nella stessa directory del file video stesso.
MPlayer possiede un'interfaccia per i Menu OSD completamente personalizzabile.
il menu Preferenze attualmente NON E' IMPLEMENTATO!
Installazione
compila MPlayer passando a ./configure l'opzione --enable-menu
assicurati di avere un font OSD installato
copia etc/menu.conf nella tua directory .mplayer
copia etc/input.conf nella tua directory .mplayer, oppure nella directory di configurazione di sistema di MPlayer (default: /usr/local/etc/mplayer)
controlla e modifica input.conf per abilitare i tasti di movimento nel menu (è lì spiegato)
avvia MPlayer come nell'esempio seguente:
mplayer -menu file.avi
premi quualcuno dei tasti menu che hai definito
Xvid è un codec video libero
compatibile MPEG-4 ASP. Nota che Xvid non è necessario per decodificare video
codificato in Xvid. Viene usata di default
libavcodec
, dato che è più veloce.
Installare Xvid
Come molti software open source, è disponibili in due modi:
rilasci ufficiali
e la versione in CVS.
La versione CVS solitamente è solitamente abbastanza stabile da utilizzare,
visto che la maggior parte delle volte include fix per i bachi che esistono
nei rilasci.
Ecco quello che devi fare per far sì che la versione CVS di
Xvid
funzioni con
MEncoder:
cvs -z3 -d:pserver:[email protected]:/xvid login
cvs -z3 -d:pserver:[email protected]:/xvid co xvidcore
cd xvidcore/build/generic
./bootstrap.sh && ./configure
Puoi dover aggiungere alcune opzioni (controlla quello che emette ./configure --help).
make && make install
Ricompila MPlayer.
x264
è una libreria per creare flussi video H.264.
I sorgenti di MPlayer vengono aggiornati
ogniqualvolta ci sia un cambiamento nelle API di
x264
, quindi si consiglia sempre di
utilizzare la versione Subversion di MPlayer.
Se hai un client GIT installato, si possono ottenere i sorgenti più recenti di x264 col seguente comando:
git clone git://git.videolan.org/x264.git
Dopodiché lo si compila e installa nel solito modo:
./configure && make && make install
Poi riesegui ./configure affinché
MPlayer rilevi la presenza di
x264
.
Il codec voce Adaptive Multi-Rate è usato nei telefoni cellulari di terza generazione (3G). La referenza per l'implementazione è disponibile da The 3rd Generation Partnership Project (gratuita per uso personale). Per abilitarne il supporto, scarica e installa le librerie per AMR-NB e AMR-WB seguendo le istruzioni da quella pagina. Dopodiché ricompila MPlayer.
MPlayer può utilizzare i plugin di ingresso di XMMS per riprodurre molti formati file. Ci sono plugin per i suoni dei videgiochi SNES, SID (dal Commodore 64), molti formati Amiga, .xm, .it, VQF, musepack, Bonk, shorten e molti altri. Puoi trovarli sulla pagina dei plugin di ingresso di XMMS.
Per questa caratteristica devi avere XMMS e compilare MPlayer con ./configure --enable-xmms.
Ci sono tre metodi di temporizzazione in MPlayer.
Per utilizzare il vecchio metodo, non devi
fare nulla. Utilizza usleep()
per gestire la
sincronizzazione A/V, con una precisione di +/- 10ms.
Tuttavia delle volte la sincronizzazione serve che sia ancora più precisa.
Il nuovo codice per la temporizzazione usa
l'RTC (RealTime Clock) per il suo compito, poiché ha timer precisi di 1ms.
L'opzione -rtc lo abilita, ma è richiesto un kernel
adeguatamente preparato.
Se stai utilizzando un kernel 2.4.19pre8 o successivo, puoi impostare
la frequenza massima dell'RTC per gli utenti normali attraverso il
filesystem /proc
. Usa uno dei
comandi seguenti per abilitare l'RTC per gli utenti normali:
echo 1024 > /proc/sys/dev/rtc/max-user-freq
sysctl dev/rtc/max-user-freq=1024
Puoi rendere queste modifiche definitive aggiungendo l'ultimo al file /etc/sysctl.conf.
Puoi verificare l'efficienza del nuovo temporizzatore nella riga di stato. Le funzioni di risparmio energetico dei BIOS di alcuni portatili con CPU speedstep interagiscono male con l'RTC. Audio e video possono perdere di sincronia. Collegare il cavo di alimentazione prima di accendere il portatile pare esser di aiuto. In alcune combinazioni hardware (confermato usando DVD non DMA su una scheda ALi1541) l'utilizzo dell'RTC può portare una riproduzione saltellante. In questi casi si raccomanda di utilizzare il terzo metodo.
Il terzo codice di temporizzazione viene abilitato tramite l'opzione -softsleep. Ha l'efficienza dell'RTC, ma non lo utilizza. D'altro canto, richiede più CPU.
MPlayer usa una sequenza di riproduzione complessa. Le opzioni passate sulla riga comando possono venir applicate a tutti i file/URL o solo ad alcuni, a seconda della loro posizione. Per esempio
mplayer -vfm ffmpeg movie1.avi movie2.avi
userà i decodificatori FFmpeg per ambedue i file, mentre
mplayer -vfm ffmpegmovie1.avi
movie2.avi
-vfm dmo
riprodurrà il secondo file con un decodificatore DMO.
Puoi raggruppare file/URL insieme usando {
e
}
. Torna utile con l'opzione -loop:
mplayer { 1.avi -loop 2 2.avi } -loop 3
Il comando precedente riprodurrà i file in quest'ordine: 1, 1, 2, 1, 1, 2, 1, 1, 2.
Riprodurre un file:
mplayer [opzioni
] [percorso
/]nomefile
Un altro modo di riprodurre un file:
mplayer [opzioni
]file:///uri-escaped-path
Riprodurre più file:
mplayer [opzioni di default
] [percorso
/]nomefile1
[opzioni per nomefile1
]nomefile2
[opzioni per nomefile2
] ...
Riprodurre VCD:
mplayer [opzioni
] vcd://numerotraccia
[-cdrom-device/dev/cdrom
]
Riprodurre DVD:
mplayer [opzioni
] dvd://numerotitolo
[-dvd-device/dev/dvd
]
Riprodurre da WWW:
mplayer [opzioni
] http://sito.com/file.asf
(possono venir usate anche le playlist)
Riprodurre da RTSP:
mplayer [opzioni
] rtsp://server.di.esempio.com/nomeFlusso
Esempi:
mplayer -vo x11/mnt/Films/Contact/contact2.mpg
mplayer vcd://2
-cdrom-device/dev/hdc
mplayer -afm 3/mnt/DVDtrailers/alien4.vob
mplayer dvd://1
-dvd-device/dev/hdc
mplayer -abs 65536 -delay -0.4 -nobps~/movies/test.avi
MPlayer può visualizzare sottotitoli insieme con i file video. Attualmente sono supportati i seguenti formati:
VOBsub
OGM
CC (closed caption)
MicroDVD
SubRip
SubViewer
Sami
VPlayer
RT
SSA
PJS (Phoenix Japanimation Society)
MPsub
AQTitle
MPlayer può fare il dump dei suddetti formati di sottotitoli (tranne i primi tre) nei formati di destinazione seguenti, con le rispettive opzioni:
MPsub: -dumpmpsub
SubRip: -dumpsrtsub
MicroDVD: -dumpmicrodvdsub
JACOsub: -dumpjacosub
Sami: -dumpsami
MEncoder può fare il dump dei sottotitoli DVD nel formato VOBsub.
Le opzioni da riga comando sono leggermente differenti per i diversi formati:
Sottotitoli VOBsub.
I sottotitoli VOBsub consistono in un grande (qualche megabyte) file
.SUB, e un file .IDX e/o
.IFO facoltativi. Se hai dei file tipo
esempio.sub
,
esempio.ifo
(facoltativo),
esempio.idx
- devi passare a
MPlayer le opzioni -vobsub esempio
[-vobsubid id
]
(il percorso completo è facoltativo). L'opzione -vobsubid è
come -sid per i DVD, con essa puoi scegliere tra le tracce
(lingue) dei sottotitoli. Nel caso in cui -vobsubid sia omessa,
MPlayer cercherà di utilizzare la lingua
fornita dall'opzione -slang e ricadrà sul
langidx
nel file .IDX per
impostare la lingua dei sottotitoli. Se fallisce, non ci saranno sottotitoli.
Altri sottotitoli.
Gli altri formati consistono in un file di testo singolo contenente tempo,
posizionamento e informazioni di testo. Utilizzo: se hai un file tipo
esempio.txt
, devi passare
l'opzione -sub esempio.txt
(il percorso completo è facoltativo).
Regolazione tempi e posizionamento dei sottotitoli:
sec
Differisce i sottotitoli di sec
secondi.
Può essere un valore negativo. Il valore viene aggiunto al contatore
della posizione nel filmato.
FREQUENZA
Specifica la frequenza fotogrammi/secondo del file sottotitoli (valore decimale).
0-100
Specifica la posizione dei sottotitoli.
Se subisci un ritardo crescente tra il filmato e i sottotitoli quando usi un file sottotitoli MicroDVD, molto facilmente la frequenza del filmato e del file dei sottotitoli sono diverse. Per favore nota che il formato sottotitoli MicroDVD usa numeri assoluti di fotogrammi per la sua temporizzazione, ma non vi è alcuna informazione sugli fps, per cui con tale formato bisognerebbe usare l'opzione -subfps. Se vuoi risolvere questo problema permanentemente, devi convertire manualmente la frequenza fotogrammi del file dei sottotitoli. MPlayer può fare questa conversione per te:
mplayer -dumpmicrodvdsub -fpsfps_sottotitoli
-subfpsfps_avi
\ -subnomefile_sottotitoli
dummy.avi
Riguardo i sottotitoli DVD, leggi la sezione DVD.
MPlayer ha un livello di controllo completamente configurabile, guidato da comandi, che ti lascia controllare MPlayer con la tastiera, il mouse, un joystick o un telecomando (usando LIRC). Vedi la pagina man per la lista completa dei controlli da tastiera.
MPlayer ti permette di collegare un qualsiasi
tasto/bottone ad un qualsiasi comando di MPlayer
usando un semplice file di configurazione.
La sintassi consiste di un valore chiave seguito da un comando. Il percorso del
file di configurazione di default è
$HOME/.mplayer/input.conf, ma può essere reimpostato
usando l'opzione -input conf
(i percorsi sono relativi a $HOME/.mplayer).
Puoi ottenere una lista completa dei valori chiave supportati eseguendo mplayer -input keylist e una lista completa dei comandi disponibili eseguendo mplayer -input cmdlist.
Esempio 3.1. Un semplice file di controllo dell'input
## ## MPlayer input control file ## RIGHT seek +10 LEFT seek -10 - audio_delay 0.100 + audio_delay -0.100 q quit > pt_step 1 < pt_step -1 ENTER pt_step 1 1
Linux Infrared Remote Control - usa un ricevitore IR facile da costruire in casa, un (quasi) qualsiasi telecomando e con esso puoi controllare la tua macchina Linux! Più informazioni su di esso sulla homepage di LIRC.
Se hai il pacchetto LIRC installato, configure lo
rileverà. Se tutto è andato bene, MPlayer
scriverà "Configurazione del supporto per LIRC...
"
(o "Setting up LIRC support...
") all'avvio. Se ci
sarà un errore, te lo dirà. Se non c'è messaggio alcuno circa LIRC,
non vi è il supporto compilato. Tutto qua :-)
Il nome dell'applicazione per MPlayer è
- sorpresa - mplayer.
Puoi usare qualsiasi comando di MPlayer e anche
passare più di un comando separandoli con \n
.
Non dimenticarti di abilitare l'opzione repeat in .lircrc
quando ciò abbia senso (ricerca, volume, etc). Qui c'è un estratto di un
.lircrc di esempio:
begin button = VOLUME_PLUS prog = mplayer config = volume 1 repeat = 1 end begin button = VOLUME_MINUS prog = mplayer config = volume -1 repeat = 1 end begin button = CD_PLAY prog = mplayer config = pause end begin button = CD_STOP prog = mplayer config = seek 0 1\npause end
Se non ti piace il percorso standard del file di configurazione di lirc
(~/.lircrc) usa l'opzione -lircconf
nomefile
per indicare un altro file.
La modalità slave ti permette di costruire semplici frontend per MPlayer. Se eseguito con l'opzione -slave MPlayer leggerà comandi separati da un acapo (\n) dalllo standard input (stdin). I comandi sono documentati nel file slave.txt.
MPlayer può riprodurre file dalla rete, usando i protocolli HTTP, FTP, MMS o RTSP/RTP.
La riproduzione funziona semplicemente passando l'URL sulla riga comando.
MPlayer onora la variabile d'ambiente
http_proxy
, usando un proxy quando disponibile.
Si può anche forzare l'uso di un proxy:
mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf
MPlayer può leggere dallo standard input (non named pipes). Ciò può essere usato per riprodurre via FTP:
wget ftp://micorsops.com/qualcosa.avi
-O - | mplayer -
Si raccomanda inoltre di abilitare -cache riproducendo da rete:
wget ftp://micorsops.com/qualcosa.avi
-O - | mplayer -cache 8192 -
Una volte che riesci nel far riprodurre a MPlayer il tuo flusso internet preferito, puoi usare l'opzione -dumpstream per salvare il flusso in un file. Per esempio:
mplayerhttp://217.71.208.37:8006
-dumpstream -dumpfilestream.asf
salverà il contenuto riprodotto da
http://217.71.208.37:8006
dentro a
stream.asf
.
Ciò funziona con tutti i protocolli supportati da
MPlayer, come MMS, RSTP, e così via.
I lettori CD-ROM recenti possono raggiungere velocità molto alte, ma molti lettori sono capaci di girare a velocità ridotte. Ci sono diversi motivi che possono farti pensare di cambiare la velocità di un'unità CD-ROM:
Ci sono state notifiche di errori di lettura ad alte velocità, specialmente con CD-ROM malamente pressati. Ridurre la velocità può prevenire la perdita di dati in queste circostanze.
Molti lettori CD-ROM sono fastidiosamente rumorosi, una minor velocità può ridurre il rumore.
Puoi diminuire la velocità delle unità CD-ROM IDE con hdparm, setcd o cdctl. Funziona così:
hdparm -E[velocità]
[dispositivo cdrom]
setcd -x[velocità]
[dispositivo cdrom]
cdctl -bS [velocità]
Se stai usando l'emulazione SCSI, puoi dover applicare le impostazioni al lettore IDE reale, e non al dispositivo emulato come SCSI.
Se hai i privilegi di root può essere di aiuto anche il comando seguente:
echo file_readahead:2000000 > /proc/ide/[dispositivo cdrom]
/settings
hdparm -d1 -a8 -u1 [dispositivo cdrom]
Ciò imposta la lettura in prefetch dei file a 2MB, che aiuta con CD-ROM graffiati. Se la imposti troppo alta, il lettore continuerà ad aumentare e diminuire la velocità, e le prestazioni diminuiranno drasticamente. Si raccomanda di regolare il tuo lettore CD-ROM anche con hdparm:
hdparm -d1 -a8 -u1 [dispositivo cdrom]
Questo abilita l'accesso in DMA, la pre-lettura, e la mascheratura IRQ (leggi la pagina man di hdparm per una spiegazione dettagliata).
Per favore fai riferimento a
"/proc/ide/[dispositivo cdrom]
/settings"
per regolare con precisione il tuo CD-ROM.
I lettori SCSI non hanno un modo uniforme di impostare questi parametri (ne conosci uno? diccelo!). C'è uno strumento che funziona con i lettori SCSI Plextor.
Per una lista completa delle opzioni disponibili per favore leggi la pagina man. La sintassi per riprodurre un DVD normale è la seguente:
mplayer dvd://<traccia>
[-dvd-device<dispositivo>
]
Esempio:
mplayer dvd://1 -dvd-device /dev/hdc
Se hai compilato MPlayer con il supporto per dvdnav, la sintassi è la stessa, tranne che devi usare dvdnav:// invece di dvd://.
Il dispositivo DVD di default è /dev/dvd. Se la tua impostazione è diversa, crea un collegamento simbolico o indica il dispositivo giusto dalla riga comando con l'opzione -dvd-device.
MPlayer usa libdvdread
e
libdvdcss
per la riproduzione e la decrittazione dei
DVD. Queste due librerie sono contenute nei sorgenti di
MPlayer, non hai bisogno di installarle
separatamente. Puoi anche usare le controparti di sistema delle due librerie,
ma questa non è la soluzione raccomandata, in quanto può portare a bachi,
incompatibilità di librerie e minor velocità.
Nel caso di problemi di decodifica di DVD, prova a disabilitare il supermount, o qualsiasi altra utilità. Alcuni lettori RPC-2 possono anche aver bisogno di avere il codice di zona impostato.
Decrittazione DVD.
La decrittazione dei DVD viene fatta da libdvdcss
. La
modalità può esser specificata attraverso la variabile d'ambiente
DVDCSS_METHOD
, vedi la pagina di manuale per i dettagli.
I lettori DVD al giorno d'oggi sono venduti con una costrizione senza senso chiamata codice regionale (in inglese). Questa è una strategia per forzare i lettori DVD ad accettare solamente DVD prodotti per una delle sei diverse regioni in cui è stato diviso il mondo. Come un gruppo di persone possano sedersi attorno ad un tavolo, partorire un'idea del genere ed aspettarsi che il mondo del 21° secolo si pieghi ai loro voleri, è aldilà di ogni comprensione.
I lettori che forzano l'impostazione regionale solo via software sono anche conosciuti come lettori RPC-1, quelli che lo gestiscono via hardware come RPC-2. I lettori RPC-2 permettono la modifica della regione per cinque volte, prima che resti bloccata. Sotto Linux puoi usare lo strumento regionset per per impostare il codice regionale del tuo lettore DVD.
Grazie al cielo, è possibile convertire lettori RPC-2 in lettori RPC-1 attraverso un aggiornamento del firmware. Inserisci il modello del tuo lettore DVD nel tuo motore di ricerca preferito oppure dai un'occhiata ai forum e alle sezioni di download di "The firmware page". Anche se si devono applicare le solite precauzioni per l'aggiornamento del firmware, le esperienze relative alla rimozione della forzatura del codice regionale sono generalmente positive.
Per una lista completa delle opzioni disponibili per favore leggi la pagina man. La sintassi per riprodurre un Video CD (VCD) normale è la seguente:
mplayer vcd://<traccia>
[-cdrom-device<dispositivo>
]
Esempio:
mplayer vcd://2 -cdrom-device /dev/hdc
Il dispositivo VCD di default è /dev/cdrom. Se la tua impostazione è diversa, crea un collegamento simbolico o indica il dispositivo giusto dalla riga comando con l'opzione -cdrom-device.
Perlomeno i lettori CD-ROM Plextor e alcuni Toshiba SCSI hanno prestazioni
orribili leggendo i VCD. Questo perché l'ioctl
CDROMREADRAW non è implementata appieno per questi lettori. Se hai una qualche
conoscenza della programmazione SCSI, per favore
aiutaci ad implementare un supporto
SCSI generico per i VCD.
Nel frattempo puoi estrarre i dati dal VCD con readvcd e riprodurre con MPlayer il file così ricavato.
Struttura VCD. Un Video CD (VCD) è fatto di settori CD-ROM XA, per es. tracce CD-ROM mode 2 form 1 e 2:
La prima traccia è in formato mode 2 form 2 il che significa che usa una correzione errori L2. La traccia contiene un filesystem ISO-9660 con 2048 byte/settore. Il filesystem contiene delle informazioni metadati VCD, così come fermi-immagine spesso usati nei menu. I segmenti MPEG per i menu possono anche essere salvati nella prima traccia, ma gli MPEG devono essere spezzettati in una serie di blocchi di 150 settori. Il filesystem ISO-9660 può contenere altri file o programmi che non sono essenziali per le operazioni VCD.
Le seconde e restanti tracce spesso sono tracce MPEG (filmato) di basso livello di 2324 byte/settore, contenenti un pacchetto dati MPEG PS per settore. Queste sono in formato mode 2 form 1, così da poter archiviare più dati per settore con la perdita di qualche correzione di errore. E' anche valido avere tracce CD-DA in un VCD dopo la prima traccia. In alcuni sistemi operativi c'è qualche trucchetto che fa apparire queste tracce non ISO-9660 in un filesystem. In altri sistemi operativi come GNU/Linux non è (ancora) così. Qui i dati MPEG non possono venir montati. Siccome molti film sono dentro questo tipo di tracce, dovresti provare prima vcd://2.
Ci sono dischi VCD senza la prima traccia (traccia singola e proprio nessun filesystem). Essi sono comunque riproducibili, ma non possono essere montati.
La definizione dello standard VCD viene chiamato il "White Book" Philips, e non è disponibile on-line visto che deve essere acquistato da Philips. Informazioni più dettagliate sui Video CD si possono trovare nella documentazione di vcdimager.
Riguardo i file .DAT. Il file .DAT da ~600MB visibile sulla prima traccia del filsystem VCD montato non è un vero file! Viene anche detto "ISO gateway", creato per permettere a Windows di gestire tali tracce (Windows non permette alle applicazioni alcun accesso di basso livello ai dispositivi). Sotto Linux non puoi copiare o riprodurre questi file (contengono spazzatura). Sotto Windows è possibile che il driver iso9660 emuli la lettura a basso livello delle tracce nel file. Per riprodurre un file .DAT ti serve il driver per il kernel che si può trovare nella versione per Linux di PowerDVD. Esso ha un driver modificato per il filesystem iso9660 (vcdfs/isofs-2.4.X.o), che è in grado di emulare le tracce di basso livello attraverso quel file fantasma .DAT. Se monti il disco usando il loro driver, puoi poi copiare e anche riprodurre i file .DAT con MPlayer. Ma non funzionerà col driver iso9660 standard del kernel Linux! Usa invece vcd://. Alternative per copiare i VCD sono il nuovo driver del kernel cdfs (non incluso nel kernel ufficiale), che mostra le sessioni dei CD come file immagine, e cdrdao, un'applicazione per copiare/fare il dump di CD bit-per-bit.
Il sistema della lista di decisione di modifica (EDL) ti permette di saltare o di silenziare automaticamente alcune parti dei video durante la riproduzione, basandosi su un file di configurazione EDL specifico per il filmato.
Questo torna utile per colore che vogliono guardare un film in modalità "amichevole per la famiglia". Puoi eliminare violenze, profanità, Jar-Jar Binks... da un filmato, secondo i tuoi gusti personali. Oltre a ciò, ci sono altri utilizzi, come saltare automaticamente le pubblicità nei file video che guardi.
Il formato del file EDL è piuttosto scarno. C'è un comando per ogni riga che indica cosa fare (saltare/silenziare) e quando farlo (usando la posizione in secondi).
Includi l'opzione -edl <nomefile> quando esegui MPlayer, con il nome del file EDL che vuoi sia applicato al video.
Il formato corrente dei file EDL è:
[secondi inizio] [secondi fine] [azione]
Dove i secondi sono numeri decimali e l'azione è 0
per
saltare o 1
per silenziare. Esempio:
5.3 7.1 0 15 16.7 1 420 422 0
Questo farà saltare il video dal secondo 5.3 al secondo 7.1, poi lo silenzierà a 15 secondi, toglierà il muto a 16.7 e salterà dal secondo 420 al 422. Queste azioni saranno eseguite quando il tempo della riproduzione raggiunge i tempi indicati nel file.
Per creare un file EDL da cui partire, usa l'opzione -edlout <nomefile>. Durante la riproduzione, premi semplicemente i per segnare l'inizio e la fine di un blocco di salto. Una voce corrispondente sarà scritta nel file per quella posizione. Puoi poi tornare indietro e rifinire il file EDL generato così come cambiare l'operazione di default, che è saltare il blocco indicato da ogni riga.
La maggior parte dei DVD e molti altri file includono audio in surround. MPlayer supporta la riproduzione in surround, ma non la abilita di default poiché gli equipaggiamenti audio stereo sono molto più diffusi. Per riprodurre un file che ha più di due canali audio usa -channels. Per esempio, per riprodurre un DVD con audio 5.1:
mplayer dvd://1 -channels 6
Nota che a dispetto del nome "5.1" ci sono attualmente 6 canali discreti. Se possiedi un equipaggiamento audio surround puoi mettere tranquillamente l'opzione channels nel tuo file di configurazione di MPlayer ~/.mplayer/config. Per esempio, per avere una riproduzione quadrifonica di default, aggiungi la riga seguente:
channels=4
MPlayer riprodurrà l'audio in quattro canali quando tutti e quattro sono disponibili.
MPlayer non duplica alcun canale di default, né lo fanno molti driver audio. Se vuoi farlo manualmente:
mplayer filename
-af channels=2:2:0:1:0:0
Vedi la sezione sul copiare i canali per una spiegazione.
I DVD solitamente hanno un audio surround codificato in formato AC-3 (Dolby Digital) o DTS (Digital Theater System). Alcuni equipaggiamenti audio moderni sono capaci di decodificare internamente questi formati. MPlayer può esser configurato in modo da far passare i dati audio senza decodificarli. Ciò funzionerà solo se hai un connettore S/PDIF (Sony/Philips Digital Interface) sulla tua scheda audio.
Se il tuo equipaggiamento audio può decodificare sua AC-3 che DTS, puoi tranquillamente abilitare il passthrough per ambi i formati. In caso contrario, abilita il passthrough solo per il formato che il tuo equipaggiamento supporta.
Per abilitare il passthrough dalla riga comando:
Per solo AC-3, usa -ac hwac3
Per solo DTS, usa -ac hwdts
Per AC-3 e DTS, usa -afm hwac3
Per abilitare il passthrough nel file di configurazione di MPlayer:
Per solo AC-3, usa ac=hwac3,
Per solo DTS, usa ac=hwdts,
Per AC-3 e DTS, usa afm=hwac3
Nota che c'è una virgola (",") alla fine di ac=hwac3, e ac=hwdts,. Ciò farà sì che MPlayer ricada sui codec che utilizza di solito quando riproduce un file che non ha audio AC-3 o DTS. Per afm=hwac3 non serve una virgola; MPlayer gestirà comunque la situazione quando viene specificata una famiglia audio.
Le trasimissioni TV digitali (come DVB e ATSC) e alcuni DVD spesso hanno flussi audio MPEG (per esser precisi MP2). Alcuni decodificatori hardware come schede full DVB e adattatori DXR2 possono decodificare nativamente questo formato. MPlayer può esser configurato in modo da far passare i dati audio senza decodificarli.
Per usare questo codec:
mplayer -ac hwmpa
***DA FARE***
Questa sezione deve ancora essere scritta e non può esser completata finché qualcuno non ci fornisca audio di esempio da testare. Se hai un qualche file con audio matrix-encoded, sai dove trovarne uno, oppure hai una qualche informazione che possa aiutare, per favore invia un messaggio alla mailing list MPlayer-DOCS. Scrivi "[matrix-encoded audio]" nell'oggetto.
Se nessun file o nessuna informazione arriverà, questa sezione sarà rimossa.
Ottimi link:
MPlayer include un filtro HRTF (Head Related Transfer Function) basato su un progetto MIT in cui le misurazioni sono prese da microfoni montati su una finta testa umana.
Anche se non è possibile imitare esattamente un sistema surround, il filtro HRTF di MPlayer fornisce un audio con maggior immersione nello spazio attraverso cuffie a due canali. Il solito missaggio semplicemente combina tutti i canali in due; invece combinando i canali, hrtf genera leggere eco, aumenta leggermente le separazioni stereo, e altera il volume di alcune frequenze. Se HRTF suoni meglio può dipendere dalla sorgente audio e da una questione di gusto personale, ma è sicuramente il caso di provarlo.
Per riprodurre un DVD con HRTF:
mplayer dvd://1 -channels 6 -af hrtf
hrtf lavora bene solo con 5 o 6 canali. Inoltre, hrtf richiede un audio a 48kHz. L'audio dei DVD è già a 48kHz, ma se hai un file con una differente frequenza di campionamento rispetto a quella che vuoi riprodurre con hrtf devi ricampionarla:
mplayer nomefile
-channels 6 -af resample=48000,hrtf
Sfortunatamente, non c'è uno standard per come i canali siano ordinati. Gli ordinamenti sotto elencati sono quelli dell'AC-3 e sono abbastanza tipici; provali e vedi se la tua sorgente corrisponde. I canali sono numerati a partire dallo 0.
mono
centrale
stereo
sinistro
destro
quadrifonico
sinistro frontale
destro frontale
sinistro posteriore
destro posteriore
surround 4.0
sinistro frontale
destro frontale
centrale posteriore
centrale frontale
surround 5.0
sinistro frontale
destro frontale
sinistro posteriore
destrale posteriore
centrale frontale
surround 5.1
sinistro frontale
destro frontale
sinistro posteriore
destro posteriore
centrale frontale
subwoofer
L'opzione -channels viene usata per richiedere il numero di canali al decodificatore audio, Alcuni codec audio usano il numero di canali specificato per decidere se sottomiscelare la sorgente, se necessario. Nota che ciò non sempre influenza il numero dei canali di uscita. Per esempio, usando -channels 4 per riprodurre un file stereo MP3 porterà comunque ad un'uscita a 2 canali, visto che il codec MP3 non genera i canali extra.
Il filtro audio channels può essere usato per creare o rimuovere canali ed è utile per controllare il numero di canali passati alla scheda audio. Vedi le sezioni seguenti per ulteriori informazioni sulla manipolazione dei canali.
Il mono suona molto meglio quando riprodotto attraverso due altoparlanti - specialmente usando delle cuffie. I file audio che hanno veramente un canale sono riprodotti automaticamente attraverso due altoparlanti; sfortunatamente, molti file con suono in mono sono in verità codificati come stereo con un canale slienziato. Il modo più semplice e a prova di cretino per far sì che entrambi gli altoparlanti emettano lo stesso audio è il filtro extrastereo:
mplayer nomefile
-af extrastereo=0
Ciò equilibra ambedue i canali, portando al risultato di entrambi i canali alla metà del volume di quello originario. La sezione seguente ha esempi di altri modi di far ciò senza una riduzione del volume, ma sono molto complessi e richiedono varie opzioni a seconda del canale che vuoi mantenere. Se davvero devi mantenere il volume, potrebbe essere più semplice sperimentare con il filtro volume e trovare il valore giusto. Per esempio:
mplayer nomefile
-af extrastereo=0,volume=5
Il filtro channels può spostare alcuni o tutti i canali. Impostare tutte le sotto-opzioni per il filtro channels può essere complicato e richiede un pò di attenzione.
Decidi quanti canali di uscita ti servono. Questa è la prima sotto-opzione.
Conta quanti spostamenti di canali farai. Questa è la seconda sotto-opzione. Ciascun canale può venir spostato a vari canali diversi allo stesso tempo, ma tieni a mente che quando un canale viene spostato (anche verso una destinazione sola) il canale sorgente resterà vuoto finché un altro canale non verrà spostato su di esso. Per copiare un canale, mantenendo la sorgente intatta, sposta semplicemente il canale sia verso la destinazione che verso la sorgente. Per esempio:
channel 2 --> channel 3 channel 2 --> channel 2
Scrivi le copiature di canali come paia di sotto-opzioni. Nota che il primo
canale è 0, il secondo è 1, etc. L'ordine di queste sotto-opzioni non è
importante a patto che esse siano correttamente raggruppate in coppie
sorgente:destinazione
.
Qui c'è un esempio di un altro modo di riprodurre un canali in entrambi gli altoparlanti. Per questo esempio supponi che il canale sinistro debba essere riprodotto e il canale destro scartato. Seguendo i passaggi suddetti:
In modo da fornire un canale di uscita per ognuno dei due altoparlanti, la prima sotto-opzione deve essere "2".
Il canale sinistro deve essere spostato al canale destro, e anche spostato su sé stesso cosicché non sia vuoto. Questo è un totale di due spostamenti, facendo sì che anche la seconda sotto-opzione sia "2".
Per spostare il canale sinistro (canale 0) nel canale destro (canale 1), la coppia di sotto-opzioni è "0:1", e "0:0" sposta il canale sinistro su sé stesso.
Mettendo tutto insieme si ottiene:
mplayer nomefile
-af channels=2:2:0:1:0:0
Il vantaggio che ha questo esempio rispetto a extrastereo è che il volume di ciascun canale di uscita è lo stesso del canale di entrata. Lo svantaggio è che le sotto-opzioni diventano "2:2:1:0:1:1" quando il canale voluto è quello destro. Inoltre, è più difficile da ricordare e da scrivere.
Veramente c'è un modo molto più facile di usare il filtro channels per riprodurre il canale sinistro in entrambi gli altoparlanti:
mplayer nomefile
-af channels=1
Il secondo canale viene scartato, e, senza ulteriori sotto-opzioni, l'unico canale rimanente resta il solo. I driver della scheda audio automaticamente riproducono un singolo canale in ambedue gli altoparlanti. Ciò funziona sono quando il canale voluto è sulla sinistra.
Un'altra operazione comune è duplicare il canali frontali e riprodurli anche sugli altoparlanti posteriori in un'impostazione quadrifonica.
Ci devono essere quattro canali di uscita. La prima sotto-opzione è "4".
Ciascuno dei due canali frontali deve essere spostato sul corrispondente posteriore e anche su sé stesso. Quindi sono quattro spostamenti, indi la seconda sotto-opzione è "4".
Il canale frontale sinistro (canale 0) deve essere spostato sul posteriore sinistro (canale 2): "0:2". Il sinistro frontale deve anche venir spostato su sé stesso: "0:0". Il canale frontale destro (canale 1) viene spostato sul posteriore destro (canale 3): "1:3", e anche su sé stesso: "1:1".
Combina tutte le sotto-opzioni per ottenere:
mplayer nomefile
-af channels=4:4:0:2:0:0:1:3:1:1
Il filtro pan può miscelare i canali in proporzione specificate dall'utente. Questo permette di fare tutto quello che può fare il filtro channels e oltre. Sfortunatamente, le sotto-opzioni sono molto più complicate.
Decidi con quanti canali lavorare. Puoi aver bisogno di indicare ciò con l'opzione -channels e/o -af channels. Gli esempi seguenti di mostreranno quando usare cosa.
Decidi quanti canali passare a pan (i canali decodificati oltre questi vengono scartati). Questa è la prima sotto-opzione, e controlla anche quanti canali utilizzare in uscita.
Le restanti sotto-opzioni indicano quanto di ogni canale viene miscelato in ciascuno degli altri canali. Questa è la parte difficile. Per diminuire l'impresa, spezza le sotto-opzioni in diversi gruppi, un gruppo per ogni canale di uscita. Ogni sotto-opzione in un gruppo corrisponde ad un canale di ingresso. Il numero che specifichi sarà la percentuale del canale di ingresso che viene miscelata nel canale di uscita.
pan accetta valori da 0 a 512, significando dallo 0% al 51200% del volume originale. Fai attenzione quando usi valori superiori a 1. Ciò non solo ti darà un volume più alto, ma se oltrepassi la scala di campionamento della tua scheda audio puoi sentire terribili pop e click. Se vuoi puoi far seguire pan da ,volume per abilitare il clipping, ma è meglio tenere i valori di pan bassi abbastanza affinché il clipping non sia necessario.
Qui c'è un altro esempio per riprodurre il canale sinistro in due altoparlanti. Segui i passaggi suddetti:
pan deve uscire con due canali, indi la prima sotto-opzione è "2".
Visto che abbiamo due canali di ingresso, ci saranno due gruppi di sotto-opzioni. Visto che ci sono anche due canali di uscita, ci saranno due sotto-opzioni per gruppo. Il canale sinistro dal file dovrà finire con volume pieno sui nuovi canali sinistro e destro. Così il primo gruppo di sotto-opzioni è "1:1". Il canale destro dovrebbe venir scartato, così il secondo sarà "0:0". Un qualsiasi valore di 0 alla fine può essere omesso, ma per facilità di comprensione li lasceremo lì.
Mettendo insieme queste opzioni si ottiene:
mplayer nomefile
-af pan=2:1:1:0:0
Se si vuole il canale destro invece del sinistro, le sotto-opzioni di pan saranno "2:0:0:1:1".
Come con channels, c'è una scorciatoia che funziona solo col canale sinistro:
mplayer nomefile
-af pan=1:1
Visto che pan ha solo un canale di ingresso (l'altro canale viene scartato), c'è un solo gruppo con una sola sotto-opzione, che specifica che quel solo canale ottenga il 100% di sé stesso.
Il decodificatore di MPlayer per PCM a 6 canali non è in grado di sottomiscelare. C'è un modo di sottomiscelare PCM usando pan:
Il numero di canali di uscita è 2, indi la prima sotto-opzione è "2".
Con sei canali di ingresso ci saranno sei gruppi di opzioni. Fortunatamente, visto che ci interessa solo l'uscita dei primi due canali, abbiamo solo bisogno di preparere due gruppi; i rimanenti quattro gruppi possono essere omessi. Attenzione che non tutti i file audio multicanale hanno lo stesso ordine dei canali! Questo esempio mostra il sottomissaggio di un file con gli stessi canali di AC-3 5.1:
0 - frontale sinistro 1 - frontale destro 2 - posteriore sinistro 3 - posteriore destro 4 - frontale centrale 5 - subwoofer
Il primo gruppo di sotto-opzioni elenca le percentuali del volume originario, che, rispettivamente, ogni canale di uscita deve ricevere dal canale frontale sinistro: "1:0". Il canale frontale destro dovrà finire nell'uscita di destra: "0:1". Lo stesso vale per i canali posteriori: "1:0" e "0:1". Il canale centrale va su entrambi i canali con metà del volume: "0.5:0.5", e il subwoofer va in entrambi a volume pieno: "1:1".
Metti tutto insieme, per avere:
mplayer 6-canali.wav
-af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1
Le percentuali suddette sono solo un rozzo esempio. Sentiti libero di modificarle.
Se hai un paio di grossi altoparlanti puoi non voler sprecare dei soldi per compare un subwoofer per un sistema audio 5.1 completo. Se usi -channels 5 per richiedere che liba52 decodifichi audio 5.1 in 5.0, il canale del subwoofer viene semplicemente scartato. Se vuoi distribuire il canale del subwoofer per conto tuo devi sottomiscelarlo a mano con pan:
Since pan needs to examine all six channels, specify -channels 6 so liba52 decodes them all. Siccome pan ha bisogno di esaminare tutti e sei i canali, specifica -channels 6 così che liba52 li decodifichi tutti quanti.
pan outputs to only five channels, the first suboption is 5. pan emette solo cinque canali, così la prima sotto-opzione è 5.
Sei canali di ingresso e cinque di uscita significano sei gruppi di cinque sotto-opzioni.
Il canale sinistro frontale semplicemente si riproduce su sé stesso: "1:0:0:0:0"
Lo stesso per il canale frontale destro: "0:1:0:0:0"
Lo stesso per il canale posteriore sinistro: "0:0:1:0:0"
E anche per il canale posteriore destro: "0:0:0:1:0"
Anche quello centrale frontale: "0:0:0:0:1"
E ora dobbiamo decidere cosa fare col subwoofer, per es. metà nel frontale destro e metà nel frontale sinistro: "0.5:0.5:0:0:0"
Combina tutte queste opzioni per ottenere:
mplayer dvd://1
-channels 6 -af pan=5:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0.5:0.5:0:0:0
Alcune tracce audio sono troppo silenziose per essere ascoltate bene senza amplificazione. Questo diventa un problema quando il tuo equipaggiamento non può amplificare il segnale per te. L'opzione -softvol indica a MPlayer di utilizzare un mixer interno. Puoi poi usare i tasti di regolazione volume (di default 9 e 0) per raggiungere livelli di volume molto più alti. Nota che ciò non bypassa il mixer della tua scheda audio; MPlayer amplifica solo il segnale prima di inviarlo alla tua scheda audio. L'esempio che segue è un buon punto di partenza:
mplayer file-silente
-softvol -softvol-max 300
L'opzione -softvol-max specifica il massimo volume permesso di uscita come una percentuale del volume originario. Per esempio, -softvol-max 200 farà sì che il volume sia regolato fino a due volte il valore originale. E' sicuro indicare un valore alto con -softvol-max; il volume più alto non sarà usato fino a quando non userai i tasti di regolazione. L'unico svantaggio di un valore alto è che, dato che MPlayer regola il volume come una percentuale del massimo, non avrai un controllo così preciso usando i tasti di regolazione del volume. Usa un valore più basso con -softvol-max e/o specifica -volstep 1 se ti serve maggior precisione.
L'opzione -softvol funziona controllando il filtro audio volume. Se vuoi riprodurre un file a un dato volume sin dall'avvio puoi specificare volume manualmente:
mplayer file-silente
-af volume=10
Questo riprodurrà il file con un guadagno di 10 decibel. Stai attento quando usi il filtro volume - puoi facilmente farti male alle orecchie se usi un valore troppo alto. Parti dal basso e sali gradualmente fino a quando capisci quanta regolazione è richiesta. Inoltre, se tu specifichi valori troppo alti, volume può aver bisogno di fare il clip del segnale per evitare di mandare alla tua scheda audio dati che siano fuori dalla gamma consentita; ciò risulterà in un audio distorto.
Questa sezione tratta di come abilitare la visione/acquisizione da sintonizzatori TV compatibili V4L. Vedi la pagina man per una descrizione delle opzioni e i controlli da tastiera per la TV.
Per prima cosa, devi ricompilare. ./configure rileverà gli header del kernel per la roba v4l e l'esistenza delle voci /dev/video*. Se ciò esiste, il supporto TV verrà compilato (guarda l'emissione di ./configure).
Assicurati che il tuo sintonizzatore funzioni con altri software TV per Linux, per esempio XawTV.
La lista completa delle opzioni è disponibile nella pagina di manuale. Qui ci sono giusto alcuni consigli:
Usa l'opzione channels. Un esempio:
-tv channels=26-MTV1,23-TV2
Spiegazione: con questa opzione, solo i canali 26 e 23 saranno utilizzabili. Ci sarà un simpatico testo OSD quando cambi canale, mostrante il nome del canale stesso. Gli spazi nel nome di canale devono essere sostituiti con il carattere "_".
Scegli una sana dimensione dell'immagine. Le dimensioni dell'immagine risultante dovrebbero essere divisibili per 16.
Se catturi il video con una risoluzione verticale maggiore di metà della risoluzione completa (per es. 288 per PAL o 240 per NTSC), allora i 'fotogrammi' che otterrai saranno reali coppie interlacciate di campi. A seconda di quello che vuoi fare con il video puoi lasciarle in questa forma, deinterlacciarle distruttivamente, oppure spezzare le coppie in campi singoli.
In caso contrario otterrai un filmato che risulta distorto durante le scene ad alto movimento e il controllore della frequenza probabilmente sarà incapace di mantenere la frequenza specificata, visto che gli artefatti dell'interlacciamento producono un alto numero di dettagli e quindi occupano molta banda. Puoi abilitare il deinterlacciamento con -vf pp=DEINT_TYPE. Solitamente pp=lb fa un buon lavoro, ma può essere oggetto di preferenze personali. Vedi anche gli altri algoritmi di deinterlacciamento nel manuale e provali.
Taglia via le zone morte. Quando catturi video, le zone sui bordi spesso sono nere o contengono del disturbo. Questo consuma un sacco di banda non necessaria. Per essere precisi non sono le zone nere in sé, ma quel salto tra il nero e la parte chiara dell'immagine video che la sprecano, ma ciò non è importante per adesso. Prima di iniziare l'acquisizione, imposta gli argomenti dell'opzione crop affinché tutta la porcheria ai margini venga tagliata via. E ancora, non dimenticarti di mantenere 'sane' le dimensioni dell'immagine risultante.
Controlla il carico della CPU. Non dovrebbe oltrepassare il 90% nella maggior parte del tempo. Se hai un grosso buffer di cattura, MEncoder può gestire un sovraccarico per pochi secondi, ma non di più. E' meglio disattivare screensaver 3D OpenGL e cose del genere.
Non pacioccare con il clock di sistema. MEncoder usa il clock di sistema per gestire la sincronizzazione A/V. Se tu modifichi il clock di sistema (specialmente all'indietro nel tempo), MEncoder resta confuso e perderai dei fotogrammi. Questo è un fattore importante se sei collegato alla rete e usi un qualche software di sincronizzazione dell'ora come NTP. Dovresti disabilitare NTP durante il processo di acquisizione se vuoi che la cattura sia affidabile.
Non modificare outfmt (il formato di uscita) a meno che tu
non sappia cosa stia facendo oppure la tua scheda/il tuo driver non supportino
davvero quello di default (spazio colore YV12). Nelle precedenti versioni di
MPlayer/MEncoder
era necessario indicare il formato di uscita. Questo problema dovrebbe
esser stato risolto nelle versioni correnti e outfmt non è più richiesto,
e quello di default va bene la maggior parte delle volte. Per esempio, se stai
catturando in DivX con libavcodec
e
specifichi outfmt=RGB24 per aumentare la qualità delle
immagini acquisite, l'immagine stessa verraà comunque convertita di nuovo
in YV12, perciò l'unica cosa che otterrai sarà spreco di CPU.
Ci sono vari modi per la cattura dell'audio. Puoi acquisire il suono sia usando la tua scheda audio attraverso una connessione via cavo esterna tra la scheda video e il line-in, sia usando l'ADC integrato nel chip bt878. Nell'ultimo caso, devi caricare il driver btaudio. Leggi il file linux/Documentation/sound/btaudio (nei sorgenti del kernel, non di MPlayer) per alcune istruzioni su come usare tale driver.
Se MEncoder non può aprire il dispositivo audio, assicurati che sia veramente disponibile. Ci sono alcuni problemi con sound server come aRts (KDE) o ESD (GNOME). Se hai una scheda audio full duplex (quasi tutte le schede decenti lo supportano, ad oggi), e stai usando KDE, prova a controllare l'opzione "full duplex" nel menu preferenze del sound server.
Uscita fasulla, verso AAlib :)
mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://
Ingresso da V4L standard:
mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://
Un esempio più complesso. Questo fa sì che MEncoder catturi l'immagine PAL completa, tagli i margini, e deinterlacci l'immagine usando un algoritmo di sfumatura lineare. L'audio viene compresso con una frequenza costante di 64kbps, usando il codec LAME. Questa impostazione è utilizzabile per acquisire film.
mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
-vf crop=720:544:24:16,pp=lb -o uscita.avi
tv://
Questo in più ridimensionerà l'immagine a 384x288 e comprimerà il video con una frequenza di 350kbps in modalità ad alta qualità. L'opzione vqmax rilascia il quantizzatore e permette al compressore video di raggiungere davvero una così bassa frequenza anche a spese della qualità. Questo puà essere usato per acquisire lunghe serie TV, dove la qualità video non è così importante.
mencoder -tv driver=v4l:width=768:height=576 \
-ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
-oac mp3lame -lameopts cbr:br=48 -sws 1 -o uscita.avi
\
-vf crop=720:540:24:18,pp=lb,scale=384:288 tv://
E' anche possibile specificare dimensioni immagine inferiori nell'opzione -tv e omettere il ridimensionamento software ma questo approccio usa la massima informazione disponibile ed è un po' più resiliente ai disturbi. I chip bt8x8 possono calcolare la media dei pixel solo sulla direzione orizzontale a causa di una limitazione hardware.
Il televideo è attualmente disponibile solo in MPlayer per i driver v4l e v4l2.
MPlayer gestisce il testo normale, la grafica e i collegamenti per la navigazione. Sfortunatamente, le pagine colorate non sono ancora decodificate completamente - tutte le pagine vengono mostrate in scala di grigi. Vengono gestite anche le pagine dei sottotitoli (conosciute anche come 'Closed Captions').
MPlayer inizia a memorizzare nella cache tutte le pagine di televideo sin dall'inizio della ricezione dall'ingresso TV, perciò non devi attendere fino a quando si carica la pagina voluta.
Nota: usare il televideo con -vo xv genera strani colori.
Per abilitare la decodifica del televideo devi specificare il dispositivo VBI da cui ottenere i dati televideo (solitamente /dev/vbi0 per Linux). Puoi fare ciò speificando tdevice nel tuo file di configurazione, come mostrato qui sotto:
tv=tdevice=/dev/vbi0
Potresti voler indicare il codice di lingua del televideo per la tua zona. Per elencare tutti i codici di zona disponibili usa
tv=tdevice=/dev/vbi0:tlang=-1
Qui c'è un esempio per il russo:
tv=tdevice=/dev/vbi0:tlang=33
Questa sezione tratta di come abilitare l'ascolto della radio da un sintonizzatore compatibile V4L. Guarda la pagina man per una descrizione delle opzioni e dei controlli di tastiera per la radio.
Per prima cosa devi compilare MPlayer usando ./configure con --enable-radio e (se vuoi il supporto per la cattura) --enable-radio-capture.
Assicurati che il tuo sintonizzatore funzioni con altri software radio per Linux, per esempio XawTV.
La lista completa delle opzioni è disponibile nella pagina di manuale. Qui ci sono giusto alcuni consigli:
Usa l'opzione channels. Un esempio:
-radio channels=104.4-Sibir,103.9-Maximum
Spiegazione: con questa opzione, solo le stazioni radio 104.4 e 103.9 saranno utilizzabili. Ci sarà un simpatico testo OSD quando cambi canale, mostrante il nome del canale stesso. Gli spazi nel nome di canale devono essere sostituiti con il carattere "_".
Ci sono vari modi per catturare l'audio. Puoi catturare il suono sia usando
la tua scheda video attraverso un cavo di connessione esterno tra la scheda
video e la line-in, ovvero usare l'ADC integrato nel chip saa7134.
Nell'ultimo caso, devi caricare il driver
saa7134-alsa
o saa7134-oss
.
MEncoder non può essere utilizzato per la cattura audio, poiché per funzionare richiede un flusso video. Per cui puoi usare o arecord dal progetto ALSA oppure usare l'opzione -ao pcm:file=file.wav. Nell'ultimo caso non sentirai suono alcuno (a meno che tu non stia usando un cavo line-in e abbia tolto il mute dal line-in).
Ingresso da V4L standard (usando un cavo su line-in, cattura disabilitata):
mplayer radio://104.4
Ingresso da V4L standard (usando un cavo su line-in, cattura disabilitata, interfaccia V4Lv1):
mplayer -radio driver=v4l radio://104.4
Riprodurre il secondo canale della lista canali:
mplayer -radio channels=104.4=Sibir,103.9=Maximm radio://2
Ridirigere il suono dall'ADC integrato della scheda radio al bus PCI.
In questo esempio il sintonizzatore viene usato come una seconda scheda audio
(ALSA device hw:1,0). Per schede basate su saa7134 deve esser caricato il modulo
saa7134-alsa
o saa7134-oss
.
mplayer -rawaudio rate=32000 radio://2/capture \ -radio adevice=hw=1.0:arate=32000:channels=104.4=Sibir,103.9=Maximm
Usando i nomi dispositivi ALSA, i due punti devono esser sostituiti con il segno di uguale, le virgole con punti.
libcaca
– Libreria Color ASCII Art
Si consiglia vivamente di controllare che i registri MTRR siano impostati correttamente, al fine di migliorare molto le prestazioni.
Fai un cat /proc/mtrr:
--($:~)--
cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1
E' giusto, mostra la mia Matrox G400 con 16MB di memoria. L'ho fatto da XFree 4.x.x, che imposta i registri MTRR automaticamente.
Se non ha funzionato, devi farlo a mano. Per prima cosa, devi trovare l'indirizzo di base. Hai 3 modi per trovarlo:
dai messaggi di avvio di X11, per esempio:
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000 (--) SVGA: Linear framebuffer at 0xD8000000
da /proc/pci (usa il comando lspci -v):
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525 Memory at d8000000 (32-bit, prefetchable)
dai messaggi del driver del kernel mga_vid (usa dmesg):
mga_mem_base = d8000000
Ora troviamo la dimensione della memoria. Questo è molto facile, converti semplicemente la video RAM in esadecimale, o usa questa tabella:
1 MB | 0x100000 |
2 MB | 0x200000 |
4 MB | 0x400000 |
8 MB | 0x800000 |
16 MB | 0x1000000 |
32 MB | 0x2000000 |
Ora che sai l'indirizzo di base e la dimensione della memoria, impostiamo i
registri MTRR!
Per esempio, per la scheda Matrox suddetta (base=0xd8000000
)
con 32MB di ram (size=0x2000000
) esegui semplicemente:
echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr
Non tutte le CPU hanno gli MTRR. Per esempio le CPU K6-2 più vecchie (intorno ai 266MHz, stepping 0) non hanno degli MTRR, ma gli stepping 12 invece sì (esegui cat /proc/cpuinfo per verificarlo).
In XFree86 4.0.2 o successivi, puoi utilizzare le funzioni YUV hardware della tua scheda usando l'estensione XVideo. Questo è quello che fa l'opzione -vo xv. Inoltre, il driver supporta l'impostazione di luminosità/contrasto/tonalità/etc (a meno che tu non usi il vecchio e lento codec DirectShow DivX, che le supporta ovunque), vedi la pagina man.
In order to make this work, be sure to check the following: Per far sì che funzioni, assicurati di controllare le seguenti:
Che tu usi XFree86 4.0.2 o superiore (le versioni precedenti non hanno XVideo)
Che la tua scheda supporti l'accelerazione hardware (le schede moderne la supportano)
Che X carichi l'estensione XVideo, è un qualcosa del genere:
(II) Loading extension XVideo
in /var/log/XFree86.0.log
Questo carica solo l'estensione per XFree86. In una buona installazione viene sempre caricata, e non significa che il supporto per l'XVideo della scheda sia presente!
Che la tua scheda abbia il supporto Xv sotto Linux. Per controllare, prova con xvinfo, è parte della distribuzione di XFree86. Dovrebbe mostrarti un lungo testo, simile al seguente:
X-Video Extension version 2.2 screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 (...) Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) (...etc...)
Deve supportare i formati pixel YUY2 packed e YV12 planar per poter essere utilizzabile con MPlayer.
E infine, controlla che MPlayer sia stato compilato col supporto per 'xv'. Lancia un mplayer -vo help | grep xv . Se il supporto per 'xv' è compilato, dovrebbe uscire una linea come la seguente:
xv X11/Xv
I vecchi driver 3dfx avevano notoriamente dei problemi con l'accelerazione XVideo, non erano compatibili con gli spazi colore YV12 e YUY2. Verifica di avere XFree86 4.2.0 o superiore, può gestire YV12 e YUY2, mentre le versioni precedenti, 4.1.0 incluso, vanno in crash con YV12. Se hai degli strani risultati usando -vo xv, prova SDL (anch'essa ha XVideo) e vedi se aiuta. Controlla la sezione su SDL per i dettagli.
OPPURE, prova il NUOVO driver -vo tdfxfb! Vedi la sezione tdfxfb
Le S3 Savage3D dovrebbero funzionare bene, ma per le Savage4, usa XFree86 4.0.3 o superiore (nel caso tu abbia problemi di immagini, prova a 16bpp). Per le S3 Virge invece: c'è il supporto per xv, ma la scheda in sé è molto lenta, per cui ti conviene venderla.
Non c'è un driver framebuffer nativo per le schede S3 Virge simile a tdfxfb. Configura il tuo framebuffer (per es. aggiungi "vga=792 video=vesa:mtrr" alla riga di avvio del kernel) e usa -vo s3fb (-vf yuy2 e -dr aiutano).
Non è ben chiaro il perché i modelli Savage non abbiano il supporto YV12 e facciano la conversione con il driver (lento). Se pensi sia colpa della scheda, cerca un driver più recente, o chiedi gentilmente di un driver abilitato MMX/3DNow! sulla mailing list MPlayer-users.
nVidia non è sempre una scelta molto buona sotto Linux... Il driver open-source di XFree86 supporta la maggior parte di queste schede, ma in alcuni casi, dovrai usare il driver proprietario a sorgenti chiusi di nVidia, disponibile sul sito nVidia. Ti servirà sempre questo driver anche se vuoi l'accelerazione 3D.
Le schede Riva128 non hanno il supporto XVideo con il driver nVidia di XFree86 :( Lamentati con nVidia.
Tuttavia, MPlayer contiene un driver VIDIX per la maggior parte delle schede nVidia. Attualmente è a livello di sviluppo beta e ha alcuni problemi. Per ulteriori informazioni, vedi la sezione VIDIX nVidia.
Il driver GATOS (che dovresti usare a meno che tu non abbia una Rage128 o una Radeon) di default ha il VSYNC abilitato. Ciò significa che la velocità di decodifica (!) è sincronizzata alla frequenza di aggiornamento del monitor. Se la riproduzione ti pare lenta, prova a disabilitare in qualche modo VSYNC, o ad impostare la frequenza di aggiornamento a n*(fps del film) Hz.
Read the VIDIX section. Radeon VE - se ti serve X, per questa scheda usa XFree86 4.2.0 o superiore. Il TV out non è supportato. Ovviamente con MPlayer puoi felicemente avere un display accelerato, con o senza l'uscita TV, e non servono librerie né X. Leggi la sezione VIDIX.
Queste schede si possono trovare in molti portatili. Devi usare XFree86 4.3.0 o superiore, o alternativamente usare i driver con Xv di Stefan Seyfried. Scegli semplicemente quello che ti serve in base alla tua versione di XFree86.
XFree86 4.3.0 include il supporto per Xv, caomunque Bohdan Horst ha postato una piccola patch ai sorgenti di XFree86 che velocizza fino a quattro volte le operazioni sul framebuffer (quindi XVideo). La patch è stata poi incorporata in XFree86 CVS e dovrebbe esserci nei rilasci successivi al 4.3.0.
Per permettere la riproduzione di contenuti della dimensione DVD, modifica il tuo XF86Config in questo modo:
Section "Device"
[...]
Driver "neomagic"
Option "OverlayMem" "829440"
[...]
EndSection
Se vuoi usare Xv con una scheda Trident, assunto il fatto che con 4.1.0 non funziona, intalla Xfree 4.2.0. Il 4.2.0 aggiunge il supporto per Xv a schermo intero con la scheda Cyberblade XP.
Alternativamente, MPlayer contiene un driver VIDIX per le schede Cyberblade/i1.
Se vuoi usare Xv con una scheda basata su Kyro (per esempio la Hercules Prophet 4000XT), dovresti scaricare i driver dal sito di PowerVR.
Queste schede si possono trovare in molti portatili. Si consiglia un Xorg recente.
Per permettere la riproduzione di contenuti a dimensione DVD (o superiore) modifica il tuo file di configurazione XF86Config/xorg.conf nel modo seguente:
Section "Device"
[...]
Driver "intel"
Option "LinearAlloc" "6144"
[...]
EndSection
L'assenza di questa opzione di solito porta a un errore del tipo
X11 error: BadAlloc (insufficient resources for operation)
quando si cerca di usare -vo xv.
PREAMBOLO. Questa documento cerca di spiegare in poche parole cosa sia DGA e cosa possa fare (e cosa no) il driver di uscita video DGA di MPlayer.
COS'E' DGA.
DGA è il nome breve di Direct Graphics
Access (accesso grafico diretto) ed è un modo per fa sì
che un programma scavalchi l'X server e modifichi direttamente la memoria
del framebuffer. In termini tecnici la memoria del framebuffer viene
rimappata nello spazio di memoria del tuo processo.
Questo è permesso dal kernel solo se hai provilegi di superutente. Puoi averli
o autenticandoti come root
o
impostando il bit SUID sull'eseguibile di MPlayer
(sconsigliato).
Ci sono due versioni di DGA: DGA1 usato da XFree 3.x.x e DGA2 che è stato introdotto con XFree 4.0.1.
DGA1 fornisce solamente accesso diretto al framebuffer come descritto sopra. Per modificare la risoluzione del segnale video devi affidarti all'estensione XVidMode.
DGA2 include le funzionalità dell'estensione XVidMode e inoltre permette la modifica della profondità di colore del display. Così, anche se stai facendo girare un X server con profondità di 32 bit, puoi passare a una di 15 e viceversa.
Tuttavia DGA ha dei punti deboli. Sembra sia in qualche modo dipendente dal chip grafico utilizzato e dall'implementazione del driver video dell'X server che controlla tale chip. Per cui non funziona su tutti i sistemi...
INSTALLARE IL SUPPORTO PER DGA IN MPLAYER. Per prima cosa assicurati che X carichi l'estensione DGA, guarda in /var/log/XFree86.0.log:
(II) Loading extension XFree86-DGA
Attenzione, si consiglia vivamente XFree86 4.0.x o superiore! Il driver DGA di MPlayer viene rilevato automaticamente da ./configure, ovvero puoi forzarlo con --enable-dga.
Se il driver non è riuscito a reimpostare una risoluzione inferiore, fai delle prove con le opzioni -vm (solo con X 3.3.x), -fs, -bpp, -zoom per trovare una modalità video in cui ci stia il film. Per ora non c'è un convertitore :(
Diventa root
. A DGA serve l'accesso
da root per essere in grado di scrivere direttamente sulla memoria video. Se
vuoi eseguirlo come utente, allora installa MPlayer
SUID root:
chown root/usr/local/bin/mplayer
chmod 750/usr/local/bin/mplayer
chmod +s/usr/local/bin/mplayer
Ora funziona anche da utente normale.
Questo porta un grosso rischio di sicurezza! Non farlo mai su un server o su un computer che può essere utilizzato da altre persone, perché si possono ottenere privilegi di root attraverso MPlayer SUID root.
Ora usa l'opzione -vo dga, e sei a cavallo! (speralo:) Potresti anche provare se ti funziona l'opzione -vo sdl:driver=dga! E' molto più veloce!
MODIFICARE LA RISOLUZIONE. Il driver DGA permette la modifica della risoluzione del segnale di uscita. Questo evita la necessità di eseguire un (lento) ridimensionamento software e allo stesso tempo fornisce un'immagine a schermo pieno. Idealmente dovrebbe ridimensionarsi alla risoluzione precisa (rispettando il rapporto di aspetto) dei dati video, ma l'X server permette solo di impostare le risoluzioni precedentemente definite in /etc/X11/XF86Config (/etc/X11/XF86Config-4 per XFree 4.X.X). Queste ultime sono conosciute come "modelines" e dipendono dalle potenzialità del tuo hardware video. Il server X legge questo file di configurazione all'avvio e disabilita le modelines incompatibili col tuo hardware. Puoi scoprire quali modalità ti restano attraverso il file di log di X11. Si può trovare qui: /var/log/XFree86.0.log.
Queste modalità si sa che funzionano correttamente con un chip Riva128, usando il driver nv.o del server X.
Section "Modes" Identifier "Modes[0]" Modeline "800x600" 40 800 840 968 1056 600 601 605 628 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan EndSection
DGA & MPLAYER. DGA is used in two places with MPlayer: The SDL driver can be made to make use of it (-vo sdl:driver=dga) and within the DGA driver (-vo dga). The above said is true for both; in the following sections I'll explain how the DGA driver for MPlayer works. DGA viene usato con MPlayer in due posti: può essere usato attraverso il driver SDL (-vo sdl:driver=dga) e con il driver DGA (-vo dga). Quanto detto sopra è valido per entrambi; nei paragrafi seguenti viene spiegato come il driver DGA funziona per MPlayer.
CARATTERISTICHE. Il driver DGA viene utilizzato specificando -vo dga sulla riga comando. Il comportamento di default è di passare ad una risoluzione il più vicino possibile a quella originaria del video. Ignora volutamente le opzioni -vm e -fs (abilitazione ridimensionamento video e schermo intero) - cerca sempre di coprire la più vasta area possibile dello schermo reimpostando la modalità video, evitando così di sprecare cicli della CPU per ridimensionare l'immagine. Se la modalità video selezionata non ti piace, puoi forzarlo a scegliere la modalità più prossima alla risoluzione specificata con -x e -y. Impostando l'opzione -v, il driver DGA emetterà, tra una sacco ci altre cose, un'elenco delle risoluzioni supportate dal tuo file XF86Config. Se hai DGA2, puoi anche forzarlo ad utilizzare una data profondità usando l'opzione -bpp. Profondità valide sono 15, 16, 24 e 32. Se queste profondità siano supportate nativamente oppure se debba venir effettuata una conversione (eventualmente lenta), dipende dal tuo hardware.
Se dovessi essere abbastanza fortunato da avere sufficiente memoria fuori dalla visualizzazione per poterci far stare un'immagine intera, il driver DGA userà un buffering doppio, fornendo una riproduzione più fluida. Ti dirà quando il doppio buffering sarà abilitato o no.
"Doppio buffering" significa che il fotogramma successivo del video viene disegnato nella memoria fuori dello schermo, mentre il fotogramma corrente viene mostrato. Quando il fotogramma successivo è pronto, il chip grafico rivece solo l'indirizzo in memoria del nuovo fotogramma e semplicemente prende da là i dati da mostrare. Nel frattempo l'altro buffer di memoria viene riempito con altri dati video.
Il doppio buffering può venir abilitato usando l'opzione -double e disabilitato con -nodouble. L'opzione attuale di default è di disabilitarlo. Usando il driver DGA, la visualizzazione dati su schermo (OSD, onscreen display) funziona solo con il doppio buffering abilitato. In ogni caso, abilitare il doppio buffering può portare una pesante penalizzazione della velocità (sul mio K6-II+ 525 usa un ulteriore 20% di tempo di CPU) in dipendenza dall'implementazione per DGA del tuo hardware.
PROBLEMI DI VELOCITA'. In generale, l'accesso DGA al framebuffer dovrebbe essere almeno veloce quanto utilizzare il driver X11, con il beneficio aggiunto di ottenere un'immagine a schermo intero. I valori di velocità percentuale emessi da MPlayer devono essere interpretati con un po' di attenzione, dato che per esempio con il driver X11 non includono il tempo usato dal server X per il disegno effettivo. Attacca un terminale sulla seriale della tua macchina e lancia top per vedere cosa stia davvero succedendo.
In linea di massima, l'aumento di velocità usando DGA rispetto all'utilizzo 'normale' di X11 dipende fortemente dalla tua scheda video e da quanto bene il relativo modulo del server X sia ottimizzato.
Se hai un sistema lento, è meglio usare una profondità di 15 o 16 bit, visto che richiedono solo la metà della banda di memoria di una visualizzazion a 32 bit.
Usare una profondità di 24 è una buona idea anche se la tua scheda supporta nativamente solo quella a 32 bit, dato che trasferisce il 25% dei dati in meno rispetto alla modalità a 32/32.
Ho visto alcuni file AVI riprodotti su Pentium MMX 266. Le CPU AMD K6-2 possono lavorare a 400 MHz e oltre.
PROBLEMI/BACHI CONOSCIUTI. Bene, secondo gli sviluppatori di XFree, DGA è quasi una bestia. Ti dicono che è meglio non usarla. La sua implementazione non è sempre perfetta con tutti i driver dei chip per XFree che ci sono là fuori.
Con XFree 4.0.3 e nv.o c'è un baco che porta ad avere strani colori.
I driver ATI hanno bisogno che la modalità sia reimpostata più di una volta dopo aver utilizzato DGA.
Alcuni driver semplicemente non riescono a tornare alla risoluzione normale (Usa Ctrl+Alt+Keypad + e Ctrl+Alt+Keypad - per cambiarla manualmente).
Alcuni driver semplicemente mostrano strani colori.
Alcuni driver mentono riguardo alla memoria che mappano nello spazio indirizzi del processo, perciò vo_dga non usa il doppio buffering (SIS?).
Alcuni driver sembra che falliscano nel fornire almeno una modalità valida. In questo caso il driver DGA andrà in crash raccontandoti di una modalità senza senso tipo 100000x100000 o qualcosa di simile.
L'OSD funziona solo col doppio buffering abilitato (altrimenti sfarfalla).
SDL (Simple Directmedia Layer) è praticamente un'interfaccia
unificata audio/video. I programmi che la usano non sanno che driver video o
audio SDL usi davvero, ma conoscono solo l'interfaccia. Per esempio un porting
di Doom che usi SDL può girara sopra a svgalib, aalib, X, fbdev e altro, devi
semplicemente specificare (per esempio) il driver video da usare attraverso la
variabile d'ambiente SDL_VIDEODRIVER
. In teoria, perlomeno.
Con MPlayer, usiamo la sua potenzialità di ridimensionamento via software del driver di X11 per le schede che non gestiscono XVideo, fino a quando non faremo il nostro (più veloce, più bello) ridimensionatore software. Abbiamo anche usato la sua uscita per aalib, ma ora abbiamo la nostra che è più comoda. La sua modalità per DGA era migliore della nostra fino a poco tempo fa. Hai capito, no? :)
Aiuta anche con alcuni driver/schede bacate, se il video è scattoso (non per problemi di sistema lento) oppure l'audio è saltellante.
L'uscita video SDL supporta la visualizzazione dei sottotitoli sotto al filmato ovvero sulla striscia nera (se presente).
INSTALLAZIONE. Affinché MPlayer compili il suo driver per SVGAlib (autorilevato, ma può essere forzato), devi installare svgalib e il suo pacchetto di sviluppo e non dimenticare di modificare /etc/vga/libvga.config in modo che corrisponda alla tua scheda e al tuo monitor.
Assicurati di non usare l'opzione -fs, dato che attiva l'utilizzo del ridimensionatore software, ed è lento. Se davvero ti serve, usa l'opzione -sws 4, che porterà una bassa qualità, ma è in qualche modo più veloce.
SUPPORTO PER EGA (4BPP). SVGAlib include EGAlib, e MPlayer ha la possibilità di mostrare qualsiasi filmato in 16 colori, utilizzabile in queste situazioni:
Scheda EGA con monitor EGA: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp
Scheda EGA con monitor CGA: 320x200x4bpp, 640x200x4bpp
Il valore dei bpp (bit per pixel) deve essere impostato a 4 manualmente: -bpp 4
Il filmato probabilmente deve essere rimpicciolito per starci nella modalità EGA:
-vf scale=640:350
or
-vf scale=320:200
Per questo ci serve una funzione di ridimensionamento veloce ma a bassa qualità:
-sws 4
Forse la correzione automatica dell'aspetto va disattivata:
-noaspect
Secondo la mia esperienza la qualità migliore dell'immagine su schermi EGA può essere ottenuta diminuendo un pochino la luminosità: -vf eq=-20:0. Sul mio sistema ho anche bisogno di abbassare la frequenza audio, dato che era rovinata a 44kHz: -srate 22050.
Puoi abilitare l'OSD e i sottotitoli solo con il filtro expand, vedi la pagina man per i parametri precisi.
Se compilare l'uscita FBdev o no viene rilevato automaticamente da ./configure. Leggi nei sorgenti del kernel la documentazione sul framebuffer (Documentation/fb/*) per ulteriori informazioni.
Se la tua scheda non supporta lo standard VBE 2.0 (vecchie schede ISA/PCI, come la S3 Trio64), ma solo VBE 1.2 (o precedente?): bene, c'è ancora VESAfb, ma ddovrai caricare SciTech Display Doctor (conosciuto precedentemente come UniVBE) prima di avviare Linux. Usa un disco di avvio DOS o qualcosa del genere. E non dimenticare di registrare il tuo UniVBE ;))
L'uscita su FBdev richiede principalmente alcuni parametri addizionali:
specifica il dispositivo framebuffer da usare (default: /dev/fb0)
nome della modalità da usare (come in /etc/fb.modes)
file di configirazione delle modalità (default: /etc/fb.modes)
valori importanti, vedi example.conf
Se vuoi passare a una modalità particolare, allora usa
mplayer -vm -fbmodenome_modalità
nomefile
-vm da sola può scegliere la modalità più adatta da /etc/fb.modes. Può essere usata anche insieme con le opzioni -x e -y. L'opzione -flip è supportata solo se il formato pixel del film corrisponde al formato pixel della modalità video. Stai attento al valore di bpp, il driver fbdev cerca di usare prima quello corrente, poi quello che indichi tramite l'opzione -bpp option.
l'opzione -zoom non è supportata (usa -vf scale). Non puoi usare modalità a 8bbp (o meno).
Probabilmente vuoi disabilitare il cursore:
echo -e '\033[?25l'
o
setterm -cursor off
e il salvaschermo:
setterm -blank 0
Per riabilitare il cursore:
echo -e '\033[?25h'
o
setterm -cursor on
La modifica della modalità video di FBdev non funziona con il framebuffer VESA, e non chiederla, visto che non è una limitazione di MPlayer.
mga_vid
è un'incrocio di un driver di uscita video e
di un modulo del kernel, che utilizza il ridimensionatore e l'overlay video
delle Matrox G200/G400/G450/G550 per effettuare una conversione dello spazio
colore YUV->RGB e un ridimensionamento video arbitrario.
mga_vid
ha un supporto hardware per VSYNC con triplo
buffering. Funziona sia in una console su framebuffer che dentro X, ma solo con
Linux 2.4.x.
Per una versione del driver per Linux 2.6.x controlla http://attila.kinali.ch/mga/ oppure butta un occhio sul repository Subversion esterno di mga_vid, che si può ottenere tramite
svn checkout svn://svn.mplayerhq.hu/mga_vid
Installazione:
Per usarlo devi innanzitutto compilare drivers/mga_vid.o:
cd drivers make drivers
Poi esegui (come root
)
make install-drivers
che dovrebbe installare il modulo e creare per te il nodo del dispositivo. Carica il driver con
insmod mga_vid.o
Dovresti verificare il rilevamento della dimensione della memoria usando il comando dmesg. Se è errato, usa l'opzione mga_ram_size (prima fai rmmod mga_vid), indicando in MB la dimensione della memoria della scheda:
insmod mga_vid.o mga_ram_size=16
Per far sì che venga caricato/scaricato quando serve, prima inserisci la riga seguente alla fine di /etc/modules.conf:
alias char-major-178 mga_vid
Ora devi (ri)compilare MPlayer, ./configure rileverà /dev/mga_vid e compilerà il driver 'mga'. Si potrà usare da MPlayer con -vo mga se sei su una console matroxfb, oppure -vo xmga se sei sotto XFree86 3.x.x o 4.x.x.
Il driver mga_vid collabora con Xv.
Si può leggere il file del dispositivo /dev/mga_vid per alcune informazioni, per esempio facendo
cat /dev/mga_vid
e ci si può scrivere per modificare la luminosità:
echo "brightness=120" > /dev/mga_vid
Nella stessa directory c'è un'applicazione di test che si chiama mga_vid_test. Se tutto funziona bene, dovrebbe disegnare immagini di 256x256 sullo schermo.
Questo driver usa il driver tdfx del kernel per il framebuffer per riprodurre filmati con accelerazione YUV. Ti serve un kernel con supporto per tdfxfb e ricompilare con
./configure --enable-tdfxfb
Questo è un'incrocio di un driver di uscita video e di un modulo del kernel,
simile a mga_vid. Ti serve un kernel 2.4.x con
il driver agpgart
, visto che
tdfx_vid
usa AGP. Passa
--enable-tdfxfb a configure per compilare
il driver di uscita video e compila il module del kernel con le istruzioni
seguenti.
Installare il modulo del kernel tdfx_vid.o:
Compila drivers/tdfx_vid.o:
cd drivers make drivers
Poi esegui (come root
)
make install-drivers
che dovrebbe installare il modulo e creare per te il nodo del dispositivo. Carica il driver con
insmod tdfx_vid.o
Per far sì che venga caricato/scaricato quando serve, prima inserisci la riga seguente alla fine di /etc/modules.conf:
alias char-major-178 tdfx_vid
Nella stessa directory c'è un'applicazione di test che si chiama tdfx_vid_test. Se tutto funziona bene, dovrebbe fornire alcune informazioni utili.
MPlayer supporta la riproduzione di filmati usando OpenGL, ma se se la tua piattaforma/driver supportano xv come è il caso di un PC con Linux, allora usa xv, le prestazioni OpenGL sono pesantemente peggiori. Se hai un'implementazione di X11 senza xv, OpenGL è una valida alternativa.
Sfortunatamente non tutti i driver supportano questa caratteristica. I driver Utah-GLX (per XFree86 3.3.6) la supportano per tutte le schede. Vedi http://utah-glx.sf.net per dettagli su come installarli.
XFree86(DRI) 4.0.3 or later supports OpenGL with Matrox and Radeon cards, 4.2.0 or later supports Rage128. Vedi http://dri.sf.net for download and installation instructions. XFree86(DRI) 4.0.3 o successivi supportano OpenGL con schede Matrox e Radeon, 4.2.0 o successivi supportano le Rage128. Leggi su http://dri.sf.net le istruzioni per scaricarli ed installare.
Un consiglio per i nostri utenti: l'uscita video GL può essere usata per ottenere un'uscita sincronizzata su vsync. Devi impostare una variabile d'ambiente (perlomeno con nVidia):
export __GL_SYNC_TO_VBLANK=1
AAlib è una libreria per mostrare elementi grafici in modalità testuale, usando un potente renderizzatore ASCII. Ci sono valanghe di programmi che la utilizzano, come Doom, Quake, etc. MPlayer ne include un driver facilmente utilizzabile. Se ./configure trova AAlib installata, il driver di uscita video per aalib verrà compilato.
Puoi usare alcune chiavi nella finestra AA per modificare le opzioni di renderizzazione:
Chiave | Azione |
---|---|
1 | diminuisce il contrasto |
2 | aumenta il contrasto |
3 | diminuisce la luminosità |
4 | aumenta la luminosità |
5 | abilita/disabilita il fast rendering |
6 | imposta la modalità di dithering (nessuna, distribuzione di errore, Floyd Steinberg) |
7 | inverte l'immagine |
8 | passa tra i controlli di aa e quelli di MPlayer |
Si possono usare le seguenti opzioni sulla riga di comando:
V
modifica il colore OSD
V
modifica il colore dei sottitoli
dove V
può essere:
0
(normale),
1
(scuro),
2
(grassetto),
3
(font grassetto),
4
(invertito),
5
(speciale).
AAlib di suo fornisce un po' di opzioni. Di seguito alcune importanti:
Impostra il driver aa preferito (X11, curses, Linux).
Usa tutti e 256 i caratteri.
Usa ASCII a otto bit.
Lista tutte le opzioni per aalib.
La renderizzazione è molto pesante per la CPU, specialmente usando AA-on-X (usando aalib su X), ed è più leggera su una console standard, senza framebuffer. Usa SVGATextMode per impostare una modalità a molti caratteri, poi divertiti! (le schede Hercules con seconda uscita sono mitiche :)) (ma IMHO puoi usare l'opzione -vf 1bpp per avere grafica su hgafb:)
Usa l'opzione -framedrop se il tuo computer non è abbastanza veloce da renderizzare tutti i fotogrammi!
Riproducendo su un terminale, avrai migliore velocità e qualità usando il
driver Linux, non ncurses (-aadriver linux). Ma devi anche
avere accesso a
/dev/vcsa<terminale>
!
Questo non è rilevato automaticamente da aalib, ma vo_aa cerca di trovare la
modalità migliore. Leggi http://aa-project.sf.net/tune per
altri consigli di impostazioni.
La libreria libcaca
è una libreria grafica che emette testo al posto di pixel, indi può funzionare
su schede video più vecchie o su terminali di testo. Non è dissimile dalla
famosa libreria AAlib
.
libcaca
ha bisogno di un terminale per
poter funzionare, perciò dovrebbe funzionare su tutti i sistemi Unix (incluso
Mac OS X) usando la libreria slang
ovvero la libreria ncurses
, sotto DOS
usando la libreria conio.h
, e nei
sistemi Windows usando slang
o
ncurses
(tramite l'emulazione Cygwin)
oppure conio.h
. Se
./configure rileva la presenza di
libcaca
, il driver di uscita video per
caca verrà compilato.
Le differenze rispetto ad AAlib
sono le seguenti:
16 colori disponibili per l'emissione a caratteri (256 coppie di colori)
dithering del colore dell'immagine
Ma libcaca
ha anche le seguenti
limitazioni:
nessun supporto per luminosià, contrasto, gamma
Puoi utilizzare alcuni tasti nella finestra caca per modificare le opzioni di renderizzazione:
Chiave | Azione |
---|---|
d |
Attiva/disattiva il metodo di dithering di
libcaca .
|
a |
Attiva/disattiva l'antialias di
libcaca .
|
b |
Attiva/disattiva lo sfondo di
libcaca .
|
libcaca
terrà anche conto di
alcune variabili d'ambiente:
Imposta il driver caca richiesto. Per es. ncurses, slang, x11.
Specifica il numero di righe e colonne. Per es. 128x50.
Specifica il font da usare. Per es. fixed, nexus.
Usa l'opzione -framedrop se il tuo computer non è abbastanza veloce per renderizzare tutti i fotogrammi.
Questo driver è stato progettato ed introdotto come un driver generico per qualsiasi scheda video che abbia un BIOS compatibile con VESA VBE 2.0. Un altro vantaggio di questo driver è che cerca di attivare l'uscita TV. La VESA BIOS EXTENSION (VBE) Versione 3.0 Data: 16 settembre 1998 (pagina 70) dice:
Dual-Controller Designs. VBE 3.0 supports the dual-controller design by assuming that since both controllers are typically provided by the same OEM, under control of a single BIOS ROM on the same graphics card, it is possible to hide the fact that two controllers are indeed present from the application. This has the limitation of preventing simultaneous use of the independent controllers, but allows applications released before VBE 3.0 to operate normally. The VBE Function 00h (Return Controller Information) returns the combined information of both controllers, including the combined list of available modes. When the application selects a mode, the appropriate controller is activated. Each of the remaining VBE functions then operates on the active controller.
Perciò usando questo driver hai qualche possibilità di far funzionare l'uscita TV (si presume che spesso l'uscita TV sia almeno un'uscita a sè stante).
VANTAGGI
Puoi riuscire a guardare film anche se Linux non riconosce il tuo hardware grafico.
Non ti serve avere alcuna cosa relativa alla grafica (come X11 (AKA XFree86), fbdev e così via) sul tuo Linux. Questo driver può venir utilizzato dalla modalità testo.
Hai qualche possibilità di avere l'uscita TV funzionante (per le schede ATI perlomeno è così).
Questo driver chiama la funzione int 10h
percui non è
un emulatore - fa riferimento a cose reali
del BIOS reale in
modalità reale (attualmente in modalità vm86).
Con esso puoi usare VIDIX, potendo ottenere contemporaneamente un'uscita video accelerata e e l'uscita TV! (consigliato per schede ATI)
Se hai VESA VBE 3.0+ e hai specificato in qualche dove monitor-hfreq, monitor-vfreq, monitor-dotclock (nel file di configurazione o dalla riga comando) otterrai la massima frequenza di aggiornamento possibile (usando formule generiche di temporizzazione). Per abilitare questa funzionalità devi specificare tutte le opzioni per il tuo monitor.
SVANTAGGI
Funziona solo su sistemi x86.
Può essere usato solo da root
.
Attualmente è disponibile solo per Linux.
Non usare questo driver con GCC 2.96! Non funzionerà!
OPZIONI DELLA RIGA COMANDO DISPONIBILI PER VESA
opzioni
attualmente riconosciute: dga
per forzare la modalità
dga e nodga
per disabilitarla. In modalità dga puoi
abilitare il doppio buffering con l'opzione -double.
Nota: puoi omettere questi parametri per abilitare
l'auto-rilevazione della modalità dga.
PROBLEMI CONOSCIUTI E SOLUZIONI
Se hai dei font NLS installati sulla tua macchina Linux ed utilizzi il driver VESA in modalità testo, allora dopo essere uscito daMPlayer avrai i font ROM caricati al posto di quelli locali. Puoi ricaricare i font locali usando lo strumento setsysfont per Mandrake/Mandriva, ad esempio (consiglio: lo stesso strumento viene usato per la localizzazione di fbdev).
Alcuni driver grafici per Linux non modificano nella memoria DOS la modalità BIOS attiva. Per cui se hai questo problema - usa sempre il driver VESA dalla modalità testo. Altrimenti verrà comunque attivata la modalità testo (#03) e dovrai riavviare il tuo computer.
Spesso dopo aver dismesso il driver VESA ottieni uno schermo nero. Per riportare il tuo schermo allo stato originario - salta semplicemente ad unìaltra console (premendo Alt+F<x>) poi ritorna alla console precedente allo stesso modo.
Per avere l'uscita TV funzionante devi avere il connettore TV collegato prima di avviare il tuo PC, visto che il BIOS video si inizializza solo una volta durante il passaggio POST.
Da evitare se possibile. Uscita su X11 (utilizza l'estensione della memoria condivisa), senza alcuna accelerazione hardware. Gestisce il ridimensionamento software (accelerato MMX/3DNow/SSE, ma sempre lento), usa le opzioni -fs -zoom. La maggior parte delle schede gestisce un ridimensionamento hardware, usa per queste l'uscita -vo xv, oppure -vo xmga per le schede Matrox.
Il problema è che i driver di molte schede non supportano l'accelerazione hardware sulla seconda uscita o TV. In quei casi, vedi delle finestre blu/verdi al posto del film. In questi casi torna utile questo driver, ma ti serve una CPU potente per effettuare il ridimensionamento software. Non usare il driver di uscita SDL + ridimensionamento software, ha una peggior qualità dell'immagine.
Il ridimensionamento software è molto lento, ti conviene piuttosto cambiare la modalità video. E' molto facile. Guarda le modeline della sezione DGA, e inseriscile nel tuo XF86Config.
Se hai XFree86 4.x.x: usa l'opzione -vm. Passerà alla risoluzione che meglio si adatta al tuo film. Se non lo fa:
With XFree86 3.x.x: you have to cycle through available resolutions Con XFree86 3.x.x: devi passare attraverso le risoluzioni disponibili con i tasti Ctrl+Alt+Keypad + e Ctrl+Alt+Keypad -.
Se non trovi le modalità che hai aggiunto, controlla l'emissione di XFree86. Alcuni driver non possono usare dei pixelclock che servono per modalità a bassa risoluzione.
PREAMBOLO. VIDIX è un nome breve che sta per VIDeo Interface per *niX. VIDIX è stato progettato ed introdotto com un'interfaccia per driver veloci nello spazio utente, fornendo delle prestazioni video come quelle che fornisce mga_vid per le schede Matrox. E' anche molto portabile.
Quest'interfaccia è stata progettata come un tentativo di riunire le interfacce di accelerazione video già esistenti (conosciute come mga_vid, rage128_vid, radeon_vid, pm3_vid) in uno schema fissato. Fornisce un'interfaccia di alto livello a chip conosciuti come BES (BackEnd scalers) o OV (Video Overlays). Non fornisce un'interfaccia a basso livello a cose conosciute come server grafici (non voglio entrare in competizione con il gruppo di X11 per le modifiche alla modalità grafica). Per es. l'obiettivo principale di quest'intarfaccia è quello di velocizzare la riproduzione video.
USO
Puoi usare un driver di uscita video a sé stante: -vo xvidix. Questo driver è stato sviluppato come un front-end tra X11 e la tecnologia VIDIX. Richiede l'X server e può funzionare solo dentro all'X server stesso. Nota che, visto che accede direttamente all'hardware e oltrepassa il driver X, le immagini memorizzate nella memoria della scheda video possono venir corrotte. Puoi evitarlo limitando la dimensione della memoria video usata da X con l'opzine "VideoRam" nella sezione device di XF86Config. Dovresti impostare tale opzione alla quantità di memoria della tua scheda meno 4MB. Se hai meno di 8MB di ram video, puoi usare invece l'opzione "XaaNoPixmapCache" nella sezione screen.
C'è poi un driver VIDIX per la console: -vo cvidix. Questo richiede per la maggior parte delle schede un framebuffer inizializzato e funzionante (altrimenti incasinerai solamente lo schermo), e otterrai un effetto simile a -vo mga o -vo fbdev. Le schede nVidia tuttavia sono in grado di emettere video completamente grafico su vere console di testo. Vedi la sezione nvidia_vid per ulteriori informazioni. Per evitare il testo sui bordi e il cursore lampeggiante, prova qualcosa tipo
setterm -cursor off > /dev/tty9
(presumendo che tty9
non venga utilizzata) e poi
passa a tty9
.
D'altro canto, -colorkey 0 dovrebbe mostrarti il video sullo
"sfondo", anche se questo dipende dal fatto che colorkey funzioni bene o no.
Puoi usare un sotto-dispositivo VIDIX che sia stato applicato a vari driver di uscita video, così: -vo vesa:vidix (solo per Linux) e -vo fbdev:vidix.
In verità non conta quale driver di uscita video venga usato con VIDIX.
PREREQUISITI
La scheda video dovrebbe essere in modalità grafica (tranne le schede nVidia con il driver di uscita -vo cvidix).
Il driver di uscita video di MPlayer dovrebbe conoscere la modalità video attiva ed essere in grado di fornire al sotto-dispositivo VIDIX alcune caratteristiche video del server.
MODI DI UTILIZZO. Quando VIDIX viene usato come un sotto-dispositivo (-vo vesa:vidix) allora la configurazione della modalità video viene eseguita dal dispositivo di uscita video (vo_server, in breve). Perciò puoi passare sulla riga comando di MPlayer le stesse chiavi per vo_server. Inoltre accetta -double come un parametro globale (si consiglia di usare questa opzione con VIDIX almeno per le schede ATI). Come -vo xvidix, attualmente riconosce le seguenti opzioni: -fs -zoom -x -y -double.
Poi puoi specificare il driver VIDIX direttamente sulla riga comando come una terza sotto-opzione:
mplayer -vo xvidix:mga_vid.so -fs -zoom -double file.avi
o
mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 file.avi
ma è pericoloso e non dovresti farlo. In questo caso il driver indicato verrà forzato e i risultati sono imprevedibili (potrebbe mandarti il computer in freeze). Dovresti farlo SOLO se sei assolutamente sicuro che funzionerà e MPlayer non lo farà automaticamente. Per favore dillo agli sviluppatori. Il modo corretto è utilizzare VIDIX senza argomenti per abilitare la rilevazione automatica del driver.
Visto che VIDIX richiede un accesso diretto all'hardware puoi sia eseguirlo come root, sia impostare il bit SUID sull'eseguibile di MPlayer. (Attenzione: questo è un rischio di sicurezza!) Alternativamente puoi usare uno modulo del kernel speciale, come questo:
Scarica la versione di sviluppo di svgalib (1.9.x).
Compila il modulo nella directory svgalib_helper (si trova dentro la directory svgalib-1.9.17/kernel/ se hai scaricato i sorgenti dal sito di svgalib) e caricalo nel kernel.
Per creare i dispositivi necessari nella directory /dev, esegui, da utente root,
make device
nella directory svgalib_helper.
Poi esegui di nuovo configure passando i parametri
--enable-svgalib_helper e
--extra-cflags=/percorso/dei/sorgenti/di/svgalib_helper
kernel/svgalib_helper,
dove /percorso/dei/sorgenti/di/svgalib_helper
deve
puntare al percorso dove hai estratto i sorgenti di svgalib_helper.
Ricompila.
Attualmente la maggior parte delle schede ATI è supportata nativamente, dalle Mach64 alle più recenti Radeon.
Ci sono due binari compilati: radeon_vid per le Radeon e rage128_vid per le schede Rage 128. Puoi forzare l'utilizzo di uno dei due, oppure lasciare che il sistema VIDIX provi tutti i driver disponibili.
Le Matrox G200, G400, G450 and G550 sono state riportate come funzionanti.
Il driver supporta gli equalizzatori video e dovrebbe essere veloce quasi quanto il framebuffer Matrox.
C'è un driver disponibile per il chipset Trident Cyberblade/i1, che si può trovare sulle schede madri VIA Epia.
Il driver è scritto e mantenuto da Alastair M. Robinson.
Anche se esiste un driver per i chip 3DLabs GLINT R3 e Permedia3, nessuno lo ha provato, perciò delle informazioni sono benvenute.
Una caratteristica unica del driver nvidia_vid è la sua abilità nel mostrare video su di una semplice, pura, console di testo - senza alcun framebuffer o qualche magia di X. Per questo fine, dovremo usare il driver di uscita video cvidix, come mostrato nell'esempio che segue:
mplayer -vo cvidix esempio.avi
"DirectFB is a graphics library which was designed with embedded systems in mind. It offers maximum hardware accelerated performance at a minimum of resource usage and overhead." - citazione da http://www.directfb.org
Ometterò le caratteristiche di DirectFB da questa sezione.
Anche se MPlayer non è supportato come un "provider video" in DirectFB, questo driver di uscita video abiliterà la riproduzione video tramite DirectFB. Sarà - ovviamente - accelerata, la velocità di DirectFB sulla mia Matrox G400 è la stessa di XVideo.
Cerca sempre di utilizzare la versione più recente di DirectFB. Sulla riga comando puoi usare le opzioni di DirectFB, usando -dfbopts. La scelta del livello può essere fatta con il metodo del sotto-dispositivo, per es.: -vo directfb:2 (il livello -1 è il default: autorilevazione)
Leggi per favore la sezione principale di DirectFB per le informazioni generali.
Questo driver di uscita video abiliterà il CRTC2 (sulla seconda uscita) delle schede Matrox G400/G450/G550, mostrando il video independentemente rispetto alla prima uscita.
Ville Syrjala's ha un README e un HOWTO sul suo sito, che spiegano come far funzionare l'uscita TV DirectFB sulle schede Matrox.
MPlayer supporta le schede con chipset DVB Siemens di produttori come Siemens, Technotrend, Galaxis o Hauppauge. I driver DVB più recenti sono disponibili sul sito di Linux TV. Se vuoi eseguire la transcodifica software dovresti avere almeno una CPU a 1GHz.
Configure dovrebbe rilevare la tua scheda DVB. Se non lo fa, forzalo con
./configure --enable-dvb
Se hai gli header ost in un percorso non standard, imposta il percorso con
./configure --extra-cflags=directory sorgenti DVB
/ost/include
Poi compila ed installa come al solito.
USO. La decodifica hardware di flussi contententi video MPEG-1/2 e/o audio MPEG puà essere effettuata con questo comando:
mplayer -ao mpegpes -vo mpegpes file.mpg|vob
La decodfica di qualsiasi altro tipo di flusso video richiede la transcodifica in MPEG-1, indi è lenta a potrebbe non valerne la pena, specialmente se il tuo computer è lento. Si puà ottenere usando un comando come questo:
mplayer -ao mpegpes -vo mpegpestuofile.ext
mplayer -ao mpegpes -vo mpegpes -vf expandtuofile.ext
Fai attenzione che le schede DVB supportano solo le altezze 288 e 576 per PAL oppure 240 e 480 per NTSC. Devi ridimensionare le altre altezze aggiungendo scale=larghezza:altezza, con la larghezza e l'altezza volute, all'opzione -vf. Le schede DVB accettano diverse larghezze, come 720, 704, 640, 512, 480, 352 etc. ed effettuano il ridimensionamento hardware sulla direzione orizzontale, perciò nella maggior parte deiu casi non ti serve ridimensionare in orizzontale. Per un MPEG-4 (DivX) a 512x384 (aspetto 4:3), prova:
mplayer -ao mpegpes -vo mpegpes -vf scale=512:576
Se hai un film in widescreen e non vuoi ridimensionarlo ad altezza piena, puoi usare il filtro expand=w:h per aggiungere delle bande nere. Per guardare un MPEG-4 (DivX) a 640x384, prova:
mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 file.avi
Se la tua CPU è troppo lenta per un MPEG-4 (DivX) intero a 720x576, prova a rimpicciolirlo:
mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 file.avi
Se la velocità non migliora, prova a rimpicciolirlo anche in verticale:
mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 file.avi
Per l'OSD e i sottotitoli usa la caratteristica OSD del filtro expand. Quindi, al posto di expand=w:h o expand=w:h:x:y, usa expand=w:h:x:y:1 (il quinto parametro :1 alla fine abiliterà il rendering dell'OSD). Potresti voler spostare leggermente verso l'alto l'immagine per ottenere una banda nera più ampia per i sottotitoli. Potresti anche voler spostare più in alto i sottotitoli, se sono al di fuori dello schermo della tua TV, usa l'opzione -subpos <0-100> (-subpos 80 è una buona scelta).
Per poter riprodurre un film non a 25fps su una TV PAL ovvero con una CPU lenta, aggiungi l'opzione -framedrop.
Per mantenere il rapporto di aspetto dei file MPEG-4 (DivX) e ottenere i parametri ottimali per il ridimensionamento (ridimensionamento orizzontale hardware e verticale software mantenendo il giusto rapporto di aspetto), usa il nuovo filtro dvbscale:
per una TV a 4:3: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1 per una TV a 16:9: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1
TV Digitale (modulo d'ingresso DVB). Puoi usare la tua scheda TV per guardare la TV Digitale.
Dovresti avere installati i programmi scan e szap/tzap/czap/azap; essi sono inclusi nel pacchetto dei driver.
Verifica che i tuoi driver funzionino correttamente attraverso un programma tipo dvbstream (che è la base del modulo d'ingresso DVB).
Ora dovresti riempire un file ~/.mplayer/channels.conf, con la sintassi accettata da szap/tzap/czap/azap, o fare in modo che scan lo riempia per te.
Se hai più di un tipo di scheda (per es. Satellitare, Terrestre, Via Cavo e ATSC) puoi salvare i tuoi file dei canali come ~/.mplayer/channels.conf.sat, ~/.mplayer/channels.conf.ter, ~/.mplayer/channels.conf.cbl, e ~/.mplayer/channels.conf.atsc, rispettivamente, per spingere implicitamente MPlayer ad usare questi file invece che ~/.mplayer/channels.conf, e devi solamente specificare quale scheda usare.
Assicurati di avere solo canali in chiaro nel tuo file channels.conf, altrimenti MPlayer resterà in attesa di una trasmissione non criptata.
Nei tuoi campi audio e video puoi usare una sintassi espansa: ...:pid[+pid]:... (fino ad un massimo di 6 pid ciascuno); in questo caso MPlayer includerà nel flusso tutti i pid indicati, oltre al pid 0 (che contiene il PAT). Si consiglia di includere in ogni riga i pid PMT e PCR per il canale corrispondente (se conosciuti). Puoi anche specificare 8192, che seleziona tutti i pid su quella frequenza e puoi anche passare con TAB attraverso i programmi. Potrebbe aver bisogno di più banda, anche se le schede economiche passano sempre tutti canali al kernel, per cui non fa molta differenza per queste. Altri utilizzi possibili sono: pid televideo, seconda traccia audio, etc...
Se MPlayer si lamenta frequentemente di
Troppi pacchetti video/audio nel buffer
oppure noti una desincronizzazione crescente tra l'audio e il video, verifica la presenza del pid PCR nel tuo flusso (serve per adeguarsi alla modalità di buffering del trasmettitore) e/o prova ad usare il demuxer MPEG-TS di libavformat aggiungendo -demuxer lavf -lavfdopts probesize=128 alla tua riga comando.
Per vedere il primo dei canali presenti nella tua lista, esegui
mplayer dvb://
Se vuoi guardare un canale in particolare, come R1, esegui
mplayer dvb://R1
Se hai più di una scheda puoi anche dover specificare il numero della scheda dove il canale si vede (per es. 2) con la sintassi:
mplayer dvb://2@R1
Per cambiare canale premi i tasti h (successivo) e k (precedente), oppure usa il menu OSD.
Per disabilitare temporaneamente il flusso video o audio, copia quello che segue in ~/.mplayer/input.conf:
% set_property switch_video -2 & step_property switch_video ? set_property switch_audio -2 ^ step_property switch_audio
(Reimpostando i comandi da tastiera come si preferisce.) Premendo il tasto corrispondente a switch_x -2, il flusso relativo verrà chiuso; premendo il tasto corrispondente a step_x il flusso verrà riaperto. Nota che quando ci sono più flussi audio e video nel multiplex questo meccanismo non funzionerà nel modo che ci si aspetta.
Durante la riproduzione (non durante la registrazione), per evitare saltellamenti e messaggi di errore tipo 'Il tuo sistema è troppo LENTO', si consiglia di aggiungere
-mc 10 -speed 0.97 -af scaletempo
alla riga comando, impostando i parametri di scaletempo come si preferisce.
Se il tuo ~/.mplayer/menu.conf contiene una voce
<dvbsel>
, come quella nel file di esempio
etc/dvb-menu.conf (che puoi usare per sovrascrivere
~/.mplayer/menu.conf), il menu principale mostrerà una
voce di sotto-menu che ti lascerà scegliere uno dei canali presenti nel tuo
channels.conf, possibilmente preceduto da un menu con la
lista delle schede disponibili, se ve ne è più di una utilizzabile da
MPlayer.
Se vuoi salvare su disco un programma puoi usare
mplayer -dumpfiler1.ts
-dumpstream dvb://R1
Se vuoi registrarlo in un formato diverso (ri-codificandolo) puoi invece lanciare un comando come
mencoder -or1.avi
-ovc xvid -xvidencopts bitrate=800 \ -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1
Leggi la pagina man per una lista di opzioni che puoi passare al modulo di ingresso DVB.
FUTURO. Se hai domande o vuoi ricevere gli annunci di nuove caratteristiche e vuoi partecipare a discussioni su questo argomento, iscriviti alla nostra mailing list MPlayer-DVB. Per favore tieni presente che la lingua della lista è l'inglese.
In futuro puoi aspettarti la possibilità di mostrare OSD e sottotitoli usando la caratteristica nativa delle schede DVB, così come una riproduzione più fluida di film non a 25fps e transcodifica in tempo reale tra MPEG-2 e MPEG-4 (decompressione parziale).
MPlayer fornisce una riproduzione accelerata hardware con la scheda Creative DXR2.
Prima di tutto ti serviranno dei driver DXR2 correttamente installati. Puoi trovare i driver e le istruzioni per l'installazione sul sito DXR2 Resource Center.
USO
Abilita l'uscita TV.
Abilita in X11 l'uscita su Overlay.
Questa opzione viene usata per controllare il driver DXR2.
Il chipset di overlay usato sulla DXR2 ha una qualità piuttosto bassa, ma le impostazioni di default dovrebbero funzionare per chiunque. L'OSD potrebbe essre utilizzabile con l'overlay (non sulla TV) disegnandolo nella chiave colore. Con le impostazioni di default della chiave colore puoi ottenere risultati variabili, spesso vedrai la chiave colore attorno ai caratteri o qualche altro effetto strambo. Ma se imposti correttamente le opzioni della chiave colore dovresti ricavare dei risultati accettabili.
Per favore vedi nella pagina man le opzioni disponibili.
MPlayer fornisce una riproduzione accelerata con le schede Creative DXR3 e Sigma Designs Hollywood Plus. Queste schede usano entrambe il chip em8300 di decodifica MPEG di Sigma Designs.
Prima di tutto ti serviranno dei driver DXR3/H+ correttamente installati, versione 0.12.0 o successiva. Puoi trovare i driver e le istruzioni per l'installazione sul sito DXR3 & Hollywood Plus per Linux. configure dovrebbe rilevare automaticamente la tua scheda, la compilazione dovrebbe concludersi senza problemi.
USO
dispositivo
overlay attiva l'overlay (sovrapposizione) invece che l'uscita
TV. Per funzionare richiede un'impostazione dell'overlay adeguatamente
configurata. Il modo più semplice di configurare l'overlay è eseguire prima
autocal. Poi lanciare mplayer con l'uscita dxr3 e, senza l'overlay abilitato,
eseguire dxr3view. In dxr3view puoi giocherellare con le impostazioni
dell'overlay e vederne il risultato in tempo reale, forse questa funzionalità
sarà utilizzabile in futueo dalla GUI di MPlayer.
Una volta che l'overlay sarà correttamente configurato, non ti servirà più
dxr3view.
prebuf abilita il pre-buffering. Il pre-buffering è una
funzionalità del chip em8300 che gli permette di contenere più di un
fotogramma video per volta. Questo significa che quando stai usando il
pre-buffering, MPlayer cercherà di mantenere il
buffer video constantemente pieno di dati.
Se sei su una macchina lenta, l'uso della CPU di
MPlayer sarà vicino, o pari, al 100%.
Questo è particolarmente vero se riproduci flussi MPEG puri (come DVD, SVCD e
così via), visto che MPlayer non dovrà
ricodificarli in MPEG riempirà il buffer molto velocemente.
Con il pre-buffering la riproduzione video è
molto meno sensibile all'utilizzo della CPU da
parte di altri programmi, non scarterà fotogrammi a meno che tale applicazione
prenda possesso della CPU per un tempo lungo.
Quando viene usato senza pre-buffering, l'em8300 è molto più sensibile al
carico della CPU, per cui si consiglia caldamente di abilitare l'opzione
-framedrop di MPlayer per evitare
un'ulteriore perdita di sincronia.
sync abiliterà il nuovo motore di sincronizzazione.
Questa attualmente è una caratteristica sperimentale. Con il motore di
sincronizzazione abilitato, l'orologio interno dell'em8300 verrà tenuto
constantemente sotto controllo, se inizia a spostarsi dall'orologio di
MPlayer verrà resettato causando lo scarto da parte
dell'em8300 di tutti i fotogrammi rimasti indietro.
norm=x imposterà la norma TV della scheda DXR3 senza il
bisogno di strumenti esterni come em8300setup. Norme valide sono 5 = NTSC,
4 = PAL-60, 3 = PAL. Norme speciali sono 2 (auto-impostazione usando PAL/PAL-60)
e 1 (auto-impostazione usando PAL/NTSC) poiché decidono quale norma usare
in base alla frequenza fotogrammi del filmato. norm = 0 (default) non modifica
la norma corrente.
dispositivo
= numero del dipositivo da usare se hai più di una scheda em8300. Ognuna di queste opzioni può essere
tralasciata.
:prebuf:sync sembra funzionare molto bene riproducendo filmati
MPEG-4 (DivX). Alcune persone hanno notificato problemi usando l'opzione prebuf
riproducendo file MPEG-1/2.
Potresti voler provare dapprima l'esecuzione senza alcuna opzione, se hai
problemi di sincronizzazione, o problemi coi sottotitoli DVD, fai un tentativo
con :sync.
X
Per l'uscita audio, dove X
è il numero del
dispositivo (0 per una scheda sola).
xxxxx
This does not work with digital audio output (-ac hwac3). L'em8300 non può riprodurre frequenze inferiori a 44100Hz. Se la frequenza è minore di 44100Hz imposta 44100Hz oppure 48000Hz a seconda di quale sia la più prossima. Per es. se il film usa 22050Hz allora usa 44100Hz come 44100 / 2 = 22050, se è 24000Hz usa 48000Hz come 48000 / 2 = 24000 e così via.
Per visualizzare contenuti non MPEG sull'em8300 (per es. MPEG-4 (DivX) o
RealVideo) devi specificare un filtro video MPEG-1 come
libavcodec
(lavc).
Vedi la pagina man per ulteriori informazioni circa -vf lavc.
Attualmente non c'è modo di impostare gli fps dell'em8300, il che significa
che sono fissati a 30000/1001 fps.
A causa di ciò si raccomanda caldamente di usare
-vf lavc=qualità
:25 soprattutto
se stai usando il pre-buffering. Allora perché 25 e non 30000/1001?
Bene, il fatto è che quando usi 30000/1001 l'immagine diventa un pochino
saltellante. La ragione di ciò ci è sconosciuta.
Se li imposti a qualcosa tra 25 e 27 l'immagine diventa stabile.
Per adesso tutto quello che possiamo fare è accettarlo empiricamente.
Anche se il driver DXR3 può posizionare qualche OSD sul video MPEG-1/2/4, ha una qualità decisamente inferiore del tipico OSD di MPlayer, e ha anche molti problemi di aggiornamento. La riga comando suddetta dapprima converte il video in ingresso a MPEG-4 (questo è obbligatorio, scusa), poi applica un filtro expand che non espande nulla (-1: default), ma aggiunge all'immagine l'OSD normale (questo è ciò che fa l'"1" alla fine).
L'em8300 supporta la riproduzione audio AC-3 (in surround) attraverso l'uscita digitale della scheda. Vedi l'opzione -ao oss più sopra, deve essere usata per specificare l'uscita DXR3 al posto di una scheda audio.
Questo è un driver video (-vo zr) per un buon numero di schede
di cattura/riproduzione MJPEG (provato con DC10+ e Buz, e dovrebbe funzionare
per LML33, la DC10). Il driver lavora codificando il fotogramma in JPEG e poi
inviandolo alla scheda. Per la codifica JPEG viene usata, e richiesta,
libavcodec
.
Con la modalità speciale cinerama, puoi guardare filmati
in verà modalità widescreen a patto che tu abbia due proiettori e due
schede MJPEG. Proporzionalmente alla risoluzione e alle impostazioni della
qualità, questo driver può richiedere molta potenza di CPU, ricordati di
specificare -framedrop se la tua macchina è troppo lenta.
Nota: il mio AMD K6-2 350MHz è (con -framedrop) abbastanza
adeguato per riprodurre materiale VCD e film rimpiccioliti.
Il driver comunica col driver del kernel disponibile su http://mjpeg.sf.net, indi devi avere per prima cosa questo funzionante. La presenza di una scheda MJPEG è autorilevata dallo script configure, se la rilevazione fallisce, forzala con
./configure --enable-zr
L'uscita può essere controllata con varie opzioni, una descrizione dettagliata delle opzioni si trova nella pagina man, una lista breve delle opzioni si può avere eseguendo
mplayer -zrhelp
Cose come il ridimensionamento e l'OSD (on screen display) non sono gestite da questo driver ma possono essere ottenute usado dei filtri video. Per esempio, supponi di avere un film a una risoluzione di 512x272 e vuoi vederlo a schermo intero con un'ampiezza di 768, 384 o 192. Per ragioni di prestazioni e di qualità, io sceglierei di ridimensionare il film a 384x204 usando il ridimensionatore software bilineae veloce. La riga comando diventa
mplayer -vo zr -sws 0 -vf scale=384:204 filmato.avi
Il ritaglio può essere eseguito dal filtro crop e da questo driver di per sé. Supponi che un film sia troppo ampio per vedersi dal tuo Buz e che tu voglia usare -zrcrop per ridurre l'ampiezza del film, allora dovrai lanciare il comando seguente
mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi
Se vuoi usare il filtro crop, dovresti lanciare
mplayer -vo zr -vf crop=720:320:80:0 benhur.avi
Ulteriori presenze di -zrcrop evocano la modalità cinerama, per es. puoi distribuire il filmato su varie TV o proiettori per creare uno schermo più grande. Supponi di avere due proiettori. Quello di sinistra è collegato al tuo Buz su /dev/video1 e quello di destra è connesso al tuo DC10+ su /dev/video0. Il film ha una risoluzione di 704x288. Supponi inoltre di volere il proiettore di destra in bianco e nero e che quello di sinistra debba avere fotogrammi JPEG con una qualità 10, allora dovrai eseguire il comando seguente
mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
-zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \
film.avi
Vedi che le opzioni che ci sono prima della seconda -zrcrop si applicano solo al DC10+ e che le opzioni dopo la seconda -zrcrop si applicano al Buz. Il massino numero di schede MJPEG contemporanee in cinerama è quattro, per cui puoi costruire un muro video di 2x2.
Infine una nota importante: non avviare o fermare XawTV sul dispoitivo di riproduzione durante la riproduzione stessa, o ti manderà in crash il computer. Va tuttavia bene PRIMA lanciare XawTV, POI avviare MPlayer, attendere l'uscita di MPlayer, e DOPO fermare XawTV.
Il driver è in grado di riprodurre usando il protocollo UDP Blinkenlights. Se non sai cosa siano Blinkenlights o il suo successore Arcade, scoprilo. Anche se probabilmente questo è uno degli ultimi driver video usati, senza dubbio è il più figo che MPlayer abbia da offrire. Guarda solo alcuni dei video documentali di Blinkenlights. Sul video Arcade puoi vedere il driver di uscita video Blinkenlights in azione alla posizione 00:07:50.
Sotto Linux hai due modi per far funzionare l'uscita TV delle G400:
Per le istruzioni per l'uscita TV-out su Matrox G450/G550, vedi per favore la sezione successiva!
Usando il driver e il modulo HAL, disponibile dal sito Matrox. Questo ti farò avere X sulla TV.
Questo metodo non ti fornirà una riproduzione accelerate come sotto Windows! La seconda uscita ha solo il framebuffer YUV, il BES (Back End Scaler, il ridimensionatore sulle schede G200/G400/G450/G550) non funziona su di esso! Il driver per Windows in qualche modo aggira il problema, probabilmente usando il motore 3D per ridimensionare, e il framebuffer YUV per mostrare l'immagine ridimensionata. Se vuoi davvero usare X, uitlizza le opzioni -vo x11 -fs -zoom, ma sarà LENTO, e avrà la protezione di copia Macrovision abilitata (puoi "correggere" Macrovision usando questo script perl).
Usando i moduli matroxfb nei kernel 2.4. I kernel 2.2 non hanno in sé la funzionalità TVout, indi sono inutilizzabili per questo fine. Devi abilitare TUTTE le caratteristiche specifiche per matroxfb durante la compilazione (tranne MultiHead), e compilarle dentro ai moduli! Devi anche abilitare I2C e mettere gli strumenti matroxset, fbset e con2fb in un percorso eseguibile (path).
Quindi carica nel kernel i moduli matroxfb_Ti3026,
matroxfb_maven, i2c-matroxfb, matroxfb_crtc2
.
La tua console in modalità testo entrerà in modalità framebuffer
(senza via di ritorno!).
Dopodiché imposta il monitor e la TV come ti garba usando gli strumenti citati sopra.
Evvai. L'operazione successiva è far sparire il cursore a blocco di tty1 (o quello che è) e disabilitare lo spegnimento dello schermo. Esegui i comandi seguenti:
echo -e '\033[?25l' setterm -blank 0
or
setterm -cursor off setterm -blank 0
Probabilmente vuoi mettere i suddetti in uno script e anche vuotare lo schermo. Per ripristinare il cursore:
echo -e '\033[?25h'
o
setterm -cursor on
Yeah kewl. Avvia la riproduzione del film con
mplayer -vo mga -fs -screenw 640 -screenh 512 nomefile
(se usi X, adesso passa alla matroxfb con per esempio
Ctrl+Alt+F1.)
Sostituisci 640
e 512
se imposti la
risoluzione ad un'altra...
Goditi la ultra-veloce ultra-accessoriata uscita TV Matrox (megli di Xv)!
Costruire un cavo per uscita TV-out Matrox. Nessuno si assume alcuna responsabilità, né risponde di alcuna danno causato da questa documentazione.
Cavo per G400. Il quarto pin del connettore CRTC2 è il segnale video composito. La terra sono il sesto, settimo e ottavo pin (informazioni fornite da Balázs Rácz).
Cavo per G450. Il primo pin del connettore CRTC2 è il segnale video composito. La terra sono il quinto, sesto, settimo e quindicesimo pin (5, 6, 7, 15) (informazioni fornite da Balázs Rácz).
La gestione dell'uscita TV per queste schede è stata aggiunta solo recentemente e non è ancora nel kernel ufficiale. Attualmente il modulo mga_vid non può essere utilizzato, per quanto ne so, perché il driver G450/G550 funziona solo in una modalità: il primo chip CRTC (con molte più funzioni) sul primo schermo (sul monitor), e il secondo CRTC (niente BES - per chiarimenti su BES, vedi la sezione sopra sulla G400) sulla TV. Perciò per ora puoi usare solo il driver di uscita fbdev di MPlayer.
The first CRTC can't be routed to the second head currently. The author of the kernel matroxfb driver - Petr Vandrovec - will maybe make support for this, by displaying the first CRTC's output onto both of the heads at once, as currently recommended for G400, see the section above.
La patch necessaria per il kernel e l'HOWTO dettagliato sono scaricabili da http://www.bglug.ca/matrox_tvout/
Nessuno si prende alcuna responsabilità, né garantisce per qualsiasi danno causato da questa documentazione.
Cavo per G400. Il quarto pin del connettore CRTC2 è il segnale video composito. La terra sono il sesto, settimo e ottavo pin. (informazioni fornite da Balázs Rácz)
Cavo per G450. Il primo pin del connettore CRTC2 è il segnale video composito. La terra sono il quinto, sesto, settimo e quindicesimo pin (5, 6, 7, 15). (informazioni fornite da Balázs Kerekes)
PREAMBOLO. Attualmente ATI non vuole supportare alcuno dei suoi chip TV-out sotto Linux a causa della loro tecnologia Macrovision sotto licenza.
SITUAZIONE USCITA TV DELLE SCHEDE ATI IN LINUX
ATI Mach64: supportata da GATOS.
ASIC Radeon VIVO: supportata da GATOS.
Radeon e Rage128: supportate da MPlayer! Controlla le sezioni driver VESA e VIDIX.
Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4: supportate da atitvout.
Con le altre schede usa semplicemente il driver VESA senza VIDIX. Tuttavia ti serve una CPU potente.
Un'unica cosa ti serve fare - Assicurati di avere il connettore TV collegato prima di avviare il tuo PC dato che il BIOS video si inizializza solamente durante il passaggio POST.
Per prima cosa, DEVI scaricare i driver proprietari a sorgenti chiusi da http://nvidia.com. Non sarà spiegato il processo di installazione e configurazione visto che non esula lo scopo di questa documentazione.
Dopo che XFree86, XVideo, e l'accelerazione 3D funzionano correttamente, modifica la sezione Device della tua scheda nel file XF86Config, secondo l'esempio seguente (adattalo alla tua scheda/TV):
Section "Device" Identifier "GeForce" VendorName "ASUS" BoardName "nVidia GeForce2/MX 400" Driver "nvidia" #Option "NvAGP" "1" Option "NoLogo" Option "CursorShadow" "on" Option "TwinView" Option "TwinViewOrientation" "Clone" Option "MetaModes" "1024x768,640x480" Option "ConnectedMonitor" "CRT, TV" Option "TVStandard" "PAL-B" Option "TVOutFormat" "Composite" EndSection
Sicuramente la cosa importante è la parte TwinView.
Il chip NeoMagic si trova in unìampia gamma di portatili, alcuni dei quali sono equipaggiati con un codificatore TV analogico semplice, alcuni ne hanno uno avanzato.
E' stato riportato che si può ottenere un'uscita TV affidabile usando -vo fbdev o -vo fbdev2. Devi avere vesafb compilato nel kernel e passare i seguenti parametri sulla riga di avvio del kernel: append="video=vesafb:ywrap,mtrr" vga=791. Dovresti far partire X, poi passare alla modalità in console con per es. Ctrl+Alt+F1. Se non avvii X prima di lanciare MPlayer dalla console, il video diventa lento e frammentato (chiarimenti sono benvenuti). Collegati in console, poi lancia il comando seguente:
clear; mplayer -vo fbdev -zoom -cache 8192 dvd://
Ora dovresti vedere il filmato in console, che riempie circa la metà dello schermo LCD del tuo portatile. Per passare alla TV premi per tre volte Fn+F5. Provato su un Tecra 8000, kernel 2.6.15 con vesafb, ALSA v1.0.10.
Chip di codifica Chrontel 70xx: Si trova negli IBM Thinkpad 390E e facilmente altri Thinkpad o portatili.
Devi usare -vo vesa:neotv_pal per PAL o -vo vesa:neotv_ntsc per NTSC. Fornirà la funzione di uscita TV nelle modalità a 16 e 8 bpp seguenti:
NTSC 320x240, 640x480 e forse anche 800x600.
PAL 320x240, 400x300, 640x480, 800x600.
La modalità 512x384 non è supportata dal BIOS. Per attivare l'uscita TV devi ridimensionare l'immagine a una risoluzione diversa. Se riesci a vedere un immagine sullo schermo a 640x480 o a 800x600 ma non a 320x240 o ad altre risoluzioni inferiori devi sostituire due tabelle in vbelib.c. Vedi la funzione vbeSetTV per i dettagli. In questo caso per favore contatta l'autore.
Problemi conosciuti: solo VESA, non è implementato alcun controllo come luminosità, contrasto, livello del nero, filtro per lo sfarfallio.
Binary packages of MPlayer are available from several sources. We have a list of places to get unofficial packages for various systems on our homepage. However, none of these packages are supported. Report problems to the authors, not to us.
To build a Debian package, run the following command in the MPlayer source directory:
fakeroot debian/rules binary
If you want to pass custom options to configure, you can set up the
DEB_BUILD_OPTIONS
environment variable. For instance,
if you want GUI and OSD menu support you would use:
DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary
You can also pass some variables to the Makefile. For example, if you want to compile with gcc 3.4 even if it's not the default compiler:
CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary
To clean up the source tree run the following command:
fakeroot debian/rules clean
As root you can then install the .deb package as usual:
dpkg -i ../mplayer_version
.deb
To build an RPM package, run the following command in the MPlayer source directory:
FIXME: insert proper commands here
MPlayer works on Linux PDAs with ARM CPU e.g. Sharp Zaurus, Compaq Ipaq. The easiest way to obtain MPlayer is to get it from one of the OpenZaurus package feeds. If you want to compile it yourself, you should look at the mplayer and the libavcodec directory in the OpenZaurus distribution buildroot. These always have the latest Makefile and patches used for building a SVN MPlayer. If you need a GUI frontend, you can use xmms-embedded.
MPlayer runs on all known BSD flavors. There are ports/pkgsrc/fink/etc versions of MPlayer available that are probably easier to use than our raw sources.
If MPlayer complains about not finding /dev/cdrom or /dev/dvd, create an appropriate symbolic link:
ln -s /dev/your_cdrom_device
/dev/cdrom
To use Win32 DLLs with MPlayer you will need to
re-compile the kernel with "option USER_LDT
"
(unless you run FreeBSD-CURRENT,
where this is the default).
If your CPU has SSE, recompile your kernel with
"options CPU_ENABLE_SSE
" (FreeBSD-STABLE or kernel
patches required).
Due to limitations in different versions of gas (relocation vs MMX), you
will need to compile in two steps: First make sure that the non-native as
is first in your $PATH
and do a gmake -k, then
make sure that the native version is used and do gmake.
As of OpenBSD 3.4 the hack above is no longer needed.
See the Mac OS section.
MPlayer has been ported to a number of commercial Unix variants. Since the development environments on these systems tend to be different from those found on free Unixes, you may have to make some manual adjustments to make the build work.
Solaris still has broken, POSIX-incompatible system tools and shell in default
locations. Until a bold step out of the computing stone age is made, you will
have to add /usr/xpg4/bin to your
PATH
.
MPlayer should work on Solaris 2.6 or newer. Use the SUN audio driver with the -ao sun option for sound.
On UltraSPARCs,
MPlayer takes advantage of their
VIS extensions
(equivalent to MMX), currently only in
libmpeg2
,
libvo
and libavcodec
.
You can watch a VOB file
on a 400MHz CPU. You'll need
mLib
installed.
Caveat:
mediaLib is currently disabled by default in MPlayer because of brokenness. SPARC users who build MPlayer with mediaLib support have reported a thick, green-tint on video encoded and decoded with libavcodec. You may enable it if you wish with:
./configure --enable-mlib
You do this at your own risk. x86 users should never use mediaLib, as this will result in very poor MPlayer performance.
On Solaris SPARC, you need the GNU C/C++ Compiler; it does not matter if GNU C/C++ compiler is configured with or without the GNU assembler.
On Solaris x86, you need the GNU assembler and the GNU C/C++ compiler, configured to use the GNU assembler! The MPlayer code on the x86 platform makes heavy use of MMX, SSE and 3DNOW! instructions that cannot be compiled using Sun's assembler /usr/ccs/bin/as.
The configure script tries to find out, which assembler
program is used by your "gcc" command (in case the autodetection
fails, use the
--as=/wherever/you/have/installed/gnu-as
option to tell the configure script where it can find GNU
"as" on your system).
Solutions to common problems:
Error message from configure on a Solaris x86 system using GCC without GNU assembler:
% configure ... Checking assembler (/usr/ccs/bin/as) ... , failed Please upgrade(downgrade) binutils to 2.10.1...
(Solution: Install and use a gcc configured with --with-as=gas)
Typical error you get when building with a GNU C compiler that does not use GNU as:
% gmake ... gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math -fomit-frame-pointer -I/usr/local/include -o mplayer.o mplayer.c Assembler: mplayer.c "(stdin)", line 3567 : Illegal mnemonic "(stdin)", line 3567 : Syntax error ... more "Illegal mnemonic" and "Syntax error" errors ...
MPlayer may segfault when decoding and encoding video that uses the win32codecs:
... Trying to force audio codec driver family acm... Opening audio decoder: [acm] Win32/ACM decoders sysi86(SI86DSCR): Invalid argument Couldn't install fs segment, expect segfault MPlayer interrupted by signal 11 in module: init_audio_codec ...
This is because of a change to sysi86() in Solaris 10 and pre-Solaris Nevada b31 releases. This has been fixed in Solaris Nevada b32; however, Sun has yet to backport the fix to Solaris 10. The MPlayer Project has made Sun aware of the problem and a patch is currently in progress for Solaris 10. More information about this bug can be found at: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.
Due to bugs in Solaris 8, you may not be able to play DVD discs larger than 4 GB:
The sd(7D) driver on Solaris 8 x86 has a bug when accessing a disk block >4GB on a device using a logical blocksize != DEV_BSIZE (i.e. CD-ROM and DVD media). Due to a 32Bit int overflow, a disk address modulo 4GB is accessed (http://groups.yahoo.com/group/solarisonintel/message/22516). This problem does not exist in the SPARC version of Solaris 8.
A similar bug is present in the hsfs(7FS) file system code (AKA ISO9660), hsfs may not not support partitions/disks larger than 4GB, all data is accessed modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22592). The hsfs problem can be fixed by installing patch 109764-04 (SPARC) / 109765-04 (x86).
Joe Page hosts a detailed HP-UX MPlayer HOWTO by Martin Gansser on his homepage. With these instructions the build should work out of the box. The following information is taken from this HOWTO.
You need GCC 3.4.0 or later and SDL 1.2.7 or later. HP cc will not produce a working program, prior GCC versions are buggy. For OpenGL functionality you need to install Mesa and the gl and gl2 video output drivers should work, speed may be very bad, depending on the CPU speed, though. A good replacement for the rather poor native HP-UX sound system is GNU esound.
Create the DVD device scan the SCSI bus with:
# ioscan -fn Class I H/W Path Driver S/W State H/W Type Description ... ext_bus 1 8/16/5 c720 CLAIMED INTERFACE Built-in SCSI target 3 8/16/5.2 tgt CLAIMED DEVICE disk 4 8/16/5.2.0 sdisk CLAIMED DEVICE PIONEER DVD-ROM DVD-305 /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0 target 4 8/16/5.7 tgt CLAIMED DEVICE ctl 1 8/16/5.7.0 sctl CLAIMED DEVICE Initiator /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0 ...
The screen output shows a Pioneer DVD-ROM at SCSI address 2. The card instance for hardware path 8/16 is 1.
Create a link from the raw device to the DVD device.
ln -s /dev/rdsk/c<SCSI bus instance>
t<SCSI target ID>
d<LUN>
/dev/<device>
Example:
ln -s /dev/rdsk/c1t2d0 /dev/dvd
Below are solutions for some common problems:
Crash at Start with the following error message:
/usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl
This means that the function .finite().
is not
available in the standard HP-UX math library.
Instead there is .isfinite().
.
Solution: Use the latest Mesa depot file.
Crash at playback with the following error message:
/usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0
Solution: Use the extralibdir option of configure --extra-ldflags="/usr/lib -lrt"
MPlayer segfaults with a message like this:
Pid 10166 received a SIGSEGV for stack growth failure. Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz. Segmentation fault
Solution:
The HP-UX kernel has a default stack size of 8MB(?) per process.(11.0 and
newer 10.20 patches let you increase maxssiz
up to
350MB for 32-bit programs). You need to extend
maxssiz
and recompile the kernel (and reboot).
You can use SAM to do this.
(While at it, check out the maxdsiz
parameter for
the maximum amount of data a program can use.
It depends on your applications, if the default of 64MB is enough or not.)
MPlayer builds successfully on AIX 5.1, 5.2, and 5.3, using GCC 3.3 or greater. Building MPlayer on AIX 4.3.3 and below is untested. It is highly recommended that you build MPlayer using GCC 3.4 or greater, or if you are building on POWER5, GCC 4.0 is required.
CPU detection is still a work in progress. The following architectures have been tested:
604e
POWER3
POWER4
The following architectures are untested, but should still work:
POWER
POWER2
POWER5
Sound via the Ultimedia Services is not supported, as Ultimedia was dropped in AIX 5.1; therefore, the only option is to use the AIX Open Sound System (OSS) drivers from 4Front Technologies at http://www.opensound.com/aix.html. 4Front Technologies freely provides OSS drivers for AIX 5.1 for non-commercial use; however, there are currently no sound output drivers for AIX 5.2 or 5.3. This means AIX 5.2 and 5.3 are not capable of MPlayer audio output, presently.
Solutions to common problems:
If you encounter this error message from ./configure:
$ ./configure ... Checking for iconv program ... no No working iconv program found, use --charset=US-ASCII to continue anyway. Messages in the GTK-2 interface will be broken then.
This is because AIX uses non-standard character set names; therefore, converting MPlayer output to another character set is currently not supported. The solution is to use:
$ ./configure --charset=noconv
Yes, MPlayer runs on Windows under Cygwin and MinGW. It does not have an official GUI yet, but the command line version is completely functional. You should check out the MPlayer-cygwin mailing list for help and latest information. Official Windows binaries can be found on the download page. Installer packages and simple GUI frontends are available from external sources, we have collected then in the Windows section of our projects page.
If you wish to avoid using the command line, a simple trick is to put a shortcut on your desktop that contains something like the following in the execute section:
c:\path\to\
mplayer.exe %1
This will make MPlayer play any movie that is dropped on the shortcut. Add -fs for fullscreen mode.
Best results are achieved with the native DirectX video output driver (-vo directx). Alternatives are OpenGL and SDL, but OpenGL performance varies greatly between systems and SDL is known to distort video or crash on some systems. If the image is distorted, try turning off hardware acceleration with -vo directx:noaccel. Download DirectX 7 header files to compile the DirectX video output driver. Furthermore you need to have DirectX 7 or later installed for the DirectX video output driver to work.
VIDIX now works under Windows as -vo winvidix, although it is still experimental and needs a bit of manual setup. Download dhahelper.sys or dhahelper.sys (with MTRR support) and copy it to the vidix/dhahelperwin directory in your MPlayer source tree. Open a console and type
make install-dhahelperwin
as Administrator. After that you will have to reboot.
For best results MPlayer should use a colorspace that your video card supports in hardware. Unfortunately many Windows graphics drivers wrongly report some colorspaces as supported in hardware. To find out which, try
mplayer -benchmark -nosound -frames 100 -vf format=colorspace
movie
where colorspace
can be any colorspace
printed by the -vf format=fmt=help option. If you
find a colorspace your card handles particularly bad
-vf noformat=colorspace
will keep it from being used. Add this to your config file to permanently
keep it from being used.
There are special codec packages for Windows available on our
download page
to allow playing formats for which there is no native support yet.
Put the codecs somewhere in your path or pass
--codecsdir=c:/path/to/your/codecs
(alternatively
--codecsdir=/path/to/your/codecs
only on Cygwin) to configure.
We have had some reports that Real DLLs need to be writable by the user
running MPlayer, but only on some systems (NT4).
Try making them writable if you have problems.
You can play VCDs by playing the .DAT or .MPG files that Windows exposes on VCDs. It works like this (adjust for the drive letter of your CD-ROM):
mplayer d:/mpegav/avseq01.dat
Alternatively, you can play a VCD track directly by using:
mplayer vcd://<track>
-cdrom-deviced:
DVDs also work, adjust -dvd-device for the drive letter of your DVD-ROM:
mplayer dvd://<title>
-dvd-deviced:
The Cygwin/MinGW console is rather slow. Redirecting output or using the -quiet option has been reported to improve performance on some systems. Direct rendering (-dr) may also help. If playback is jerky, try -autosync 100. If some of these options help you, you may want to put them in your config file.
If you have a Pentium 4 and are experiencing a crash using the RealPlayer codecs, you may need to disable hyperthreading support.
You need to run Cygwin 1.5.0 or later in order to compile MPlayer.
DirectX header files need to be extracted to /usr/include/ or /usr/local/include/.
Instructions and files for making SDL run under Cygwin can be found on the libsdl site.
You need MinGW 3.1.0 or later and MSYS 1.0.9 or later. Tell the MSYS postinstall that MinGW is installed.
Extract DirectX header files to /mingw/include/.
MOV compressed header support requires zlib, which MinGW does not provide by default. Configure it with --prefix=/mingw and install it before compiling MPlayer.
Complete instructions for building MPlayer and necessary libraries can be found in the MPlayer MinGW HOWTO.
MPlayer does not work on Mac OS versions before 10, but should compile out-of-the-box on Mac OS X 10.2 and up. The preferred compiler is the Apple version of GCC 3.x or later. You can get the basic compilation environment by installing Apple's Xcode. If you have Mac OS X 10.3.9 or later and QuickTime 7 you can use the corevideo video output driver.
Unfortunately, this basic environment will not allow you to take advantage
of all the nice features of MPlayer.
For instance, in order to have OSD support compiled in, you will
need to have fontconfig
and freetype
libraries
installed on your machine. Contrary to other Unixes such as most
Linux and BSD variants, OS X does not have a package system
that comes with the system.
There are at least two to choose from: Fink and MacPorts. Both of them provide about the same service (i.e. a lot of packages to choose from, dependency resolution, the ability to simply add/update/remove packages, etc...). Fink offers both precompiled binary packages or building everything from source, whereas MacPorts only offers building from source. The author of this guide chose MacPorts for the simple fact that its basic setup was more lightweight. Later examples will be based on MacPorts.
For instance, to compile MPlayer with OSD support:
sudo port install pkg-config
This will install pkg-config, which is a system for
managing library compile/link flags.
MPlayer's configure
script
uses it to properly detect libraries.
Then you can install fontconfig in a
similar way:
sudo port install fontconfig
Then you can proceed with launching MPlayer's
configure
script (note the
PKG_CONFIG_PATH
and PATH
environment variables so that configure
finds the
libraries installed with MacPorts):
PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure
You can get a native GUI for MPlayer together with precompiled MPlayer binaries for Mac OS X from the MPlayerOSX project, but be warned: that project is not active anymore.
Fortunately, MPlayerOSX has been taken over by a member of the MPlayer team. Preview releases are available from our download page and an official release should arrive soon.
In order to build MPlayerOSX from source
yourself, you need the mplayerosx
, the
main
and a copy of the
main
SVN module named
main_noaltivec
.
mplayerosx
is the GUI frontend,
main
is MPlayer and
main_noaltivec
is MPlayer built without AltiVec
support.
To check out SVN modules use:
svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main
In order to build MPlayerOSX you will need to set up something like this:
MPlayer_source_directory | |--->main (MPlayer Subversion source) | |--->main_noaltivec (MPlayer Subversion source configured with --disable-altivec) | \--->mplayerosx (MPlayer OS X Subversion source)
You first need to build main and main_noaltivec.
To begin with, in order to ensure maximum backwards compatibility, set an environment variable:
export MACOSX_DEPLOYMENT_TARGET=10.3
Then, configure:
If you configure for a G4 or later CPU with AltiVec support, do as follows:
./configure --disable-gl --disable-x11
If you configure for a G3-powered machine without AltiVec, use:
./configure --disable-gl --disable-x11 --disable-altivec
You may need to edit config.mak and change
-mcpu
and -mtune
from 74XX
to G3
.
Continue with
make
then go to the mplayerosx directory and type
make dist
This will create a compressed .dmg
archive
with the ready to use binary.
You can also use the Xcode 2.1 project; the old project for Xcode 1.x does not work anymore.
Per la lista completa delle opzioni disponibili ed esempi per MEncoder, leggi per favore la pagina di manuale. Per una serie di esempi pronti all'uso e guide dettagliate sull'utilizzo di svariati parametri di codifica leggi le indicazioni per la codifica che sono stati selezionati da vari thread sulla mailing list MPlayer-users. Cerca qui negli archivi e soprattutto per cose più vecchie, anche qui per una buona serie di discussioni riguardanti tutti gli aspetti e i problemi relativi alla codifica con MEncoder.
I codec audio e video per la codifica vengono selezionati rispettivamente con le opzioni -oac e -ovc. Esegui per esempio:
mencoder -ovc help
per elencare tutti i codec video supportati dalla versione di MEncoder sul tuo sistema. Sono disponibili le scelte seguenti:
Codec audio:
Nome codec audio | Descrizione |
---|---|
mp3lame | codifica in MP3 VBR, ABR o CBR MP3 tramite LAME |
lavc | usa uno dei codec audio di
libavcodec |
faac | codificatore audio FAAC AAC |
toolame | codificatore MPEG Audio Layer 2 |
twolame | codificatore MPEG Audio Layer 2 basato su tooLAME |
pcm | audio PCM non compresso |
copy | non ricodifica, copia solo il flusso compresso |
Codec video:
Nome codec video | Descrizione |
---|---|
lavc | usa uno dei codec video di libavcodec |
xvid | Xvid, codec MPEG-4 Advanced Simple Profile (ASP) |
x264 | x264, codec MPEG-4 Advanced Video Coding (AVC), AKA H.264 |
nuv | nuppel video, utilizzato da alcune applicazioni in tempo reale |
raw | fotogrammi video non compressi |
copy | non ricodifica, copia solo il flusso compresso |
frameno | usato per codifica a 3 passaggi (non consigliato) |
I formati contenitore di uscita si selezionano con l'opzione -of. Scrivi:
mencoder -of help
per elencare tutti i contenitori supportati dalla versione di MEncoder sul tuo sistema. Sono disponibili le scelte seguenti:
Formati contenitore:
Nome formato contenitore | Descrizione |
---|---|
lavf | uno dei contenitori supportati da
libavformat |
avi | Audio-Video Interleaved |
mpeg | MPEG-1 e MPEG-2 PS |
rawvideo | flusso video grezzo (nessun mux - solo un flusso video) |
rawaudio | flusso audio grezzo (nessun mux - solo un flusso audio) |
Il contenitore AVI è il formato contenitore nativo per MEncoder, il che significa che è quello meglio gestito e quello per cui MEncoder è stato progettato. Come su specificato, si possono utilizzare altri formati contenitore, ma potresti avere qualche problema utilizzandoli.
Contenitori libavformat
:
Se hai impostato libavformat
per fare
il mux del file di uscita (usando -of lavf), il giusto formato
contenitore verrà determinato dall'estensione del file di uscita.
Puoi forzare un formato contenitore specifico con l'opzione
format di libavformat
.
nome contenitore libavformat | Descrizione |
---|---|
mpg | MPEG-1 e MPEG-2 PS |
asf | Advanced Streaming Format |
avi | Audio-Video Interleaved |
wav | Audio Waveform |
swf | Macromedia Flash |
flv | Macromedia Flash video |
rm | RealMedia |
au | SUN AU |
nut | contenitore "aperto" NUT (sperimentale e non ancora spec-compliant) |
mov | QuickTime |
mp4 | formato MPEG-4 |
dv | contenitore Sony Digital Video |
mkv | contenitore "aperto" audio/video Matroska |
Come puoi notare, libavformat
permette
a MEncoder di fare il mux in una buona quantità
di contenitori.
Sfortunatamente, dato che MEncoder non è stato
progettato dall'inizio per supportare formati contenitore diversi da AVI,
dovresti essere piuttosto paranoici riguardo al file risultante.
Assicurati per favore che la sincronizzazione audio/video sia a posto e che il
file possa essere riprodotto correttamente da altri programmi oltre a
MPlayer.
Esempio 6.1. codificare nel formato Macromedia Flash
Creare un video Macromedia Flash che sia riproducibile in un browser internet con il plugin Macromedia Flash:
mencoderinput.avi
-ooutput.flv
-of lavf \ -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \ -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3
MEncoder può codificare da file o direttamente da
un disco DVD o VCD.
Includi semplicemente nella riga comando il nome file per codificare dal file
stesso, oppure dvd://numero_titolo
o vcd://numero_traccia
per
codificare da un titolo DVD o da una traccia VCD.
Se hai già copiato un DVD sul tuo disco fisso (puoi usare uno strumento come
dvdbackup, disponibile per la maggior parte dei
sistemi) e desideri codificare da tale copia, dovresti ancora usare la sintassi
dvd://, insieme con -dvd-device seguita dal
percorso della radice del DVD copiato.
Le opzioni -dvd-device e -cdrom-device
possono anche essere usate per reimpostare i percorsi dei dispositivi al fine
di leggere direttamente dal disco, se i valori di default
/dev/dvd e /dev/cdrom non funzionano
sul tuo sistema.
Durante la codifica da DVD, spesso si vogliono selezionare un capitolo o una
serie di capitoli da codificare.
Per questo fine puoi usare l'opzione -chapter.
Per esempio, -chapter 1-4
codificherà solo i capitoli dall'1 al 4 dal DVD.
Questo è particolarmente utile se vuoi fare una codifica in 1400 MB destinata
a due CD, visto che puoi esser sicuro che il punto di divisione sia proprio tra
un capitolo e l'altro invece che a metà di una scena.
Se hai una scheda di acquisizione TV supportata, puoi anche codificare dal
dispositivo di ingresso TV.
Usa tv://numero_canale
come
nome file e -tv per configurare varie opzioni di acquisizione.
L'ingresso DVB funziona in modo simile.
La definizione viene dal fatto che questo metodo codifica il file due volte. La prima codifica (dubbed pass) genera alcuni file temporanei (*.log) con una dimensione di pochi megabyte, non cancellarli dopo il primo passaggio (puoi cancellare l'AVI o meglio ancora non creare alcun video ridirezionandolo verso /dev/null o verso NUL sotto Windows). Nel secondo passaggio viene creato il secondo file di output, usando i dati del bitrate presi dai file temporanei. Il file risultante avrà una qualità dell'immagine decisamente migliore. Se questa è la prima volta che senti parlare di quasta cosa ti conviene leggere qualcuna delle guide disponibili su internet.
Esempio 6.2. copiare la traccia audio
La codifica in due passaggi della seconda traccia di un DVD in un AVI MPEG-4 ("DivX") copiando la traccia audio.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
-oac copy -o output.avi
Esempio 6.3. codificare la traccia audio
La codifica in due passaggi della seconda traccia di un DVD in un AVI MPEG-4 ("DivX") codificando la traccia audio in MP3. Fai attenzione se usi questo metodo, dato che in alcuni casi può portare desincronizzazione audio/video.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
-oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
-oac mp3lame -lameopts vbr=3 -o output.avi
MEncoder fornisce la codifica in formato video Sony PSP, ma, relativamente alla revisione del software PSP, i vincoli possono essere diverse. Dovresti accertarti di rispettare i seguenti vincoli:
Bitrate: non dovrebbe oltrepassare i 1500kbps, tuttavia, versioni precedenti supportavano quasi ogni frequenza a patto che l'intestazione non dicesse che era troppo alta.
Dimensioni: la larghezza e l'altezza del video PSP dovrebbero essere multipli di 16 e il prodotto larghezza * altezza dovrebbe essere <= 64000. In alcune circostanze, potrebbe essere possibile che la PSP riproduca risoluzioni più grandi.
Audio: la frequenza dovrebbe essere 24kHz per video MPEG-4, e 48kHz per H.264.
Esempio 6.4. codificare per PSP
mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -oac lavc \ -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac \ -of lavf -lavfopts format=psp \input.video
-ooutput.psp
Nota che puoi impostare il titolo del video con
-info name=TitoloFilmato
.
MEncoder può generare file nel formato di output MPEG (MPEG-PS). Di solito, quando stai usando video MPEG-1 o MPEG-2, è perché stai codificando per un formato vincolato come SVCD, VCD, o DVD. Le richieste specifiche per questi formati sono spiegate nella sezione creazione di VCD e DVD.
Per modificare il formato file di uscita di MEncoder, usa l'opzione -of mpeg.
Esempio:
mencoderinput.avi
-of mpeg -ovc lavc -lavcopts vcodec=mpeg1video \ -oac copyaltre_opzioni
-ooutput.mpg
Creare un file MPEG-1 che possa essere riprodotto da sistemi con un supporto multimediale minimale, come l'installazione di default di Windows:
mencoderinput.avi
-of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \ -ooutput.mpg
-oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \ -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3
Lo stesso, ma usando il muxer MPEG di
libavformat
:
mencoderinput.avi
-oVCD.mpg
-ofps 25 -vf scale=352:288,harddup -of lavf \ -lavfopts format=mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \ -lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0
Se per qualche motivo la qualità video del secondo passaggio non ti soddisfa, puoi rilanciare la tua codifica video con un diverso bitrate di uscita, sempre che tu abbia tenuto i file con le statistiche del passaggio precedente. Questo è possbilie dato che l'obiettivo principale del file delle statistiche è registrarsi la complessità di ciascun frame, che non dipende direttamente dal bitrate. Dovresti tuttavia essere consapevole che otterrai i risultati migliori se tutti i passaggi sono eseguiti con bitrate non troppo diversi tra loro.
Spesso emerge la necessità di ridimensionare le immagini del filmato. Le ragioni possono essere molte: diminuire la dimensione del file, la banda di rete, etc... Molte persone ridimensionano anche quando convertono DVD o CVD in AVI DivX. Se desideri ridimensionare, leggi la sezione Preservare il rapporto di aspetto.
Il processo di ridimensionamento è gestito dal filtro video
scale
:
-vf scale=larghezza
:altezza
.
La sua qualità può essere impostata con l'opzione -sws.
Se non è specificato, MEncoder userà 2: bicubico.
Uso:
mencoderinput.mpg
-ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \ -vf scale=640:480 -ooutput.avi
MEncoder può gestire i flussi in ingresso in due modi: codifica o copia. Questa sezione tratta la copia.
Flussi video (opzione -ovc copy): si possono fare delle cose carine :) Come infilare (senza converzione!) video FLI o VIVO o MPEG-1 in un file AVI! Di sicuro solo MPlayer può riprodurre file siffatti :) E probabilmente non ha alcuna utilità. Razionalmente: la copia dei flussi video può essere utile per esempio quando si deve codificare solo il flusso audio (come da PCM non compresso a MP3).
Flussi audio (opzione -oac copy):
direttamente. E' possibile prendere un file audio esterno (MP3, WAV) e farne
il mux nel flusso di uscita. Usa l'opzione
-audiofile nomefile
per farlo.
Usare -oac copy per copiare da un formato contenitore ad un altro potrebbe richiedere l'utilizzo di -fafmttag per conservare l'etichetta del formato audio del file di partenza. Per esempio, se stai convertendo un file NSV con audio AAC a un contenitore AVI, l'etichetta del formato audio sarà sbagliata e bisognerà modificarla. Per una lista delle etichette dei formati audio, controlla codecs.conf.
Esempio:
mencoderinput.nsv
-oac copy -fafmttag 0x706D \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -ooutput.avi
MEncoder è in grado di creare filmati da uno o più file immagine JPEG, PNG, TGA o altri. Con una semplioce copia fotogrammi può creare file MJPEG (Motion JPEG), MPNG (Motion PNG) o MTGA (Motion TGA).
Spiegazione del processo:
MEncoder decodifica le
immagini in entrata con libjpeg
(decodificando PNG, userà libpng
).
MEncoder passa poi le immagini decodificate al compressore video scelto (DivX4, Xvid, FFmpeg msmpeg4, etc.).
Esempi. La spiegazione dell'opzione -mf è nella pagina man.
Creare un file MPEG-4 da tutti i file JPEG nella directory corrente:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc \
-lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o output.avi
Creare un file MPEG-4 da alcuni file JPEG nella directory corrente:
mencoder mf://frame001.jpg,frame002.jpg
-mf w=800:h=600:fps=25:type=jpg \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -ooutput.avi
Creare un file MPEG-4 da una lista definita di file JPEG (lista.txt nella directory corrente contiene la lista dei file da usare come sorgente, uno per riga):
mencoder mf://@lista.txt
-mf w=800:h=600:fps=25:type=jpg \ -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -ooutput.avi
Puoi mescolare diversi tipi di immagine, senza considerare il metodo che usi — nomi file singoli, wildcard o file da una lista — posto ovviamente che abbiano la stessa dimensione. Per cui puoi per es. prendere il fotogramma dei titoli da un file PNG e poi fare una presentazione delle tue foto in JPEG.
Creare un file Motion JPEG (MJPEG) da tutti i file JPEG nella directory corrente:
mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o output.avi
Creare un file non compresso da tutti i file PNG nella directory corrente:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o output.avi
La larghezza deve essere un intero multipli di 4, è una limitazione del formato grezzo RAW RGB AVI.
Creare un file Motion PNG (MPNG) da tutti i file PNG nella directory corrente:
mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o output.avi
Creare un file Motion TGA (MTGA) da tutti i file TGA nella directory corrente:
mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o output.avi
MEncoder è in grado di estrarre i sottotitoli da un DVD in file formattati VOBsub. Essi sono composti da una coppia di file che terminano in .idx e .sub e sono solitamente compressi in un singolo archivio .rar. MPlayer può riprodurli con le opzioni -vobsub e -vobsubid.
Specifica il nome di base (per es. senza l'estensione .idx o .sub) del file di uscita con -vobsubout e l'indice per questo sottotitolo nel file risultante con -vobsuboutindex.
Se i dati in entrata non arrivano da un DVD usa -ifo per indicare il file .ifo che serve per costruire il risultante file .idx.
Se i dati in entrata non arrivano da un DVD e non hai il file .ifo dovrai usare l'opzione -vobsubid per impostare l'id della lingua da scrivere nel file .idx.
Se esistono già i file .idx e .sub ogni esecuzione aggiungerà il sottotitolo selezionato. Perciò dovresti cancellarli prima di iniziare.
Esempio 6.5. Copiare due sottotitoli da un DVD durante la codifica in due passaggi
rmsottotitoli.idx
sottotitoli.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \ -vobsuboutsottotitoli
-vobsuboutindex 0 -sid 2 mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \ -vobsuboutsottotitoli
-vobsuboutindex 1 -sid 5
Esempio 6.6. Copiare i sottotitoli francesi da un file MPEG
rmsottotitoli.idx
sottotitoli.sub
mencoderfilm.mpg
-ifofilm.ifo
-vobsuboutsottotitoli
-vobsuboutindex 0 \ -vobsuboutid fr -sid 1 -nosound -ovc copy
I file dei DVD e dei VCD (per es. MPEG-1/2) contengono un valore del rapporto d'aspetto che instruisce il riproduttore su come ridimensionare il flusso video, così gli umani non avranno teste a uovo (es.: 480x480 + 4:3 = 640x480). Tuttavia, codificando in file AVI (DivX), devi fare attenzione che l'intestazione AVI non salva questo valore. Ridimensionare il film è disgustoso e una perdita di tempo, ci deve essere un modo migliore!
C'è
MPEG-4 ha un caratteristica unica: il flusso video può contenere il rapporto di aspetto che serve. Sì, proprio come i MPEG-1/2 (DVD, SVCD) e H.263. Tristemente, ci sono pochi riproduttori oltre ad MPlayer che gestiscono questo attributo MPEG-4.
Questa caratteristica può essere usata solo con il codec
mpeg4
di
libavcodec
.
Ricorda: anche se MPlayer riprodurrà correttamente
il file generato, altri riproduttori potrebbero usare il rapporto di aspetto
sbagliato.
Devi assolutamente tagliare le bande nere sopra e sotto all'immagine del film.
Vedi la pagina man per l'utilizzo dei filtri cropdetect
e crop
.
Uso
mencodersvcd-di-esempio.mpg
-vf crop=714:548:0:14 -oac copy -ovc lavc \ -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -ooutput.avi
libavcodec
codec familyXvid
codecx264
codecVideo For Windows
codec family
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à."
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.
Invero, la ragione per cui vuoi codificare un DVD in MPEG-4 è proprio perché ti interessa davvero la dimensione del file.
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 libavcodec
anche se la
teoria si applica allo stesso modo agli altri codec.
Se questo ti sembra troppo, dovresti probabilmente usare una delle belle interfacce elencate nella sezione su MEncoder 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.
Prima ancora di pensare a codificare un film, devi fare alcuni passi preliminari.
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 non 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.
C'è qui un elenco di tipi comuni di materiale sorgente, dove facilmente si trovano e le loro proprietà:
Film standard: prodotti per la visione su schermi da cinema a 24fps.
Video PAL: 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 non 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.
Video NTSC: 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.
Animazione: solitamente disegnati a 24fps, ma se ne trovano anche in tipologie con frequenza di fotogrammi mista.
Computer Graphics (CG): 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.
Vecchi Film: varie e più basse frequenze di fotogrammi.
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.
Per complicare ulteriormente le cose, alcuni film possono essere un misto di molti dei suddetti.
La più importante distinzione da farsi tra tutti questi formati è che alcuni sono basati su fotogrammi mentre gli altri sono basati su campi. Ogniqualvolta 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.
Ci sono vari tipi usuali di "pulldown":
Pulldown PAL 2:2: 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%.
Pulldown PAL 2:2:2:2:2:2:2:2:2:2:2:3: 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.
Telecine NTSC 3:2: 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.
Pulldown NTSC 2:2: utilizzato per mostrare materiale a 30fps su NTSC. Carino, proprio come il pulldown PAL 2:2.
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.
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.
Le modalità per gestire questi casi verranno descritte più avanti in questa guida. Per adesso ti lasciamo alcune indicazioni su come identificare il tipo di materiale che stai trattando:
Regioni NTSC:
Se MPlayer 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".
Se MPlayer 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.
Se MPlayer 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.
Se MPlayer 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".
Regioni PAL:
Se non vedi mai alcuna "riga", il tuo film è pulldown 2:2.
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.
Se vedi sempre "righe" durante il movimento, allora il tuo film è video PAL a 50 campi al secondo.
MPlayer può rallentare la riproduzione del film con l'opzione -speed o riprodurlo fotogramma per fotogramma. Prova ad usare -speed 0.2 per guardare molto lentamente il film o premi ripetutamente il tasto "." per riprodurre un fotogramma per volta ed identificare la sequenza, se non riesci a vederla a velocità normale.
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.
Ci sono tre approcci per codificare il video: bitrate costante (CBR), quantizzatore costante, e multipassaggio (ABR, o bitrate medio).
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.
La maggior parte dei codec che gestisce la codifica in ABR può usare solo la
codifica a due passaggi mentre altri come
x264
,
Xvid
e
libavcodec
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.
In ambedue i modi, il codec video (come
libavcodec
) 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.)
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 vqmin per
libavcodec
, 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à.
Con il quantizzatore costante, il codec utilizza lo stesso quantizzatore per
ogni macroblocco, come specificato dall'opzione vqscale (per
libavcodec
).
Se vuoi la più alta qualità possibile di rip, sempre ignorantdo il bitrate,
puoi usare vqscale=2.
Ciò porterà gli stessi bitrate e PSNR (peak signal-to-noise ratio) come CBR
con vbitrate=infinito e vqmin di default a 2.
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.
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.
Se usi vqscale=2, allora stai sprecando dei bit. Se usi vqscale=3, allora non stai ottenendo la miglior qualità. Supponi di rippare un DVD a vqscale=3 e che il risultato sia 1800Kbit. Se fai una codifica a due passi con vbitrate=1800 il video risultante avrà una qualità superiore a parità di bitrate.
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.
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.
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
rip di queste.
Puoi calcolare il bitrate con l'equazione che segue:
bitrate = (dimensione_voluta_in_Mbytes - dimensione_audio_in_Mbytes)
* 1024 * 1024 / lunghezza_in_secondi * 8 / 1000
Per esempio, per far stare un film di due ore su un CD da 702MB, con 60MB di
traccia audio, il bitrate video diventerà:
(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000
= 740kbps
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.
La maggior parte dei DVD ha anche alcune con bordi neri sui lati. Lasciarli lì avrà un'influenza molto negativa sulla qualità in svariati modi.
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'.
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.
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:
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.
Inoltre questo problema si applica solo se i bordi neri non sono allinati su limiti di multipli di 16.
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ì.
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.
A dispetto del fatto che i bordi siano completamente neri e non cambino mai, c'è perlomeno un piccolo spreco nell'avere più macroblocchi.
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.
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.
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.
L | L | L | L | L | L | L | L |
C | C | C | C | ||||
L | L | L | L | L | L | L | L |
L | L | L | L | L | L | L | L |
C | C | C | C | ||||
L | L | L | L | L | L | L | L |
Come puoi vedere, le righe e le colonne dell'immagine vengono sempre a coppie. Quindi i tuoi valori di spostamento e dimensione devono 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.
Inoltre, il video interlacciato viene campionato come segue:
Campo superiore | Campo inferiore | ||||||||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L | ||||||||
L | L | L | L | L | L | L | L | ||||||||
C | C | C | C | ||||||||||||
L | L | L | L | L | L | L | L |
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.
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.
MPlayer fornisce un filtro che rileva i valori di taglio e fornisce il rettangolo per crop (-vf cropdetect). Esegui MPlayer con -vf cropdetect 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.
Dopodiché prova con MPlayer i valori ottenuti usando la linea comando emessa da cropdetect, e correggi il rettangolo se e come serve. Il filtro rectangle 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.
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!
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 cropdetect, visto che ha un parametro round facoltativo, che è impostato a 16 di default.
Fai anche attenzione ai pixel "mezzi neri" sui bordi. Assicurati di tagliare anch'essi, altrimenti sprecherai bit più utili altrove.
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
MEncoder ha un'opzione per libavcodec
chiamata autoaspect
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.
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 contenitore AVI). Altri parametri come ridimensionamento, taglio, etc... non influiscono sulla dimensione del file a meno che tu non cambi anche il bitrate!
Il bitrate non è 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ò:
Percettiva: 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).
Teorica : 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).
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).
Finora abbiamo parlato della difficoltà nel scegliere un bitrate e una risoluzione.
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:
ARc = (Wc x (ARa / PRdvd )) / Hc
dove:
Wc e Hc sono la larghezza e l'altezza del video tagliato,
ARa è il rapporto di aspetto mostrato, che di solito è 4/3 o 16/9,
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.
Dopo puoi calcolare la risoluzione X e Y, basandoti su un dato fattore
di qualità di compressione (Compression Quality, CQ):
ResY = INT(SQRT( 1000*Bitrate/25/ARc/CQ )/16) * 16
and
ResX = INT( ResY * ARc / 16) * 16
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à.
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 Xvid
e
libavcodec
, 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
libavcodec
e
Xvid
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 x264
,
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 impostazioni avanzate di codifica
x264
.
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.
Imparare come usare i filtri video di MEncoder è 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 MEncoder è uno dei suoi più grandi vantaggi sugli altri programmi similari.
I filtri vengono caricati in catena usando l'opzione -vf:
-vf filtro1=opzioni,filtro2=opzioni,...
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.
I filtri lavorano sul video nell'ordine in cui vengono caricati. Per esempio la catena seguente:
-vf crop=688:464:12:4,scale=640:464
dapprima taglia la zona 688x464 dell'immagine con uno scostamento dall'alto a sinistra di (12,4), e poi ridimensiona il risultato a 640x464.
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 pp (post elaborazione (postprocessing), solo quando esegue operazioni di deblock o dering), spp (un altra post elaborazione per eliminare artefatti MPEG), pullup (telecine inverso), e softpulldown (per passare da telecine soft a hard).
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à.
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.
Una cosa che voresti però fare è tuttavia far passare il video attraverso un leggero filtro di rimozione disturbo, come -vf hqdn3d=2:1:2. 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 hqdn3d aumenterà ancora la compressione, ma se aumenti troppo i valori, rischi un degrado pesante dell'immagine. I valori sopra consigliati (2:1:2) sono abbastanza conservativi; sentiti libero di sperimentare con valori più alti e verificare da solo il risultato.
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.
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.
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.
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).
Si consiglia vivamente di leggere la sezione su Come trattare il telecine e l'interlacciamento nei DVD NTSC per imparare come gestire le varie possibilità.
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 pullup -vf pullup,softskip.
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.
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
Bisogna porre speciale attenzione quando si lavora con video interlacciato:
Altezza e scostamento del taglio devono essere multipli di 4.
Qualsiasi ridimensionamento verticale va fatto in modalità interlacciata.
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.
Tenendo a mente queste cose, ecco il nostro primo esempio:
mencoder capture.avi
-mc 0 -oac lavc -ovc lavc -lavcopts \
vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224
Nota le opzioni ilme e ildct.
Gli algoritmi di sincronizzazione audio/video di
MEncoder 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
-mc 0, o metterla nel tuo file di configurazione
~/.mplayer/mencoder
, 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.
Se vuoi proteggerti ulteriormente da strani salti e duplicazioni di fotogrammi, puoi usare sia -mc 0 che -noskip. Questo disabiliterà tutte 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 -noskip in linea di massima si sconsiglia.
Si sa che la cosiddetta codifica audio in "tre passi", che MEncoder gestisce, può causare desincronizzazione A/V. Il che capiterà prontamente se viene usata insieme con alcuni filtri, per cui si consiglia di non 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!
Ci sono anche stati rapporti di desincronia A/V codificando con MEncoder da stdin. Non farlo! Usa sempre come ingresso un file o un dispositivo CD/DVD/etc.
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.
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
[1]
quando scegliete un qualche codec MPEG-4 AVC come
x264
piuttosto che un codec MPEG-4
ASP come l'MPEG-4 di libavcodec
o
Xvid
.
(Per sviluppatori avenzati di codec potrebbe essere interessante leggere
l'opinione di Michael Niedermayer sul
"perché MPEG-4 ASP faccia schifo"
(in inglese).)
Analogamente dovresti ottenere una miglior qualità usando MPEG-4 ASP rispetto
a quella ottenuta con codec MPEG-2.
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.
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.
Compatibilità Hardware:
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 libavcodec
e
Xvid
)
(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.
Miglior qualità per tempo di codifica:
Codec che sono in giro da parecchio tempo (come MPEG-4 di
libavcodec
e
Xvid
) 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.
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).
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 libavcodec
lo permette,
ma il guadagno in velocità è limitato, e c'è un leggere effetto negativo
sulla qualità dell'immagine.
La codifica multi-thread di Xvid
,
attivata dall'opzione threads, può essere usata per
accelerare la velocità di codifica — tipicamente di circa il 40-60%
— con poco se non nessun degrado dell'immagine.
Anche x264
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.
Gusto personale:
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
Xvid
o MPEG-4 di
libavcodec
a
x264
.
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. [2]!
Fai per favore riferimento alla sezione selezionare codec e formati contenitore per avere un elenco dei codec usabili.
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 durante la codifica. Puoi anche estrarre il flusso AC-3 al fine di farne il mux in contenitori come NUT o Matroska.
mplayerfile_sorgente.vob
-aid 129 -dumpaudio -dumpfilesuono.ac3
effettuerà il dump della traccia audio numero 129 dal file
file_sorgente.vob
nel file
suono.ac3
(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).
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.
Non usare -nosound 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 -nosound 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 «Troppi pacchetti audio nel buffer», di ottenere un'adeguata sincronizzazione.
Devi fare in modo che MEncoder processi il suono. Puoi per esempio copiare la colonna sonora originaria durante la codifica con -oac copy, o convertirla in un "leggero" PCM WAV mono a 4 kHz con -oac pcm -channels 1 -srate 4000. 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 MPlayer 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 MPlayer), gli splice rimarranno sbagliati e l'unico modo per correggerli è scartare/duplicare fotogrammi video nel punto di splice. Fintantochè MEncoder 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 MEncoder 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.
Prima di tutto dovrai convertire l'audio DVD in un file WAV che il codec audio possa usare come ingresso. Per esempio:
mplayerfile_sorgente.vob
-ao pcm:file=suono_destinazione.wav
\ -vc dummy -aid 1 -vo null
eseguirà il dump della seconda traccia audio dal file
file_sorgente.vob
sul file
suono_destinazione.wav
.
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 normalize, che
è disponibile nella maggior parte delle distribuzioni.
Se stai usando Windows, lo stesso mestiere lo può fare uno strumento tipo
BeSweet.
Effettuerai la compressione in Vorbis ovvero in MP3.
Per esempio:
oggenc -q1 suono_destinazione.wav
codificherà suono_destinazione.wav
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 MEncoder
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.
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. MEncoder è attualmente in grado di generare in modo nativo solo video in formati contenitore MPEG o AVI. Per esempio:
mencoder -oac copy -ovc copy -ofilm_in_uscita.avi
\ -audiofileaudio_in_ingresso.mp2
video_in_ingresso.avi
Questo miscelerà i file video video_in_ingresso.avi
e audio audio_in_ingresso.mp2
nel file AVI
film_in_uscita.avi
.
Questo comando funziona con audio MPEG-1 layer I, II e III (più comunemente
conosciuto come MP3), WAV e qualche altro formato audio.
MEncoder vanta un supporto sperimentale per
libavformat
, che è una libreria del
progetto FFmpeg che può fare il mux e il demux di svariati contenitori.
Per esempio:
mencoder -oac copy -ovc copy -ofilm_di_uscita.asf
-audiofileaudio_in_ingresso.mp2
\video_in_ingresso.avi
-of lavf -lavfopts format=asf
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
MPlayer con il supporto per
libavformat
abilitato (il che
significa che una versione precompilata nella maggior parte dei casi non
funzionerà).
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 harddup alla fine della catena dei filtri, per evitare questo tipo di problema.
Senza harddup, se MEncoder 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 harddup, MEncoder farà semplicemente passare di nuovo l'ultimo fotogramma nella catena di filtri. Questo significa che il codificatore riceve esattamente 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.
Potresti non avere altra scelta che usare harddup con formati
contenitore che non siano così legati a MEncoder
come quelli gestiti attraverso
libavformat
, e che possano non gestire
la duplicazione fotogrammi a livello contenitore.
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à.
Oltre a questa grave inefficenza, AVI ha anche le grandi limitazioni che seguono:
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.
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.
Detto tutto ciò, MEncoder non gestisce attualmente la codifica in uscita a fps variabile o la codifica in Vorbis. Quindi non noterai le limitazioni su citate se MEncoder è l'unico strumento che userai per produrre le tue codifiche. Tuttavia è possibile usare MEncoder 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.
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.
Gli strumenti necessari per creare file Matroska sono chiamati nel loro insieme mkvtoolnix e sono disponibili per la maggior parte delle piattaforme Unix, così come per Windows. 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.
Probabilmente il modo più semplice di avvicinarsi a Matroska è utilizzare MMG, il frontend grafico fornito con mkvtoolnix, e seguire la guida della GUI di mkvmerge (mmg).
Puoi anche fare il mux dei file audio e video usando la riga comando:
mkvmerge -odestinazione.mkv
video_sorgente.avi
audio_sorgente1.mp3
audio_sorgente2.ac3
Questo unirà il file video video_sorgente.avi
e i
due file audio audio_sorgente1.mp3
e
audio_sorgente2.ac3
nel file Matroska
destinazione.mkv
.
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.
Cos'è telecine? Se non comprendi molto quello che è scritto in questo documento, leggi la definizione di telecine su Wikipedia (pagina inglese). E' una descrizione comprensibile e ragionevolmente completa di cosa si indichi con telecine.
Una nota riguardo i numeri. 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.
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.
Precedenti versioni della documentazioni di MEncoder a molti post archiviati della mailig list fanno riferimento a 59.94, 29.97 e 23.976. Tutta la documentazioni di MEncoder è stata aggiornata per usare i valori in frazione, e anche tu dovresti usare questi.
-ofps 23.976 è sbagliato. -ofps 24000/1001 dovrebbe invece essere usato.
Come viene usato telecine. 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).
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.
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 prima 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.
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.
Note:
Questa sezione si applica solo ai DVD NTSC, e non a quelli PAL.
Le righe di esempio per MEncoder proposte nella
documentazione non 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
libavcodec
per la massima qualità
non è lo scopo di questa documentazione.
Ci sono alcune note a piè di pagina specifiche di questa guida, così indicate: [1]
Il video progressivo è stato originariamente filmato a 24000/1001 fps, e memorizzato sul DVD senza modifica alcuna.
Quando riproduci un DVD progressivo con MPlayer, MPlayer emette la riga seguente appena il video inizia la riproduzione:
demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.
Da qui in poi, demux_mpg non dovrebbe mai comunicare di aver trovato "30000/1001 fps NTSC content" (contenuto NTSC a 30000/1001 fps).
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 davvero certo, devi controllare tutto il video:
mplayer dvd://1 -nosound -vo null -benchmark
Using -benchmark makes L'utilizzo di -benchmark fa sì che MPlayer 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.
Alcune volte il video progressivo sui DVD viene indicato come "soft-telecine" perché è fatto in modo che il lettore DVD esegua il telecine.
Il video in telecine è stato filmato in origine a 24000/1001, ma ha subito il telecine prima di essere scritto sul DVD.
Quando MPlayer riproduce video in telecine non segnala (mai) alcun cambio di framerate.
Guardado un video in telecine, noterai artefatti che sembrano "lampeggiare": appaiono e scompaiono ripetutamente. Puoi notarlo meglio facendo quello che segue
mplayer dvd://1
Ricerca una parte con movimento.
Usa il tasto . per avanzare di un fotogramma per volta.
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; MEncoder può effettuare la conversione senza perdita da telecine non standard a progressivo. Se non vedi alcun pattern, allora molto probabilmente è interlacciato.
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.
Un altro modo per scoprire se la tua sorgente è in telecine o no è riprodurla
con le opzioni -vf pullup e -v da riga
comando per vedere come pullup relaziona i fotogrammi.
Se la sorgente è in telecine, dovresti vedere sulla console un pattern 3:2 con
0+.1.+2
e 0++1
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.
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.
Come per il video in telecine, MPlayer non dovrebbe mai segnalare alcun cambio di framerete, riproducendo contenuto interlacciato.
Quando guardi attentamente un video interlacciato avanzando fotogramma per fotogramma col tasto ., noterai che ogni singolo fotogramma è interlacciato.
Tutto il contenuto di un video "progressivo e telecine mescolati" è stato in origine filmato a 24000/1001 fotogrammi al secondo, ma alcune parti alla fine hanno subito il telecine.
Quando MPlayer 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 MPlayer per vedere questi messaggi.
Dovresti controllare le sezioni "30000/1001 fps NTSC" per assicurarti che siano davvero in telecine e non solamente interlacciate.
Nei contenuti con video "progressivo e interlacciato mescolati", il video progressivo e interlacciato sono mescolati tra loro.
Questa categoria è decisamente simile a "progressivo e telecine mescolati", fino a quando non controlli le parti a 30000/1001 fps e scopri che non hanno il pattern del telecine.
Come menzionato all'inizio, le linee di esempio qui sotto per MEncoder non sono pensate per essere usate davvero; dimostrano solamente i parametri minimi per codificare correttamente ciascuna categoria.
Il video progressivo non richiede particolari filtri per la codifica. L'unico parametrioche devi assicurarti di usare è -ofps 24000/1001. Se non lo usi, MEncoder cercherà di codificare a 30000/1001 fps e duplicherà i fotogrammi.
mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001
Spesso e volentieri capita che un video che sembra progressivo contenga anche alcune brevi parti di telecine mescolate. A meno che tu non sia sicuro, conviene trattare il video come progressivo e telecine mescolati. Il calo di prestazioni è piccolo [3].
Il telecine può essere invertito per ricavare il contenuto originario a 24000/1001 usando un processo conosciuto come telecine-inverso. MPlayer include vari filtri per ottenere ciò; il filtro migliore, pullup, è descritto nella sezione progressivo e telecine mescolati.
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).
Codifica il video in forma interlacciata. Normalmente l'interlacciatura fa a
pugni con l'abilità del codificatore di comprimere bene, ma
libavcodec
ha due parametri
appositamente per gestire un pochino meglio il video interlacciato:
ildct e ilme. Inoltre viene caldamente
consigliato l'utilizzo di mbd=2
[2] poiché
codificherà i macroblocchi come non interlacciati in posti dove non c'è
movimento. Nota che -ofps qui NON serve.
mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2
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 mplayer -pphelp e mplayer -vf help per vedere cosa c'è disponibile (fa in grep per "deint"), leggi il confronto tra filtri di deinterlacciatura (Deinterlacing filters comparison) di Michael Niedermayer, e cerca nelle mailing list di MPlayer per trovare discussioni riguardanti i vari filtri. Di nuovo il framerate non cambia, indi niente -ofps. Inoltre, la deinterlacciatura dovrebbe essere eseguita dopo il ritaglio [1] e prima del ridimensionamento.
mencoder dvd://1 -oac copy -vf yadif -ovc lavc
Sfortunatamente, quest'opzione non funziona bene con MEncoder; dovrebbe funzionar bene con MEncoder G2, ma ancora non esiste. Puoi subire dei crash. Tuttavia l'obiettivo di -vf tfields è 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 tfields devi specificare sia -fps che -ofps pari al doppio della sorgente originaria.
mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \ -fps 60000/1001 -ofps 60000/1001
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 -vf field, poi crop [1] e scale in modo corretto. Ricorda che dovrai correggere scale per compensare la risoluzione verticale dimezzata.
mencoder dvd://1 -oac copy -vf field=0 -ovc lavc
Per poter portare un video progressivo e telecine mescolati 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 sempre 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) [1]. In questo caso serve -ofps 24000/1001 perché il video in uscita sarà a 24000/1001 fotogrammi al secondo.
-vf pullup è studiata per togliere il telecine da materiale in telecine lasciando stare le parti in progressivo. Per poter funzionare correttamente, pullup deve essere seguita dal filtro softskip altrimenti MEncoder andrà in crash. pullup è tuttavia il modo migliore e più preciso disponibile per codificare sia telecine che "progressivo e telecine mescolati".
mencoder dvd://1 -oac copy -vf pullup,softskip -ovc lavc -ofps 24000/1001
Un metodo più vecchio, invece di togliere il telecine dove c'è, è portare in telecine le parti che non lo sono e dopo invertire il telecine su tutto il video. Sembra incasinato? softpulldown è un filtro che prende tutto il video e lo porta in telecine. Se facciamo seguire a softpulldown detc oppure ivtc, il risultato finale sarà completamente progressivo. Serve -ofps 24000/1001.
mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
Non ho usato -vf filmdint, ma questa è l'opinione che ne ha D Richard Felker III:
E' OK, ma IMO cerca troppo spesso di deinterlacciare piuttosto che invertire il telecine (come molti lettori DVD da tavolo & televisioni progressive), il che porta orrendi sfarfallii e altri artefatti. Se vuoi utilizzarlo devi perlomeno spendere un po' di tempo ad impostare le opzioni e controllare i risultati prima di esser certo che non faccia danni.
Ci sono due opzioni per gestire questa categoria, ognuna delle quali è un compromesso. Dovresti decidere basandoti sulla lunghezza/durata di uno dei due tipi.
Trattarlo come progressivo. Le parti interlacciate sembreranno interlacciate, e alcuni dei campi interlacciati dovranno essere scartati, apportando un pelino di saltellamenti impari. Se vuoi puoi utilizzare un filtro di postelaborazione, ma potrebbe leggermente inficiare le parti progressive.
Questa opzione non sarebbe decisamente da usare se casomai ti interessi riprodurre il video su un dispositivo interlacciato (con una sche da TV, per esempio). Se hai fotogrammi interlacciati in un video a 24000/1001 fotogrammi al secondo, verranno messi in telecine con i fotogrammi progressivi. Metà dei "fotogrammi" interlacciati saranno mostrati per la durata di tre campi (3/(60000/1001) secondi), risultando in un effetto alla "salto indietro nel tempo" che è bruttino. Se solo provi a far in questo modo, devi usare in filtro di deinterlacciamento come lb o l5.
Può anche essere una brutta idea per un display progressivo. Scarterà coppie di campi interlacciati consecutivi, dando una discontinuità che si vede maggiormente con il secondo metodo, che mostra per due volte alcuni fotogrammi progressivi. Il video interlacciato a 30000/1001 fotogrammi per secondo è di suo un pochino zoppo dato che sarebbe da mostrare a 60000/1001 campi al secondo, quindi i fotogrammi duplicati non si notano così tanto.
In ogni modo è meglio tenere in considerazione il tuo contenuto e come intendi riprodurlo. Se il tuo video è al 90% progressivo e non pensi di riprodurlo mai su una TV, dovresti propendere per l'approccio progressivo. Se è progressivo solo per metà, probabilmente ti converrà codificarlo come se fosse interlacciato.
Trattarlo come interlacciato. Alcuni fotogrammi delle parti progressive verranno duplicati, portando saltelli impari. Ancora, i filtri di deinterlacciamento potrebbero inficiare le parti progressive.
Riguardo il taglio (crop): I dati video sui DVD sono memorizzati in un formato conosciuto come YUV 4:2:0. In un video YUV, la luminosità ("luma") e il colore ("chroma") vengono salvati separatamente. Dato che l'occhio umano è in qualche modo meno sensibile al colore che alla luminosità, in un'immagine YUV 4:2:0 c'è solo un pixel chroma ogni quattro pixel luma. In un'immagine progressiva, ogni quadrato di quattro pixel luma (due per lato) ha in comune un pixel chroma. Devi prima ridimensionare lo YUV 4:2:0 progressivo a una risoluzione pari, e anche utilizzare lo scostamento. Per esempio, crop=716:380:2:26 è OK ma crop=716:380:3:26 non lo è.
Quando gestisci YUV 4:2:0 interlacciato, la situazione è un pelo più complessa. Invece di avere quattro pixel luma nel fotogramma che condividono un pixel chroma, quattro pixel in ogni campo condividono un pixel chroma. Quando i campi vengono interlacciati per formare un fotogramma, ogni "scanline" è alta un pixel. Ora, invece di avere tutti i quattro pixel luma in un quadrato, ci sono due pixel affiancati, e gli altri due pixel sono affiancati due scanline più sotto. I due pixel luma nella scanline di mezzo sono di un altro campo, e quindi condividono un pixel chroma differente con due pixel due scanline dopo. Tutta questa confusione rende necessario avere dimensione verticale pari e lo scostamento deve essere un multiplo di quattro. La dimensione orizzontale può rimanere dispari.
Per video in telecine, si consiglia di effettuare il taglio dopo l'inversione del telecine. Una volta che il video è progressivo ti serve solo tagliare di numeri dispari. Se davvero vuoi ottenere il piccolo aumento di velocità che puoi avere tagliando prima, devi prima tagliare in verticale di multipli di quattro, altrimenti il filtro di telecine inverso non riceverà dati corretti.
Per video interlacciato (non in telecine), devi sempre tagliare verticalmente di multipli di quattro a meno che tu non stia usando -vf field prima del taglio.
Riguardo i parameti di codifica e la qualità:
Il fatto che qui venga cosigliata mbd=2 non significa che
non si debba usare altrimenti. Insieme con trell,
mbd=2 è una delle due opzioni di
libavcodec
che ottimizzano al
meglio la qualità e sarebbero sempre da utilizzare entrambe a meno che
l'aumento della velocità di codifica sua proibitivo (ad es. per la codifica
in tempo reale (realtime)). Ci sono molte altre opzioni di
libavcodec
che aumentano la
qualità (e rallentano la codifica), ma questo non è l'obiettivo di
questa documentaziione.
About the performance of pullup: It is safe to use pullup (along with softskip ) 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, pullup causes MEncoder to be 50% slower. Adding sound processing and advanced lavcopts overshadows that difference, bringing the performance decrease of using pullup down to 2%.
libavcodec
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):
Video codec name | Description |
---|---|
mjpeg | Motion JPEG |
ljpeg | lossless JPEG |
jpegls | JPEG LS |
targa | Targa image |
gif | GIF image |
bmp | BMP image |
png | PNG image |
h261 | H.261 |
h263 | H.263 |
h263p | H.263+ |
mpeg4 | ISO standard MPEG-4 (DivX, Xvid compatible) |
msmpeg4 | pre-standard MPEG-4 variant by MS, v3 (AKA DivX3) |
msmpeg4v2 | pre-standard MPEG-4 by MS, v2 (used in old ASF files) |
wmv1 | Windows Media Video, version 1 (AKA WMV7) |
wmv2 | Windows Media Video, version 2 (AKA WMV8) |
rv10 | RealVideo 1.0 |
rv20 | RealVideo 2.0 |
mpeg1video | MPEG-1 video |
mpeg2video | MPEG-2 video |
huffyuv | lossless compression |
ffvhuff | FFmpeg modified huffyuv lossless |
asv1 | ASUS Video v1 |
asv2 | ASUS Video v2 |
ffv1 | FFmpeg's lossless video codec |
svq1 | Sorenson video 1 |
flv | Sorenson H.263 used in Flash Video |
flashsv | Flash Screen Video |
dvvideo | Sony Digital Video |
snow | FFmpeg's experimental wavelet-based codec |
zbmv | Zip Blocks Motion Video |
The first column contains the codec names that should be passed after the
vcodec
config,
like: -lavcopts vcodec=msmpeg4
An example with MJPEG compression:
mencoder dvd://2 -o title2.avi
-ovc lavc -lavcopts vcodec=mjpeg -oac copy
Audio codec name | Description |
---|---|
ac3 | Dolby Digital (AC-3) |
adpcm_* | Adaptive PCM formats - see supplementary table |
flac | Free Lossless Audio Codec (FLAC) |
g726 | G.726 ADPCM |
libfaac | Advanced Audio Coding (AAC) - using FAAC |
libgsm | ETSI GSM 06.10 full rate |
libgsm_ms | Microsoft GSM |
libmp3lame | MPEG-1 audio layer 3 (MP3) - using LAME |
mp2 | MPEG-1 audio layer 2 (MP2) |
pcm_* | PCM formats - see supplementary table |
roq_dpcm | Id Software RoQ DPCM |
sonic | experimental FFmpeg lossy codec |
sonicls | experimental FFmpeg lossless codec |
vorbis | Vorbis |
wmav1 | Windows Media Audio v1 |
wmav2 | Windows Media Audio v2 |
The first column contains the codec names that should be passed after the
acodec
option, like: -lavcopts acodec=ac3
An example with AC-3 compression:
mencoder dvd://2 -o title2.avi
-oac lavc -lavcopts acodec=ac3 -ovc copy
Contrary to libavcodec
'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 MEncoder has been
compiled with libavcodec
(which
is the case most of time), and do not depend on external libraries.
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 mbd=2, trell, and v4mv. See below for a detailed description of common encoding options.
Options to adjust:
vmax_b_frames: 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
libavcodec
's cgop
option, but you need to deactivate scene detection, which
is not a good idea as it will hurt encode efficiency a bit.
vb_strategy=1: 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.
dia: 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.
predia: motion search pre-pass. Not as important as dia. Good values are 1 (default) to 4. Requires preme=2 to really be useful.
cmp, subcmp, precmp: 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.
last_pred: 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.
cbp, mv0: Controls the selection of macroblocks. Small speed cost for small quality gain.
qprd: 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.
qns: 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.
vqcomp: 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).
vlelim, vcelim: 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.
qpel: 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).
psnr: 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.
Options not recommended to play with:
vme: The default is best.
lumi_mask, dark_mask: 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.
scplx_mask: Tries to prevent blocky artifacts, but postprocessing is better.
The following settings are examples of different encoding option combinations that affect the speed vs quality tradeoff at the same target bitrate.
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.
Description | Encoding options | speed (in fps) | Relative PSNR loss (in dB) |
---|---|---|---|
Very high quality | 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 | 6fps | 0dB |
High quality | 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 | 15fps | -0.5dB |
Fast | vcodec=mpeg4:mbd=2:trell:v4mv:turbo | 42fps | -0.74dB |
Realtime | vcodec=mpeg4:mbd=2:turbo | 54fps | -1.21dB |
With this feature of
libavcodec
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:
mpeg1video
and mpeg2video
are reported as working.
A typical usage of this feature is to set the matrices preferred by the KVCD specifications.
The KVCD "Notch" Quantization Matrix:
Intra:
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:
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
Usage:
mencoderinput.avi
-ooutput.avi
-oac copy -ovc lavc \ -lavcopts inter_matrix=...:intra_matrix=...
mencoder input.avi
-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
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 -ofps 24000/1001 (because the output framerate is the same as the input framerate), and of course the crop dimensions will be different.
After running mplayer dvd://1, we follow the process detailed in the section How to deal with telecine and interlacing in NTSC DVDs and discover that it is 24000/1001 fps progressive video, which means that we need not use an inverse telecine filter, such as pullup or filmdint.
Next, we want to determine the appropriate crop rectangle, so we use the cropdetect filter:
mplayer dvd://1 -vf cropdetect
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 MPlayer's console output:
crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)
We then play the movie back with this filter to test its correctness:
mplayer dvd://1 -vf crop=720:362:0:58
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.
We could just use crop=720:352:0:58, 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:
mplayer dvd://1 -vf crop=720:352:0:62
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 pullup 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.)
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:
-vf crop=720:362:0:58,scale=720:352
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.
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.
We are now ready to do the two pass encode. Pass one:
mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi
-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
And pass two is the same, except that we specify vpass=2:
mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi
-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
The options v4mv:mbd=2:trell 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
cmp=3:subcmp=3 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
libavcodec
produces too much
blocky artifacting, you could try selecting the experimental NSSE as
comparison function via *cmp=10.
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.
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 spp post-processing filter, drastically improves the perception of quality and helps eliminate blocky artifacts in the video. With MPlayer's autoq 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:
mplayer Harry_Potter_2.avi
-vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3
Xvid
is a free library for
encoding MPEG-4 ASP video streams.
Before starting to encode, you need to
set up MEncoder to support it.
This guide mainly aims at featuring the same kind of information as x264's encoding guide. Therefore, please begin by reading the first part of that guide.
Please begin by reviewing the
Xvid
section of
MPlayer's man page.
This section is intended to be a supplement to the man page.
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.
vhq 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.
bvhq 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).
max_bframes 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.
bf_threshold 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 max_bframes; if you are bitrate-starved, you should increase both max_bframes and bf_threshold, while you may increase max_bframes and reduce bf_threshold so that the encoder may use more B-frames in places that only really need them. A low number of max_bframes and a high value of bf_threshold 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.
trellis 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 vhq and all other more CPU-hungry options to the minimum.
hq_ac 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.
cartoon 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.
me_quality This setting is to control the precision of the motion estimation. The higher me_quality, the more precise the estimation of the original motion will be, and the better the resulting clip will capture the original motion.
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.
chroma_me Improves motion estimation by also taking the chroma (color) information into account, whereas me_quality 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 me_quality.
chroma_opt 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.
lumi_mask 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).
qpel 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 qpel, so you need to actually encode with and without it to know for sure.
qpel 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.
gmc
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
vhq to the maximum.
Xvid
's GMC is more
sophisticated than DivX's, but is only supported by few
standalone players.
Xvid supports encoding profiles through the profile 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.
Simple | Advanced Simple | DivX | ||||||||||||||
Profile name | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 4 | 5 | Handheld | Portable NTSC | Portable PAL | Home Theater NTSC | Home Theater PAL | HDTV |
Width [pixels] | 176 | 176 | 352 | 352 | 176 | 176 | 352 | 352 | 352 | 720 | 176 | 352 | 352 | 720 | 720 | 1280 |
Height [pixels] | 144 | 144 | 288 | 288 | 144 | 144 | 288 | 288 | 576 | 576 | 144 | 240 | 288 | 480 | 576 | 720 |
Frame rate [fps] | 15 | 15 | 15 | 15 | 30 | 30 | 15 | 30 | 30 | 30 | 15 | 30 | 25 | 30 | 25 | 30 |
Max average bitrate [kbps] | 64 | 64 | 128 | 384 | 128 | 128 | 384 | 768 | 3000 | 8000 | 537.6 | 4854 | 4854 | 4854 | 4854 | 9708.4 |
Peak average bitrate over 3 secs [kbps] | 800 | 8000 | 8000 | 8000 | 8000 | 16000 | ||||||||||
Max. B-frames | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 2 | ||||||
MPEG quantization | X | X | X | X | X | X | ||||||||||
Adaptive quantization | X | X | X | X | X | X | X | X | X | X | X | X | ||||
Interlaced encoding | X | X | X | X | X | X | X | X | X | |||||||
Quaterpixel | X | X | X | X | X | X | ||||||||||
Global motion compensation | X | X | X | X | X | X |
The following settings are examples of different encoding option combinations that affect the speed vs quality tradeoff at the same target bitrate.
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.
Description | Encoding options | speed (in fps) | Relative PSNR loss (in dB) |
---|---|---|---|
Very high quality | chroma_opt:vhq=4:bvhq=1:quant_type=mpeg | 16fps | 0dB |
High quality | vhq=2:bvhq=1:chroma_opt:quant_type=mpeg | 18fps | -0.1dB |
Fast | turbo:vhq=0 | 28fps | -0.69dB |
Realtime | turbo:nochroma_me:notrellis:max_bframes=0:vhq=0 | 38fps | -1.48dB |
x264
is a free library for
encoding H.264/AVC video streams.
Before starting to encode, you need to
set up MEncoder to support it.
Please begin by reviewing the
x264
section of
MPlayer'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.
This guide considers two major categories of encoding options:
Options which mainly trade off encoding time vs. quality
Options which may be useful for fulfilling various personal preferences and special requirements
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.
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 the Wikipedia article on PSNR. Global PSNR is the last PSNR number reported when you include the psnr option in x264encopts. Any time you read a claim about PSNR, one of the assumptions behind the claim is that equal bitrates are used.
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.
subq: Of the options which allow you to trade off speed for quality, subq and frameref (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 frameref and subq options interact with each other fairly strongly. Experience shows that, with one reference frame, subq=5 (the default setting) takes about 35% more time than subq=1. With 6 reference frames, the penalty grows to over 60%. subq's effect on PSNR seems fairly constant regardless of the number of reference frames. Typically, subq=5 achieves 0.2-0.5 dB higher global PSNR in comparison subq=1. This is usually enough to be visible.
subq=6 is slower and yields better quality at a reasonable cost. In comparison to subq=5, it usually gains 0.1-0.4 dB global PSNR with speed costs varying from 25%-100%. Unlike other levels of subq, the behavior of subq=6 does not depend much on frameref and me. Instead, the effectiveness of subq=6 depends mostly upon the number of B-frames used. In normal usage, this means subq=6 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 bframes to something other than zero (see below).
subq=7 is the slowest, highest quality mode. In comparison to subq=6, 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.
frameref: frameref 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 frameref to 2 gains around 0.15dB PSNR with a 5-10% speed penalty; this seems like a good tradeoff. frameref=3 gains around 0.25dB PSNR over frameref=1, which should be a visible difference. frameref=3 is around 15% slower than frameref=1. Unfortunately, diminishing returns set in rapidly. frameref=6 can be expected to gain only 0.05-0.1 dB over frameref=3 at an additional 15% speed penalty. Above frameref=6, 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, frameref=12 will improve global PSNR by a tiny 0.02dB over frameref=6, at a speed cost of 15%-20%. At such high frameref values, the only really good thing that can be said is that increasing it even further will almost certainly never harm PSNR, but the additional quality benefits are barely even measurable, let alone perceptible.
Raising frameref to unnecessarily high values can and usually does hurt coding efficiency if you turn CABAC off. With CABAC on (the default behavior), the possibility of setting frameref "too high" currently seems too remote to even worry about, and in the future, optimizations may remove the possibility altogether.
If you care about speed, a reasonable compromise is to use low subq and frameref 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 frameref 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 frameref 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 frameref 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.
me: This option is for choosing the motion estimation search method. Altering this option provides a straightforward quality-vs-speed tradeoff. me=dia is only a few percent faster than the default search, at a cost of under 0.1dB global PSNR. The default setting (me=hex) is a reasonable tradeoff between speed and quality. me=umh gains a little under 0.1dB global PSNR, with a speed penalty that varies depending on frameref. At high values of frameref (e.g. 12 or so), me=umh is about 40% slower than the default me=hex. With frameref=3, the speed penalty incurred drops to 25%-30%.
me=esa uses an exhaustive search that is too slow for practical use.
partitions=all: 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.
bframes: 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.
With adaptive B-frame decision turned off (x264encopts's nob_adapt), the optimal value for this setting is usually no more than bframes=1, 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.
b_adapt: Note: This is on by default.
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 b_bias 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. b_adapt and b_bias have no effect on subsequent passes.
b_pyramid: 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.
weight_b: 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.
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 nob_adapt to your x264encopts, if you expect fades to have a large effect in your particular video clip.
threads:
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
threads=auto and let
x264
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).
Two pass encoding: 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.
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.
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 qcomp below for some ideas on how to tweak this allocation to your liking.
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 subq=1:frameref=1 to the first pass x264encopts. Then, on the second pass, use slower, higher-quality options: subq=6:frameref=15:partitions=all:me=umh
Three pass encoding? x264 offers the ability to make an arbitrary number of consecutive passes. If you specify pass=1 on the first pass, then use pass=3 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.
qcomp: qcomp trades off the number of bits allocated to "expensive" high-motion versus "cheap" low-motion frames. At one extreme, qcomp=0 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, qcomp=1 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. qcomp is set to 0.6 by default, which may be slightly low for many peoples' taste (0.7-0.8 are also commonly used).
keyint: keyint is solely for trading off file seekability against coding efficiency. By default, keyint 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 keyint=125; 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.
deblock: This topic is going to be a bit controversial.
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 deblock allow you to specify offsets to the preset deblocking thresholds.
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.
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.
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.
This still 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 -vf noise when you play your encoded movie. -vf noise=8a:4a 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.
The following settings are examples of different encoding option combinations that affect the speed vs quality tradeoff at the same target bitrate.
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.
Description | Encoding options | speed (in fps) | Relative PSNR loss (in dB) |
---|---|---|---|
Very high quality | subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid=normal:weight_b | 6fps | 0dB |
High quality | subq=5:8x8dct:frameref=2:bframes=3:b_pyramid=normal:weight_b | 13fps | -0.89dB |
Fast | subq=4:bframes=2:b_pyramid=normal:weight_b | 17fps | -1.48dB |
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!)
Note that support for this is very experimental and some codecs may not work correctly. Some codecs will only work in certain colorspaces, try -vf format=bgr24 and -vf format=yuy2 if a codec fails or gives wrong output.
Video codec file name | Description (FourCC) | md5sum | Comment |
---|---|---|---|
aslcodec_vfw.dll | Alparysoft lossless codec vfw (ASLC) | 608af234a6ea4d90cdc7246af5f3f29a | |
avimszh.dll | AVImszh (MSZH) | 253118fe1eedea04a95ed6e5f4c28878 | needs -vf format |
avizlib.dll | AVIzlib (ZLIB) | 2f1cc76bbcf6d77d40d0e23392fa8eda | |
divx.dll | DivX4Windows-VFW | acf35b2fc004a89c829531555d73f1e6 | |
huffyuv.dll | HuffYUV (lossless) (HFYU) | b74695b50230be4a6ef2c4293a58ac3b | |
iccvid.dll | Cinepak Video (cvid) | cb3b7ee47ba7dbb3d23d34e274895133 | |
icmw_32.dll | Motion Wavelets (MWV1) | c9618a8fc73ce219ba918e3e09e227f2 | |
jp2avi.dll | ImagePower MJPEG2000 (IPJ2) | d860a11766da0d0ea064672c6833768b | -vf flip |
m3jp2k32.dll | Morgan MJPEG2000 (MJ2C) | f3c174edcbaef7cb947d6357cdfde7ff | |
m3jpeg32.dll | Morgan Motion JPEG Codec (MJPG) | 1cd13fff5960aa2aae43790242c323b1 | |
mpg4c32.dll | Microsoft MPEG-4 v1/v2 | b5791ea23f33010d37ab8314681f1256 | |
tsccvid.dll | TechSmith Camtasia Screen Codec (TSCC) | 8230d8560c41d444f249802a2700d1d5 | shareware error on windows |
vp31vfw.dll | On2 Open Source VP3 Codec (VP31) | 845f3590ea489e2e45e876ab107ee7d2 | |
vp4vfw.dll | On2 VP4 Personal Codec (VP40) | fc5480a482ccc594c2898dcc4188b58f | |
vp6vfw.dll | On2 VP6 Personal Codec (VP60) | 04d635a364243013898fd09484f913fb | |
vp7vfw.dll | On2 VP7 Personal Codec (VP70) | cb4cc3d4ea7c94a35f1d81c3d750bc8d | wrong FourCC? |
ViVD2.dll | SoftMedia ViVD V2 codec VfW (GXVE) | a7b4bf5cac630bb9262c3f80d8a773a1 | |
msulvc06.DLL | MSU Lossless codec (MSUD) | 294bf9288f2f127bb86f00bfcc9ccdda | Decodable by Window Media Player, not MPlayer (yet). |
camcodec.dll | CamStudio lossless video codec (CSCD) | 0efe97ce08bb0e40162ab15ef3b45615 | sf.net/projects/camstudio |
The first column contains the codec names that should be passed after the
codec
parameter,
like: -xvfwopts codec=divx.dll
The FourCC code used by each codec is given in the parentheses.
An example to convert an ISO DVD trailer to a VP6 flash video file using compdata bitrate settings:
mencoder -dvd-devicezeiram.iso
dvd://7 -otrailer.flv
\ -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
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.
First you must build the vfw2menc program. It is located in the TOOLS subdirectory of the MPlayer source tree. To build on Linux, this can be done using Wine:
winegcc vfw2menc.c -o vfw2menc -lwinmm -lole32
To build on Windows in MinGW or Cygwin use:
gcc vfw2menc.c -o vfw2menc.exe -lwinmm -lole32
To build on MSVC you will need getopt. Getopt can be found in the original vfw2menc archive available at: The MPlayer on win32 project.
Below is an example with the VP6 codec.
vfw2menc -f VP62 -d vp6vfw.dll -s firstpass.mcf
This will open the VP6 codec dialog window.
Repeat this step for the second pass
and use -s secondpass.mcf
.
Windows users can use -xvfwopts codec=vp6vfw.dll:compdata=dialog to have the codec dialog display before encoding starts.
There are several reasons why producing QuickTime-compatible files can be desirable.
You want any computer illiterate to be able to watch your encode on any major platform (Windows, Mac OS X, Unices …).
QuickTime is able to take advantage of more hardware and software acceleration features of Mac OS X than platform-independent players like MPlayer or VLC. That means that your encodes have a chance to be played smoothly by older G4-powered machines.
QuickTime 7 supports the next-generation codec H.264, which yields significantly better picture quality than previous codec generations (MPEG-2, MPEG-4 …).
QuickTime 7 supports H.264 video and AAC audio, but it does not support them muxed in the AVI container format. However, you can use MEncoder to encode the video and audio, and then use an external program such as mp4creator (part of the MPEG4IP suite) to remux the video and audio tracks into an MP4 container.
QuickTime's support for H.264 is limited, so you will need to drop some advanced features. If you encode your video with features that QuickTime 7 does not support, QuickTime-based players will show you a pretty white screen instead of your expected video.
B-frames: QuickTime 7 supports a maximum of 1 B-frame, i.e. -x264encopts bframes=1. This means that b_pyramid and weight_b will have no effect, since they require bframes to be greater than 1.
Macroblocks: QuickTime 7 does not support 8x8 DCT macroblocks. This option (8x8dct) is off by default, so just be sure not to explicitly enable it. This also means that the i8x8 option will have no effect, since it requires 8x8dct.
Aspect ratio: QuickTime 7 does not support SAR (sample aspect ratio) information in MPEG-4 files; it assumes that SAR=1. Read the section on scaling for a workaround.
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 -ofps 24000/1001 and use slightly different crop and scale dimensions.
After running mplayer dvd://1, you follow the process detailed in the section How to deal with telecine and interlacing in NTSC DVDs 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 pullup or a deinterlacing filter such as yadif.
Next, you need to crop out the black bars from the top and bottom of the video, as detailed in this previous section.
The next step is truly heartbreaking. QuickTime 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 QuickTime 7. MEncoder can apply the appropriate upscaling or downscaling by specifying respectively -vf scale=-10:-1 or -vf scale=-1:-10. 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:
-vf crop=720:352:0:62,scale=-10:-1
Because you will be remuxing into a different container, you should always use the harddup option to ensure that duplicated frames are actually duplicated in the video output. Without this option, MEncoder 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.
The final filter chain looks like this:
-vf crop=720:352:0:62,scale=-10:-1,harddup
As always, the selection of bitrate is a matter of the technical properties of the source, as explained here, 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.
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 turbo option
on the first pass; this reduces subq and
frameref to 1. To save some disk space, you can
use the ss option to strip off the first few seconds
of the video. (I found that this particular movie has 32 seconds of
credits and logos.) bframes can be 0 or 1.
The other options are documented in Encoding with
the x264
codec and
the man page.
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
If you have a multi-processor machine, don't miss the opportunity to
dramatically speed-up encoding by enabling
x264
's multi-threading mode
by adding threads=auto to your x264encopts
command-line.
The second pass is the same, except that you specify the output file and set pass=2.
mencoder dvd://1 -o narnia.avi -ss 32 -ovc x264 \ -x264encopts pass=2: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
The resulting AVI should play perfectly in MPlayer, but of course QuickTime 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.
There are several ways to remux AVI files to MP4. You can use mp4creator, which is part of the MPEG4IP suite.
First, demux the AVI into separate audio and video streams using MPlayer.
mplayer narnia.avi -dumpaudio -dumpfile narnia.aac mplayer narnia.avi -dumpvideo -dumpfile narnia.h264
The filenames are important; mp4creator
requires that AAC audio streams be named .aac
and H.264 video streams be named .h264
.
Now use mp4creator to create a new MP4 file out of the audio and video streams.
mp4creator -create=narnia.aac narnia.mp4 mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4
Unlike the encoding step, you must specify the framerate as a decimal (such as 23.976), not a fraction (such as 24000/1001).
This narnia.mp4
file should now be playable
with any QuickTime 7 application, such as
QuickTime Player or
iTunes. If you are planning to view the
video in a web browser with the QuickTime
plugin, you should also hint the movie so that the
QuickTime plugin can start playing it
while it is still downloading. mp4creator
can create these hint tracks:
mp4creator -hint=1 narnia.mp4 mp4creator -hint=2 narnia.mp4 mp4creator -optimize narnia.mp4
You can check the final result to ensure that the hint tracks were created successfully:
mp4creator -list narnia.mp4
You should see a list of tracks: 1 audio, 1 video, and 2 hint tracks.
Track Type Info 1 audio MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz 2 video H264 [email protected], 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps 3 hint Payload mpeg4-generic for track 1 4 hint Payload H264 for track 2
If you want to add tags to your video that show up in iTunes, you can use AtomicParsley.
AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite
The --metaEnema option removes any existing metadata (mp4creator inserts its name in the "encoding tool" tag), and --freefree reclaims the space from the deleted metadata. The --stik option sets the type of video (such as Movie or TV Show), which iTunes uses to group related video files. The --overWrite option overwrites the original file; without it, AtomicParsley creates a new auto-named file in the same directory and leaves the original file untouched.
MEncoder is capable of creating VCD, SCVD
and DVD format MPEG files using the
libavcodec
library.
These files can then be used in conjunction with
vcdimager
or
dvdauthor
to create discs that will play on a standard set-top player.
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.
Format | Resolution | V. Codec | V. Bitrate | Sample Rate | A. Codec | A. Bitrate | FPS | Aspect |
---|---|---|---|---|---|---|---|---|
NTSC DVD | 720x480, 704x480, 352x480, 352x240 | MPEG-2 | 9800 kbps | 48000 Hz | AC-3,PCM | 1536 kbps (max) | 30000/1001, 24000/1001 | 4:3, 16:9 (only for 720x480) |
NTSC DVD | 352x240[a] | MPEG-1 | 1856 kbps | 48000 Hz | AC-3,PCM | 1536 kbps (max) | 30000/1001, 24000/1001 | 4:3, 16:9 |
NTSC SVCD | 480x480 | MPEG-2 | 2600 kbps | 44100 Hz | MP2 | 384 kbps (max) | 30000/1001 | 4:3 |
NTSC VCD | 352x240 | MPEG-1 | 1150 kbps | 44100 Hz | MP2 | 224 kbps | 24000/1001, 30000/1001 | 4:3 |
PAL DVD | 720x576, 704x576, 352x576, 352x288 | MPEG-2 | 9800 kbps | 48000 Hz | MP2,AC-3,PCM | 1536 kbps (max) | 25 | 4:3, 16:9 (only for 720x576) |
PAL DVD | 352x288[a] | MPEG-1 | 1856 kbps | 48000 Hz | MP2,AC-3,PCM | 1536 kbps (max) | 25 | 4:3, 16:9 |
PAL SVCD | 480x576 | MPEG-2 | 2600 kbps | 44100 Hz | MP2 | 384 kbps (max) | 25 | 4:3 |
PAL VCD | 352x288 | MPEG-1 | 1152 kbps | 44100 Hz | MP2 | 224 kbps | 25 | 4:3 |
[a] These resolutions are rarely used for DVDs because they are fairly low quality. |
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.
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 keyint option.
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.
MEncoder has options to control the output format. Using these options we can instruct it to create the correct type of file.
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 vcdimager.
VCD:
-of mpeg -mpegopts format=xvcd
SVCD:
-of mpeg -mpegopts format=xsvcd
DVD (with timestamps on every frame, if possible):
-of mpeg -mpegopts format=dvd:tsaf
DVD with NTSC Pullup:
-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001
This allows 24000/1001 fps progressive content to be encoded at 30000/1001 fps whilst maintaing DVD-compliance.
The aspect argument of -lavcopts 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.
16:9 or "Widescreen"
-lavcopts aspect=16/9
4:3 or "Fullscreen"
-lavcopts aspect=4/3
2.35:1 or "Cinemascope" NTSC
-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9
To calculate the correct scaling size, use the expanded NTSC width of 854/2.35 = 368
2.35:1 or "Cinemascope" PAL
-vf scale=720:432,expand=720:576 -lavcopts aspect=16/9
To calculate the correct scaling size, use the expanded PAL width of 1024/2.35 = 432
In order to maintain audio/video synchronization throughout the encode, MEncoder 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 harddup video filter at the end of the filter chain to avoid this kind of problem. You can find more technical information about harddup in the section Improving muxing and A/V sync reliability or in the manual page.
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 -srate option and the -af lavcresample audio filter together.
DVD:
-srate 48000 -af lavcresample=48000
VCD and SVCD:
-srate 44100 -af lavcresample=44100
libavcodec
can be used to
create VCD/SVCD/DVD compliant video by using the appropriate options.
This is a list of fields in -lavcopts that you may be required to change in order to make a complaint movie for VCD, SVCD, or DVD:
acodec: mp2 for VCD, SVCD, or PAL DVD; ac3 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.
abitrate: 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.
vcodec: mpeg1video for VCD; mpeg2video for SVCD; mpeg2video is usually used for DVD but you may also use mpeg1video for CIF resolutions.
keyint: 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 keyint of 25 should never cause any problems.
vrc_buf_size: 327 for VCD, 917 for SVCD, and 1835 for DVD.
vrc_minrate: 1152, for VCD. May be left alone for SVCD and DVD.
vrc_maxrate: 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.
vbitrate: 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.
vstrict: vstrict=0 should be used to create DVDs. Without this option, MEncoder creates a stream that cannot be correctly decoded by some standalone DVD players.
This is a typical minimum set of -lavcopts for encoding video:
VCD:
-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\ vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2
SVCD:
-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\ keyint=15:acodec=mp2
DVD:
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ keyint=15:vstrict=0:acodec=ac3
For higher quality encoding, you may also wish to add quality-enhancing options to lavcopts, such as trell, mbd=2, and others. Note that qpel and v4mv, 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 dc=10 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:
-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
VCD and SVCD support MPEG-1 layer II audio, using one of
toolame
,
twolame
,
or libavcodec
'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.
For DVD audio, libavcodec
's
AC-3 codec is used.
This section shows some complete commands for creating VCD/SVCD/DVD compliant videos.
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 \ -omovie.mpg
movie.avi
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 \ -omovie.mpg
movie.avi
If the source already has AC-3 audio, use -oac copy instead of re-encoding it.
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 -omovie.mpg
movie.avi
If the source already has AC-3 audio, and is NTSC @ 24000/1001 fps:
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 \ -omovie.mpg
movie.avi
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 \ -omovie.mpg
movie.avi
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 \ -omovie.mpg
movie.avi
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 \ -omovie.mpg
movie.avi
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 \ -omovie.mpg
movie.avi
[1] 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).
[2] 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.
8.1. Sviluppo | |
Domanda: | Come posso creare una patch adeguata per MPlayer? |
Risposta: | Abbiamo scritto un breve documento che descrive tutti i dettagli necessari. Per favore seguine le istruzioni. |
Domanda: | Come traduco MPlayer in una nuova lingua? |
Risposta: | Leggi l'HOWTO sulle traduzioni, dovrebbe spiegare tutto. Puoi ottenere maggior aiuto sulla mailing list MPlayer-translations. |
Domanda: | Come posso supportare lo sviluppo di MPlayer? |
Risposta: | Siamo più che felici di accettare le vostre donazioni hardware e software. Ci aiutano a migliorare continuamente MPlayer. |
Domanda: | Come divento uno sviluppatore di MPlayer? |
Risposta: | Sviluppatori e redattori della documentazione sono sempre i benvenuti. Leggi la documentazione tecnica per un primo approccio. Poi dovresti iscriverti alla mailing list MPlayer-dev-eng e cominciare a scrivere codice. Se vuoi aiutarci con la documentazione, iscriviti alla mailing list MPlayer-docs. |
Domanda: | Perché non usate autoconf/automake? |
Risposta: | Abbiamo un nostro sistema di compilazione modulare, autoprodotto. Fa un lavoro ragionevolmente buono, perciò, perché cambiarlo? E poi, non ci piacciono gli auto* strumenti, proprio come ad altre persone. |
8.2. Compilazione e installazione | |
| |
Domanda: |
La compilazione fallisce con un errore e gcc se ne
esce con qualche messaggio criptico contenente la frase
|
Risposta: | Sei incappato un un baco di gcc. Per favore riporta l'errore al gruppo di gcc e non a noi. Per qualche ragione MPlayer pare riuscire ad attivare bachi del compilatore frequentemente. Tuttavia non possiamo correggerli e neanche aggiungere workaround nei nostri sorgenti per i bachi nel compilatore. Per evitare questi problemi, o ti affidi a una versione del compilatore ritenuta affidabile, o lo aggiorni spesso. |
Domanda: | Ci sono pacchetti binari (Debian/RPM) di MPlayer? |
Risposta: | |
Domanda: | Come posso compilare MPlayer a 32 bit su un Athlon a 64 bit? |
Risposta: | Prova le seguenti opzioni di configure: ./configure --target=i386-linux --cc="gcc -m32" --as="as --32" --with-extralibdir=/usr/lib
|
Domanda: | configure si ferma con questo testo, e MPlayer non compila! Your gcc does not support even i386 for '-march' and '-mcpu'
|
Risposta: | Il tuo gcc non è installato correttamente, controlla il file config.log.log per i dettagli. |
Domanda: |
Ho una Matrox G200/G400/G450/G550, come compilo/uso il driver
|
Risposta: | Leggi la sezione mga_vid. |
Domanda: | Durante il 'make', MPlayer si lamenta che mancano le librerie di X11. Non capisco, io ho X11 installato!? |
Risposta: | ... ma non hai il pacchetto di sviluppo di X11 installato, o non è installato correttamente. Si chiama XFree86-devel* sotto Red Hat, xlibs-dev in Debian Woody e libx11-dev in Debian Sarge. Controlla anche se esistono i collegamenti simbolici /usr/X11 e /usr/include/X11. |
Domanda: | La compilazione sotto Mac OS 10.3 dà molti errori di link. |
Risposta: | L'errore che riscontri nella fase di link probabilmente è simile a questo: ld: Undefined symbols: _LLCStyleInfoCheckForOpenTypeTables referenced from QuartzCore expected to be defined in ApplicationServices _LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be defined in ApplicationServices Questo problema è dato dal fatto che gli sviluppatori di Apple usano 10.4 per compilare il loro software e distribuiscono i binari per il 10.3 usando Aggiornamento Software. Gli 'undefined symbols' sono presenti in Mac OS 10.4, ma non in 10.3. Una soluzione può essere retrocedere a QuickTime 7.0.1. Qui c'è una soluzione migliore. Scarica una copia più vecchia dei framework. Questo ti farà avere un file compresso che contiene il Framework di QuickTime 7.0.1 e un Framework QuartzCore del 10.3. Decomprimi da qualche parte i file tranne che nella tua cartella Sistema. (per es. non installare questi framework nella tua /System/Library/Frameworks! Usare questa copia precedente serve solo ad aggirare i problemi di link!) gunzip < CompatFrameworks.tgz | tar xvf -
In config.mak, dovresti aggiungere
Il binario di MPlayer risultante userà
effettivamente il framework installato sul tuo sistema attraverso i link
dinamici risolti durante l'esecuzione
(Puoi verificarlo usando |
8.3. Domande generali | |
| |
Domanda: | Ci sono mailing list su MPlayer? |
Risposta: | Sì. Vedi la sezione mailing lists sul nostro sito. |
Domanda: | Ho trovato un brutto baco cercando di riprodurre il mio video preferito! Chi dovrei informare? |
Risposta: | Leggi per favore le linee guida per segnalare i bug e segui le istruzioni. |
Domanda: | Ho dei problemi a leggere dei file col codec ... . Posso usarli? |
Risposta: | Controlla la tabella di stato dei codec, se non contiene il tuo codec, leggi l'HOWTO sull'importazione codec Win32 e contattaci. |
Domanda: | Quando avvio la riproduzione, esce questo messaggio, ma tutto sembra a posto: Linux RTC init: ioctl (rtc_pie_on): Permission denied
|
Risposta: | Ti serve un kernel appositamente impostato per usare il codice di temporizzazione per RTC. Per i dettagli leggi la sezione della documentazione su RTC. |
Domanda: | Come posso salvare un'istantanea (screenshot)? |
Risposta: | Per poter salvare un'istananea devi usare un driver di uscita video che non utilizzi un sistema di overlay. Sotto X11, -vo x11 fara ciò, sotto Windows funziona -vo directx:noaccel.
Alternativamente puoi eseguire MPlayer con il filtro
video |
Domanda: | Qual'è il significato dei numeri sulla linea di stato? |
Risposta: | Esempio: A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x
Molti di essi sono presenti per finalità di debug, usa l'opzione -quiet per farli sparire. Potresti notare che l'utilizzo di CPU del video_out sia zero (0%) per alcuni file. Questo perché viene invocato direttamente dal codec, perciò non può venir misurato separatamente. Se vuoi sapere la velocità del video_out, confronta la differenza riproducendo il file con -vo null e con il tuo driver di uscita video usuale. |
Domanda: | Ci sono dei messaggi di errore circa un file non trovato /usr/local/lib/codecs/ ... |
Risposta: | Scarica e installa i codec binari dalla nostra pagina di download. |
Domanda: | Come posso far sì che MPlayer si ricordi le opzioni che uso per un dato file, per es. filmato.avi? |
Risposta: | Crea un file con nome filmato.avi.conf con le opzioni specifiche per il file e mettilo in ~/.mplayer o nella stessa directory del file stesso. |
Domanda: | I sottotitoli sono molto belli, i migliori ch'io abbia mai visto, ma rallentano la riproduzione! So che è strano ... |
Risposta: |
Dopo aver eseguito ./configure,
modifica config.h e sostituisci
|
Domanda: | Non riesco ad aprire il menu della GUI. Premo il tasto destro, ma non accedo ad alcuna voce del menu! |
Risposta: | Stai usando FVWM? Prova a fare così:
|
Domanda: | Come posso eseguire MPlayer in background? |
Risposta: | Usa: mplayer
|
8.4. Problemi di riproduzione | |
| |
Domanda: | Non riesco ad isolare la causa di qualche strano problema di riproduzione. |
Risposta: | Hai un file randagio codecs.conf in ~/.mplayer/, /etc/, /usr/local/etc/ o in posti simili? Cancellalo, un file codecs.conf non aggiornato può causare strani problemi ed è usabile solo dagli sviluppatori che stanno lavorando sul supporto codec. Ha più importanza delle impostazioni codec interne di MPlayer, il che crea macello se vengono fatte delle modifiche incompatibili in nuove versioni del programma. A meno che non sia usato da esperti, è la ricetta per il disastro, nella forma di crash e problemi di riproduzione apparentemente casuali e difficili da localizzare. Se lo hai ancora in qualche dove sul tuo sistema, dovresti cancellarlo. |
Domanda: | Come faccio a far sì che i sottotitoli vengano visualizzati sui margini neri esterni al film? |
Risposta: |
Usa il filtro video mplayer -vf expand=0:-100:0:0 -slang it dvd://1
|
Domanda: | Come seleziono le tracce audio/sottotitoli di un file DVD, OGM, Matroska o NUT? |
Risposta: | Devi usare -aid ("audio ID") o -alang ("audio language"), -sid ("subtitle ID") o -slang ("subtitle language"), per esempio: mplayer -alang eng -slang eng Per vedere quelle disponibili: mplayer -vo null -ao null -frames 0 -v
|
Domanda: | Sto cercando di riprodurre un qualche file da internet ma non ce la fa. |
Risposta: | Prova a riprodurre il flusso con l'opzione -playlist. |
Domanda: | Ho scaricato un film da una rete P2P e non funziona! |
Risposta: | Il tuo file molto probabilmente è danneggiato o è un falso (fake). Se l'hai avuto da un amico e lui dice che si vede, prova a confrontarne gli hash md5sum. |
Domanda: | Ho problemi con la visualizzazione dei miei sottotitoli, aiuto!! |
Risposta: |
Assicurati di avere i font correttamente installati. Ripeti di nuovo i passaggi
nella parte Font e OSD della sezione
installazione. Se stai usando dei font TrueType, controlla di avere la libreria
|
Domanda: | Perché MPlayer non funziona in Fedora Core? |
Risposta: | C'è un brutto rapporto in Fedora tra exec-shield, prelink, e una qualsiasi applicazione che usi le DLL di Windows (proprio come MPlayer). Il problema è che exec-shield rende casuale l'indirizzo di caricamento di tutte le librerie di sistema. Questa casualità è al livello di prelink (una volta ogni due settimane). Quando MPlayer cerca di caricare una DLL di Windows lo vuole fare ad un indirizzo specifico (0x400000). Se una libreria importante di sistema è già lì, MPlayer andrà in crash. (Un tipico sintomo potrebbe essere un segmentation fault cercando di riprodurre file Windows Media 9.) Se hai questo problema hai due opzioni:
|
Domanda: | MPlayer muore con MPlayer interrupted by signal 4 in module: decode_video
|
Risposta: | Non utilizzare MPlayer su una CPU diversa da quella per cui è stato compilato, o ricompilalo con rilevamento della CPU durante l'esecuzione (./configure --enable-runtime-cpudetection). |
Domanda: | Quando cerco di acquisire dal mio sintonizzatore, ci riesco, ma i colori sono strani. Con altre applicazioni è OK. |
Risposta: | Probabilmente la tua scheda riporta alcuni spazi colore come supportati mentre in verità non li supporta. Prova con YUY2 al posto dello YV12 di default (vedi la sezione TV). |
Domanda: | Ottengo dei valori percentuali molto strani (decisamente troppo alti) riproducendo file sul mio portatile. |
Risposta: | E' un effetto del sistema di gestione/risparmio energetico del tuo portatile (del BIOS, non del kernel). Collega l'alimentazione esterna prima di accendere il tuo portatile. Puoi anche provare se cpufreq può esserti d'aiuto (un'interfaccia SpeedStep per Linux). |
Domanda: |
Quando eseguo MPlayer da utente
|
Risposta: | C'è un altro effetto del sistema di risparmio energetico (vedi sopra). Collega l'alimentazione esterna prima di accendere il tuo portatile o usa l'opzione -nortc. |
Domanda: | Riproducendo un film, questo di colpo diventa scattoso e ottengo il messaggio seguente: Badly interleaved AVI file detected - switching to -ni mode...
|
Risposta: | File con interleave errato e -cache non funzionano bene insieme. Prova con -nocache. |
8.5. Problemi dei driver video/audio (vo/ao) | |
| |
Domanda: | Quando riproduco a schermo intero ottengo solo bordi neri intorno all'immagine e nessun vero ridimensionamento in modalità a schermo intero. |
Risposta: |
Il tuo driver di uscita video non gestisce il ridimensionamento via hardware e
dato che il ridimensionamento software può essere incredibilmente lento,
MPlayer non lo abilita in automatico. Molto
probabilmente stai usando il driver di uscita video
|
Domanda: | Ho appena installato MPlayer. Quando voglio aprire un file video causa un errore fatale: Errore aprendo/inizializzando il dispositivo uscita video (-vo) selezionato! Come posso risovlere il mio problema? |
Risposta: | Cambia semplicemente il dispositivo di uscita video. Lancia i comandi seguenti per ottenere una lista dei driver di uscita video disponibili: mplayer -vo help Dopo aver scelto il driver di uscita video corretto, aggiungilo al tuo file di configurazione. Aggiungi
vo = in ~/.mplayer/config e/o
vo_driver = in ~/.mplayer/gui.conf. |
Domanda: |
Ho dei problemi con |
Risposta: | Leggi le linee guida per segnalare i bug e mandaci un appropriato rapporto sul bug. Prova anche facendo esperimenti con l'opzione -fstype. |
Domanda: | Riproducendo un file AVI, l'audio perde la sincronizzazione. |
Risposta: | Prova le opzioni -bps o -nobps. Se non migliora, leggi le linee guida per segnalare i bug e carica il file sul sito FTP. |
Domanda: | Il mio computer riproduce gli AVI MS DivX a risoluzione ~ 640x300 e l'audio MP3 stereo è troppo lento. Quando uso l'opzione -nosound, tutto è OK (ma silenzioso). |
Risposta: | La tua macchina è troppo lenta o il driver della tua scheda video è bucato. Consulta la documentazione per scoprire se puoi migliorare le prestazioni. |
Domanda: | Come faccio ad usare dmix con MPlayer? |
Risposta: | Dopo aver configurato il tuo asoundrc devi usare -ao alsa:device=dmix. |
Domanda: | Riproducendo un video non sento alcun suono e ricevo messaggi di errore simili a questo: AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) audio_setup: Can't open audio device /dev/dsp: Device or resource busy couldn't open/init audio device -> NOSOUND Audio: no sound!!! Start playing...
|
Risposta: | Stai usando KDE o GNOME con il demone audio aRts o ESD? Prova a disabilitare il demone audio o usa le opzioni -ao arts o -ao esd per far sì che MPlayer usi Arts o ESD. Potresti anche star utilizzando ALSA senza l'emulazione OSS, prova a caricare i moduli del kernel ALSA per OSS o ad aggiungere -ao alsa alla tua riga comando per usare direttamente il driver di uscita audio ALSA. |
Domanda: | Avviando MPlayer in KDE ottengo solo una schermata nera e non succede nulla. Dopo circa un minuto inizia la riproduzione del video. |
Risposta: | Il demone audio di KDE, aRts, blocca il dispositivo audio. O attendi fino a quando il video parte oppure disabiliti il demone aRts nel centro di controllo. Se vuoi utilizzare l'audio aRts, specifica l'uscita audio attraverso il nostro driver aRts nativo(-ao arts). Se va in errore o non è compilato, prova con SDL (-ao sdl) e assicurati che la tuo SDL possa gestire l'audio aRts. Un'ulteriore possibilità è avviare MPlayer con artsdsp. |
Domanda: | Ho problemi di sincronia A/V. Alcuni miei AVI vengono riprodotti bene, ma alcuni vanno a velocià doppia! |
Risposta: |
Hai una scheda/driver audio bacati. Molto probabilmente sono fissati a 44100Hz,
e stai cercando di riprodurre un file che ha un audio a 22050Hz. Prova il
filtro audio |
Domanda: | Quando riproduco questo film ho desincronizzazione video-audio e/o MPlayer va in crash con il seguente messaggio: DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!
|
Risposta: | Questo può avere varie motivazioni.
|
Domanda: | Come faccio ad eliminare la desincronizzazione A/V durante la ricerca attraverso flussi RealMedia? |
Risposta: | -mc 0.1 può aiutare. |
8.6. Riproduzione DVD | |
| |
Domanda: | Circa la navigazione/menu del DVD? |
Risposta: | MPlayer non supporta i menu dei DVD a causa di severe limitazioni architetturali che impediscono la gestione corretta di fermi immagine e contenuto interattivo. Se vuoi avere degli attraenti menu, dovrai usare un altro riproduttore come xine, vlc o Ogle. Se vuoi vedere la navigazione del DVD in MPlayer dovrai implementarla tu stesso, ma fai attenzione che non è un'impresa da poco. |
Domanda: | Non riesco a guardare alcun DVD recente di Sony Pictures/BMG. |
Risposta: | Questo è normale; sei stato fregato e ti hanno venduto un disco intenzionalmente rovinato. L'unico modo di riprodurre questi DVD è aggirare i blocchi rovinati del disco usando DVDnav al posto di mpdvdkit2. Puoi farlo compilando MPlayer col supporto DVDnav a poi sostituendo dvdnav:// a dvd:// sulla riga comando. DVDnav è mutualmente esclusivo rispetto a mpdvdkit2, perciò assicurati di passare l'opzione --disable-mpdvdkit allo script configure. |
Domanda: | Riguardo i sottotitoli? MPlayer può mostrarli? |
Risposta: | Sì. Vedi il capitolo sui DVD. |
Domanda: | Come posso impostare il codice di zona del mio lettore DVD? Non ho Windows! |
Risposta: | Usa lo strumento regionset. |
Domanda: | Non riesco a riprodurre un DVD, MPlayer si blocca o emette degli errori tipo "Encrypted VOB file!". |
Risposta: | Il codice di decrittazione CSS non funziona con alcuni lettori DVD a meno che il codice di zona non sia correttamente impostato. Vedi la risposta alla domanda precedente. |
Domanda: | Devo essere (setuid) root per riuscire a riprodurre un DVD? |
Risposta: | No. Tuttavia devi avere i diritti adeguati per la voce del dispositivo del DVD (in /dev/). |
Domanda: | E' possibile riprodurre/codificare solo dei capitoli voluti? |
Risposta: | Sì, prova l'opzione -chapter. |
Domanda: | La mia riproduzione DVD è fiacca! |
Risposta: | Usa l'opzione -cache (descritta nella pagina man) e prova ad abilitare il DMA per il DVD con lo strumento hdparm (spiegato nel capitolo sui CD). |
Domanda: | Ho copiato un DVD usando vobcopy. Come lo riproduco/codifico dal mio disco fisso? |
Risposta: | Use the -dvd-device option to refer to the directory that contains the files: Usa l'opzione -dvd-device per indicare la directory che contiene i file:
mplayer dvd://1 -dvd-device
|
8.7. Richieste di funzionalità | |
Domanda: | Se MPlayer è in pausa e provo a fare una ricerca o premo un qualsiasi tasto, MPlayer esce dalla pausa. Mi piacerebbe poter fare la ricerca nel film in pausa. |
Risposta: | Questo è molto laborioso da implementare, senza perdere la sincronia A/V. Tutti i tentativi finora sono falliti, ma le patch sono benvenute. |
Domanda: | Mi piacerebbe fare la ricerca di +/- 1 fotogramma, invece che di 10 secondi. |
Risposta: | Puoi avanzare di un fotogramma premendo .. Se il film non era in pausa, dopo lo rimarrà (vedi la pagina man per i dettagli). I passi all'indietro difficilmente saranno implementati nel breve termine. |
8.8. Codifica | |
| |
Domanda: | How can I encode? Come posso codificare? |
Risposta: | Leggi la sezione su MEncoder. |
Domanda: | Come posso fare un dump completo di un DVD su un file? |
Risposta: | Una volta che hai scelto il tuo titolo, e ti sei assicurato che venga riprodotto correttamente con MPlayer, usa l'opzione -dumpstream. Per esempio:
mplayer dvd://5 -dumpstream -dumpfile
farà il dump del quinto titolo del DVD sul file
|
Domanda: | Come posso creare automaticamente dei (S)VCD? |
Risposta: | Prova lo script mencvcd.sh dalla sottodirectory TOOLS. Con quello puoi codificare DVD, o altri film, nel formato VCD o SVCD e anche scriverli direttamente su CD. |
Domanda: | Come posso creare dei (S)VCD? |
Risposta: | Versioni recenti di MEncoder possono generare direttamente dei file MPEG-2 che possono essere utilizzati come base per creare un VCD o un SVCD e sono probabilmente riproducibili al volo su tutte le piattaforme (per esempio, per condividere un video dalla camera digitale con i tuoi amici non avvezzi ai computer). Leggi per favore Usare MEncoder per creare file compatibili VCD/SVCD/DVD per ulteriori dettagli. |
Domanda: | Come posso unire due file video? |
Risposta: | I file MPEG possono venir concatenati in un singolo file con fortuna. Per il file AVI, devi usare il supporto di MEncoder per file multipli nel modo seguente: mencoder -ovc copy -oac copy -o Questo funzionerà solo se i file hanno la stessa risoluzione e usano lo stesso codec. Puoi anche provare avidemux e avimerge (parte del pacchetto di strumenti transcode). |
Domanda: | Come posso correggere file AVI con indice danneggiato o cattivo interleave? |
Risposta: | Per evitare di dover usare -idx per essere in grado di fare la ricerca in file AVI con indice danneggiato oppure -ni per riprodurre file AVI con un cattivo interleave, usa il comando mencoder per copiare i flussi video e audio su di un nuovo file AVI rigenerando l'indice e facendo l'interleave corretto dei dati. Di certo questo non può correggere possibili problemi nei flussi video e/o audio. |
Domanda: | Come posso correggere il rapporto di aspetto di un file AVI? |
Risposta: | Puoi fare ciò grazie all'opzione -force-avi-aspect di MEncoder, che sovrascrive l'aspetto memorizzato nell'opzione vprp dell'intestazione AVI OpenDML. Per esempio: mencoder
|
Domanda: | Come posso fare il backup e la codifica di un file VOB con un'inizio rovinato? |
Risposta: | Il problema principale di quando vuoi codificare un file VOB rovinato [3] è che sarà difficile ottenere una condifica con sincronia A/V perfetta. Una soluzione è semplicemente tagliar via la parte rovinata e codificare solo quella a posto. Per prima cosa devi trovare dove inizia la parte a posto: mplayer Poi puoi creare un nuovo file che contiene solo la parte a posto: dd if=
|
Domanda: | Non riesco a codificare i sottotitoli DVD dentro all'AVI! |
Risposta: | Devi specificare correttamente l'opzione -sid. |
Domanda: | Come posso codificare solo determinati capitoli di un DVD? |
Risposta: | Usa adeguatamente l'opzione -chapter, così: -chapter 5-7. |
Domanda: | Sto cercando di lavorare con file di 2GB+ su un filesystem VFAT. Funziona? |
Risposta: | No, VFAT non supporta file di 2GB+. |
Domanda: | Qual'è il significato dei numeri sulla linea di stato durante il processo di codifica? |
Risposta: | Esempio: Pos: 264.5s 6612f ( 2%) 7.12fps Trem: 576min 2856mb A-V:0.065 [2126:192]
|
Domanda: | Perché la frequenza consigliata emessa da MEncoder ha un valore negativo? |
Risposta: | Perché la frequenza (bitrate) in cui hai codificato l'audio è troppo grande per poter far stare un film su un CD. Controlla di avere libmp3lame installata correttamente. |
Domanda: | Non riesco a codificare un ASF in AVI/MPEG-4 (DivX) perché usa 1000 fps. |
Risposta: | Visto che ASF usa una frequenza dei fotogrammi variabile mentre AVI ne usa una fissa, devi impostarla a mano con l'opzione -ofps. |
Domanda: | Come posso mettere i sottotitoli nel file di destinazione? |
Risposta: | Passa semplicemente a MEncoder l'opzione -sub <filename> (o -sid, rispettivamente). |
Domanda: | Come faccio a codificare solo l'audio da un video musicale? |
Risposta: | Direttamente non è possibile, ma puoi provare questo (nota la & alla fine del comando di mplayer): mkfifo Questo ti permette di usare un qualsiasi codificatore, non solo LAME, nel comando suddetto sostituisci semplicemente lame con il tuo codificatore audio preferito. |
Domanda: | Perché riproduttori di terze parti non riescono a riprodurre filmati MPEG-4 codificati da MEncoder con versione superiore alla 1.0pre7? |
Risposta: |
mencoder
Fai attenzione che questo imposterà il FourCC a XVID invece che a DIVX.
Si consiglia così, dato che DIVX significa DivX4, che è un codec MPEG-4 molto
basilare, mentre DX50 e XVID indicano entrambi un MPEG-4 completo (ASP).
Inoltre, se imposti il FourCC a DIVX, dei brutti software o lettori da tavolo
potrebbero annsapare su alcune caratteristiche avanzate che
|
Domanda: | Come posso codificare un file solo audio? |
Risposta: | Usa aconvert.sh dalla sottodirectory TOOLS dei sorgenti di MPlayer. |
Domanda: | Come posso riprodurre sottotitoli impacchettati in un AVI? |
Risposta: | Usa avisubdump.c dalla sottodirectory questa documentazione sull'estrazione/demultiplex dei sottotitoli impacchettati in file AVI OpenDML. |
Domanda: | MPlayer non potrebbe... |
Risposta: | Dai un'occhiata alla sottodirectory TOOLS per una raccolta di vari script e hack. TOOLS/README contiene la documentazione. |
[3] In parte, alcune forme di protezione di copia usate nei DVD possono esser considerate contenuto rovinato.
Buone segnalazioni di errori sono un contributo molto valido per lo sviluppo di un qualsiasi progetto software. Ma proprio come nello scrivere un buon software, scrivere buoni rapporti sui problemi richiede dell'impegno. Per favore considera che molti sviluppatori sono estremamente impegnati e ricevono immensi volumi di email. Perciò, mentre da un lato il tuo feedback è cruciale per migliorare MPlayer e molto apprezzato, per favore cerca di capire che devi fornire tutte le informazioni che chiediamo e seguire fedelmente le istruzioni qui documentate.
Nel caso in cui tu abbia trovato un bug pericoloso e vuoi fare la cosa giusta e lasciarcelo correggere prima di sfruttarlo, saremmo felici di avere la tua segnalazione di sicurezza a [email protected]. Per favore aggiungi nell'oggetto [SECURITY] o [ADVISORY]. Assicurati che il rapporto contenga l'analisi completa e dettagliata del bug. L'invio di una correzione è decisamente apprezzato. Per piacere non ritardare la segnalazione per scrivere un exploit che la provi, puoi inviarlo eventualmente con un'altra mail.
Se pensi di avere le capacità necessarie, sei esortato a provare a correggere il bug per conto tuo. O forse lo hai già fatto? Leggi per favore questo breve documento per scoprire come far sì che il tuo codice venga incluso in MPlayer. Le persone sulla mailing list MPlayer-dev-eng ti aiuteranno se avrai dei dubbi.
Un problema che può capitare delle volte è 'prima funzionava, ora non funziona più...'. C'è una procedura passo passo per cercare di scoprire dove il problema si sia presentato. Non è destinata agli utenti casuali.
Per prima cosa, dovresti scaricare l'alberatura dei sorgenti di MPlayer da Subversion. Le istruzioni si possono trovare nella sezione su Subversion nella pagina dei download.
Troverai ora un immagine dell'archivio Subversion dentro alla directory mplayer/, dal lato client. Ora aggiorna questa immagine alla data che desideri:
cd mplayer/ svn update -r {"2004-08-23"}
Il formato della data è YYYY-MM-DD HH:MM:SS. Usando questo formato di data ti garantisce di essere in grado di estrarre le path in base alla data in cui sono state applicate, come nell'archivio MPlayer-cvslog.
Ora procedi come per un normale aggiornamento:
./configure make
Per chi sta leggendo e non è un programmatore, il modo più veloce di trovare il punto dove si è presentato il problema è effettuare una ricerca binaria — che significa cercare la data della 'rottura' dividendo ripetutamente a metà l'intervallo di ricerca. Per esempio, se il problema si è presentato nel 2003, inizia da metà anno, poi chiediti "C'è già il problema qui?". Se sì, retrocedi fino al primo di aprile; se no, vai al primo di ottobre, e così via.
Se hai tanto spazio libero sul disco rigido (una compilazione completa occupa attualmente 100 MB, e circa 300-350 MB se si abilitano i simboli di debug), copiati la versione funzionante più vecchia prima di aggiornarla; questo ti farà risparmiare tempo se devi retrocedere. (Solitamente bisogna eseguire 'make distclean' prima di ricompilare una versione precedente, perciò se non ne hai una salvata, dovrai ricompilare tutto quanto quando ritorni alla verisone attuale.)
Dopo aver trovato il giorno in cui è nato l'errore, continua a cercare usando l'archivio mplayer-cvslog (ordinato per data) e un più preciso aggiornamento su svn con ora, minuto e secondo:
svn update -r {"2004-08-23 15:17:25"}
Questo ti permetterà di trovare facilmente la patch esatta che lo ha generato.
Se trovi la patch che è stata la causa del problema, hai quasi vinto; fai un rapporto su MPlayer Bugzilla o iscriviti a MPlayer-users e postalo là. C'è anche la possibilità che l'autore intervenga consigliando una correzione. Puoi anche controllare attentamente la patch fino a quando la costringi a rivelarti dove stia il bug :-).
Per prima cosa per favore prova la versione Subversion di MPlayer più recente visto che in essa il tuo bug potrebbe già essere stato risolto. Lo sviluppo avanza velocemente, la maggior parte dei problemi nei rilasci ufficiali sono segnalati in pochi giorni o poche ore, perciò parti solo da Subversion per segnalare i bug. Ciò include i pacchetti compilati di MPlayer. Le istruzioni per Subversion si possono trovare in fondo a questa pagina o nel README. Se ciò non ti è stato di aiuto, per favore fai riferimento al resto della documentazione. Se il tuo problema è sconosciuto oppure non risolvibile con le nostre indicazioni, allora per favore segnala il bug.
Per piacere non inviare segnalazioni di bug ai singoli sviluppatori in privato. Questo è un lavoro di comunità e quindi ci possono essere varie persone interessate ad esso. Alcune volte altri utenti hanno già avuto i tuoi problemi e sanno come aggirare un problema anche quando è un bug nel codice di MPlayer.
Per favore descrivi il tuo problema il più dettagliatamente possibile. Fai un piccolo lavoro di ricerca per evidenziare le circostanze in cui succede il problema. Il bug si presenta solo in alcune occasioni? E' specifico per certi file o tipi di file? Capita solo con un codec e è indipendente dal codec? Puoi riprodurlo con tutti i driver di uscita? Più informazioni fornisci, maggiori sono le nostre possibilità di correggere il tuo problema. Per favore non dimenticare di includere anche le importanti informazioni richieste qui sotto, altrimenti non saremo in grado di diagnosticare il problema.
Una guida eccellente e ben scritta su come fare domande in forum pubblici è How To Ask Questions The Smart Way (Come porre domande in modo intelligente) di Eric S. Raymond. Ce n'è un'altra chiamata Come segnalare bug efficacemente di Simon Tatham. Se segui queste linee guida dovresti poter ottenere aiuto.. Ma per favore tieni conto che tutti noi seguiamo le mailing list volontariamente nel tempo libero. Siamo molto occupati e non possiamo garantire che otterrai una soluzione per il tuo problema o anche solo una risposta.
Iscriviti alla mailing list MPlayer-users: http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users e invia il tuo rapporto sul bug a mailto:[email protected] dove puoi discuterlo.
Se preferisci puoi invece usare il nostro bel nuovo Bugzilla.
La lingua di questa lista è l'inglese. Per favore segui gli standard delle Linee guida della Netiquette e non inviare email in HTML ad alcuna delle nostre mailing list. Verrai semplicemente ignorato bandito. Se non sai cosa sia una mail in HTML o perché sia il male, leggi questo buon documento. Ti spiega tutto in dettaglio e contiene le istruzioni per disabilitare l'HTML. Inoltre nota che non rispondiamo in CC (copia carbone) alle persone, quindi è una buona idea iscriversi per poter effettivamente ricevere la risposta.
Potrebbe servire che tu includa nel tuo rapporto sul bug registrazioni, configurazioni o file di esempio. Se alcune di queste cose sono abbastanza grandi, è meglio caricarle sul nostro server HTTP in un formato compresso (si preferiscono gzip e bzip2) e inserisci nel rapporto solo il nome e il percorso del file. Le nostre mailing list hanno un limite sulla dimensione di 80k, se hai qualcosa di più grande devi comprimerlo o caricarlo.
La tua distribuzione Linux o il sistema operativo e la versione, per es.:
Red Hat 7.1
Slackware 7.0 + pacchetti sviluppo dalla 7.1 ...
La versione del kernel:
uname -a
La versione di libc:
ls -l /lib/libc[.-]*
Le versioni di gcc e di ld:
gcc -v ld -v
La versione di binutils:
as --version
Se hai dei problemi con la modalità a schermo intero:
Il tipo di gestore di finestre e la versione
Se hai dei problemi con XVIDIX:
La profondità colore di X:
xdpyinfo | grep "depth of root"
Se i bug sono solo nella GUI:
La versione di GTK
La versione di GLIB
La situazione della GUI in cui il bug si presenta
Informazioni CPU (questo funziona solo in Linux):
cat /proc/cpuinfo
La marca della scheda video ed il modello, per es.:
ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM
Matrox G400 DH 32MB SGRAM
Il tipo di driver video & la versione, per es.:
X built-in driver
nVidia 0.9.623
Utah-GLX CVS 2001-02-17
DRI from X 4.0.3
Il tipo di scheda video & driver, per es.:
Creative SBLive! Gold with OSS driver from oss.creative.com
Creative SB16 with kernel OSS drivers
GUS PnP with ALSA OSS emulation
Se hai dei dubbi includi l'emissione di lspci -vv su sitemi Linux.
Se ricevi degli errori eseguendo ./configure, o se fallisce la rilevazione automatica di qualcosa, leggi config.log. Puoi travarci la soluzione, per esempio varie versioni della stessa libreria mescolate sul tuo sistema, o hai dimenticato di installare il pacchetto di scviluppo (quelli con il suffisso -dev). Se pensi ci sia un bug, includi config.log nel tuo rapporto sul bug stesso.
Per favore includi l'output di MPlayer al livello di verbosità 1, ma ricorda di non troncare tale output quando lo incolli nella tua mail. Agli sviluppatori servono tutti i messaggi per diagnosticare correttamente un problema. Puoi redirigere l'output in un file in questo modo:
mplayer -voptions
filename
> mplayer.log 2>&1
Se il tuo problema è specifico per uno o più file, allora per favore carica quello/i incriminato/i in: http://streams.videolan.org/upload/
Carica anche un piccolo file di testo con lo stesso nome di base del file, con un'estensione .txt. Descrivi il problema che hai con quel particolare file e includi il tuo indirizzo email così come ll'ouptut di MPlayer all livello 1 di verbosità. Solitamente i primi 1-5 MB di un file sono abbastanza per riprodurre il problema, ma per esserne certi ti chiediamo di fare:
dd if=tuo_file
of=piccolo_file
bs=1024k count=5
Questo copierà i primi 5 mega di 'tuo_file' e li scriverà su 'piccolo_file'. Dopo prova di nuovo con il file piccolo e se il problema si presenta ancora per noi è sufficiente. Per piacere non inviare mai questi file via mail! Caricali sull'FTP, e manda solo il percorso/nome del file nel server FTP. Se il file è raggiungibile in rete, allora è sufficiente inviare l'URL preciso.
Devi eseguire MPlayer dentro a gdb e mandarci l'output completo oppure se hai un core dump del crash puoi ricavare informazioni utili dal Core file. Qui spiega come:
Ricompila MPlayer con il codice di debug abilitato:
./configure --enable-debug=3 make
e poi esegui MPlayer da dentro gdb usando:
gdb ./mplayer
Ora sei dentro gdb, Scrivi:
run -vopzioni-per-mplayer
nomefile
e riproduci il tuo crash. Appena ci sei riuscito, gdb ti ripresenterà il prompt dei comandi, dove devi digitare
bt disass $pc-32,$pc+32 info all-registers
Se hai generato un rapporto adeguato sul bug seguendo i passi suddetti e sei certo che sia un bug in MPlayer e non un problema del compilatore o di un file danneggiato, se hai già letto la documentazione non sei riuscito a trovare una soluzione, i tuoi driver audio sono OK, allora potresti voler iscriverti alla lista MPlayer-advusers e inviare lì il tuo rapporto per ottenere una riposta migliore e più rapida.
Renditi per favore conto che se invii lì domande da niubbo o domande che hanno già una risposta nel manuale, sarai ignorato o alimenterai un flame, invece di ottenere una risposta adeguata. Non generare flame contro di noi e iscriviti a -advusers solo se sai davvero cosa stai facendo e senti di essere un utente avanzato di MPlayer o uno sviuppatore. Se rientri in questi ranghi non dovrebbe esserti difficile scoprire come iscriverti...
Skins are quite free-format (unlike the fixed-format skins of Winamp/XMMS, for example), so it is up to you to create something great.
Currently there are four windows to be decorated: the main window, the video window, the playbar, and the skin menu.
The main window is where you can control MPlayer. The playbar shows up in fullscreen mode when moving the mouse to the bottom of the screen. The background of the windows is an image. Various items can (and must) be placed in the window: buttons, potmeters (sliders) and labels. For every item, you must specify its position and size.
A button has three states (pressed, released, disabled), thus its image must be divided into three parts placed below each other. See the button item for details.
A potmeter (mainly used for the seek bar and volume/balance control) can have any number of phases by dividing its image into different parts. See hpotmeter for details.
Labels are a bit special: The characters needed to draw them are taken from an image file, and the characters in the image are described by a font description file. The latter is a plain text file which specifies the x,y position and size of each character in the image (the image file and its font description file form a font together). See dlabel and slabel for details.
All images can have full transparency as described in the section about image formats. If the X server doesn't support the XShape extension, the parts marked transparent will be black. If you'd like to use this feature, the width of the main window's background image must be dividable by 8.
The video window is where the video appears. It can display a specified image if there is no movie loaded (it is quite boring to have an empty window :-)) Note: transparency is not allowed here.
The skin menu is just a way to control MPlayer by means of menu entries (which can be activated by a middle mouse button click). Two images are required for the menu: one of them is the base image that shows the menu in its normal state, the other one is used to display the selected entries. When you pop up the menu, the first image is shown. If you move the mouse over the menu entries, the currently selected entry is copied from the second image over the menu entry below the mouse pointer (the second image is never shown as a whole).
A menu entry is defined by its position and size in the image (see the section about the skin menu for details).
There is an important thing not mentioned yet: For buttons, potmeters and menu entries to work, MPlayer must know what to do if they are clicked. This is done by messages (events). For these items you must define the messages to be generated when they are clicked.
Images must be PNGs—either truecolor (24 or 32 bpp) or 8 bpp with a RGBA color palette.
In the main window and in the playbar (see below) you can use images with `transparency': Regions filled with the color #FF00FF (magenta) are fully transparent when viewed by MPlayer. This means that you can even have shaped windows if your X server has the XShape extension.
You need the following files to build a skin:
The configuration file named skin tells MPlayer how to put different parts of the skin together and what to do if you click somewhere in the window.
The background image for the main window.
Images for the items in the main window (including one or more font description files needed to draw labels).
The image to be displayed in the video window (optional).
Two images for the skin menu (they are needed only if you want to create a menu).
With the exception of the skin configuration file, you can name the other files whatever you want (but note that font description files must have a .fnt extension).
As mentioned above, this is the skin configuration file. It is line oriented;
comments start with a ';
' character and continue until
the end of the line, or start with a '#
' character at the
beginning of the line (in that case only spaces and tabs are allowed before the
'#
').
The file is made up of sections. Each section describes the skin for an application and has the following form:
section = section name
.
.
.
end
Currently there is only one application, so you need only one section: its name is movieplayer.
Within this section each window is described by a block of the following form:
window = window name
.
.
.
end
where window name
can be one of these strings:
main - for the main window
video - for the video window
playbar - for the playbar
menu - for the skin menu
(The video, playbar and menu blocks are optional - you do not need to decorate the video window, have a playbar or create a menu. A default menu is always available by a right mouse button click.)
Within a window block, you can define each item for the window by a line in this form:
item = parameter
Where item
is a string that identifies the type of the GUI
item, parameter
is a numeric or textual value (or a list of
values separated by commas).
Putting the above together, the whole file looks something like this:
section = movieplayer window = main ; ... items for main window ... end window = video ; ... items for video window ... end window = menu ; ... items for menu ... end window = playbar ; ... items for playbar ... end end
The name of an image file must be given without leading directories - images
are searched for in the skins directory.
You may (but you need not) specify the extension of the file. If the file does
not exist, MPlayer tries to load the file
<filename>.<ext>, where png
and PNG
are tried for <ext>
(in this order). The first matching file will be used.
Finally some words about positioning. The main window and the video window can be
placed in the different corners of the screen by giving X
and Y
coordinates. 0
is top or left,
-1
is center and -2
is right or bottom, as
shown in this illustration:
(0, 0)----(-1, 0)----(-2, 0) | | | | | | (0,-1)----(-1,-1)----(-2,-1) | | | | | | (0,-2)----(-1,-2)----(-2,-2)
Here is an example to make this clear. Suppose that you have an image called main.png that you use for the main window:
base = main, -1, -1
MPlayer tries to load main, main.png, main.PNG files and centers it.
Below is the list of entries that can be used in the
'window = main
' ... 'end
',
and the 'window = playbar
' ... 'end
'
blocks.
decoration = enable|disable
Enable or disable window manager decoration of the main window. Default is disable.
This isn't available for the playbar.
base = image, X, Y
Lets you specify the background image to be used for the main window.
The window will appear at the given X,Y
position on
the screen. It will have the size of the image.
Transparent regions in the image (colored #FF00FF) appear black on X servers without the XShape extension. The image's width must be dividable by 8.
button = image, X, Y, width, height, message
Place a button of width
* height
size at
position X,Y
. The specified message
is
generated when the button is clicked. The image given by
image
must have three parts below each other (according to
the possible states of the button), like this:
+------------+ | pressed | +------------+ | released | +------------+ | disabled | +------------+
A special value of NULL
can be used if you want no image
.
hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
vpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
rpotmeter = button, bwidth, bheight, phases, numphases, x0, y0, x1, y1, default, X, Y, width, height, message
Place a horizontal (hpotmeter
), vertical (vpotmeter
) or rotary (rpotmeter
) potmeter of
width
* height
size at position
X,Y
. The image can be divided into different parts for the
different phases of the potmeter (for example, you can have a pot for volume
control that turns from green to red while its value changes from the minimum
to the maximum). All potentiometers can have a button that can be dragged
with a hpotmeter
and vpotmeter
. A
rpotmeter
can be spun even without a button. The
parameters are:
button
- the image to be used for the
button (must have three parts below each other, like in case of
button). A special value of
NULL
can be used if you want no image.
bwidth
, bheight
- size
of the button
phases
- the image to be used for the
different phases of the potentiometer. A special value of NULL
can be used if you want no such image. The image must be divided into
numphases
parts below each other (resp. side by side
for vpotmeter
) like this:
+------------+ | phase #1 | vpotmeter only: +------------+ | phase #2 | +------------+------------+ +------------+ +------------+ | phase #1 | phase #2 | ... | phase #n | ... +------------+------------+ +------------+ +------------+ | phase #n | +------------+
numphases
- number of phases stored in the
phases
image
x0
,
y0
and
x1
,
y1
- position of the 0% start
point and 100% stop point for the potentiometer (rpotmeter
only)
The first coordinate x0,y0
defines the 0% start point (on the edge of the potentiometer) in the individual
image of phase #1 and the second coordinate x1,y1
the 100% stop point in the individual image of phase #n - in other words, the
coordinates of the tip of the mark on the potentiometer in the two
single images (not in the image of all phases).
default
- default value for the potentiometer
(in the range 0
to 100
)
(If message is evSetVolume
, it's allowed to use a
plain hyphen-minus as value. This will cause the currently set volume to
remain unchanged.)
X
, Y
- position for the potentiometer
width
, height
- width and height
of the potentiometer
message
- the message to be generated when the
value of the potentiometer is changed
pimage = phases, numphases, default, X, Y, width, height, message
Place different phases of an image at position X,Y
.
This element goes nicely with potentiometers to visualize their state.
phases
can be NULL
, but this is quite
useless, since nothing will be displayed then.
For a description of the parameters see
hpotmeter. There is only a difference
concerning the message:
message
- the message to be reacted on, i.e. which
shall cause a change of pimage
.
font = fontfile
Defines a font. fontfile
is the name of a font description
file with a .fnt extension (do not specify the extension
here) and is used to refer to the font
(see dlabel
and slabel). Up to 25 fonts can be defined.
slabel = X, Y, fontfile, "text"
Place a static label at the position X,Y
.
text
is displayed using the font identified by
fontfile
. The text is just a raw string
($x
variables do not work) that must be enclosed between
double quotes (but the " character cannot be part of the text). The
label is displayed using the font identified by fontfile
.
dlabel = X, Y, width, align, fontfile, "text"
Place a dynamic label at the position X,Y
. The label is
called dynamic because its text is refreshed periodically. The maximum width
of the label is given by width
(its height is the height
of a character). If the text to be displayed is wider than that, it will be
scrolled,
otherwise it is aligned within the specified space by the value of the
align
parameter: 0
is for left,
1
is for center, 2
is for right.
The text to be displayed is given by text
: It must be
written between double quotes (but the " character cannot be part of the
text). The label is displayed using the font identified by
fontfile
. You can use the following variables in the text:
Variable | Meaning |
---|---|
$1 | elapsed time in hh:mm:ss format |
$2 | elapsed time in mmmm:ss format |
$3 | elapsed time in hh format (hours) |
$4 | elapsed time in mm format (minutes) |
$5 | elapsed time in ss format (seconds) |
$6 | running time in hh:mm:ss format |
$7 | running time in mmmm:ss format |
$8 | elapsed time in h:mm:ss format |
$v | volume in xxx.xx% format |
$V | volume in xxx.x format |
$U | volume in xxx format |
$b | balance in xxx.xx% format |
$B | balance in xxx.x format |
$D | balance in xxx format |
$$ | the $ character |
$a | a character according to the audio type (none: n, mono: m, stereo: t, surround: r) |
$t | track number (DVD, VCD, CD or playlist) |
$o | filename |
$O | filename (if no title name available) otherwise title |
$f | filename in lower case |
$F | filename in upper case |
$T | a character according to the stream type (file: f, CD: a, Video CD: v, DVD: d, URL: u, TV/DVB: b, CUE: c) |
$P | a character according to the playback state (stopped: s, playing: p, paused: e) |
$p | the p character (if a movie is playing) |
$s | the s character (if the movie is stopped) |
$e | the e character (if playback is paused) |
$g | the g character (if ReplayGain is active) |
$x | video width |
$y | video height |
$C | name of the codec used |
The $a, $T, $P, $p, $s
and $e
variables all return characters that should be displayed as special symbols
(for example, e is for the pause symbol that usually looks
something like ||). You should have a font for normal characters and
a different font for symbols. See the section about
symbols for more information.
The following entries can be used in the
'window = video
' . . . 'end
' block.
base = image, X, Y, width, height
The image to be displayed in the window. The window will be as large as the image.
width
and height
denote the size of the window; they are optional (if they are missing, the
window is the same size as the image).
A special value of NULL
can be used if you want no image
(in which case width
and height
are
mandatory).
background = R, G, B
Lets you set the background color. It is useful if the image is smaller than
the window. R
, G
and
B
specifies the red, green and blue component of the color
(each of them is a decimal number from 0 to 255).
As mentioned earlier, the menu is displayed using two images. Normal menu
entries are taken from the image specified by the base
item,
while the currently selected entry is taken from the image specified by the
selected
item. You must define the position and size of each
menu entry through the menu item.
The following entries can be used in the
'window = menu
'. . .'end
' block.
base = image
The image for normal menu entries.
selected = image
The image showing the menu with all entries selected.
menu = X, Y, width, height, message
Defines the X,Y
position and the size of a menu entry in
the image. message
is the message to be generated when the
mouse button is released over the entry.
As mentioned in the section about the parts of a skin, a font is defined by an image and a description file. You can place the characters anywhere in the image, but make sure that their position and size is given in the description file exactly.
The font description file (with .fnt extension) can have
comments like the skin configuration file starting with ';
'
(or '#
', but only at the beginning of the line). The file must have a line
in the form
image = image
Where
is the name of the
image file to be used for the font (you do not have to specify the extension).
image
"char" = X, Y, width, height
Here X
and Y
specify the position of the
char
character in the image (0,0
is the
upper left corner). width
and height
are
the dimensions of the character in pixels. The character char
shall be in UTF-8 encoding.
This example defines the A, B, C characters using font.png.
; Can be "font" instead of "font.png". image = font.png ; Three characters are enough for demonstration purposes :-) "A" = 0,0, 7,13 "B" = 7,0, 7,13 "C" = 14,0, 7,13
Some characters have special meanings when returned by some of the variables
used in dlabel. These characters are meant
to be shown as symbols so that things like a nice DVD logo can be displayed
instead of the character 'd
' for a DVD stream.
The following table lists all the characters that can be used to display symbols (and thus require a different font).
Character | Symbol |
---|---|
p | play |
s | stop |
e | pause |
n | no sound |
m | mono sound |
t | stereo sound |
r | surround sound |
g | replay gain |
space | no (known)stream |
f | stream is a file |
a | stream is a CD |
v | stream is a Video CD |
d | stream is a DVD |
u | stream is a URL |
b | stream is a TV/DVB broadcast |
c | stream is a cue sheet |
These are the messages that can be generated by buttons, potmeters and menu entries.
Empty message, it has no effect.
Playback control:
Start playing.
Stop playing.
Pause playing.
Jump to previous track in the playlist.
Jump to next track in the playlist.
Load a file (by opening a file selector dialog box, where you can choose a file).
Does the same as evLoad
, but it automatically starts
playing after the file is loaded.
Loads an audio file (with the file selector).
Loads a subtitle file (with the file selector).
Disables the currently used subtitle.
Open/close the playlist window.
Tries to open the disc in the given CD-ROM drive.
Tries to open the disc in the given CD-ROM drive.
Tries to open the disc in the given DVD-ROM drive.
Loads an CD/(S)VCD/DVD image or DVD copy (with the file selector) and plays it as if it were a real disc.
Displays the URL dialog window.
Tries to start TV/DVB broadcast.
The opposite of evPauseSwitchToPlay
. This message starts
playing and the image for the evPauseSwitchToPlay
button
is displayed (to indicate that the button can be pressed to pause playing).
Forms a switch together with evPlaySwitchToPause
. They can
be used to have a common play/pause button. Both messages should be assigned
to buttons displayed at the very same position in the window. This message
pauses playing and the image for the evPlaySwitchToPause
button is displayed (to indicate that the button can be pressed to continue
playing).
Seeking:
Seek backward 10 seconds.
Seek backward 1 minute.
Seek backward 10 minutes.
Seek forward 10 seconds.
Seek forward 1 minute.
Seek forward 10 minutes.
Seek to position (can be used by a potmeter; the relative value (0-100%) of the potmeter is used).
Video control:
Set the video window to half size.
Set the video window to double size.
Switch fullscreen mode on/off.
Set the video window to its normal size.
Set the video window to its original aspect ratio.
Set the video to its original orientation.
Audio control:
Decrease volume.
Increase volume.
Set volume (can be used by a potmeter; the relative value (0-100%) of the potmeter is used).
Mute/unmute the sound.
Set balance (can be used by a potmeter; the relative value (0-100%) of the potmeter is used).
Turn the equalizer on/off.
Miscellaneous:
Open the about window.
Open the preferences window.
Open the skin browser window.
Open the (default) menu.
Iconify the window.
Quit the program.
So you have read up on creating skins for the MPlayer GUI, done your best with the Gimp and wish to submit your skin to us? Read on for some guidelines to avoid common mistakes and produce a high quality skin.
We want skins that we add to our repository to conform to certain quality standards. There are also a number of things that you can do to make our lives easier.
As an example you can look at the Blue
skin,
it satisfies all the criteria listed below since version 1.5.
Each skin should come with a README file that contains information about you, the author, copyright and license notices and anything else you wish to add. If you wish to have a changelog, this file is a good place.
There must be a file VERSION with nothing more than the version number of the skin on a single line (e.g. 1.0).
Horizontal and vertical controls (sliders like volume or position) should have the center of the knob properly centered on the middle of the slider. It should be possible to move the knob to both ends of the slider, but not past it.
Skin elements shall have the right sizes declared in the skin file. If this is not the case you can click outside of e.g. a button and still trigger it or click inside its area and not trigger it.
The skin file should be prettyprinted and not contain tabs. Prettyprinted means that the numbers should line up neatly in columns and definitions should be indented appropriately.