Codec - MPlayer - Movie Player per Linux

## 2.2. Codec supportati

### 2.2.1. Codec video

Vedi la tabella dello stato dei codec per la lista completa, generata giornalmente. Parecchi codec sono disponibili dalla nostra homepage. Scaricali dalla nostra pagina dei codec.

I più importanti tra tutti:

- MPEG1 (VCD) e MPEG2 (DVD)
- Decoder nativi per DivX ;-), OpenDivX, DivX4, DivX5, M$ MPEG4 v1, v2 e altre varianti MPEG4
- Decoder nativo per Windows Media Video 7/8 (WMV1/WMV2), e decoder con DLL Win32 per Windows Media Video 9 (WMV3), entrambi usati nei file file .wmv
- Decoder nativo Sorenson 1 (SVQ1)
- Decoder Win32/QT Sorenson 3 (SVQ3)
- Decoder 3ivx v1, v2
- Cinepak e Intel Indeo (3.1,3.2,4.1,5.0)
- MJPEG, AVID, VCR2, ASV2 e altri formati hardware
- VIVO 1.0, 2.0, I263 e altre varianti h263(+)
- FLI//FLC
- RealVideo 1.0 da libavcodec, e RealVideo 2.0, 3.0 e 4.0 usando le librerie di RealPlayer
- Decoder nativo per HuffYUV
- Vari vecchi semplici formati tipo RLE

Se hai un codec Win32 non presente qui, e non ancora supportato, per favore leggi come importare i codec aiutaci ad aggiungerne il supporto!

#### 2.2.1.1. DivX4/DivX5

Questa sezione contiene informazioni sul codec DivX4 di Project Mayo. La loro prima versione alpha disponibile era la OpenDivX 4.0 alpha 47 e 48. Il supporto per questa era incluso in MPlayer, e compilato di default. Usavamo il suo codice di postprocessing per migliorare opzionalmente la qualità visiva dei filmati MPEG1/2. Ora usiamo il nostro.

La nuova generazione di questo codec è chiamata DivX4Linux e può anche decodificare i filmati fatti con l'infame codec DivX! Inoltre è molto più veloce della DLL DivX nativa di Win32, ma più lento di libavcodec. Quindi l'utilizzo di questo codec per la decodifica è SCORAGGIATO. Comunque è utile per l'encoding. Uno svantaggio di questo codec è che è attualmente non è disponibile con licenza Open Source.

DivX4Linux lavora in due modalità:

`-vc odivx`
  Usa il codec alla maniera di OpenDivX. in questo caso produce immagini YV12 nel suo proprio buffer, e MPlayer fa la conversione dello spazio dei colori tramite libvo. (VELOCE, RACCOMANDATO!)
`-vc divx4`
  Usa la conversione dello spazio dei colori del codec. in questa modalità, puoi usare anche YUY2/UYVY (LENTO).

Il metodo `-vc odivx` è solitamente più veloce, dovuto al fatto che trasferisce i dati dell'immagine in formato YV12 (planar YUV 4:2:0), richiedendo così molta meno larghezza di banda sul bus. Per le modalità YUV (YUY2, UYVY) usa il metodo `-vc divx4`. Per le modalità RGB la velocità è la stessa, al massimo differisce a seconda della profondità di colore attuale.

NOTA: se il tuo driver -vo supporta il direct rendering, allora `-vc divx4` può essere una soluzione più veloce, o perfino la più veloce.

Il codec binario DivX4/5 può essere scaricato da avifile o divx.com. Scompattalo, ed esegui `./install.sh` da root e non dimenticare di aggiungere `/usr/local/lib` in `/etc/ld.so.conf` e di eseguire `ldconfig`.

Scarica la versione CVS della vecchia libreria OpenDivx code in questo modo:

1. `cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login`
2. `cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore`
3. Questa libreria è divisa in due parti, endore e decore, che devono essere compilate separatamente. Per la libreria decore, esegui

        cd divxcore/decore/build/linux
        make
        cp libdivxdecore.so /usr/local/lib
        ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
        cp ../../src/decore.h /usr/local/include

4. Per la libreria encore non c'è un Makefile per linux, ed il codice ottimizzato MMX funziona solo sotto Windows. Può essere comunque compilata usando questo Makefile.

         cd ../../../encore/build
         mkdir linux
         cd linux
         cp path/Makefile .
         make
        cp libdivxencore.so /usr/local/lib
        ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0
        cp ../../src/encore.h /usr/local/include

MPlayer riconosce automaticamente se DivX4/DivX5 è (propriamente) installato, basta compilare come sempre. Se non lo trova, non lo hai installato o configurato correttamente.

#### 2.2.1.2. DivX/libavcodec di ffmpeg

ffmpeg contiene codec opensource, in grado di decodificare i formati video H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV, ed il formato audio WMA (Windows Media Audio). Può anche codificare alcuni di questi formati, e la decodifica è molto più veloce di quella dei codec Win32 e della libreria originale DivX.com DivX4/5!

Se usi una release di MPlayer allora hai libavcodec proprio nel pacchetto, basta compilare come al solito.Se usi MPlayer dal CVS devi prendere libavcodec direttamente dall'albero CVS di FFmpeg dato che la versione 0.4.5 di Ffmpeg non funzionerà con MPlayer. Fai così:

1. `cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login`
2. `cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg`
3. Sposta la directory dei sorgenti di libavcodec nell'albero di MPlayer, quindi risulterà così:

   `main/libavcodec`

   Fare un link simbolico non basta, devi copiarlo/spostarlo!!!
4. Compila. `configure` controlla che non ci siano problemi prima di compilare.

Con ffmpeg e la mia Matrox G400, riesco a vedere filmati DivX anche alla più alta risoluzione sul mio K6/2 500, senza frame scartati.

#### 2.2.1.3. I codec di XAnim

#### PREMESSA:

Ti avvertiamo che i codec binari di XAnim sono impacchettati con un pezzo di testo che afferma di essere una legale licenza software che, tra altre restrizioni, proibisce all'utente di usare i codec in congiunzione con qualunque programma diverso da XAnim. Comunque l'autore di XAnim non ha ancora condotto alcuna azione legale contro chicchessia per questioni relarive ai codec.

MPlayer può usare i codec di XAnim per la decodifica. Segui le istruzioni per abilitarli:

- Scarica i codec che vorresti usare dal sito di XAnim. Il codec 3ivx non è lì, ma sul sito 3ivx.
- Usa l'opzione `--with-xanimlibdir` per dire a configure dove può trovare i codec xanim. Di default, li cerca in `/usr/local/lib/xanim/mods, /usr/lib/xanim/mods e /usr/lib/xanim`. Oppure puoi impostare la variabile d'ambiente XANIM_MOD_DIR alla directory dei codec XAnim.
- Rinomina/crea un symlink ai file tagliando la parte relativa all'architettura, quindi avranno dei nomi come questi : `vid_cvid.xa, vid_h263.xa, vid_iv50.xa`

La famiglia di codec XAnim ha come nome `xanim`, quindi puoi usare l'opzione `-vfm xanim` per dire a MPlayer di usarli se possibile.

I codec testati includono: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, h263.

#### 2.2.1.4. Video VIVO

MPlayer può leggere i video Vivo (1.0 e 2.0). Il codec più adatto per i file 1.0 è il decoder H263 di FFmpeg, puoi usarlo con l'opzione `-vc ffh263` (default). Per i file 2.0, usa la DLL Win32 con l'opzione `-vc vivo`. Se non fornisci nessuna opzione, MPlayer sceglie automaticamente il codec migliore.

#### 2.2.1.5. Video MPEG 1/2

MPEG1 e MPEG2 sono decodificati con la libreria nativa libmpeg2 multipiattaforma, il suo codice sorgente è incluso in MPlayer. Gestiamo i file video MPEG1/2 difettosi controllando quale firma ritorna libmpeg2, e quando da sig11 (segmentation fault), rapidamente reinizializziamo il codec, e continuiamo esattamente da dove avviene l'errore. Questo metodo non implica nessuna diminuzione di velocità misurabile.

#### 2.2.1.6. MS Video1

Questo è un pessimo codec molto vecchio di Microsoft. In passato era decodificato con il codec Win32 `msvidc32.dll`, ora abbiamo la nostra implementazione open-source (di Mike Melanson).

#### 2.2.1.7. Cinepak CVID

MPlayer usa di default il suo decoder opensource, multi-piattaforma per Cinepak (scritto da Dr. Tim Ferguson). Supporta output YUV, così permette il ridimensionamento hardware se lo consente il driver di output video.

#### 2.2.1.8. RealVideo

MPlayer supporta tutte le versioni di RealVideo:

- RealVideo 1.0 (fourcc RV10) - codifica e decodifica supportata da libavcodec
- RealVideo 2.0, 3.0, 4.0 (fourcc RV20, RV30, RV40) - decodifica supportata dalle librerie RealPlayer

Si raccomanda di scaricare e installare RealPlayer8 o RealONE, perchè MPlayer può usare le loro librerie per decodificare file con video RealVideo 2.0 o RealVideo 3.0. Lo script di configurazione di MPlayer dovrebbe trovare automaticamente le librerie RealPlayer in tutte le locazioni standard. Se non ci riesce, devi dire a configure dove cercare con l'opzione `--with-reallibdir`.

E' anche possibile prendere soltanto le librerie RealPlayer da qualche parte e metterle in una directory appropriata, come `/usr/lib/real` o `$LIBDIR/real`.

NOTA: le librerie RealPlayer attualmente funzionano solo con Linux, FreeBSD, NetBSD e Cygwin su piattaforme x86, Alpha e PowerPC (testate con Linux/Alpha e Linux/PowerPC).

#### 2.2.1.9. XviD

XViD è una biforcazione dello sviluppo del codec OpenDivX. Il progetto è iniziato quando ProjectMayo ha cambiato OpenDivX in un DivX4 (ora DivX5) a sorgenti chiusi, e le persone che stavano lavorando su OpenDivX si sono arrabbiate, e hanno sviluppato XviD. Quindi entrambi i progetti hanno la stessa origine.

#### VANTAGGI:

- opensource
- la sua API è compatibile con DivX4 quindi è facile aggiungerne il supporto
- supporto codifica in 2 passaggi
- buona qualità di codifica, velocità maggiore del DivX4 (puoi ottimizzalo per la tua box durante la compilazione)

#### SVANTAGGI:

- attualmente non decodifica propriamente tutti i file DivX/DivX4 (nessun problema, libavcodec può leggerli)
- devi scegliere tra il supporto DivX4 o XviD quando compili
- in sviluppo

#### INSTALLAZIONE DI XVID DA CVS

XviD è attualmente disponibile solo in CVS. Ecco le istruzioni per scaricarlo e compilarlo (sonon necessari almeno autoconf 2.50, automake e libtool):

1. `cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login`
2. `cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore`
3. `cd xvidcore/build/generic`
4. `./bootstrap.sh`
5. `./configure`
   Potrebbe essere necessario aggiungere alcune opzioni (leggi i messaggi di `./configure --help`).
6. `make && make install`
7. Se hai specificato `--enable-divxcompat`, copia il file header `divx4.h` da `xvidcore/src/` a `/usr/local/include/`.
8. Ricompila MPlayer con `--with-xvidcore=/path/to/libxvidcore.a`

#### 2.2.1.10. Sorenson

Sorenson è un codec video sviluppato da Sorenson Media e concesso in licenza a Apple che lo distribuisce col suo QuickTime Player. Al momento mplayer è in grado di decodificare tutte le versioni di video Sorenson, coi seguenti decoder:

- Sorenson 1 (fourcc SVQ1) - decodifica supportata da codecs nativi
  Al momento ci sono due (quasi uguali) decoder per SVQ1: uno è integrato in MPlayer, l'altro è in libavcodec. Puoi richiamarli rispettivamente con le opzioni `-vc svq1` e `-vc ffsvq1`. Alcuni file possono andare con uno e non con l'altro, quindo provateli entrambi. Il decoder è stato scritto (reverse engineered) dagli autori di xine.
- Sorenson 3 (fourcc SVQ3) - decodifica supportata dalle librerie QuickTime Win32

#### COMPILARE MPLAYER CON IL SUPPORTO ALLE LIBRERIE QUICKTIME

NOTA: attualmente sono supportate solo le piattaforme Intel 32bit.

1. scarica la versione CVS di MPlayer
2. compila MPlayer con:
   `$ ./configure --enable-qtx-codecs`
3. scarica il pacchetto delle DLL QuickTime da http://www.mplayerhq.hu/MPlayer/releases/codecs/
4. estrai il pacchetto delle DLL QuickTime nella tua directory dei codec Win32 (default: `/usr/lib/codecs`)

### 2.2.2. Codec audio

I più importanti tra tutti :

- MPEG layer 2 (MP2), e layer 3 (MP3) (codice nativo, con ottimizzazioni MMX/SSE/3DNow!)
- MPEG layer 1 (codice nativo, con libavcodec)
- Windows Media Audio v1, v2 (codice nativo, con libavcodec)
- Windows Media Audio 9 (WMAv3) (usando DLL DMO)
- AC3 Dolby (codice nativo, con ottimizzazioni MMX/SSE/3DNow!)
- Ogg Vorbis (libreria nativa)
- RealAudio: DNET (AC3 a basso bitrate), Cook, Sipro e ATRAC3
- QuickTime: code audio Qualcomm e QDesign
- VIVO (g723, Vivo Siren)
- Voxware (usando la DLL DirectShow)
- alaw e ulaw, vari gsm, formati adpcm e pcm e altri semplici vecchi formati audio
- AAC

#### 2.2.2.1. Decodifica software AC3

Questo è il codec di default usato per i file con audio AC3.

Il decoder AC3 può creare mix audio in output per 2, 4, o 6 altoparlanti. Quando configurato per 6, questo decoder fornisce output separato per tutti i canali AC3 al driver sonoro, consentendo il pieno "suono surround" senza il decoder AC3 esterno necessario per il codec hwac3.

Usa l'opzione `-channels` per selezionare il numero di canali output. Usa `-channels 2` per lo stereo. Per 4 canali (Sinistro Avanti, Destro Avanti, Surround Sinistro e Surround Destro), usa `-channels 4`. In questo caso, qualsiasi canale centrale sarà mixato ugualmente ai canali frontali. In ultimo, "-channels 6" darà in output tutti i canali AC3 come sono stati codificati - nell'ordine Sinistro, Destro, Surround Sinistro, Surround Destro, Centro e LFE.

Il numero di canali output di default è 2.

Per usare più di 2 canali, devi usare OSS, ed avere un driver della scheda sonora che supporta il numero appropriato di canali output tramite l' ioctl SNDCTL_DSP_CHANNELS. Per esempio, una versione del driver emu10k1 (usato con le schede SB Live) più recente dell'agosto 2001 dovrebbe andare bene (pare che anche il più nuovo CVS di ALSA lo supporti).

#### 2.2.2.2. Decodifica hardware AC3

Devi avere una scheda sonora capace di decodificare AC3, con l'uscita digitale (SP/DIF). Il driver della scheda deve supportare il formato AFMT_AC3 (come fa la C-Media). Connetti il tuo decoder AC3 all'uscita SP/DIF, e usa l'opzione '-ac hwac3'. Può funzionare oppure no (sperimentale). Funzionerà solo con schede C-Media, schede SB Live! + driver ALSA (ma non OSS) e schede di decodifica MPEG DXR3/Hollywood+.

#### 2.2.2.3. Supporto libmad

libmad è una libreria di decodifica audio MPEG multi-piattaforma. Non gestisce bene i file difettosi, e a volte ha dei problemi con la ricerca.

Per abilitare il supporto, compila con l'opzione di configure `--enable-mad`.

#### 2.2.2.4. Audio VIVO

Il codec audio usato nei file VIVO dipende dal fatto che si tratti di un file VIVO/1.0 o VIVO/2.0. I file VIVO/1.0 hanno audio g.723, e i file VIVO/2.0 hanno Vivo Siren. Entrambi sono supportati.

#### 2.2.2.5. RealAudio

MPlayer supporta quasi tutte le versioni di RealAudio:

- RealAudio DNET - decodifica supportata da liba52
- RealAudio Cook/Sipro/ATRAC3 - decodifica supportata dalle librerie RealPlayer

Per sapere come installare le librerie RealPlayer, vedi la sezione RealVideo.

#### 2.2.2.6 Codec QDesign

I flussi audio QDesign (fourcc: QDMC, QDM2) si trovano nei file MOV/QT. Entrambe le versioni di questo codec possono essere decodificate con le librerie QuickTime. Per istruzioni sull'installazione vedi la sezione codec video Sorenson.

#### 2.2.2.7 Codec Qualcomm

I flussi audio Qualcomm (fourcc: Qclp) si trovano nei file MOV/QT. Si decodificano con le librerie QuickTime. Per istruzioni sull'installazione vedi la sezione codec video Sorenson.

#### 2.2.2.8 Codec AAC

AAC (Advanced Audio Coding) è un codec audio talvolta utilizzato nei file MOV e MP4. Un decoder open source chimato FAAD è disponibile presso AudioCoding.com. Puoi scaricare il codec di seconda generazione FAAD2 dalla loro pagina di download. Sfortunatamente FAAD2 1.1 non si compila sotto Linux, quindi devi usare la versione CVS. Ecco come:

1. cvs -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac login
2. cvs -z3 -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac co faad2
3. cd faad2/
4. chmod +x bootstrap
5. ./bootstrap
6. ./configure
7. make
8. make install

I binari non sono disponibili su audiocoding.com, ma puoi prelevare con apt-get i pacchetti Debian dalla homepage di Christian Marillat e gli RPM per Mandrake RPMs da P.L.F.

### 2.2.3. Come importare i codec Win32

#### 2.2.3.1. Codec VFW

VfW (Video for Windows) è la vecchia API video per Windows. I suoi codec hanno l'estensione .DLL o (raramente) .DRV. Se MPlayer fallisce nel leggere il tuo AVI con questo tipo di messaggio:

`UNKNOWN video codec: HFYU (0x55594648)`

Significa che il tuo AVI è codificato con un codec che ha HFYU fourcc (HFYU = codec HuffYUV, DIV3 = DivX Low Motion, ecc...). Ora che lo sappiamo, dobbiamo scoprire quale DLL carica Windows per leggere questo file. Nel nostro caso, il system.ini contiene questo (insieme a molti altri):

`VIDC.HFYU=huffyuv.dll`

Quindi abbiamo bisogno del file huffyuv.dll. Nota che i codec audio sono specificati dal prefisso MSACM:

`msacm.l3acm=L3codeca.acm`

Questo è il codec MP3. Quindi, ora abbiamo tutte le informazioni (fourcc, file del codec, AVI di esempio), manda la tua richiesta di supporto codec via mail, e carica questi file all' FTP:

`ftp://ftp.mplayerhq.hu/MPlayer/incoming/[nomecodec]/`

Nota: Su Windows NT/2000/XP cerca questa informazione nel registro, es. cerca "VIDC.HFYU". Per saper come fare guarda il vecchio metodo DirectShow qui sotto.

2.2.3.2. Codec DirectShow

DirectShow è la nuova API video, che è anche peggiore della precedente. Le cose sono più difficili con DirectShow, infatti

- system.ini non contiene le informazioni necessarie, ma sono scritte nel registro :(
- abbiamo bisogno del GUID del codec.

Nuovo metodo: Usare Microsoft GraphEdit (veloce)

1. Prendi GraphEdit da DirecX SDK o Doom9
2. Esegui `graphedit.exe`
3. Dal menu seleziona Graph -> Insert Filters
4. Espandi `DirectShow Filters`
5. Seleziona ed espandi il nome del codec desiderato
6. Alla voce `DisplayName` trova il testo tra parentesi graffe dopo la barra e scrivilo da parte (cinque blocchi di cifre, il GUID)
7. Il binario del codec è il file specificato dalla voce `Filename`

Nota: Se non esiste la voce `Filename` e `DisplayName` contiene qualcosa come `device:dmo`, allora si tratta di un Codec DMO.

Vecchio metodo: Fai un bel respiro e comincia a cercare nel registro...

1. Esegui 'regedit'
2. premi ctrl-f, disabilita i primi due checkbox, e abilita il terzo. Scrivi il fourcc del codec. (per es.: TM20)
3. dovresti vedere un campo che contiene il path e il nome del file (per es. : C:\WINDOWS\SYSTEM\TM20DEC.AX)
4. ora che abbiamo il file, serve il GUID. Prova a cercare ancora, ma ora cercheremo il nome del codec, non il fourcc. Si può conoscere il nome quando il Media Player sta leggendo il file, guardando in File/Properties/Advanced. Se no, peccato ;) Prova ad indovinarlo. (per es. cerca : TrueMotion)
5. se trovato (nel registro), dovrebbe esserci un campo FriendlyName, e un campo CLSID. Scriviti quei 16 byte di CLSID, questo è il GUID che ci serve.

NOTA: se la ricerca fallisce, prova ad abilitare tutte le checkbox.. potrai avere falsi risultati, ma forse avrai quello giusto, anche...

Quindi, ora abbiamo tutte le informazioni (fourcc, GUID, file del codec, AVI di esempio), manda la tua richiesta di supporto codec via mail, e carica questi file all' FTP:

`ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/`