MPlayer a MEncoder
Kapitoly článků
Trocha historie: První verze zárodku programu byla ze srpna 2000, první MPlayer byl vydán v listopadu 2000 (v0.01). Důležitá verze Mplayer 0.5 v říjnu 2001 (první co jsem používal). Současná verze je MPlayer 1.0pre5.
Přehrávač zvládne většinu MPEG, DAT, VOB, AVI, OGG/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, Matroška souborů a to buď některým z nativních kodeků (viz dále), binárních kodeků nebo za použití upravených kodeků z Windows.
Pro uživatele Windows je zajimavé to, že nepoužívá kodeky ze systému, ale má svoje umístěné v podadresáři, tudíž je možno mít celý MPlayer se všemi existujícími kodeky třeba na flešce (plný strom cca 40 MB, dostačující cca 10 MB).
Program rozeznává formát souboru podle obsahu a nikoli podle názvu tj. vybere správné kodeky i pro méně obvyklé kombinace jmen souborů a kodeků, resp. na jméně vůbec nezáleží, jde třeba přehrávat dumpnutý media stream, nebo přímo VOB soubor.
Přehrávač je velmi precizní v A/V synchronizaci a navíc umožnuje v průběhu přehrávání synchronizaci upravovat. Na Linuxu (pokud má práva), použije velmi přesný jaderný časovač, jinak „pouze“ obyčejný od přerušení v počítači.
Přehrávač se dá spustit jak s grafickým uživatelským rozhraním - GUI (samozřejmě se skiny), tak bez něj. MEncoder je pouze bez GUI, což je pro jeho účel plně dostačující (zato se dá používat ze skriptů, tj. pro Windows vytvoříte BAT soubor a tam si vše naplánujete a jedete na dovolenou ...).
MPlayer podporuje dva druhy časování AVI souborů:
- bps-based: Základem je bitrate/samplerate video/audio streamu. Tato metoda je používána u většiny přehrávačů včetně avifile a Windows Media Playeru. Soubory s poškozenou hlavičkou a soubory vytvořené s VBR audiem, ale nekorektním VBR encoderem většinou mají za následek A/V desynchronizaci (obvykle při posouvání).
- interleaving-based: Nepoužívá bitrate z hlavičky, místo toho používá relativní pozici prokládaných audio a video chunks, což umožňuje většinu špatně kodovaných souborů s audio VBR přehrát.
Samozřejmé je přehrávání VideoCD, DVD, SVCD, sledování TV z televizní karty (pokud ji ovšem máte, tak dobrý MPlayer ještě není - jen na Linuxu) a přehrávání streamovaného videa (včetně např. TV nova a uložení jejího streamu). Podporovány jsou i AVI s více zvukovými stopami. Pokud má grafická karta TV Out a je navíc podporovaná v Linuxu, tak ho MPlayer může používat.
Mezi vymakané vlastnosti patří uložení media streamu z internetu:
mplayer -dumpstream mms://stv.media.mediacapitol.com/120/stv/2004/SUPERSTAR/2004-11-26_SUPERSTAR_26_Roman.wmv
Vytvoří na disku soubor, který si přejmenujte a je to. Pro MPlayer samozřejmě přejmenovávat není třeba.
Pokud se najde nějaký video soubor, který používá tak obskurní kodek, že v současnosti není MPlayerem rozeznán, tak autoři doporučují jeho část nahrát na jejich ftp server, aby se v příští verzi podpora mohla objevit (viz. manuál - část o kodecích). Já sám jsem zatím na žádný podobný nenarazil (resp. kolem verze 0.9 byl problém s filmem v obálce Matroska, kodekem quick time - což zvládl - se zvukovou stopou OGG - ale upgrade to vyřešil). Navíc pokud tento nepodporovaný formát dokážete přehrát ve Windows, je v manuálu sekce, jak najít ve Windows patřičný kodek a jak ho dopravit autorům, aby mohl být podporován v další verzi.
Pokud má AVI soubor poškozený index, MPlayer ho přesto dokáže stále přehrát (i když bez možnosti posouvání), nebo index dočasně vytvořit pomocí volby -idx nebo -forceidx (pak je možno normálně používat i posuny). Trvale lze vytvořit index pomocí MEncoderu.
Mezi lahůdky patří podpora titulků. MPlayer podporuje 13 různých formátů, takže jsem nikdy nepocítil potřebu konvertovat mezi jednotlivými formáty (i když i to MPlayer umí). Program obsahuje vyhlazené stínované titulky a OSD. Jelikož byl hlavní programátor z maďarska není problémem podpora středoevropských jazyků včetně naší drahé mateřštiny.
Na Windows MPlayer bohužel používá jen TTF fonty, resp. se mi nepovedlo rozchodit jeho vlastní fonty. Proč bohužel? Protože bitmapový font v tomto případě vypadá vždy stejně (lépe), jeho vykreslení je mnohem rychlejší, bezproblémové a ne všechny Windows mají aliasované fonty. Aby ale nedošlo k nedozumění: nemám nic proti TTF fontům obecně, jen při přehrávání videa.
MPlayer podporuje mnoho výstupních zařízení (někdy i velmi obskurních) a to jak pro audio, tak i video. V podstatě pokud máte aspoň trošku normální (ale i nenormální) HW tak MPlayer ho dokáže využít. Navíc pro některé karty existuje speciální lowlevel výstup (vidix), který ji dokáže vymačkat na maximum (většina Matroxů, 3Dfx, Radeon, Mach64, Permedia3). Na Windows používá DirectX, SDL nebo speciální low level metody (výstup winvidix - musí se naistalovat ovladač umístěný v podadresáři stromu programu, který umožní přímý - a tím myslím opravdu přímý - přístup k HW grafické karty).
Jako základní výstup na Linuxu je bráno SDL (Simple Device Layer, něco jako DirectDraw a DirectSound pod Windows) a Xv (XVideo - rozšíření umožňující používání YUV v hardwaru karty) a na Windows DirectX nebo SDL.
Pozn: Seznam dostupných (tj. zakompilovaných) výstupů získáte mplayer -vo help a audio výstupů
mplayer -ao help. Vybraný výstup (pokud se liší od defaultního) zapište do konfiguračního souboru (viz dále) a pokud si konfigurák schováte, tak máte MPlayer navždy nakonfigurován. Pak stačí vzít strom programu a na jakémkoliv počítači máte přehrávač - žádná instalace.
Příklad výstupu pro předkompilovanou CVS verzi ve Windows:
C:\mplayer>mplayer -vo help MPlayer dev-CVS-041204-13:23-3.2.3 (C) 2000-2004 MPlayer Team CPU: Advanced Micro Devices Duron Spitfire (Family: 6, Stepping: 0) Detected cache-line size is 64 bytes CPUflags: MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0 Compiled with runtime CPU detection - WARNING - this is not optimal! To get best performance, recompile MPlayer with --disable-runtime-cpudetection. Available video output drivers: directx Directx DDraw YUV/RGB/BGR renderer gl2 X11 (OpenGL) - multiple textures version winvidix WIN32 (VIDIX) cvidix console VIDIX null Null video output mpegpes Mpeg-PES file yuv4mpeg yuv4mpeg output for mjpegtools png PNG file jpeg JPEG file gif89a animated GIF output tga Targa output pnm PPM/PGM/PGMYUV file md5sum md5sum of each frame
a pro audio:
Available audio output drivers: mpegpes Mpeg-PES audio output dsound Windows DirectSound audio output win32 Windows waveOut audio output null Null audio output pcm RAW PCM/WAVE file writer audio output plugin Plugin audio output
Pokud nemáte nainstalované XWindows (grafické rozhraní pro Linux - i takové počítače jsou mezi námi), tak možná použijete výstup přes FrameBuffer v textové konzoli (karta by měla mít VBE 2.0). Já si tak někdy pouštěl televizi (sice ne přes MPlayer, ale přes FrameBuffer ano).
Mezi zajímavé výstupy určitě patří EGA (tj. do 16 barev) a mnou uctívaná AAlib, což je knihovna pro rendrování grafiky v textových módech. Možná si pamatujete na ASCII arty? Tj. ty shluky písmen, co když se vytisknou na traktor na jehličkové tiskárně dávají třeba nahou ženskou velkou metr? No a teď si to představte na monitoru a v reálném čase. Kdo to neviděl tak neuvěří. Tak ze dvou metrů a na 17palcovém monitoru je to nářez. Mimochodem AAlib podporují i některé verze Quake, Dooma atd. Každopádně před autorem AAlib hluboce smekám (autorem je Jan Hubička a je to našinec) a jak poznamenávají autoři tak sekundární Hercules grafická karta rocks :-).
Vylepšením AAlib je libcaca - přidává barvy.
Dalším zajímavým výstupem je série obrázků, tj. jednotlivé framy filmu jsou ukládány na disk v reálném čase. Podporovány jsou png, targa, jpg a gif.