MPlayer a MEncoder: hrajeme

15. 12. 2005
Doba čtení: 6 minut

Sdílet

V přechozím díle jsme si balík MPlayer nainstalovali a rozchodili tak, aby uměl něco přehrát. Dnes si ukážeme, co všechno po něm můžeme v souvislosti s přehráváním chtít a jak toho docílit.

Nebudeme popisovat ovládání klávesovými zkratkami ani to, jak správně klikat na grafické prvky v GUI. Předpokládám, že si to každý najde v manuálové stránce, která je k dispozici i česky. Spíš se zaměříme na příkazovou řádku a její možnosti.

Základní použití

Základní použití MPlayeru jsme si ukázali už posledně. Pro jistotu jej ale zopakuji.

$ mplayer film.avi 

případně pro DVD

$ mplayer dvd:// 

Pokud použijete tento jednoduchý zápis, film se začne přehrávat v okně v defaultním nastavení MPlayeru. To je možno měnit v souboru ~/.mplayer/config. Na začátku je samozřejmě prázdný. Jeho syntaxe je jednoduchá.

volba=hodnota

Samozřejmě můžete používat klasické komentáře, které oddělíte pomocí znaku #. Volby v tomto souboru mají stejné názvy jako parametry, které můžete zadávat přímo na řádce. Pokud tedy chcete například nastavit výstupní audio zařízení na EsounD, můžete buďto pustit

$ mplayer -ao esd film.avi

nebo do zmíněného konfiguračního souboru přidat řádek:

ao=esd

V dalším textu budeme používat v příkladech parametry na řádce, ale pokud se vám budou líbit, můžete si je natrvalo zapsat do konfigurace.

Video a audio výstupy

V příkladu už jsem nakousl volbu audio výstupu, a tak vám o nich řeknu něco víc. Vedle audio existuje samozřejmě také video výstup. Ty lze v případě MPlayeru měnit a dosahovat tím různých výsledků. Pro jejich změnu slouží parametry -ao (audio output) a -vo (video output).

Jaké výstupy máme k dispozici záleží na tom, jaké knihovny jsme měli nainstalované v době kompilace a zda se s nimi přehrávač slinkoval. Můžeme si je nechat jednoduše vypsat:

$ mplayer -ao help
$ mplayer -vo help

V mém případě to jsou video výstupy:

gl       X11 (OpenGL)
gl2      X11 (OpenGL) - multiple textures version
dga      DGA ( Direct Graphic Access V2.0 )
sdl      SDL YUV/RGB/BGR renderer (SDL v1.1.7+ only!)
fbdev    Framebuffer Device
fbdev2   Framebuffer Device
svga     SVGAlib
aa       AAlib
caca     libcaca
vesa     VESA VBE 2.0 video output
xvidix   X11 (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 ještě audio:

mpegpes Mpeg-PES audio output
oss     OSS/ioctl audio output
alsa    ALSA-0.9.x-1.x audio output
esd     EsounD audio output
sdl     SDLlib audio output
null    Null audio output
pcm     RAW PCM/WAVE file writer audio output
plugin  Plugin audio output 

Vidíte, že je jich docela hodně a že možnosti jsou široké. V případě video výstupů můžete využít OpenGL rozhraní, zápis do pnh souborů nebo si nechat vypisovat MD5 součty pro každé okýnko. Velmi zajímavé je například použití knihoven AAlib a libcaca. V obou případech jde o výstup do textového režimu, libcaca zvládá barvy. Neřekl bych, že je to extra užitečné, ale pro pobavení je to příjemné.

libcaca

Použití libcaca

Chcete-li využít MPlayer v konzoli, můžete použít výstup fbdev, fbdev2 nebo svga. Klasickým výstupem je samozřejmě X11, ale příliš jej nedoporučuji. Přestože chodí bezproblémově, nepoužívá žádnou akceleraci a získaný obraz jednoduše přes X server posílá do okna.

Máte-li rozchozenou hardwarovou akceleraci, doporučuji použít video výstup xv, který tuto akceleraci využije. Karta se hodí zejména ve chvíli, kdy chcete provádět s videem různé transformace. Klasickým příkladem je přepnutí do režimu pro celou obrazovku. V případě plně softwarového přehrávání je potřeba rozměry videa škálovat softwarově. Grafická karta ale umí tyto služby poskytnout s mnohem menším zatížením systému.

Titulky

Poměrně často dnes přehráváme filmy, které používají titulky umístěné v externích souborech. Pokud máte správně nainstalované fonty a názvy souborů s filmem a titulky se liší jen příponou, MPlayer si titulky sám najde, rozezná a použije je. Pokud ne, můžete použít parametr -sub soubor_s_titulky pro určení jejich umístění.

V minulém díle jsme se také lehce zmínili o kódování titulků. Většina dnešních titulků je uložena v kódování WIN1250, a tak pokud jste nainstalovali titulky v ISO8859–2, nezobrazí se vám některé znaky korektně. MPlayer má ale naštěstí jednoduché řešení. Pokud si nainstalujete konverzní balík iconv, můžete jej použít přímo z MPlayeru pomocí parametru -subcp, za který uvedete název kódování, ve kterém jsou titulky uloženy. V tomto případě  cp1250.

Jedna poznámka k titulkům: Mí přátelé jsou vždycky pohoršeni nad tím, že všem titulkům dávám příponu .sub, přestože měly původně .srt nebo nějakou úplně jinou. Obvykle na to reagují slovy: „Pak se nediv, že ti to bude hrát špatně.” MPlayer ale není hloupý a neřídí se příponou. Stejně vždycky podle struktury souboru zjišťuje, o jaký formát se jedná, takže můžete být klidní.

Fullscreen

Pokud chcete, aby video začalo rovnou hrát v celoobrazovkovém režimu, použijte parametr -fs. Občas se stává, že je špatně vypočítán poměr stran. Ten je možno ručně MPlayeru vnutit pomocí parametru -monitoraspect a číslem, které udává opravdový poměr. Použít můžete buďto přímo hodnotu (například 1.3333) nebo vypsat poměr (4:3).

Vylepšení videa

Samotné přehrávání v okně s titulky by vám ale asi nestačilo. Podíváme se tedy na další volby, které se vám mohou hodit.

Základem je samozřejmě vyhlazování videa. Tady se ještě vrátím k hardwarové akceleraci. Ta je zde opět použita a v tomto případě hraje velmi zásadní roli. Schválně si zkuste pustit vyhlazování přes x11 a xv. Rozdíl v zatížení dělá obvykle více než 50 %.

Samotné vyhlazování zapínáme volbou -pp jako Post Processing. Za ní ještě příjde číslo od 0 do 6, které udává, jak moc chceme obraz vylepšovat. Máte-li slušný počítač (řekněmě 800 MHz a více) a akceleraci, nemusíte se bát a klidně začněte na nejvyšší hodnotě. Až když uvidíte, že systém nezvládá, snižujte.

Pro porovnání jsem zvolil stejné okénko jednoho filmu. V celoobrazovkovém režimu je to ještě zřetelnější.

Bez vyhlazení

Film bez vyhlazování

S vyhlazením

Totéž s vyhlazením

Filtry

Velmi důležitou funkcí MPlayeru je také možnost použití různých výstupních filtrů. Používají se velmi jednoduše pomocí parametru -vop a pomocí -vop help si můžete nechat vypsat seznam filtrů, které váš MPlayer umí. Je jich poměrně hodně, a tak je nebudu všechny vypisovat. Jsou mezi nimi ale filtry pro otočení obrazu (rotate), oříznutí (crop), odstranění loga z obrazu (delogo), korekci perspektivy (perspective) a další. Můžete se směle pustit do jejich objevování a experimentování.

Deinterlace

Toto je poměrně častý problém, takže příslušnému filtru věnuji samostatný odstavec.

Hlavně na DVD se objevuje řádkové prokládání, které při přehrávání nevypadá dobře. Pochopitelně je možno jej odstranit během enkódování do DivX, ale pokud chcete DVD jen přehrát nebo máte špatně udělaný DivX, musíte si deinterlaci provést v reálném čase během přehrávání.

Jak vypadá neopravené řádkování vidíte na následujícím příkladu:

Interlace

Oprava je snadná, stačí použít video filtr lavcdeint. Ten vše zařídí automaticky a prokládání vás zbaví.

$ mplayer -vop lavcdeint film.avi

Roztažení filmu

Občas se hodí oříznout příliš široké video tak, aby zmizely nebo se alespoň zmenšily černé pruhy na okrajích. K tomu slouží parametr -panscan, který je následován číslem od 0.0 do 1.0, které určuje, jak moc má být obraz upraven. Hodnota 0.0 znamená, že nedojde k žádné změně, 1.0 zase nastaví úplné oříznutí, takže černé pruhy zmizí úplně.

bitcoin_skoleni

Během přehrávání je možno měnit nastavení této hodnoty klávesami w a e. Panscan funguje jen na akcelerovaných výstupech.

Závěrem

Řekli jsme si o ovládání funkcí přehrávání při práci s MPlayerem a zmínili jsme některé „vychytávky”. Příště se pustíme do enkódování videa, použijeme některé věci z dnešního článku a přidáme další, aby se nám to celé pěkně spojilo.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.