2.2 Codecuri suportate

2.2.1 Codecuri video

Consultă tabelul cu starea codecurilor pentru lista completă, generată zilnic. Câteva din ele sunt disponibile pentru descărcare de pe pagina noastră. Se găsesc pe pagina codecurilor.

Cele mai importante dintre ele sunt:

Dacă ai un codec Win32 absent din lista de faţă şi nesuportat încă, citeşte, te rog CUM SĂ imporţi codecuri şi ajută-ne să-l implementăm.

2.2.1.1 DivX4/DivX5

Această secţiune conţine informaţii despre codecurile DivX4 şi DivX5 de la Project Mayo. Prima lor versiune alfa disponibilă a fost OpenDivX 4.0 alfa 47 şi 48. Suportul pentru acesta a fost inclus în MPlayer, în trecut, devenind standard. De asemenea, am folosit codul lor de postprocesare pentru a îmbunătăţi, opţional, calitatea vizuală a filmelor MPEG1/2. În prezent folosim propriul nostru cod, pentru toate tipurile de fişiere.

Noua generaţie a acestui codec este numită DivX4 şi poate decoda filme făcute cu codecul de proastă reputaţie DivX! În plus, e mult mai rapid decât Win32 DivX DLL nativ dar mai lent decât libavcodec. De acum încolo folosirea lui ca decodor e DESCURAJATĂ. Oricum, e util pentru encodare. Un dezavantaj al acestui codec este că nu e disponibil sub o licenţă Open Source.

DivX4Linux funcţionează în două moduri:

-vc odivx
Foloseşte codecul în stilul OpenDivX. În acest caz, produce imagini YV12 în propriul buffer, iar MPlayer face conversia spaţiului de culoare folosind libvo. (Rapid, recomandat!)
-vc divx4
Foloseşte conversia spaţiului de culoare a codecului. În acest mod poţi folosi, de asemenea,YUY2/UYVY. (Lent)

Metoda -vc odivx este, de obicei, mai rapidă datorită faptului că se transferă imaginile în formatul YV12 (planar YUV 4:2:0), folsind astfel mult mai puţin lăţimea de bandă pe magistrală. Pentru modurile comprimate YUV (YUY2, UYVY) foloseşte metoda -vc divx4. Pentru modurile RGB viteza este aceeaşi, diferind cu adâncimea de culoare curentă.

Notă: Dacă driverul tău -vo suportă direct rendering, atunci -vc divx4 poate fi mai rapid sau chiar varianta cea mai rapidă.

Biblioteca binară a codecului Divx4/5 poate fi descărcată de la avifile sau divx.com. Dezarhivează, rulează ./install.sh ca utilizator root şi nu uita să adaugi /usr/local/lib în /etc/ld.so.conf şi apoi să rulezi ldconfig.

Obţine versiunea CVS a bibliotecii nucleu a vechiului OpenDivx astfel:

  1. cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login
  2. cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore
  3. Această bibliotecă nucleu e împărţită într-o bibliotecă decore şi o bibliotecă encore ce au nevoie să fie compilate separat. Pentru biblioteca decore tastează:
        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. Dar vai, pentru biblioteca encore nu există nici un Linux Makefile disponibil, şi codul MMX optimizat rulează doar pe Windows. Cu toate acestea, poţi totuşi compila, folosind acest 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 autodetectează DivX4/DivX5 dacă e corect instalat, doar compilează ca de obicei. Dacă nu-l detectează,nu l-ai instalat sau configurat corect.

2.2.1.2 FFmpeg/libavcodec

FFmpeg conţine un pachet open source, care e capabil să decodeze fluxuri encodate cu codecuri video H263/MJPEG/LJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV/SVQ1/SVQ3/ MPEG1/MPEG2/VCR1/VCR2/ASV1/ASV2/CLJR, sau codecuri audio WMA (Windows Media Audio). Nu doar că pot fi encodate cu el, dar oferă şi o viteză mai mare decât codecurile Win32 sau biblioteca DivX.com DivX4/5 !

Conţine o mulţime de codecuri interesante, cele mai importante fiind variantele MPEG4: DivX3, DivX4, DivX5, Windows Media Video 7/8 (WMV1/WMV2). De asemenea, unul interesant decodorul WMA.

Cel mai recent codec meritând apreciere este Sorenson 3 (SVQ3). Acesta e prima implementare complet open source a acestui codec. E chiar mai rapid decât originalul. Asigură-te că-l foloseşti în locul codecului binar!

Dacă foloseşti o versiune release a MPlayer ai libavcodec chiar în pachet, doar configurează ca de obicei. Dacă foloseşti o versiune MPlayer din CVS trebuie să extragi libavcodec din arborele FFmpeg CVS pentru ca FFmpeg release nu funcţionează cu MPlayer. Pentru a-l obţine tastează:

  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. Mută directorul libavcodec din sursa FFmpeg către rădăcina arborelui MPlayer CVS. Ar trebui să arate cam aşa:

        main/libavcodec

    Un link simbolic nu e de ajuns, trebuie să-l copiezi sau să-l muţi!
  4. Compilează. Configure ar trebui să detecteze problemele înainte de compilare.

Notă: MPlayer din CVS conţine un subdirector libavcodec, dar nu conţine sursa libavcodec! Trebuie să urmezi paşi amintiţi anterior pentru a obţine sursa acestei biblioteci.

Cu FFmpeg şi Matrox G400, pot vedea filme DivX la cea mai mare rezoluţie fără pierderi de cadre pe un K6/2 500.

2.2.1.3 Codecurile XAnim

PREFAŢĂ

Ia cunoştinţă cu faptul că pachetul de codecuri XAnim conţine un text pretinzând a fi o licentă software de constrângere legală care, printre alte restricţii, interzice folosirea acestui codec cu alte programe decat XAnim. Oricum, autorul XAnim ar trebui să aducă acuzatii împotriva tuturor pentru codecuri înrudite.

INSTALARE ŞI FOLOSIRE

MPlayer e capabil să întrebuinţeze codecurile XAnim pentru decodare. Urmează instrucţiunile pentru a permite aceasta:

  1. Descarcă codecurile pe care doreşti să le foloseşti de pe site-ul XAnim. Codecul 3ivx nu e acolo ci pe site-ul 3ivx.
  2. SAU descarcă pachetul de codecuri de pe pagina noastră de codecuri.
  3. Foloseşte opţiunea --with-xanimlibdir pentru a arăta lui configure unde să găsească codecurile XAnim. În modul standard, le caută la /usr/local/lib/codecs, /usr/local/lib/xanim/mods, /usr/lib/xanim/mods şi /usr/lib/xanim. În mode alternativ poţi configura variabila de mediu XANIM_MOD_DIR către directorul cu codecurile XAnim.
  4. Redenumeşte/symlink fişierele, eliminând sufixele legate de arhitectură, astfel încât vor avea denumirile astfel: vid_cvid.xa, vid_h263.xa, vid_iv50.xa.

XAnim este familia de codecuri xanim, astfel că trebuie să foloseşti opţiunea -vfm xanim pentru a cere MPlayer-ului să le folosească dacă e posibil.

Codecurile testate includ: Indeo 3.2, 4.1, 5.0, CVID, 3ivX, h263.

2.2.1.4 VIVO video

MPlayer poate rula fişiere video Vivo (1.0 and 2.0). Cel mai potrivit codec pentru fişierele 1.0 este decodorul H263 al FFmpeg-ului, îl poţi folosi cu opţiunea -vc ffh263. Pentru fişierele 2.0, foloseşte Win32 DLL prin opţiunea -vc vivo. Dacă nu furnizezi o opţiune în linia de comandă MPlayer selectează automat cel mai bun codec.

2.2.1.5 MPEG 1/2 video

MPEG1 şi MPEG2 sunt decodate de biblioteca nativă multiplatformă libmpeg2, a cărei sursă e incusă în MPlayer. Fişierele video MPEG 1/2 cu probleme sunt redate reţinând semnalul Signal 11 (Segmentation fault), şi reiniţializând rapid codecul, continund exact din locul în care a apărut eroarea. Această tehnică de recuperare nu are nici un handicap de viteză măsurabil.

2.2.1.6 MS Video1

Acesta este un codec foarte vechi şi foarte problematic de la Microsoft. În trecut a fost decodat codecul Win32 msvidc32.dll, acum avem propria implementare open source (de Mike Melanson).

2.2.1.7 Cinepak CVID

MPlayer foloseşte propriul decodor, multiplatformă Cinepak (de Dr. Tim Ferguson), din standard. Suporă ieşiri YUV,astfel că scalarea hardware este posibilă dacă driverul video o permite.

2.2.1.8 RealVideo

MPlayer suportă decodări ale tuturor tipurilor de fişiere RealVideo:

Este recomandat să descărcaţi şi să instalaţi RealPlayer8 sau RealONE, deoarece MPlayer poate folosi bibliotecile lor pentru a decoda fişiere video RealVideo 2.0 - 4.0. Scriptul configure al MPlayer-ului ar trebui să detecteze bibliotecile RealPlayer în locaţiile standard la o instalare completă. Dacă nu o face, arată scriptului configure unde să caute folosind opţiunea --with-reallibdir.

Ca o a doua şansă poţi descărca codecurile de la http://www.mplayerhq.hu/MPlayer/releases/codecs/. După descărcare pachetului cu codecuri Real, extrage-l în directorul /usr/local/lib/codecs, sau poţi specifica o cale unică folosind opţiunea --with-reallibdir.

Notă: Bibliotecile curente RealPlayer lucrează doar cu Linux, FreeBSD, NetBSD şi Cygwin pe platforme the x86, Alpha şi PowerPC (Linux/Alpha şi Linux/PowerPC au fost testate).

2.2.1.9 XviD

XviD este o dezvoltare alternativă a codecului OpenDivX. A început atunci când ProjectMayo a schimbat OpenDivX în closed source DivX4 (acum DivX5), şi cei care lucrau la OpenDivX în afara ProjectMayo s-au înfuriat, începând atunci XviD. Astfel că ambele proiecte au aceiaşi origine.

AVANTAJE

DEZAVANTAJE

INSTALARE XVID DIN CVS

XviD e în prezent disponibil doar din CVS. Aici sunt instrucţiunile de descărcare şi instalare (ai nevoie de autoconf 2.50 minim, automake şi 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
    Poţi adăuga câteva opţiuni (examinează rezultatul comenzii ./configure --help).
  6. make && make install
  7. Dacă ai specificat --enable-divxcompat, copiază header-ul divx4.h din xvidcore/src/ în /usr/local/include/.
  8. Recompilează MPlayer cu --with-xvidcore=/path/to/libxvidcore.a.

2.2.1.10 Sorenson

Sorenson e o familie de codecuri video dezvolatate de Sorenson Media şi licenţiate către Apple care îl distribuie cu playerul lor QuickTime. În acest moment putem decoda toate versiunile de fişiere video Sorenson cu următoarele decodoare:

COMPILARE MPLAYER CU SUPORT QUICKTIME

NOTĂ: în acest moment doar platformele Intel 32bit sunt suportate.

  1. descarcă MPlayer CVS
  2. descarcă pachetul QuickTime DLL de la http://www.mplayerhq.hu/MPlayer/releases/codecs/
  3. extrage pachetul QuickTime DLL în directorul tău Win32 (standard este: /usr/local/lib/codecs/)
  4. compilează MPlayer

2.2.2 Codecuri audio

Cele mai importante codecuri audio:

2.2.2.1 Decodare software AC3

Acesta este decodorul standard folosit pentru fişierele audio AC3.

Decodorul AC3 poate crea ieşiri audio pentru 2, 4, sau 6 difuzoare. Când e configurat pentru 6 difuzoare, Acest decodor oferă ieşiri separate pentru toate canalele AC3, permiţând experienţa "surround sound" fără a avea un decodor extern AC3 necesar folosirii codecului hwac3.

Foloseşte opţiunea -channels pentru a selecta numărul de canale pentru ieşire. Foloseşte -channels 2 pentru mixare stereo. Pentru mixare 4 canale (ieşirile Left Front, Right Front, Left Surround and Right Surround), foloseşte -channels 4. În acest caz, fiecare canal centru va fi mixat în mod egal cu canalele Front. -channels 6 va oferi toate canalele AC3 aşa cum sunt encodate - în ordinea Left, Right, Left Surround, Right Surround, Center şi LFE.

Numărul standard de canale de ieşire este 2.

Pentru a folosi mai mult de 2 canale de ieşire, trebuie să foloseşti OSS, şi să ai o placă de sunet care suportă numărul corespunzător de canale de ieşire prin SNDCTL_DSP_CHANNELS ioctl. Un exemplu de driver potrivit este emu10k1 (folosit de plăcile Soundblaster Live!) din August 2001 sau mai noi (ALSA CVS ar trebui, de asemenea, să funcţioneze).

2.2.2.2 Decodare hardware AC3

Ai nevoie de o placă de sunet capabilă AC3, cu ieşire digitală (SP/DIF). Driverul plăcii trebuie să suporte în mod corespunzător formatul AFMT_AC3 t (C-Media o face). Conectează decodorul AC3 la ieşirea SP/DIF, şi foloseşte opţiunea -ac hwac3. E experimental dar se ştie că funcţionează cu plăcile C-Media, Soundblaster Live! folosind driverele ALSA (dar nu OSS) şi plăcile de decodare DXR3/Hollywood+ MPEG.

2.2.2.3 Suport pentru libmad

Libmad e o bibliotecă multiplatformă de de codare audio MPEG. Nu se descurcă prea bine cu fişiere cu erori, şi uneori are probleme cu căutarea.

Pentru a activa suportul, compilează scriptul configure cu opţiunea --enable-mad.

2.2.2.4 VIVO audio

Codecul audio folosit în fişierele VIVO variază în funcţie de fişierul folosit: VIVO/1.0 sau VIVO/2.0. Fişierele VIVO/1.0 au codecul audio g.723, iar fişierele VIVO/2.0 au codecul audioVivo Siren. Ambele sunt suportate.

2.2.2.5 RealAudio

MPlayer suportă decodarea a aproape toate tipurile de fişiere RealAudio:

Pentru a vedea cum se instalează bibliotecile RealPlayer, consultă secţiunea RealVideo.

2.2.2.6 Codecurile QDesign

Stream-urile audio QDesign (prescurtat: QDMC, QDM2) se găsesc în fişierele MOV/QT. Ambele versiuni ale acestui codec pot fi decodate cu bibliotecile QuickTime. Pentru instrucţiuni de instalare te rog consultă secţiunea Codecuri video Sorenson.

2.2.2.7 Codecurile Qualcomm

Stream-urile audio Qualcomm (prescurtat: Qclp) se găsesc în fişierele MOV/QT. Pot fi decodate cu bibliotecile QuickTime. Pentru instrucţiuni de instalare te rog consultă secţiunea Codecuri video Sorenson.

2.2.2.8 Codecurile AAC

AAC (Advanced Audio Coding) e un codec audio întâlnit adesea în fişierele MOV şi MP4. Un decodor open source numit FAAD este diponibil la AudioCoding.com. MPlayer include libfaad 2.0RC1, astfel că nu e nevoie să-l obţii separat.

2.2.3 CUM SĂ imporţi codecuri Win32

2.2.3.1 Codecuri VFW

VFW (Video for Windows) este vechiul Video API pentru Windows. Codecurile lor au extensia .DLL sau (rareori) .DRV. Dacă MPlayer eşuează la rularea unui astfel de AVI cu un mesaj de genul:

    UNKNOWN video codec: HFYU (0x55594648)

Înseamnă că AVI-ul tău e encodat cu un codec care are prescurtare HFYU (HFYU = codecul HuffYUV, DIV3 = DivX Low Motion, etc...). Acum că şti acest lucru, trebuie să cauţi DLL-ul pe care Windows-ul îl încarcă pentru a putea rula cest tip de fişier. În cazul nostru, system.ini conţine această informaţie în linia care spune:

    VIDC.HFYU=huffyuv.dll

Aşa că ai nevoie de fişierul huffyuv.dll. Notează că audio codecurile sunt specificate de prefixul MSACM:

    msacm.l3acm=L3codeca.acm

Acesta e codecul MP3. După ce ai obţinut toate informaţiile necesare (prescurtare, fişier codec, secvenţă AVI), trimite cererea de suport pentru codec prin email, şi încarcă aceste fişiere către locaţia FTP:

    ftp://ftp.mplayerhq.hu/MPlayer/incoming/[numecodec]/

Notă: În Windows NT/2000/XP caută această informaţie în registry, ex.. caută "VIDC.HFYU". Pentru a afla cum se face această căutare, priveşte la vechea metodă DirectShow de mai jos.

2.2.3.2 Codecurile DirectShow

DirectShow este noul Video API, care e chiar mai rău decât predecesorul său. Situaţia e mai grea cu DirectShow, deoarece

Noua metodă: Folosind Microsoft GraphEdit (rapid)

  1. Obţine GraphEdit din DirectX SDK sau Doom9.
  2. Porneşte graphedit.exe.
  3. Din meniu selectează Graph -> Insert Filters.
  4. Expandează tab-ul DirectShow Filters.
  5. Selectează numele codecului şi expandează-l.
  6. La intrarea DisplayName caută textul dintre acolade după backslash şi notează-l (cinci blocuri delimitate de liniuţe, GUID-ul).
  7. Codecul binar este fişierul specificat în numele intrării .

Notă: Dacă nu este nici un nume şi DisplayName conţine ceva de genul device:dmo, atunci este un codec DMO.

Vechea metodă: Respiră adânc şi începe căutarea în registry...

  1. Start regedit.
  2. Apasă Ctrl-f, dezactivează primele două opţiuni, şi activează pe cea de-a treia. Tastează prescurtarea codecului (ex. TM20).
  3. Ar trebui să vezi un câmp care conţine calea şi numele fişierului (e.g. C:\WINDOWS\SYSTEM\TM20DEC.AX).
  4. Acum că ai fişierul, ai nevoie de GUID. Reîncepe căutarea, dar acum caută numele codecului, nu prescurtarea. Numele lui poate fi obţinut atunci când Media Player rulează fişierul, verificând la File -> Properties -> Advanced. Dacă nu merge, ai ghinion. Încearcă să ghiceşti (ex. caută TrueMotion).
  5. Dacă GUID-ul este găsit ar trebui să vezi un FriendlyName asi un câmp CLSID. Notează CLSID de 16 byte, este chiar GUID-ul căutat .

Notă: Dacă eşuezi în căutarea ta, bifează toate opţiunile. Poţi avea rezultate false, dar s-ar putea să ai noroc...

Acum că ai toate informaţiile necesare (prescurtare, GUID, fişierul codecului, secvenţa AVI), trimite cererea de suport pentru codec prin email, şi încarcă aceste fişiere către locaţia FTP:

    ftp://ftp.mplayerhq.hu/MPlayer/incoming/[numecodec]/