Portál AbcLinuxu, 23. dubna 2024 23:07

Na co se často ptáme: MPlayer

8. 9. 2003 | Robert Krátký
Články - Na co se často ptáme: MPlayer  

Zase ten MPlayer. Podrobný návod ke kompilaci, konfiguraci a používání. Kompilační parametry, výstup zvuku a obrazu, titulky.

Nejrůznější problémy s MPlayerem jsou vděčným tématem mnoha otázek v diskuzi na AbcLinuxu.cz. Pokusím se tedy o co nejpodrobnější popis.

[V článku zmiňované softwarové balíky mohou mít v různých distribucích odlišná pojmenování. Názvy, které uvádím, vycházejí z Debianu, ale nepředpokládám, že by se měly od jiných distribucí lišit nějak zásadně. Každopádně vždy připojím ještě odkaz na stránky daného projektu.]

Parametry skriptu ./configure

Ačkoliv lze pro mnoho distribucí sehnat předkompilované balíčky, nebudu se jim zde z pochopitelných důvodů věnovat. Nemohu sice soudit, nakolik vlastní kompilace zaručí vyšší výkon, ale vím zcela jistě, že v binárním balíku bude zakompilováno mnoho věcí, o které vůbec nemusíte stát - a naopak jiné mohou chybět. Jejich jedinou výraznou výhodou proto zůstává skutečnost, že budete ušetřeni instalace -dev (-devel) verzí knihoven, jejichž podporu chcete v programu mít. Každopádně počítejte s knihovnami XFree (xlibs).

Kompilace však není nic složitého. Může se stát, že narazíte na problém s použitou verzí kompilátoru. Dokumentace nedoporučuje gcc verze 2.96 a 3.0.x. Ale najde se dost lidí (včetně mě), kteří různé verze s těmito kompilátory zkompilovali bez problémů. Chyba se však někdy může projevit až po 'úspěšné' kompilaci - např. okamžitým pádem - ještě než se program pořádně spustí... Ačkoliv tedy nemohu poskytnout stoprocentní radu, alespoň dodám, že zatím jsem ještě nikdy nenarazil na problém s verzí gcc, která byla totožná s verzí, kterou byl kompilován kernel (viz cat /proc/version).

Většinu parametrů není potřeba vůbec zadávat. ./configure skript se pokusí automaticky rozpoznat přítomnost všech možných zařízení, ovladačů a knihoven, které máte v systému nainstalovány. Je proto důležité mít je na standardních místech, aby je skript nalezl - ale to vlastně platí pro každou kompilaci.

Začněte stažením všech externích (windowsích) kodeků, které budete chtít používat (stabilní vydání v sobě obsahují balík libavcodec, takže [úctyhodná] základní funkčnost je zajištěna i bez dalších kodeků). Protože by byla škoda ochudit se o bohaté možnosti MPlayeru, doporučuji nainstalovat všechny (nebo alespoň Quicktime) - alespoň vás později žádný formát nezaskočí. Program bude tyto kodeky standardně hledat v adresáři /usr/lib/win32. Pokud vám toto umístění z nějakého důvodu nevyhovuje, můžete ./configure skript nasměrovat jinam pomocí parametru --with-win32libdir.

Nezapomeňte, že kodeky je potřeba "nainstalovat" (resp. nakopírovat) ještě PŘED spuštěním skriptu ./configure a kompilací - jinak pro ně nebude zakompilována podpora.

Pokračujeme stažením poslední verze (v současné době 1.0pre1) samotného MPlayeru. Archív rozbalte a přepněte se do vzniklého adresáře. Třeba takto:

tar -jxvf MPlayer-číslo.verze.tar.bz2
cd MPlayer-číslo.verze

Nastal čas ke spuštění skriptu ./configure. Abychom však dosáhli kýženého výsledku, je ještě nutné se přesvědčit, jestli jsou v systému nainstalované a k dispozici všechny potřebné vývojové [development, -devel, -dev] knihovny. Můžeme si je pro přehlednost pracovně rozdělit do čtyř skupin:

  1. Podpora různých formátů obrazu nebo zvuku.
  2. Výstup grafické karty.
  3. Výstup zvukové karty.
  4. Různé funkce přehrávače.

1. Audio a video formáty

V této oblasti jsme se již o to nejdůležitější postarali instalací win kodeků. Pokud požadujete i podporu obrázkových formátů (PNG, JPEG, GIF), nainstalujte -dev balíky knihoven libpng, libjpeg, giflib.

Aby bylo možno pracovat s formátem MP3 (vytvářet), nainstalujte liblame. Pro OGG budete potřebovat libogg/libvorbis.

2. Výstup grafické karty

Zmíním se o nejčastěji používaných kartách. Všechny budou fungovat i bez jakékoliv zvláštní přípravy, ale pak nebudete moci využít hardwarové akcelerace, což se podepíše na výkonu - především při celoobrazovkovém módu.

Matrox (G200/G400/G450/G550)

MPlayer nabízí jaderný modul mga_vid. Můžete ho používat jak ve framebufferové konzoli, tak v XWindow.

Nejprve si jej však musíte zkompilovat, vytvořit zařízení /dev/mga_vid a modul natáhnout do kernelu. Skript ./configure toto zařízení nalezne a podporu automaticky zapne. Z hlavního adresáře zdrojáků MPlayeru zadejte:

cd drivers
make
mknod /dev/mga_vid c 178 0
insmod mga_vid.o

Abyste měli /dev/mga_vid připravené i po rebootu, zkopírujte zkompilovaný modul mga_vid.o do adresáře /lib/modules/verze_kernelu/někam, přidejte do vašeho /etc/modules.conf souboru řádek:

alias char-major-178 mga_vid

a aktualizujte seznam natahovaných modulů - většinou depmod -a.

V Debianu vložte řádek s "alias..." do samostatného souboru mga_vid, který umístěte do /etc/modutils/. Nakonec spusťte update-modules.

Pokud používáte DevFS, můžete vynechat příkaz "mknod...". mga_vid je už nějakou chvíli DevFS kompatibilní a soubor zařízení /dev/mga_vid se po natažení modulu vytvoří automaticky. Abyste se opět dočkali zařízení i po rebootu, vložte do vašeho souboru devices pro DevFS řádek (v Debianu samostatný soubor s takovým řádkem do /etc/devfs/devices.d/):

mga_vid c 178 0 root video 0660

 

3Dfx

Máte dvě možnosti. Buď použít novější a kvalitnější ovladač tdfx_vid, který se instaluje na vlas stejně jako předchozí mga_vid -- a nebo využít standardní jaderný ovladač tdfxfb.o. Většina distribučních jader by ho měla mít zkompilovaný. Pokud máte vlastní jádro, přikompilujte si ho. ./configure skript budete ještě muset instruovat parametrem --enable-tdfxfb.

 

ATI

K dispozici jsou VIDIX ovladače. MPlayer by měl vaši kartu správně rozpoznat a automaticky použít ten správný (mach64_vid, rage128_vid a radeon_vid). Pak je tu ještě možnost použít overlay ovladač radeon_vid, který můžete najít a zkompilovat v adresáři drivers/radeon. (Postup opět stejný jako v předchozích dvou případech - s tím rozdílem, že ovladač potřebuje ke své funkci VESA BIOS, což se projeví na podobě parametru pro výběr video výstupu při spouštění přehrávače. Více viz drivers/radeon-README

 

S3
Standardní xv ovladač by měl ve většině případů posloužit optimálně.

 

nVidia
Použijte ovladače přímo od fy. nVidia. Pokud máte novější kartu, bude xv ovladač fungovat bez problému. Riva128 bohužel Xvideo rozšíření nepodporuje (resp. firemní ovladač ne).

Kromě ovladačů specifických pro konkrétní typy grafických karet jsou k dispozici ještě zvláštní možnosti grafického výstupu, které vám usnadní použití MPlayeru v nejrůznějších podmínkách. Pokud budete mít o zakompilování podpory zájem, opět nainstalujte příslušné knihovny.

3. Výstup zvukové karty

Nejčastěji používanými ovladači jsou buď jaderné OSS nebo od projektu ALSA. MPlayer je na konfiguraci zvukového výstupu dost citlivý a může vám klidně oznámit, že váš počítač není dost výkonný, aby mohl soubor XY přehrát. Pokud skutečně nesedíte u pomalého stroje, bude důvodem nejpravděpodobněji nevyhovující OSS ovladač zvukové karty. Budete přinuceni vyzkoušet ALSA ovladače, což však není na škodu, protože jsou obecně kvalitnější a podporují více funkcí zvukových karet.

Ovladače správně nainstalované v systému skript opět nalezne a přidá k nim i podporu aRts a esd, pokud k těmto systémům máte nainstalované potřebné vývojové knihovny. Jejich zakompilováním pak získáte možnost nasměrovat audio výstup z MPlayeru na vámi používaný zvukový server.

4. Různé funkce přehrávače

Několik dalších užitečných parametrů:

Kompilace

Až budete spokojeni s vybranými parametry kompilace, spusťte ./configure skript a nezapomeňte zkontrolovat jeho výstup. Na úplném konci naleznete šikovný přehled zapnutých a vypnutých parametrů v jednotlivých oblastech.

Takto vypadá příkazová řádka většinou když kompiluji MPlayer:

./configure --disable-runtime-cpudetection --enable-dvdnav --enable-menu --enable-gui --language=cz

A takhle vypadá závěrečné shrnutí. Pokud najdete některou z požadovaných funkcí/knihoven/ovladačů v "Disabled" části, ačkoliv byste ji radší viděli v "Enabled", opravte instalaci příslušných knihoven ve vašem systému a pak spusťte ./configure (se všemi parametry) znovu.

Enabled optional drivers: [zapnuté/nalezené funkce]
  Input: streaming edl tv mpdvdkit2 vcd
  Codecs: qtx divx5linux xvid libavcodec dshow/dmo win32 libvorbis libmad
  Audio output: alsa9 arts oss nas sdl mpegpes(file)
  Video output: xvidix sdl vesa jpeg png mpegpes(file) svga aa xmga mga opengl dga xv x11
Disabled optional drivers: [vypnuté/nenalezené funkce]
  Input: tv-v4l tv-bsdbt848 cdda dvdnav dvdread dvdcss smb
  Codecs: divx4linux libdv real xanim liblzo gif
  Audio output: sgi sun esd dxr2 win32
  Video output: bl zr dxr3 dxr2 directx gif89a fbdev ggi directfb tdfxfb 3dfx

Zkompilujte příkazem make a proběhne-li vše bez nějakého zádrhelu, nainstalujte program: make install (jako root, třeba pomocí su). Později můžete MPlayer odstranit spuštěním příkazu make uninstall ze stejného adresáře.

Pro Debian si můžete snadno vytvořit .deb balíček. Informace v souboru debian/README.debian.

Konfigurace

Ačkoliv je možné veškerou konfiguraci provádět z příkazové řádky, pohodlnější je nastavit základní parametry v konfiguračních souborech. Pokud vás to neláká, máte možnost použít konfigurační nástroj, který je součástí GUI. Hodnoty nastavené v něm sice budou platit pouze pro GUI verzi programu, ale pokud rozhraní příkazové řádky stejně nehodláte používat, může vám to být jedno. Nastavení v tomto Gtk+ prostředí je celé počeštěno a navíc velmi přehledné. Na tom skutečně není co vysvětlovat. Zmíním tedy jen doinstalaci samotného GUI (skinu) -- přestože jsme jeho podporu zakompilovali, žádné nainstalováno nebylo; MPlayer ve svém základním "balení" žádné neobsahuje.

GUI

Stáhněte některý ze skinů, rozbalte a výsledný adresář přesuňte buď do /usr/local/share/mplayer/Skin/ (pokud jste ovšem ./configure skriptu nezadali nějaký jiný instalační adresář v parametru --prefix) nebo do ~/.mplayer/Skin. První varianta je samozřejmě celosystémová, druhá pouze pro právě přihlášeného uživatele. Adresář se skinem pak přejmenujte na default (pokud chcete skiny obměňovat, bude výhodnější vytvořit pouze symbolický odkaz: ln -s adresar_se_skinem default). MPlayer v GUI podobě se spouští příkazem gmplayer.

default skin

Konfigurační soubory

Hlavní celosystémový konfigurační soubor umístěte do /usr/local/etc/mplayer.conf, jeho uživatelský protějšek (který má při běhu programu přednost) pak do ~/.mplayer/config. Jako šablona vám může posloužit soubor etc/example.conf ze zdrojového adresáře.

example.conf je velmi bohatě komentovaný, takže nastavení by nemělo činit zvláštní potíže. V následující tabulce jsou proto vyjmenovány jen ty nejdůležitější parametry (parametry pro příkazovou řádku, které jsou vysvětlovány na jiných místech článku, můžete také zařadit do konfiguračního souboru - jen zápis se změní např. takto: -subcp cp1250 -> subcp=cp1250).

ParametrVýznam
vovideo výstup; spusťte mplayer -vo help, což vypíše dostupné ovladače.
aoaudio výstup; mplayer -ao help opět vypíše tentokrát audio ovladače. Nezapomeňte, že pokud již máte spuštěný nějaký program obsluhující systémové ovladače (ALSA, OSS) zvukové karty, budete muset jako výstup pro MPlayer použít právě ten (tzn. např. aRts v KDE).
gui = yesVždy používej GUI řežim.
skin = nazev_adresarePoužij skin ze zadaného adresáře.
framedrop = yesKdyž nestíhá ovladač/procesor/atd., vynechávej snímky.

Fonty

Fonty pro titulky k filmům a pro zobrazení obrazovkového menu. Máte několik možností, jak se s touto věcí vypořádat. Asi nejjednodušší je použít relativně novou funkčnost MPlayeru - totiž schopnost používat jakýkoliv truetype font tak, jak je. Podmínkou je mít při kompilaci správně nainstalované vývojové knihovny FreeType2. Pak už je jen potřeba opatřit si pěkné (české) fonty, což můžete řešit třeba instalací sady microsoftích fontů pro web. Jednotlivé fonty si v akci můžete vyzkoušet při spuštění s parametrem -font /cesta/k/fontu/nazev_fontu.ttf (více o titulcích v části "Praxe"). Od požadovaného fontu pak vytvořte symlink do adresáře MPlayeru ve vašem home:

ln -s /cesta/k/fontu/nazev_fontu.ttf ~/.mplayer/subfont.ttf

Pokud vám uvedený postup z nějakého důvodu nevyhovuje (například nechcete instalovat knihovny FreeType - i když nechápu, proč by se mohl někdo chtít o její skvělé funkce ochuzovat...), můžete využít připravené baličky s fonty, které můžete získat přímo na stránkách MPlayeru. Obsah takového balíčku pak nakopírujte do adresáře ~/.mplayer/font/.

Kódování češtiny

Menší - ale důležitá - vsuvka. Nebudu se pouštět do žádných obšírných vysvětlení. Chcete-li si přečíst něco více o tom, proč vůbec máme nějaká kódování a kde se vzala, zkuste třeba stránky cestina.cz. Při používání MPlayeru budete asi nejčastěji hledat řešení pro přehrávání filmů s externími titulky, které jsou ve většině případů v kódování Win1250. Pokud se vám nechce titulky pomocí některého z mnoha konverzních programů (nebo online) převést do kódování, které používá vaše instalace Linuxu (tj. ISO8859-2, případně UTF-8), budete muset MPlayeru říct, jaké kódování má v textovém souboru titulků očekávat.

K tomu slouží parametr -subcp kódování. Pokud používáte pro zobrazení titulků rovnou truetype fonty (viz výše), máte po starostech. Usnadnit život vám ještě může utilitka Enca, kterou napsal nestor diskuzního fóra AbcLinuxu, David Nečas (Yeti). Enca je velmi šikovná v rozpoznávání jednotlivých kódování, takže pokud si ji nainstalujete (zkompilovanou s podporou programu iconv, jehož označení různých kódování MPlayer používá), můžete parametru -subcp naservírovat "hodnotu" `enca -i soubor_s_titulky.sub`. Nemusíte si pak dělat hlavu s tím, v jakém kódování titulky vlastně jsou.

Při použití balíčků s fonty je situace trošku složitější. Fonty jsou totiž většinou určeny jen pro jedno kódování (ty, na které ukazuje odkaz výše, jsou pouze pro kódování ISO8859-2). Můžete zkoušet různé kejkle popisované na spoustě míst, ale řekl bych, že úplně nejprostší řešení je zároveň to nejlepší. Nahradíte-li soubor font.desc z balíčku fontů takovým, který je upraven i pro zobrazení českých znaků definovaných v kódování Win1250, máte opět po starostech. Stáhněte si jej třeba odsud (upravil Artwine).

Praxe

Předpokládám, že nejnázornější bude ukázat vše na příkladech.

Běžné použití

Chcete-li přehrát jakýkoliv soubor bez dalších speciálních nastavení (a za předpokladu, že v konfiguračním souboru už máte nastavené preferované výstupy pro video i audio), spusťte MPlayer s názvem (a případně cestou k němu) tohoto souboru jako jediným parametrem:

mplayer film.avi

Pokud chcete již popisované nastavení z konfiguračního souboru "přebít", vložte parametr na příkazovou řádku. Třeba:

mplayer -ao alsa9 http://server.cz/radio.pls

DVD, VCD, SVCD, CD

Přehrávání všech těchto disků je velmi snadné, a pokud jej budete chtít provozovat častěji, doporučuji vytvořit pro jednotlivá zařízení symbolické linky, abyste nemuseli MPlayeru vždy na příkazové řádce říkat, kde to DVD/CD hledat. DVD mechaniku očekává program na /dev/dvd. CD zase na /dev/cdrom.

mplayer -dvd 1 -dvd-device /dev/hdc

Kde -dvd 1 značí stopu na DVD. Uvedený příkaz by toho ve většině případů moc nepřehrál, protože stopa 1 bývá obyčejně několikavteřinové logo produkční společnosti nebo copyrightové upozornění.

Na tomto místě stojí za zmínku nastavení DMA vaší CD/DVD mechaniky. Při použití staršího PIO režimu se budete potýkat s pomalým přenosem => přehráváním. Současný stav zjistíte třeba pomocí hdparm -v /dev/dvd. U konkrétní mechaniky pak můžete DMA zapnout parametrem -d1.

Titulky

V části, která se zabývala fonty, jsem už mluvil o kódování titulků. Dalším problémem však bývá, že MPlayer titulky u širokoúhlého filmu nezobrazí hezky v černém pruhu pod obrazem, nýbrž nešikovně do obrazu. Jsou dva způsoby, jak tomu předejít.

Prvním a systémovějším řešením je říct MPlayeru, kam chceme, aby titulky umístil, pomocí parametru -vop. Tento parametr se používá pro nastavení všech filtrů/pluginů, které MPlayer zná. Jejich seznam získáte příkazem mplayer -vop help, bližší popis pak v man mplayer. Nás teď zajímá filtr "expand", který zvětší videovýstup o zadané hodnoty (obraz zůstane nedotčen, nejedná se manipulaci s rozlišením filmu). Budeme předpokládat, že soubor s titulky se jmenuje film.sub a tím pádem ho MPlayer načte automaticky.

mplayer -vop expand=0:-100:0:0 film.avi

titulky pod filmem

Ke spodnímu okraji obrazu jsme tímto přidali 100 bodový černý pruh, který je pro zobrazení titulků plně dostačující. Při přepnutí do celoobrazovkového režimu se toto nastavení projeví posunutím obrazu filmu o úměrný počet bodů výš.

Druhou možností je využití video výstupu SDL (-vo sdl), který titulky automaticky umístí do volného prostoru pod obrazem (tzn. pouze v celoobrazovkovém režimu).

Závěr

Tento článek nemůže a ani nechce být kompletním průvodcem. To už by bylo snazší přeložit celou dokumentaci. Přesto jsem se snažil nevynechat žádnou oblast, která obvykle (alespoň to tak vypadá podle otázek v diskuzním fóru) dělá uživatelům problémy. Opravy a doplňující informace jsou samozřejmě vítány.

Seriál Na co se často ptáme (dílů: 11)

První díl: Na co se často ptáme 1: LILO, poslední díl: Na co se často ptáme: Balíčkovací systémy.
Předchozí díl: Na co se často ptáme 1: LILO
Následující díl: Na co se často ptáme: Organizácia disku

Související články

Na co se často ptáme 1: LILO
Přehrávání DVD pod Linuxem
MPlayer

Odkazy a zdroje

MPlayer Homepage

Další články z této rubriky

Linuxové foto novinky: nejen darktable 2.2 a Rawtherapee 5
Linuxové foto novinky: GIMP konečně prolomil 8bit mez
DLNA v praxi: Android
Technologie DLNA na Linuxu v praxi – PS3 Media Server
Technologie DLNA na Linuxu v praxi – 1

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.