MPlayer - Multimediální přehrávač

http://www.mplayerhq.hu

License

MPlayer is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

MPlayer is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with MPlayer; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.


Jak číst tuto dokumentaci
1. Představení
2. Instalace
2.1. Softwarové požadavky
2.2. Vlastnosti
2.3. Chtěli byste GUI?
2.4. Fonty a OSD
2.4.1. TrueType fonty
2.4.2. bitmapové fonty
2.4.3. OSD menu
2.5. Codec installation
2.5.1. Xvid
2.5.2. x264
2.5.3. AMR kodeky
2.6. RTC
3. Použití
3.1. Příkazový řádek
3.2. Titulky a OSD
3.3. Ovládání
3.3.1. Konfigurace ovládání
3.3.2. Ovládání z LIRC
3.3.3. Závislý režim
3.4. Přehrávání datových proudů ze sítě nebo rour
3.4.1. Uložení proudového obsahu
3.5. CD/DVD mechaniky
3.5.1. Linux
3.5.2. FreeBSD
3.6. Přehrávání DVD
3.6.1. Kód regionu
3.7. Přehrávání VCD
3.8. Seznamy editačních zásahů (EDL)
3.8.1. Použití EDL souboru
3.8.2. Vytvoření EDL souboru
3.9. Pokročilé audio
3.9.1. Surround/Vícekanálové přehrávání
3.9.1.1. DVD
3.9.1.2. Přehrávání stereo souborů do čtyřech reproduktorů
3.9.1.3. AC–3/DTS Passthrough
3.9.1.4. Maticově enkódovaný zvuk
3.9.1.5. Surround emulace ve sluchátkách
3.9.1.6. Potíže
3.9.2. Manipulace s kanály
3.9.2.1. Obecné informace
3.9.2.2. Přehrávání mono na dvou reproduktorech
3.9.2.3. Kopírování/přesun kanálů
3.9.2.4. Mixování kanálů
3.9.3. Softwarové nastavení hlasitosti
3.10. TV vstup
3.10.1. Kompilace
3.10.2. Tipy pro používání
3.10.3. Příklady
3.11. Rádio
3.11.1. Rádio vstup
3.11.1.1. Kompilace
3.11.1.2. Uživatelské tipy
3.11.1.3. Příklady
4. Výstupní video zařízení/rozhraní
4.1. Nastavení MTRR
4.2. Xv
4.2.1. Karty 3dfx
4.2.2. Karty S3
4.2.3. Karty nVidia
4.2.4. Karty ATI
4.2.5. Karty NeoMagic
4.2.6. Karty Trident
4.2.7. Karty Kyro/PowerVR
4.2.8. Karty Intel
4.3. DGA
4.4. SDL
4.5. SVGAlib
4.6. Výstup na Framebuffer (FBdev)
4.7. Matrox framebuffer (mga_vid)
4.8. Podpora 3Dfx YUV
4.9. tdfx_vid
4.10. Rozhraní OpenGL
4.11. AAlib – zobrazování v textovém režimu
4.12. libcaca – Barevná ASCII Art knihovna
4.13. VESA - výstup do VESA BIOSu
4.14. X11
4.15. VIDIX
4.15.1. Karty ATI
4.15.2. Karty Matrox
4.15.3. Karty Trident
4.15.4. Karty 3DLabs
4.15.5. Karty nVidia
4.15.6. Karty SiS
4.16. DirectFB
4.17. DirectFB/Matrox (dfbmga)
4.18. MPEG dekodéry
4.18.1. DVB výstup a vstup
4.18.2. DXR2
4.18.3. DXR3/Hollywood+
4.19. Ostatní vizualizační hardware
4.19.1. Zr
4.19.2. Blinkenlights
4.20. Podpora TV výstupu
4.20.1. Karty Matrox G400
4.20.2. Karty Matrox G450/G550
4.20.3. Karty ATI
4.20.4. nVidia
4.20.5. NeoMagic
5. Porty
5.1. Linux
5.1.1. Vytvoření balíčku pro Debian
5.1.2. Balení RPM
5.1.3. ARM
5.2. *BSD
5.2.1. FreeBSD
5.2.2. OpenBSD
5.2.3. Darwin
5.3. Komerční Unix
5.3.1. Solaris
5.3.2. HP-UX
5.3.3. AIX
5.3.4. QNX
5.4. Windows
5.4.1. Cygwin
5.4.2. MinGW
5.5. Mac OS
5.5.1. MPlayer OS X GUI
6. Základní použití MEncoderu
6.1. Výběr kodeků a nosných formátů
6.2. Výběr vstupního souboru nebo zařízení
6.3. Dvouprůchodové enkódování MPEG-4 ("DivX")
6.4. Enkódovánído video formátu Sony PSP
6.5. Enkódování do MPEG formátu
6.6. Škálování (změna velikosti) filmů
6.7. Proudové kopírování
6.8. Enkódování z množství vstupních obrázkových souborů (JPEG, PNG, TGA, atd.)
6.9. Extrakce DVD titulků do VOBsub souboru
6.10. Zachování poměru stran
7. Enkódování s MEncoderem
7.1. Vytvoření MPEG-4 ("DivX") ripu DVD filmu ve vysoké kvalitě
7.1.1. Příprava na enkódování: Určení zdrojového materiálu a datového toku
7.1.1.1. Zjištění snímkové rychlosti zdroje
7.1.1.2. Určení zdrojového materiálu
7.1.2. Pevný kvantizer vs. více průchodů
7.1.3. Omezení pro efektivní enkódování
7.1.4. Ořezávání a škálování
7.1.5. Volba rozlišení a datového toku
7.1.5.1. Výpočet rozlišení
7.1.6. Filtrování
7.1.7. Prokládání a Telecine
7.1.8. Enkódování prokládaného videa
7.1.9. Poznámky k Audio/Video synchronizaci
7.1.10. Výběr video kodeku
7.1.11. Zvuk
7.1.12. Muxování (multiplexování)
7.1.12.1. Zlepšování spolehlivosti muxování a A/V synchronizace
7.1.12.2. Limitace nosného formátu AVI
7.1.12.3. Muxování do nosného formátu Matroska
7.2. Jak naložit s telecine a prokladem v NTSC DVD
7.2.1. Představení
7.2.2. Jak zjistit o jaký typ videa se jedná
7.2.2.1. Progresivní (neprokládané)
7.2.2.2. Telecinováno (přepsáno pro NTSC televizi)
7.2.2.3. Prokládané
7.2.2.4. Smíšené progresivní a telecinované
7.2.2.5. Smíšené progresivní a prokládané
7.2.3. Jak enkódovat jednotlivé kategorie
7.2.3.1. Progresivní
7.2.3.2. Telecinované
7.2.3.3. Prokládané
7.2.3.4. Smíšené progresivní a telecinované
7.2.3.5. Smíšené progresivní a prokládané
7.2.4. Poznámky pod čarou
7.3. Enkódování s rodinou kodeků libavcodec
7.3.1. Video kodeky libavcodec
7.3.2. Audio kodeky libavcodec
7.3.2.1. Pomocná tabulka pro PCM/ADPCM formát
7.3.3. Enkódovací volby libavcodecu
7.3.4. Příklady nastavení enkódování
7.3.5. Uživatelské inter/intra matice
7.3.6. Příklad
7.4. Enkódování pomocí kodeku Xvid
7.4.1. Jaké volby by měly být použity, abychom dosáhli nejlepších výsledků?
7.4.2. Volby pro enkódování s Xvid
7.4.3. Enkódovací profily
7.4.4. Příklady nastavení enkódování
7.5. Enkódování x264 kodekem
7.5.1. Enkódovací volby x264
7.5.1.1. Úvodem
7.5.1.2. Volby které primárně ovlivňují rychlost a kvalitu
7.5.1.3. Volby náležející různým preferencím
7.5.2. Příklady nastavení enkódování
7.6. Enkódování rodinou kodeků Video For Windows
7.6.1. Podporované kodeky Video for Windows
7.6.2. Použití vfw2menc pro vytvoření souboru s nastavením kodeku.
7.7. Použití MEncoderu pro vytvoření QuickTime-kompatibilních souborů
7.7.1. Proč by někdo chtěl vytvářet QuickTime-kompatibilní soubory?
7.7.2. QuickTime 7 omezení
7.7.3. Ořez
7.7.4. Škálování
7.7.5. A/V synchronizace
7.7.6. Datový tok
7.7.7. Příklad enkódování
7.7.8. Přemuxování do MP4
7.7.9. Přidání stop s meta daty
7.8. Použití MEncoderu k vytváření VCD/SVCD/DVD-kompatibilních souborů.
7.8.1. Omezení Formátů
7.8.1.1. Omezení Formátů
7.8.1.2. Omezení velikosti GOP
7.8.1.3. Omezení datového toku
7.8.2. Výstupní volby
7.8.2.1. Poměr stran
7.8.2.2. Zachování A/V synchronizace
7.8.2.3. Převod vzorkovacího kmitočtu
7.8.3. Použití libavcodec pro enkódování VCD/SVCD/DVD
7.8.3.1. Úvodem
7.8.3.2. lavcopts
7.8.3.3. Příklady
7.8.3.4. Pokročilé volby
7.8.4. Enkódování zvuku
7.8.4.1. toolame
7.8.4.2. twolame
7.8.4.3. libavcodec
7.8.5. Spojení všeho dohromady
7.8.5.1. PAL DVD
7.8.5.2. NTSC DVD
7.8.5.3. PAL AVI obsahující AC–3 zvuk do DVD
7.8.5.4. NTSC AVI obsahující AC–3 zvuk do DVD
7.8.5.5. PAL SVCD
7.8.5.6. NTSC SVCD
7.8.5.7. PAL VCD
7.8.5.8. NTSC VCD
8. Často Kladené Dotazy (FAQ)
A. Jak hlásit chyby
A.1. Hlášení bezpečnostních chyb
A.2. Jak napravovat chyby
A.3. Jak provádět regresní testování pomocí Subversion
A.4. Jak oznamovat chyby
A.5. Kam hlásit chyby
A.6. Co nahlásit
A.6.1. Systémové informace
A.6.2. Hardware a rozhraní (ovladače)
A.6.3. Problémy s konfigurací
A.6.4. Problémy s kompilací
A.6.5. Problémy s přehráváním
A.6.6. Pády
A.6.6.1. Jak uchovat informace o zopakovatelném pádu
A.6.6.2. Jak získat smysluplné informace z core dump
A.7. Vím co dělám...
B. Formát skinů MPlayeru
B.1. Přehled
B.1.1. Adresáře
B.1.2. Formáty obrázků
B.1.3. Součásti skinu
B.1.4. Soubory
B.2. Soubor skin
B.2.1. Hlavní okno a ovládací panel
B.2.2. Ovládací panel
B.2.3. Nabídka
B.3. Fonty
B.3.1. Symboly
B.4. GUI zprávy
B.5. Tvorba kvalitních skinů

Jak číst tuto dokumentaci

Pokud instalujete poprvé: měli byste si přečíst celou dokumentaci odtud až do konce kapitoly Instalace a následovat linky, které naleznete. Pokud máte jiné dotazy, vraťte se zpět na Obsah a vyhledejte si příslušnou část. Přečtěte si FAQ, nebo zkuste grep na souborech. Odpovědi na většinu otázek by měly být někde tady, zbytek byl pravděpodobně probrán v některé z našich e-mailových konferencí.

Kapitola 1. Představení

MPlayer je multimediální přehrávač pro Linux (běží na mnoha jiných Unixech a ne-x86 CPU, viz Ports). Přehraje většinu MPEG, VOB, AVI, OGG/OGM, VIVO, ASF/WMA/WMV, QT/MOV/MP4, FLI, RM, NuppelVideo, yuv4mpeg, FILM, RoQ, PVA, Matroska souborů s podporou mnoha nativních XAnim, RealPlayer a Win32 DLL kodeků. Můžete sledovat VideoCD, SVCD, DVD, 3ivx, RealMedia, Sorenson, Theora a také MPEG-4 (DivX) filmy. Další skvělou vlastností MPlayeru je velké množství podporovaných výstupních rozhraní. Pracuje s X11, Xv, DGA, OpenGL, SVGAlib, fbdev, AAlib, libcaca, DirectFB, rovněž můžete použít GGI a SDL (a takto i jejich ovladače) a také některé nízkoúrovňové ovladače konkrétních karet (pro Matrox, 3Dfx a Radeon, Mach64, Permedia3)! Většina z nich podporuje softwarové nebo hardwarové škálování (změna velikosti obrazu), takže si můžete užít video na celé obrazovce. MPlayer podporuje zobrazování přes některé hardwarové MPEG dekódovací karty, jako je DVB a DXR3/Hollywood+. A což teprve velké krásné vyhlazené a stínované titulky (14 podporovaných typů) spolu s Evropskými/ISO 8859-1,2 (Bulharskými, Anglickými, Českými, atd), Cyrilickými a Korejskými fonty a displej na obrazovce (OSD)?

Přehrávač je pevný jako skála při přehrávání poškozených MPEG souborů (použitelné pro některá VCD), také přehrává špatné AVI soubory, které nelze přehrávat ani věhlasným windows media playerem. Dokonce lze přehrávat i AVI bez indexu a navíc můžete jejich indexy dočasně obnovit pomocí volby -idx, nebo trvale pomocí MEncoderu, což umožní převíjení! Jak vidíte, kvalita a stabilita jsou těmi nejdůležitějšími vlastnostmi, rychlost je ovšem také skvělá. Rovněž máme účinný systém filtrů pro manipulaci s videem i se zvukem.

MEncoder (MPlayerův Filmový Enkodér) je jednoduchý filmový enkodér, navržený k enkódování MPlayerem přehrávatelných filmů (AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA) do jiných MPlayerem přehrávatelných formátů (viz níže). Může enkódovat různými kodeky, třeba MPEG-4 (DivX4) (jedním nebo dvěma průchody), libavcodec, PCM/MP3/VBR MP3 audia.

Vlastnosti MEncoderu

  • Enkódování ze široké řady formátů souboru a dekodérů MPlayeru

  • Enkódování pomocí všech FFmpeg libavcodec kodeků

  • Video enkódování z V4L kompatibilních TV tunerů

  • Enkódování/multiplexování do prokládaných AVI souborů se správným indexem

  • Tvorba souborů z externího audio proudu

  • 1, 2 nebo 3 průchodové enkódování

  • VBR MP3 zvuk

    Důležité

    VBR MP3 zvuk není vždy přehráván dobře přehrávači pro windows!

  • PCM zvuk

  • Kopírování datového proudu

  • Vstupní A/V synchronizace (založená na PTS, lze ji vypnout pomocí volby -mc 0)

  • Korekce snímkové rychlosti pomocí volby -ofps (užitečné při enkódování 30000/1001 fps VOB do 24000/1001 fps AVI)

  • Používá výkonný systém filtrů (ořez, expanze, postproces, rotace, škálování (změna velikosti), konverze rgb/yuv)

  • Umí enkódovat DVD/VOBsub A textové titulky do výstupního souboru

  • Umí ripovat DVD titulky do VOBsub formátu

MPlayer a MEncoder mohou být distribuovány za podmínek stanovených v GNU General Public License Version 2.

Kapitola 2. Instalace

Jednoduchý návod na instalaci naleznete v souboru README. Přečtěte si nejprve tento soubor a poté se vraťte zde pro další podrobnosti.

V této části vás provedeme procesem kompilace a konfigurace programu MPlayer. Není to snadné, ale nemusí to být nutně těžké. Pokud zaznamenáte rozdílné chování, než zde popisuji, prostudujte si prosím tuto dokumentaci a naleznete své odpovědi.

2.1. Softwarové požadavky

  • binutils – doporučená verze je 2.11.x.

  • gcc – doporučené verze jsou 2.95 a 3.4+. 2.96 a 3.0.x jsou známy generováním vadného kódu, 3.1 a 3.2 měly rovněž problémy, 3.3 jen okrajově. Na PowerPC použijte 4.x.

  • Xorg/XFree86 – doporučená verze je 4.3 a vyšší. Ujistěte se, že máte nainstalovány vývojové (dev) balíčky, jinak to nebude pracovat. Ne vždy potřebujete X, některá výstupní video rozhraní pracují i bez nich.

  • make – doporučená verze je 3.79.x nebo vyšší. Pro sestavení XML dokumentace potřebujete 3.80.

  • FreeType – vyžaduje se aspoň verze 2.0.9 pro OSD a titulky.

  • ALSA – volitelnmá, pro podporu zvukového výstupu do ALSA. Vyžaduje se aspoň verze 0.9.0rc4.

  • libjpeg – vyžadována pro volitelné JPEG video výstupní rozhraní

  • libpng – vyžadována pro volitelné PNG video výstupní rozhraní

  • directfb – volitelný, 0.9.13 nebo pozdější vyžadovaný pro directfb video výstupní rozhraní

  • lame – doporučená verze 3.90 a vyšší, vyžadovaný pro enkódování MP3 zvuku v MEncoderu.

  • zlib – doporučená, nutná pro komprimovanou MOV hlavičku a podporu PNG.

  • LIVE555 Streaming Media – volitelná, nutná pro přehrávání RTSP/RTP datových proudů.

  • cdparanoia – volitelná, pro podporu CDDA

  • libxmms – volitelná, pro podporu XMMS vstupního pluginu. Vyžadujeme aspoň 1.2.7.

  • libsmb – volitelná, pro podporu SMB sítí.

2.2. Vlastnosti

  • Rozhodněte se zda potřebujete GUI. Pokud ano, přečtěte si před kompilací sekci GUI.

  • Pokud chcete nainstalovat MEncoder (náš skvělý všestranný enkodér), přečtěte si sekci MEncoder.

  • Pokud máte V4L kompatibilní TV tuner kartu, a přejete si sledovat/grabovat filmy MPlayerem, přečtěte si sekci TV vstup.

  • Pokud máte V4L kompatibilní radio tuner kartu a přejete si poslouchat nebo zachytávat zvuk MPlayerem, přečtěte si sekci radio.

  • Připravena k použití je podpora pěkného OSD Menu. Přečtěte si sekci OSD menu.

Pak přeložte MPlayer:

./configure
make
make install

V tuto chvíli máte MPlayer připraven k použití. Ověřte si, zda nemáte soubor codecs.conf v domovském adresáři (~/.mplayer/codecs.conf) ze staré verze MPlayeru. Pokud jej najdete, odstraňte ho.

Uživatelé Debianu si mohou vyrobit .deb balíček, je to velmi jednoduché. Jen spusťte binárku

fakeroot debian/rules

v MPlayerově kořenovém adresáři. Podrobnosti viz Balíčkování Debianu.

Vždy si prostudujte výstup skriptu ./configure, a soubor config.log, které obsahují informace o tom co bude zakompilováno a co ne. Také můžete chtít vidět soubory config.h a config.mak. Pokud máte některé knihovny nainstalovány, ale nebyly detekovány skriptem ./configure, pak ověřte, zda máte příslušné hlavičkové soubory (obvykle -dev balíčky) a jejich verze jsou shodné. Soubor config.log vám obvykle prozradí co vám chybí.

Ačkoli to není podmínkou, měli byste mít nainstalovány fonty pro funkci OSD a zobrazování titulků. Doporučujeme nainstalovat soubor fontu TTF a nařídit MPlayeru jej používat. Detaily viz sekce Titulky a OSD.

2.3. Chtěli byste GUI?

GUI potřebuje GTK 1.2.x nebo GTK 2.0 (není plně GTK, ale panely jsou). Skiny jsou uloženy v PNG formátu, takže GTK, libpng (a jejich příslušenství, obvykle nazývané gtk-dev a libpng-dev) musí být nainstalovány. Můžete jej zakompilovat předáním volby --enable-gui skriptu ./configure. Aktivaci GUI režimu pak provedete spuštěním binárky gmplayer.

Protože MPlayer nemá přibalen žádný skin, budete si muset nějaký stáhnout abyste mohli používat GUI. Viz naši download stránku. Skiny by měly být rozbaleny do obvyklého systémového adresáře ($PREFIX/share/mplayer/skins), nebo do $HOME/.mplayer/skins. MPlayer ve výchozím stavu hledá v těchto adresářích podadresář jménem default, ale můžete použít volbu -skin nový_skin nebo direktivu skin=nový_skin konfiguračního souboru pro použití skinu v adresáři */skins/nový_skin.

2.4. Fonty a OSD

Abyste si mohli užívat OSD a titulků, musíte MPlayeru sdělit, který font má použít. Může to být jakýkoli TrueType font, nebo speciální bitmapový font. TrueType však doporučujeme, jelikož vypadají lépe, mohou být vhodně škálovány na rozměr filmu a lépe si poradí s různými znakovými sadami.

2.4.1. TrueType fonty

Existují dva způsoby, jak zprovoznit TrueType fonty. První je použít volbu -font pro volbu TrueType fontu z příkazového řádku. Tato volba bude dobrým kandidátem pro umístění do konfiguračního souboru (detaily viz manuál). Druhá je vytvoření symlinku s názvem subfont.ttf na soubor s vámi vybraným fontem. Buď

ln -s /cesta/k/sample_font.ttf ~/.mplayer/subfont.ttf

pro každého uživatele zvlášť, nebo systémový:

ln -s /cesta/k/sample_font.ttf $PREFIX/share/mplayer/subfont.ttf

Pokud byl MPlayer kompilován s podporou fontconfig, výše uvedené nebude fungovat, místo toho -font očekává fontconfig název fontu a jako výchozí bere bezpatkový font. Příklad:

mplayer -font 'Bitstream Vera Sans' anime.mkv

Seznam fontů známých fontconfigu, získáte pomocí fc-list.

2.4.2. bitmapové fonty

Pokud se z nějakého důvodu rozhodnete nebo potřebujete použít bitmapové fonty, stáhněte si sadu z našich stránek. Můžete si vybrat mezi různými ISO fonty a několika sadami fontů zaslaných uživateli v různých znakových sadách.

Rozbalte stažený archiv do ~/.mplayer nebo $PREFIX/share/mplayer. Pak přejmenujte nebo slinkujte jeden z rozbalených adresářů na font, například:

ln -s ~/.mplayer/arial-24 ~/.mplayer/font

ln -s $PREFIX/share/mplayer/arial-24 $PREFIX/share/mplayer/font

Fonty by měly mít vhodný font.desc soubor, který mapuje unicode pozice ve fontu na aktuální znakovou sadu textu titulků. Dalším řešením je mít titulky kódované v UTF-8 a použít volbu -utf8, nebo pojmenujte soubor s titulky stejně jako film a dejte mu příponu .utf a umístěte jej do adresáře s filmem.

2.4.3. OSD menu

MPlayer má plně uživatelsky definovatelné rozhraní OSD Menu (nabídka na obrazovce).

Poznámka

Menu Preferences NENÍ v současnosti IMPLEMENTOVÁNO!

Instalace

  1. zkompilujte MPlayer s volbou --enable-menu předanou do ./configure

  2. ujistěte se že máte nainstalován OSD font

  3. zkopírujte etc/menu.conf do svého .mplayer adresáře

  4. zkopírujte etc/menu.conf do svého .mplayer adresáře, nebo do systémového MPlayer konfiguračního adresáře (výchozí: /usr/local/etc/mplayer)

  5. zkontrolujte a upravte input.conf, abyste zapnuli klávesy pro pohyb v menu (to je popsáno zde).

  6. spusťte MPlayer podle následujícího příkladu:

    mplayer -menu file.avi

  7. stiskněte některou z kláves, kterou jste definovali

2.5. Codec installation

2.5.1. Xvid

Xvid je free software MPEG-4 ASP kompatibilní video kodec, jenž má podporu pro dvouprůchodové enkódování a plně podporuje MPEG-4 ASP. Poznamenejme, že Xvid není nutný pro dekódování Xvidem enkódovaného videa. Jako výchozí je používán libavcodec, jelikož poskytuje vyšší rychlost.

Instalace Xvid

Stejně jako většina svobodného software je dostupný ve dvou verzích: oficiálně uvolněné verzi a verzi CVS. V současnosti je CVS verze obvykle dostatečně stabilní pro použití, jelikož většinou obsahuje opravy chyb, které zůstaly po vydání. Zde uvádíme postup pro zprovoznění Xvid CVS v MEncoder:

  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

    Zde můžete přidat nějaké volby (prostudujte si výstup příkazu ./configure --help).

  6. make && make install

  7. Znovu zkompilujte MPlayer s volbami.

2.5.2. x264

x264 is a library for creating H.264 video. MPlayer sources are updated whenever an x264 API change occurs, so it is always suggested to use MPlayer from Subversion.

If you have a GIT client installed, the latest x264 sources can be gotten with this command:

git clone git://git.videolan.org/x264.git

Then build and install in the standard way:

./configure && make && make install

Now rerun ./configure for MPlayer to pick up x264 support.

2.5.3. AMR kodeky

Adaptivní Multi-Rate kodek pro mluvené slovo je používán třetí generací (3G) mobilních telefonů. Referenční implementace je dostupná od The 3rd Generation Partnership Project (zdarma pro osobní použití). Pro zapnutí podpory si stáhněte podpůrné knihovny pro AMR-NB a AMR-WB a následujte instrukce na stránce. Potom znovu zkompilujte MPlayer.

2.6. RTC

V MPlayer jsou zabudovány tři metody časování.

  • Abyste použili starou metodu, nemusíte dělat vůbec nic. Ta používá usleep() pro hlídání A/V synchronizace s přesností +/- 10ms. Ačkoli někdy může být synchronizace hlídána ještě jemněji.

  • Kód nového časovače používá pro tento účel RTC (hodiny reálného času), protože mají přesné 1ms časovače. Volba -rtc to zapíná, je však nutné vhodně nastavené jádro. Pokud používáte jádro 2.4.19pre8 nebo pozdější, můžete nastavit maximální RTC kmitočet pro normální uživatele pomocí systému souborů /proc . Použijte jeden z těchto dvou příkazů pro zapnutí RTC pro obyčejné uživatele:

    echo 1024 > /proc/sys/dev/rtc/max-user-freq

    sysctl dev/rtc/max-user-freq=1024

    Můžete tuto volbu učinit trvalou přidáním druhého příkazu do /etc/sysctl.conf.

    Efektivitu nového časovače uvidíte na stavovém řádku. Funkce power managementu některých notebookových BIOSů s speedstep procesory špatně komunikují s RTC. Audio a video se mohou rozejít. Zdá se že pomáhá připojení vnějšího napájení před zapnutím notebooku. V některých hardwarových kombinacích (zjištěno během používání ne-DMA DVD mechaniky na ALi1541 boardu) způsobuje použití RTC časování trhavé přehrávání. Pak doporučujeme použít třetí metodu.

  • Třetí kód časovače se zapíná volbou -softsleep. Je stejně efektní jako RTC, ale nepoužívá RTC. Na druhou stranu více zatěžuje CPU.

Kapitola 3. Použití

3.1. Příkazový řádek

MPlayer využívá komplexní strukturu voleb. Ta sestává z globálních voleb uváděných jako první, například:

mplayer -vfm 5

a voleb zapisovaných za jménem souboru, které se projeví pouze u tohoto jména souboru/URL/čehokoli, například:

mplayer -vfm 5 film1.avi film2.avi -vfm 4

Můžete seskupovat jména souborů/adresy URL pomocí { a }. Toho se dá využít s volbou -loop:

mplayer { 1.avi -loop 2 2.avi } -loop 3

Výše uvedený příkaz přehraje soubory v tomto pořadí: 1, 1, 2, 1, 1, 2, 1, 1, 2.

Přehrávání souboru:

mplayer [volby] [cesta/]soubor

Jiný způsob přehrání souboru:

mplayer [volby] file:///uri-eskejpovaná-cesta-k-souboru

Přehrávání více souborů:

mplayer [výchozí volby] [cesta/]soubor1 [volby pro soubor1] soubor2 [volby pro soubor2] ...

Přehrávání VCD:

mplayer [volby] vcd://číslo_stopy [-cdrom-device /dev/cdrom]

Přehrávání DVD:

mplayer [volby] dvd://číslo_titulu [-dvd-device /dev/dvd]

Přehrávání z WWW:

mplayer [volby] http://doména.com/soubor.asf

(rovněž lze použít playlisty)

Přehrávání z RTSP:

mplayer [volby] rtsp://server.priklad.com/JmenoProudu

Příklady:

mplayer -vo x11 /mnt/Filmy/Kontakt/kontakt2.mpg
mplayer vcd://2 -cdrom-device /dev/hdc
mplayer -afm 3 /mnt/DVDtrailery/alien4.vob
mplayer dvd://1 -dvd-device /dev/hdc
mplayer -abs 65536 -delay -0.4 -nobps ~/filmy/test.avi

3.2. Titulky a OSD

MPlayer umí zobrazovat titulky spolu s filmem. V současnosti podporuje tyto formáty:

  • VOBsub

  • OGM

  • CC (closed caption)

  • MicroDVD

  • SubRip

  • SubViewer

  • Sami

  • VPlayer

  • RT

  • SSA

  • PJS (Phoenix Japanimation Society)

  • MPsub

  • AQTitle

  • JACOsub

MPlayer umí vyextrahovat výše uvedené formáty titulků (s výjimkou prvních třech) do následujících cílových formátů zadáním příslušných voleb:

  • MPsub: -dumpmpsub

  • SubRip: -dumpsrtsub

  • MicroDVD: -dumpmicrodvdsub

  • JACOsub: -dumpjacosub

  • Sami: -dumpsami

MEncoder umí vyextrahovat DVD titulky do formátu VOBsub.

Volby příkazového řádku se pro různé formáty mírně liší:

VOBsub titulky.  VOBsub titulky se skládají z velkého (řádově megabajty) .SUB souboru a volitelného .IDX a/nebo .IFO souboru. Pokud máte soubory jako sample.sub, sample.ifo (volitelný), sample.idx – musíte předat MPlayeru volby -vobsub sample [-vobsubid id] (volitelně s plnou cestou). Volba -vobsubid je jako -sid pro DVD, můžete jí vybírat mezi titulkovými stopami (jazyky). Je-li -vobsubid vynechána, pak se MPlayer pokusí použít jazyky zadané volbou -slang a při selhání použije langidx v .IDX souboru. Pokud selže i zde, nebudou titulky.

Ostatní titulky.  Ostatní formáty tvoří jediný textový soubor obsahující časování, umístění a textovou část. Použití: máte-li soubor jako sample.txt, musíte předat volbu -sub sample.txt (volitelně s plnou cestou).

Úpravy časování a umístění titulků:

-subdelay sec

Opozdí titulky o sec sekund. Může být i záporné. Hodnota je přidána k čítači pozice ve filmu.

-subfps RYCHLOST

Nastavuje rychlost ve snímcích/sek titulkového souboru (desetinné číslo).

-subpos 0-100

Nastavuje pozici titulků.

Pokud se vám zvětšuje rozdíl mezi filmem a titulky, při použití titulkového souboru formátu MicroDVD, nejspíš se snímková rychlost titulků a filmu liší. Poznamenejme, že MicroDVD formát používá pro časování absolutní čísla snímků, ale není v něm informace o snímkové rychlosti, a proto byste měli s tímto formátem používat volbu -subfps. Chcete-li tento problém vyřešit trvale, musíte manuálně převést snímkovou rychlost souboru s titulky. MPlayer může převod udělat za vás:

mplayer -dumpmicrodvdsub -fps fps_titulků -subfps avi_fps \
    -sub soubor_s_titulky dummy.avi

O DVD titulcích si přečtěte v sekci DVD.

3.3. Ovládání

MPlayer má plně konfigurovatelnou, příkazy řízenou, ovládací vrstvu, která vám umožní ovládat MPlayer pomocí klávesnice, myši, joysticku nebo dálkového ovládače (používající LIRC). Úplný seznam ovládacích prvků na klávesnici naleznete v man stránce.

3.3.1. Konfigurace ovládání

MPlayer umožňuje přiřadit jakoukoli klávesu jakémukoli příkazu MPlayeru pomocí jednoduchého konfiguračního souboru. Syntaxe sestává z názvu klávesy následovaného příkazem. Výchozí umístění konfiguračního souboru je $HOME/.mplayer/input.conf ale můžete jej potlačit použitím volby -input konfig (relativní cesty jsou vztaženy k $HOME/.mplayer).

Úplný seznam podporovaných jmen kláves dostanete příkazem mplayer -input keylist a úplný seznam dostupných příkazů příkazem mplayer -input cmdlist.

Příklad 3.1. Jednoduchý vstupní ovládací soubor

##
## Vstupní soubor ovládání MPlayeru
##

RIGHT seek +10
LEFT seek -10
- audio_delay 0.100
+ audio_delay -0.100
q quit
> pt_step 1
< pt_step -1
ENTER pt_step 1 1

3.3.2. Ovládání z LIRC

Linux Infrared Remote Control – použijte jednoduše vyrobitelný doma udělaný IR-přijímač, (téměř) libovolný dálkový ovládač a ovládejte jím svůj Linux! Více se o tom dovíte na domácí stránce LIRC.

Pokud máte nainstalován balíček LIRC, configure jej zdetekuje. Pokud vše dopadne dobře, MPlayer při startu vypíše "Nastavuji podporu LIRC...". Pokud dojde k chybě, oznámí vám to. Pokud nevypíše žádnou zprávu o LIRC, pak pro něj není podpora zakompilována. To je vše :-)

Jméno spustitelného souboru MPlayeru je - překvapení - mplayer. Můžete použít jakýkoli příkaz MPlayeru a dokonce i více než jeden, pokud je oddělíte znakem \n. Nezapomeňte zapnout opakovací (repeat) příznak v .lircrc tam, kde to dává smysl (vyhledávání, hlasitost, atd.). Zde je výňatek z demonstračního .lircrc:

begin
     button = VOLUME_PLUS
     prog = mplayer
     config = volume 1
     repeat = 1
end

begin
    button = VOLUME_MINUS
    prog = mplayer
    config = volume -1
    repeat = 1
end

begin
    button = CD_PLAY
    prog = mplayer
    config = pause
end

begin
    button = CD_STOP
    prog = mplayer
    config = seek 0 1\npause
end

Pokud se vám nelíbí standardní umístění lirc-config souboru (~/.lircrc) použijte volbu -lircconf soubor k určení jiného souboru.

3.3.3. Závislý režim

Závislý režim vám umožňuje vytvořit jednoduché ovládací panely (frontendy) MPlayeru. Pokud je MPlayer spuštěn s volbou -slave, pak bude číst příkazy oddělené novým řádkem (\n) ze standardního vstupu. Příkazy jsou dokumentovány v souboru slave.txt.

3.4. Přehrávání datových proudů ze sítě nebo rour

MPlayer umí přehrávat soubory ze sítě s použitím protokolu HTTP, FTP, MMS nebo RTSP/RTP.

Přehrávání pracuje jednoduše tak, že uvedete URL na příkazovém řádku. MPlayer ctí systémovou proměnnou http_proxy a použije proxy pokud je k dispozici. Proxy může být rovněž vynucena:

mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf

MPlayer umí číst ze std. vstupu (ne z pojmenovaných rour). To může být například použito pro přehrávání z FTP:

wget ftp://micorsops.com/something.avi -O - | mplayer -

Poznámka

Také doporučujeme zapnout -cache při přehrávání ze sítě:

wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -

3.4.1. Uložení proudového obsahu

Jakmile jste přiměli MPlayer přehrát váš oblíbený internetový proud, můžete použít volbu -dumpstream k uložení datového proudu do souboru. For example:

mplayer http://217.71.208.37:8006 -dumpstream -dumpfile proud.asf

uloží proudové video z http://217.71.208.37:8006 do proud.asf. Pracovat to bude se všemi MPlayerem podporovanými protokoly, jako MMS, RTSP, a tak dále.

3.5. CD/DVD mechaniky

Moderní CD-ROM mechaniky dosahují velmi vysokých otáček a některé z nich mohou pracovat i se sníženými otáčkami. Existuje několik důvodů, pro které byste mohli chtít změnit rychlost CD-ROM mechaniky:

  • Byly zprávy o chybách čtení při vysokých rychlostech, zvláště u špatně vylisovaných CD-ROMů. Z těchto důvodů může snížení rychlosti působit jako prevence ztráty dat.

  • Mnoho CD-ROM mechanik je nechutně hlučných, nižší rychlost může omezit tento hluk.

3.5.1. Linux

Můžete snížit rychlost IDE CD-ROM mechanik pomocí hdparm, setcd nebo cdctl. Pracuje to asi takto:

hdparm -E [rychlost] [mechanika cdrom]

setcd -x [rychlost] [mechanika cdrom]

cdctl -bS [rychlost]

Pokud používáte SCSI emulaci, budete muset předat tato nastavení do skutečného IDE zařízení, nikoli emulovaného SCSI zařízení.

Pokud máte práva root-a, následující příkaz vám rovněž může pomoci:

echo file_readahead:2000000 > /proc/ide/[mechanika cdrom]/settings

To nastaví čtení napřed na 2MB, což pomůže při poškrábaných médiích. Pokud ji však nastavíte příliš vysoko, bude mechanika stále zrychlovat a zpomalovat, což výrazně sníží její výkon. Doporučujeme vám rovněž vyladit vaši CD-ROM mechaniku pomocí hdparm:

hdparm -d1 -a8 -u1 [cdrom zařízení]

To zapne DMA přístup, čtení napřed a odmaskování IRQ (přečtěte si man stránku programu hdparm pro podrobné vysvětlení).

Prostudujte si „/proc/ide/(cdrom zařízení)/settings“ pro jemné doladění vaší CD-ROM.

SCSI mechaniky nemají jednotný způsob pro nastavení těchto parametrů (Znáte nějaký? Řekněte nám jej!). Existuje nástroj, který pracuje se SCSI mechanikami Plextor.

3.5.2. FreeBSD

rychlost:

cdcontrol [-f zařízení] speed [rychlost]

DMA:

sysctl hw.ata.atapi_dma=1

3.6. Přehrávání DVD

Úplný seznam dostupných voleb naleznete v man stránce. Syntaxe pro přehrání standardního DVD je následující:

mplayer dvd://<track> [-dvd-device <DVD_zařízení>]

Příklad:

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

Pokud jste kompilovali MPlayer s podporou dvdnav, je syntaxe stejná až na to, že musíte používat dvdnav:// místo dvd://.

Výchozím DVD zařízením je /dev/dvd. Pokud se vaše nastavení liší, vytvořte symlink, nebo uveďte správné zařízení na příkazovém řádku pomocí volby -dvd-device.

MPlayer používá libdvdread a libdvdcss pro přehrávání a dekódování DVD. Tyto dvě knihovny jsou obsaženy ve zdrojových kódech MPlayeru, nemusíte je tedy instalovat zvlášť. Můžete rovněž použít systémové verze těchto knihoven, ale toto řešení nedoporučujeme, protože může vést k chybám, nekompatibilitě knihovny a nižší rychlosti.

Poznámka

V případě problémů s dekódováním DVD, zkuste vypnout supermount a podobná udělátka. Některé RPC-2 mechaniky mohou rovněž vyžadovat nastavení region kódu.

Dekódování DVD.  Dekódování DVD provádí libdvdcss. Metodu můžete zvolit pomocí proměnné prostředí DVDCSS_METHOD, detaIly viz manuálová stránka.

3.6.1. Kód regionu

DVD mechaniky v současnosti přicházejí s nesmyslným omezením nazvaným kód regionu. To je způsob jak přinutit DVD mechaniku akceptovat pouze DVD vyrobené pro jeden ze šesti různých regionů na které byl rozdělen svět. Jak si může skupina lidí zasednout ke kulatému stolu, přijít s takovým nápadem a čekat, že se svět 21. století skloní před jejich vůlí je naprosto nepochopitelné

Mechaniky, které vynucují nastavení regionu poze softwarově jsou známy také jako RPC-1 a ty, které to dělají v hardware jako RPC-2. Mechaniky RPC-2 umožňují změnu kódu regionu pětkrát a pak zůstane pevný. V Linuxu můžete použít nástroj regionset pro nastavení kódu regionu vaší DVD mechaniky.

Naštěstí je možné konvertovat RPC-2 mechaniky na RPC-1 pomocí upgrade firmware. Vyplňte modelové číslo vaší DVD mechaniky do svého oblíbeného vyhledávače, nebo se podívejte do fóra a sekce download „Firmware stránek“. Ačkoli platí obvyklé „kazy“ upgradů fimware, zkušenosti se zbavením se vynucování region kódů jsou obecně kladné.

3.7. Přehrávání VCD

Úplný seznam dostupných voleb naleznete v man stránce. Syntaxe pro standardní Video CD (VCD) je následující:

mplayer vcd://<stopa> [-cdrom-device <zařízení>]

Příklad:

mplayer vcd://2 -cdrom-device /dev/hdc

Výchozím VCD zařízením je /dev/cdrom. Pokud se vaše nastavení liší, vytvořte symlink nebo uveďte správné zařízení na příkazovém řádku pomocí volby -cdrom-device.

Poznámka

Minimálně SCSI CD-ROM mechaniky Plextor a Toshiba vykazují mizerný výkon při čtení VCD. To proto, že CDROMREADRAW ioctl není pro tyto mechaniky plně implementováno. Pokud máte zkušenosti se SCSI programováním, prosíme pomozte nám implementovat obecnou SCSI podporu pro VCD.

Mezitím můžete extrahovat data z VCD pomocí readvcd a výsledný soubor přehrát v MPlayeru.

Struktura VCD.  Video CD (VCD) je tvořeno CD-ROM XA sektory, čili stopy CD-ROM mode 2 třída 1 a 2:

  • První stopa je ve formátu mode 2 třída 2 což znamená, že používá L2 korekci chyb. Stopa obsahuje souborový systém ISO-9660 s 2048 bajty/sektor. Tento souborový systém obsahuje VCD metadata informace, spolu se statickými snímky často používanými v menu. MPEG segmenty menu mohou být rovněž uloženy v této první stopě, ale tyto MPEGy musí být rozsekány na série 150 sektorových chunků. Souborový systém ISO-9660 může obsahovat další soubory, které nejsou potřeba pro operace s VCD.

  • Druhá a ostatní stopy jsou všeobecně surovými MPEG (film) stopami s 2324 bajty/sektor, obsahující jeden MPEG PS datový paket na sektor. Ty jsou v mode 2 třída 1 formátu, takže obsahují více dat v každém sektoru za cenu omezení korekce chyb. Je rovněž možné mít CD-DA stopy na VCD za první stopou. V některých operačních systémech jsou triky, které umožňují zpřístupnit tyto ne-ISO-9660 stopy v systému souborů. V dalších operačních systémech jako GNU/Linux to není možné (zatím). Zde MPEG data nemohou být připojena. Protože většina filmů je uložena uvnitř tohoto druhu stopy, měli byste nejprve zkusit vcd://2.

  • Existují také VCD disky bez první stopy (jediná stopa bez systému souborů). Můžete je přehrát, ale nemohou být namountovány.

  • Definice standardu Video CD se nazývá Philips „White Book“ a není obecně přístupná online, ale musí být zakoupena od Philipsu. Podrobnější informace o Video CD můžete nalézt v dokumentaci programu vcdimager.

Pár slov o .DAT souborech.  Soubor veliký ~600 MB viditelný v první stopě připojeného VCD není skutečným souborem! Je to takzvaná ISO gateway, vytvořená proto, aby mohl Windows přistupovat k těmto stopám (Windows vůbec neumožňuje aplikacím surový přístup k zařízení). Pod Linuxem nemůžete kopírovat nebo přehrávat tyto soubory (obsahují jen nesmysly). Pod Windows je to možné, protože jeho iso9660 ovladač emuluje surový přístup ke stopě v tomto souboru. Abyste mohli přehrát .DAT soubor, potřebujete ovladač kernelu který můžete nalézt v Linuxové verzi PowerDVD. Obsahuje upravený ovladač systému souborů iso9660 (vcdfs/isofs-2.4.X.o), který umí emulovat surové stopy přes tento stínový .DAT soubor. Pokud připojíte disk s pomocí jejich ovladače, můžete kopírovat či dokonce přehrávat .DAT soubory MPlayerem. Ale nebude to fungovat se standardním iso9660 ovladačem z Linuxového kernelu! Místo toho použijte vcd://. Alternativou kopírování VCD je nový jaderný ovladač jménem cdfs (není součástí oficiálního jádra), který zobrazuje CD sekce jako obrazové soubory a program cdrdao, který bit-po-bitu grabuje/kopíruje CD.

3.8. Seznamy editačních zásahů (EDL)

Systém seznamů editačních zásahů (EDL) umožňuje automaticky vynechat nebo vypnout zvuk v částech videa při přehrávání, což je zajišťováno pro každý film zvláštním EDL konfiguračním souborem.

Toho se dá využít pro ty, kdo chtějí sledovat film v "rodinném" režimu. Můžete vystříhat veškeré násilí, nechutnosti, Jar-Jar Binkse .. z filmu podle svých vlastních osobních preferencí. Mimoto jsou zde i jiná využití, jako je automatické vystřihávání reklam z videa které sleduješ.

Formát EDL souboru je poměrně kostrbatý. Každý příkaz je na samostatném řádku a označuje co dělat (vystřihnout/ztišit) a kdy to dělat (pomocí ukazatelů v sekundách).

3.8.1. Použití EDL souboru

Vložte volbu -edl <soubor> při spouštění MPlayer, se jménem EDL souboru, který chcete použít na video.

3.8.2. Vytvoření EDL souboru

Současný formát EDL souboru je:

[počáteční sekunda] [koncová sekunda] [akce]

Kde jsou sekundy desetinnými čísly a akce je buď 0 pro vynechání nebo 1 pro vypnutí zvuku. Příklad:

5.3   7.1    0
15    16.7   1
420   422    0

To vynechá část videa mezi sekundami 5.3 a 7.1, pak vypne zvuk na 15 sekundě, zapne jej na 16.7 sekundy a vynechá část videa mezi sekundami 420 a 422. Tyto akce budou provedeny jakmile časovač přehrávání dosáhne hodnoty zadané v souboru.

Pro vytvoření EDL souboru se kterým budete moci začít, použijte volbu -edlout <soubor>. Během přehrávání jen stiskněte i pro označení začátku a konce bloku. Pro vyznačený čas bude do souboru zapsán odpovídající záznam. Můžete se pak vrátit a doladit vygenerovaný EDL soubor, stejně jako změnit výchozí akci, což je vystřižení vyznačených bloků.

3.9. Pokročilé audio

3.9.1. Surround/Vícekanálové přehrávání

3.9.1.1. DVD

Většina DVD a mnoho jiných souborů obsahuje surround zvuk. MPlayer podporuje přehrávání přehrávání surround, ale ve výchozím nastavení jej nezapíná, jelikož stereo vybavení je mnohem častější. Pro přehrávání souboru, který má více než dvoukanálový zvuk použijte volbu -channels. Například pro přehrání DVD s 5.1 zvukem:

mplayer dvd://1 -channels 6

Poznamenejme, že ačkoli se jmenuje "5.1", ve skutečnosti má šest kanálů. Pokud máte surround zvukové vybavení, můžete si přidat volbu channels do svého konfiguračního souboru MPlayeru ~/.mplayer/config. Například pro použití čtyřkanálového přehrávání zvuku jako výchozí, přidejte následující řádek:

channels=4

MPlayer pak poskytuje zvuk ve čtyřech kanálech, pokud jsou všechny čtyři kanály k dispozici.

3.9.1.2. Přehrávání stereo souborů do čtyřech reproduktorů

MPlayer ve výchozím nastavení neduplikuje žádné kanály a nedělá to ani většina audio ovladačů. Pokud to chcete udělat ručně:

mplayer soubor -af channels=2:2:0:1:0:0

Vysvětlení naleznete v sekci kopírování kanálů.

3.9.1.3. AC–3/DTS Passthrough

DVD mají obvykle surround zvuk enkódovaný ve formátu AC–3 (Dolby Digital) nebo DTS (Digital Theater System). Některá moderní zařízení jsou schopna dekódovat tyto formáty interně. MPlayer lze nakonfigurovat tak, aby přenesl zvuková data bez dekódování. To bude fungovat pouze pokud máte S/PDIF (Sony/Philips Digital Interface) jack ve zvukové kartě.

Pokud vaše zařízení umí dekódovat jak AC–3, tak DTS, můžete bezpečně zapnout passthrough pro oba formáty. Jinak zapněte passthrough pouze pro formát, který vaše zařízení podporuje.

Zapnutí passthrough z příkazového řádku:

  • Jen pro AC–3 použijte -ac hwac3

  • Jen pro DTS použijte -ac hwdts

  • Pro oba (AC–3 i DTS) použijte -afm hwac3

Zapnutí passthrough v konfiguračním souboru MPlayeru:

  • Jen pro AC–3 použijte ac=hwac3,

  • Jen pro DTS použijte ac=hwdts,

  • Pro oba (AC–3 i DTS) použijte afm=hwac3

Povšimněte si čárky (",") na konci ac=hwac3, a ac=hwdts,. To umožní MPlayeru použít normální kodek, když přehrávaný soubor nemá AC–3 nebo DTS zvuk. Volba afm=hwac3 nevyžaduje čárku; MPlayer se zařídí podle potřeby automaticky, pokud je zvolena rodina audio kodeků.

3.9.1.4. Maticově enkódovaný zvuk

***TODO***

Tato sekce musí být teprve napsaná a nemůže být dokončena dokud nám někdo nepošle vzorkové soubory pro testování. Pokud máte nějaké maticově enkódované zvukové soubory, víte, kde je lze najít, nebo máte jakoukoli informaci, která by mohla pomoci, pošlete prosím zprávu do konference MPlayer-DOCS. Do předmětu vložte "[matrix-encoded audio]".

Pokud nepřijdou žádné soubory nebo informace, tato sekce bude odstraněna.

Dobré odkazy:

3.9.1.5. Surround emulace ve sluchátkách

MPlayer obsahuje HRTF (Head Related Transfer Function) filtr založený na projektu MIT, kde jsou měření vzata z mikrofonů na umělé lidské hlavě.

Ačkoli není možné přesně imitovat surround systém, MPlayerův HRTF filtr produkuje prostorově mnohem prokreslenější zvuk ve 2-kanálových sluchátkách. Obvyklé míchání jednoduše kombinuje všechny kanály do dvou; krom kombinace kanálů, hrtf generuje slabá echa, poněkud zvětšuje oddělení stereo kanálů a mění hlasitost některých kmitočtů. Jestli HRTF zní lépe může záviset na zdrojovém zvuku a osobním vkusu, ale určitě stojí za zkoušku.

Pro přehrání DVD s HRTF:

mplayer dvd://1 -channels 6 -af hrtf

hrtf pracuje dobře pouze s 5 nebo 6 kanály. hrtf také vyžaduje zvuk 48 kHz. DVD audio již je 48 kHz, ale pokud máte soubor s odlišným vzorkovacím kmitočtem, který chcete přehrávat pomocí hrtf, musíte jej převzorkovat:

mplayer soubor -channels 6 -af resample=48000,hrtf

3.9.1.6. Potíže

Pokud neslyšíte ze surround kanálů žádný zvuk, ověřte si nastavení směšovače pomocí programu jako je alsamixer; audio výstupy jsou často vypnuty a nastaveny na nulovou hlasitost jako výchozí.

3.9.2. Manipulace s kanály

3.9.2.1. Obecné informace

Naneštěstí neexistuje standard pro řazení kanálů. Následující řazení jsou používaná v AC–3 a jsou poměrně typická; zkuste je a uvidíte, zda tomu váš zdroj odpovídá. Kanály jsou číslovány od 0.

mono

  1. střed

stereo

  1. levý

  2. pravý

kvadrofonní

  1. levý čelní

  2. pravý čelní

  3. levý zadní

  4. pravý zadní

surround 4.0

  1. levý čelní

  2. pravý čelní

  3. středový zadní

  4. středový čelní

surround 5.0

  1. levý čelní

  2. pravý čelní

  3. levý zadní

  4. pravý zadní

  5. středový čelní

surround 5.1

  1. levý čelní

  2. pravý čelní

  3. levý zadní

  4. pravý zadní

  5. středový čelní

  6. subwoofer

Volba -channels se používá pro požadavek na počet kanálů z dekodéru zvuku. Některé audio kodeky používají počet zadaných kanálů pro rozhodování, zda je nutné podmixovat zdroj. Poznamenejme, že to ne vždy ovlivní počet výstupních kanálů. Například použití -channels 4 pro přehrání stereo MP3 souboru povede ke 2-kanálovému výstupu, jelikož MP3 kodek neprodukuje extra kanály.

Pro vytvoření nebo odstranění kanálů slouží zvukový filtr channels, který je rovněž vhodný k ovládání počtu zvukových kanálů posílaných do zvukové karty. Viz následující sekce pro více informací o manipulacích s kanály.

3.9.2.2. Přehrávání mono na dvou reproduktorech

Mono zní mnohem lépe, když je přehráván dvěma reproduktory – zvlášť při použití sluchátek. Audio soubory, které ve skutečnosti mají jeden kanál, jsou automaticky přehrávány dvěma reproduktory; naneštěstí je většina mono souborů ve skutečnosti enkódována jako stereo s jedním kanálem utlumeným. Nejjednodušší a nejblbuvzdornější způsob, jak přinutit oba reproduktory poskytovat stejný zvuk je filtr extrastereo:

mplayer soubor -af extrastereo=0

To zprůměruje oba kanály, takže budou mít poloviční hlasitost originálu. Další sekce přinášejí příklady dalších možností, jak to udělat bez snížení hlasitosti, ale ty jsou mnohem komplexnější a vyžadují odlišné volby v závislosti na tom, který kanál ponecháte. Pokud potřebujete jen upravit hlasitost, může být lehčí experimentovat s filtrem volume a najít vhodnou hodnotu. Například:

mplayer soubor -af extrastereo=0,volume=5

3.9.2.3. Kopírování/přesun kanálů

Filtr channels umí přesunout jakýkoli nebo všechny kanály. Nastavení všech parametrů filtru channels může být komplikované a vyžaduje pozornost.

  1. Rozhodněte, kolik výstupních kanálů potřebujete. To je první parametr.

  2. Spočítejte, kolik přesunů kanálů budete dělat. To je druhý parametr. Každý kanál může být přesunut naráz do několika různých kanálů, ale pamatujte, že pokud je kanál přesunut (dokonce i jen do jednoho cíle), bude zdrojový kanál prázdný dokud do něj nepřesunete jiný kanál. Chcete-li kanál zkopírovat, aby zdroj zůstal stejný, jednoduše přesuňte kanál do obou, cíle i zdroje. Například:

    channel 2 --> channel 3
    channel 2 --> channel 2

  3. Zapište kopie kanálů jako dvojici parametrů. Pamatujte, že první kanál je 0, druhý 1 atd. Na pořadí parametrů nezáleží, pokud jsou správně sdruženy do párů zdroj:cíl.

Příklad: jeden kanál ve dvou reproduktorech

Zde máte příklad jiného způsobu, jak hrát jeden kanál v obou reproduktorech. Pro náš účel předpokládejme, že by měl být přehráván levý kanál a zahozen pravý. Následujeme výše uvedený postup:

  1. Abychom měli výstupní kanál pro každý z obou reproduktorů, musí být první parametr "2".

  2. Levý kanál musí být přesunut do pravého a také sám do sebe, aby nezůstal prázdný. To jsou celkem dva přesuny, takže druhý parametr bude také "2".

  3. Pro přesun levého kanálu (channel 0) do pravého kanálu (channel 1) bude dvojice parametrů "0:1" a "0:0" přesune levý kanál na sebe.

Vše dohromady pak dá:

mplayer soubor -af channels=2:2:0:1:0:0

Výhoda tohoto postupu před extrastereo je v tom, že je hlasitost každého výstupního kanálu stejná jako hlasitost zdrojového kanálu. Nevýhodou je to, že parametry musí být změněny na "2:2:1:0:1:1", pokud je požadovaný zvuk v pravém kanálu. Také je těžší si je pamatovat a napsat.

Příklad: levý kanál v obou reproduktorech – zkratka

Ve skutečnosti je mnohem jednodušší způsob použití filtru channels pro přehrávání levého kanálu v obou reproduktorech:

mplayer soubor -af channels=1

Druhý kanál je zahozen a bez dalších parametrů je ponechán jediný zbývající kanál. Ovladače zvukových karet hrají jednokanálový zvuk automaticky v obou reproduktorech. To pracuje pouze pokud je požadovaný levý kanál.

Příklad: kopírování čelních kanálů do zadních

Dalším běžným úkonem je duplikace čelních kanálů a jejich přehrávání v zadních reproduktorech kvadrofonní sestavy.

  1. Zde by mely být čtyři výstupní kanály. První parametr je "4".

  2. Oba přední kanály musí být přesunuty do odpovídajících zadních kanálů a také na sebe. To jsou čtyři přesuny, takže druhý parametr bude "4".

  3. Levý čelní (channel 0) přesuneme do levého zadního (channel 2): "0:2". Levý čelní musíme rovněž přesunout do sama sebe: "0:0". Pravý přední (channel 1) je přesunut do pravého zadního (channel 3): "1:3" a také do sebe: "1:1".

Po zkombinování všech nastavení dostaneme:

mplayer soubor -af channels=4:4:0:2:0:0:1:3:1:1

3.9.2.4. Mixování kanálů

Filtr pan umí mixovat kanály podle požadavků uživatele. Umožňuje vše co filtr channels a ještě víc. Naneštěstí jsou jeho parametry ještě komplikovanější.

  1. Rozhodněte, s kolika kanály budeme pracovat. To můžete nastavit pomocí volby -channels a/nebo -af channels. Později se v příkladech dozvíte, kdy použít kterou.

  2. Rozhodněte, kolik kanálů propustíme do pan (ostatní dekódované kanály jsou zahozeny). To je první parametr a také ovládá, kolik kanálů bude mít výstup.

  3. Zbývající parametry nastavují, kolik z daného kanálu bude namixováno do každého dalšího kanálu. Toto je ta komplikovaná část. Pro usnadnění si rozdělte parametry do několika skupin, jednu pro každý výstupní kanál. Každý parametr uvnitř skupiny odpovídá vstupnímu kanálu. Číslo, které nastavíte bude procento vstupního kanálu, které bude namixováno do výstupního kanálu.

    pan akceptuje hodnoty od 0 do 512, což odpovídá 0% až 51200% původní hlasitosti. Buďte opatrní, pokud používáte hodnoty větší než 1. Nejen, že vám to dá velmi vysokou hlasitost, ale pokud překročíte dynamický rozsah své zvukové karty, můžete uslyšet rány a praskání. Pokud chcete, můžete za pan přidat ,volume pro zapnutí omezení, ale i tak je nejlepší udržet hodnoty pan dostatečně nízko, aby omezování nebylo potřeba.

Příklad: jeden kanál do dvou reproduktorů

Zde máte další příklad pro přehrávání levého kanálu ve dvou reproduktorech. Následujme výše uvedené kroky:

  1. Na výstupu pan by měly být dva kanály, takže první parametr je "2".

  2. Jelikož máme dva vstupní kanály, budeme mít dvě sady parametrů. Jelikož máme rovněž dva výstupní kanály, budeme mít dva parametry v každé sadě. Levý kanál ze souboru by měl jít s plnou hlasitostí do nového levého i pravého kanálu. Takže první sada parametrů je "1:1". Pravý kanál by měl být zahozen, takže druhá sada bude "0:0". Hodnoty 0 na konci je možné vynechat, ale pro snadnější pochopení je zde necháváme.

Dáme-li vše dohromady, dostaneme:

mplayer soubor -af pan=2:1:1:0:0

Pokud chceme místo levého kanálu pravý, budou parametry pan tyto: "2:0:0:1:1".

Příklad: levý kanál ve dvou reproduktorech zkráceně

Stejně jako s channels můžeme použít zkrácený zápis, který funguje pouze pro levý kanál:

mplayer soubor -af pan=1:1

Jelikož má pan pouze jeden vstupní kanál (druhý je zahozen), máme pouze jednu sadu s jedním parametrem, takže tento jediný kanál dává 100% sám ze sebe.

Příklad: podmixování 6-kanálového PCM

MPlayerův dekodér 6-kanálového PCM neumí podmixování. Máme však možnost k tomu použít pan:

  1. Počet výstupních kanálů je 2, takže první parametr je "2".

  2. Při šesti vstupních kanálech budeme mít šest sad parametrů. Jelikož nás však zajímá pouze výstup z prvních dvou kanálů, vystačíme s pouhými dvěma sadami; zbývající čtyři sady můžeme vynechat. Pozor na to, že ne všechny vícekanálové zvukové soubory mají stejné řazení kanálů! Tento příklad demonstruje podmixování souboru se stejným řazením kanálů jako má AC–3 5.1:

    0 - levý přední
    1 - pravý přední
    2 - levý zadní
    3 - pravý zadní
    4 - středový přední
    5 - subwoofer

    První sada parametrů je výčtem procentních hodnot hlasitostí v daném pořadí, kterou by měl dostat každý výstupní kanál z levého předního kanálu: "1:0". Pravý přední kanál by měl jít do pravého výstupu: "0:1". Stejně tak zadní kanály: "1:0" a "0:1". Středový kanál jde do obou výstupních kanálů s poloviční hlasitostí: "0.5:0.5" a subwoofer jde do obou s plnou hlasitostí: "1:1".

Dáme-li vše dohromady, dostaneme:

mplayer 6-kanálové.wav -af pan=2:1:0:0:1:1:0:0:1:0.5:0.5:1:1

Uvedené procentní hodnoty jsou pouhým příkladem. Upravte si je podle vlastního uvážení.

Příklad: Přehrávání 5.1 zvuku na velkých reprobednách bez subwooferu

Pokud máte robustní čelní reprobedny, nemusíte utrácet za nákup subwooferu pro kompletní 5.1 zvukový systém. Použijete-li volbu -channels 5 pro požadavek, aby liba52 dekódovala 5.1 zvuk do 5.0, bude zkrátka kanál pro subwoofer zahozen. Pokud jeho obsah chcete roznést do ostatních kanálů, musíte jej podmixovat ručně pomocí pan:

  1. Jelikož se pan potřebuje dostat ke všem šesti kanálům, nastavte -channels 6, takže je liba52 dekóduje všechny.

  2. Filtr pan produkuje pouze pět kanálů, takže první parametr je 5.

  3. Šest vstupních a pět výstupních kanálů znamená šest sad po pěti parametrech.

    • Levý přední kanál půjde jen sám do sebe: "1:0:0:0:0"

    • Stejně tak pravý přední kanál: "0:1:0:0:0"

    • Taktéž levý zadní kanál: "0:0:1:0:0"

    • Rovněž pravý zadní kanál: "0:0:0:1:0"

    • Středový kanál jakbysmet: "0:0:0:0:1"

    • A nyní se musíme rozhodnout, co uděláme se subwooferem, například půlku do předního levého a půlku do předního pravého: "0.5:0.5:0:0:0"

Zkombinujeme-li to dohromady, dostaneme:

mplayer dvd://1 -channels 6 -af pan=5:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0:0:0:0:0:1:0.5:0.5:0:0:0

3.9.3. Softwarové nastavení hlasitosti

Některé zvukové stopy jsou příliš tiché na to, aby mohly být pohodlně poslouchány bez zesílení. To je problém, pokud váš zvukový systém neumožňuje potřebné zesílení. Volba -softvol poručí MPlayeru použití vestavěného směšovače. Pak můžete použít klávesy pro nastavení hlasitosti (výchozí 9 a 0) pro dosažení mnohem vyšších úrovní hlasitosti. Takto neobejdete směšovač vaší zvukové karty; MPlayer pouze zesílí signál před jeho odesláním do zvukové karty. Následující příklad je dobrým startem:

mplayer tichý-soubor -softvol -softvol-max 300

Volba -softvol-max nastavuje maximální povolenou výstupní hlasitost v procentech původní hlasitosti. Například, -softvol-max 200 umožní nastavit hlasitost až na dvojnásobek původní úrovně. Je bezpečné nastavit vysoké hodnoty volbou -softvol-max; vyšší hlasitost se nepoužije, dokud nepoužijete tlačítka nastavení hlasitosti. Jedinou nevýhodou velkých hodnot je to, že jelikož MPlayer nastavuje hlasitost o podíl z maximální hlasitosti, nebudete mít tak jemný krok nastavení pomocí tlačítek. Pokud potřebujete přesnější nastavování, použijte nižší hodnotu pro -softvol-max a/nebo nastavte -volstep 1.

Volba -softvol pracuje tak, že ovládá zvukový filtr volume. Chcete-li přehrávat soubor od začátku při určité hlasitosti, můžete nastavit volume ručně:

mplayer tichý-soubor -af volume=10

Takto přehrajete soubor se ziskem 10 decibelů. Při použití filtru volume buďte velmi opatrní. Pokud použijete příliš vysokou hodnotu, můžete si poškodit sluch. Začněte s nízkou hodnotou a postupně zvyšujte, až docílíte požadované hlasitosti. Při nastavení příliš vysokých hodnot také hrozí, že volume bude nucen ořezat signál, aby předešel odeslání dat mimo dovolený rozsah do zvukové karty; to povede ke zkreslení signálu.

3.10. TV vstup

Tato sekce je zaměřena na zpřístupnění sledování/grabování z V4L kompatibilního TV tuneru . Popis voleb k TV a ovládání z klávesnice naleznete v man stránce.

3.10.1. Kompilace

  1. Zaprvé musíte rekompilovat. ./configure zdetekuje v4l hlavičkové soubory kernelu a existenci zařízení /dev/video*. Pokud existují, bude zabudována podpora pro TV (viz výstup z ./configure).

  2. Ujistěte se, že váš tuner pracuje s jiným Linuxovým TV softwarem, například XawTV.

3.10.2. Tipy pro používání

Úplný seznam voleb je dostupný v manuálové stránce. Zde je jen několik typů:

  • Použijte volbu channels. Příklad:

    -tv channels=26-MTV1,23-TV2

    Vysvětlení: Při použití této volby budou použitelné pouze kanály 26 a 23 a budete také mít krásný OSD text po přepnutí kanálů, zobrazující jméno kanálu. Mezery ve jméně kanálu musí být nahrazeny znakem "_".

  • Zvolte rozumné rozměry obrazu. Rozměry výsledného obrazu by měly být bezezbytku dělitelné 16.

  • Pokud zachytáváte video se svislým rozlišením vyšším než polovina plného rozlišení (čili 288 pro PAL nebo 240 pro NTSC), pak 'snímky', které dostanete, budou ve skutečnosti prokládané páry půlsnímků. V závislosti na tom, co chcete s videem dělat, je můžete nechat jak jsou, destruktivně odstranit proklad, nebo rozdělit páry do individuálních políček.

    Jinak bude získaný snímek roztřepený během rychlých scén a regulátor datového toku nebude pravděpodobně schopen ani udržet nastavený datový tok, vzhledem k tomu, že prokladové artefakty produkují velké množství detailů, což spotřebovává velké přenosové pásmo. Odstraňování prokladu můžete zapnout pomocí volby -vf pp=DEINT_TYPE. Dobrou práci obvykle odvede pp=lb, ale záleží na osobních preferencích. Prostudujte si ostatní možnosti odstraňování prokladu v manuálu a vyzkoušejte je.

  • Odstřihněte mrtvý prostor. Když zachytáváte video, oblasti na okrajích jsou obvykle černé, nebo obsahují nějaký šum. Což opět zbytečně spotřebovává přenosové pásmo. Přesněji to nejsou samotné černé oblasti, ale ostrý přechod mezi černou a světlejším videem, ale to teď není důležité. Než začnete zachytávat, nastavte parametry volby crop tak, aby byl veškerý binec na okrajích odstřižen. Opět se snažte zachovat rozumné rozměry výsledného obrazu.

  • Sledujte zatížení CPU. Většinu času by nemělo překročit hranici 90%. Pokud máte velkou vyrovnávací paměť pro zachytávání, dokáže MEncoder přežít několikasekundové přetížení, ale nic víc. Raději vypněte 3D OpenGL spořiče obrazovky a podobné věci.

  • Nehrajte si se systémovými hodinami. MEncoder používá systémové hodiny pro A/V synchronizaci. Pokud přestavíte systémové hodiny (zvlášť nazpět), MEncoder bude zmaten a vy přijdete o snímky. To je velmi důležité pokud jste připojeni k síti a používáte nějaký časový synchronizační software jako je NTP. Musíte vypnout NTP během zachytávání, pokud chcete spolehlivě zachytávat.

  • Neměňte outfmt pokud nevíte co děláte, nebo vaše karta/ovladač opravdu nepodporuje výchozí (YV12 barevný prostor). Ve starší verzi MPlayeru/ MEncoderu bylo nutné nastavit výstupní formát. Tento problém by měl být v současných verzích vyřešen, outfmt již není nadále potřeba a výchozí hodnoty vyhovují pro většinu případů. Například pokud zachytáváte do DivX pomocí libavcodecu a uvedete outfmt=RGB24 pro zvýšení kvality zachytávaných snímků, stejně budou tyto snímky později konvertovány zpět na YV12, takže jediné co tím získáte je spousta vyplýtvaného výkonu CPU.

  • Chcete-li nastavit barevný prostor I420 (outfmt=i420), musíte přidat i volbu -vc rawi420 kvůli konfliktu fourcc Intel Indeo video kodekem.

  • Existuje několik cest, jak zachytávat zvuk. Můžete nahrát zvuk buď pomocí zvukové karty pomocí externího propojení mezi video kartou a linkovým vstupem, nebo použitím vestavěného ADC v čipu bt878. Ve druhém případě musíte načíst ovladač btaudio. Přečtěte si soubor linux/Documentation/sound/btaudio (ve zdrojácích kernelu, nikoli MPlayeru) pro několik instrukcí jak použít tento ovladač.

  • Pokud MEncoder nedokáže otevřít audio zařízení, ujistěte se, že je opravdu k dispozici. Můžete mít potíže se zvukovými servery jako aRts (KDE) nebo ESD (GNOME). Pokud máte plně duplexní zvukovou kartu (téměř každá slušná karta to již podporuje) a používáte KDE, zkuste zaškrtnout volbu "full duplex" v menu nastavení zvukového serveru.

3.10.3. Příklady

Modelový výstup do AAlib :)

mplayer -tv driver=dummy:width=640:height=480 -vo aa tv://

Vstup ze standardního V4L:

mplayer -tv driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv tv://

Mnohem sofistikovanější příklad. Zde MEncoder zachytává obraz v plném PALu, ořízne okraje a odstraní proklad obrazu pomocí lineárního směšovacího algoritmu. Zvuk je komprimován konstantním datovým tokem 64kbps LAME kodekem. Toto nastavení je vhodné pro zachytávání filmů.

mencoder -tv driver=v4l:width=768:height=576 -oac mp3lame -lameopts cbr:br=64\
    -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
    -vf crop=720:544:24:16,pp=lb -o výstup.avi tv://

Toto navíc přeškáluje video na 384x288 a zkomprimuje jej s datovým tokem 350kbps v režimu vysoké kvality. Volba vqmax uvolňuje kvantizer a umožní video kompresoru podržet takto nízký datový tok i za cenu snížení kvality. To lze použít pro záznam dlouhých TV seriálů, kde kvalita obrazu není až tolik důležitá.

mencoder -tv driver=v4l:width=768:height=576 \
    -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
    -oac mp3lame -lameopts cbr:br=48 -sws 1 -o výstup.avi\
    -vf crop=720:540:24:18,pp=lb,scale=384:288 tv://

Rovněž můžete nastavit menší rozměry obrazu ve volbě -tv a vyhnout se tak softwarovému škálování, ale tento přístup vyžaduje maximální množství informací a je trochu odolnější proti šumu. Čipy bt8x8 umí průměrování pixelů pouze ve svislém směru díky hardwarovým omezením.

3.11. Rádio

3.11.1. Rádio vstup

Tato sekce se zabývá tím, jak zprovoznit poslech rozhlasu z V4L-kompatibilního rozhlasového tuneru. Popis voleb a ovládání z klávesnice naleznete v man stránce.

3.11.1.1. Kompilace

  1. Nejprve musíte znovupřeložit MPlayer pomocí ./configure s --enable-radio a (pokud chcete i nahrávat) --enable-radio-capture.

  2. Ujistěte se, že váš tuner pracuje s jiným softwarem v Linuxu, například XawTV.

3.11.1.2. Uživatelské tipy

Plný výčet voleb je v manuálové stránce. Zde uvádíme jen několik tipů:

  • Použití volby channels. Příklad:

    -radio channels=104.4-Sibir,103.9-Maximum

    Vysvětlení: Pomocí této volby budou k dispozici pouze stanice 104.4 a 103.9. Budete mít krásný OSD text během přepínání kanálů, který zobrazí jméno kanálu. Mezery v názvech kanálů musí být nahrazeny znakem "_".

  • Je mnoho způsobů, jak zachytávat (nahrávat) zvuk. Můžete buď zachytávat pomocí vstupu line-in zvukové karty propojeného vnější linkou s videokartou, nebo použitím vestavěného ADC v čipu saa7134. V druhém případě musíte zavést ovladač saa7134-alsa nebo saa7134-oss.

  • MEncoder nelze použít pro zachytávání zvuku, jelikož vyžaduje videoproud, aby fungoval. Takže buď použijete arecord z projektu ALSA, nebo volbu -ao pcm:file=file.wav. V druhém případě neuslyšíte nic (pokud ovšem nemáte propojku s line-in a vypnuté mute na kanále line-in).

3.11.1.3. Příklady

Vstup ze standardního V4L (pomocí line-in kablu, zachytávání vypnuto):

mplayer radio://104.4

Vstup ze standardního V4L (pomocí line-in kablu, zachytávání vypnuto, rozhraní V4Lv1):

mplayer -radio driver=v4l radio://104.4

Přehrávání druhé stanice ze seznamu:

mplayer -radio channels=104.4=Sibir,103.9=Maximm  radio://2

Průchod zvuku přes PCI sběrnici z interního ADC rádio karty. V tomto příkladu se tuner používá jako druhá zvuková karta (ALSA zařízení hw:1,0). Pro zařízení založené na saa7134 musí být zaveden buď modul saa7134-alsa nebo modul saa7134-oss.

mplayer -rawaudio rate=32000 radio://2/capture \
    -radio adevice=hw=1.0:arate=32000:channels=104.4=Sibir,103.9=Maximm

Poznámka

Když používáte názvy zařízení ALSA, dvojtečky musí být nahrazeny znaky rovnáse, čárky tečkami.

Kapitola 4. Výstupní video zařízení/rozhraní

4.1. Nastavení MTRR

VELMI doporučujeme skontrolovat, zda jsou MTRR registry správně nastaveny, jelikož mohou velice zvýšit výkon.

Proveďte cat /proc/mtrr:

--($:~)-- cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

Takto to správně ukazuje má Matrox G400 se 16MB paměti. Provedl jsem to z XFree 4.x.x, které nastavuje MTRR registry automaticky.

Pokud nic nefunguje, budete to muset udělat ručně. Nejprve musíte najít bázovou adresu. Máte tři možnosti, jak ji zjistit:

  1. ze startovacích informací X11, například:

    (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
    (--) SVGA: Linear framebuffer at 0xD8000000

  2. z /proc/pci (použijte příkaz lspci -v ):

    01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
    Memory at d8000000 (32-bit, prefetchable)

  3. ze zpráv jaderného modulu mga_vid (použijte dmesg):

    mga_mem_base = d8000000

Pak zjistěte velikost paměti. Je to velmi snadné, stačí převést velikost video RAM do hexadecimální soustavy, nebo použijte následující tabulku:

1 MB0x100000
2 MB0x200000
4 MB0x400000
8 MB0x800000
16 MB0x1000000
32 MB0x2000000

Pokud znáte bázovou adresu a velikost paměti, začněme nastavovat MTRR registry! Například pro výše uvedenou kartu Matrox (base=0xd8000000) s 32MB RAM (size=0x2000000) stačí spustit:

echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr

Ne všechny procesory mají MTRR. Například starší CPU K6-2 (okolo 266MHz, stepping 0) nemají MTRR, ale stepping 12 je mají (pro ověření spusťte cat /proc/cpuinfo).

4.2. Xv

Pod XFree86 4.0.2, nebo novějším, můžete použít hardwarové YUV rutiny karty pomocí rozšíření XVideo. Přesně toto používá volba -vo xv. Toto rozhraní také podporuje nastavování jasu/kontrastu/barevného tónu/atd. (pokud nepoužíváte strarý, pomalý DirectShow DivX kodek, který to podporuje všude), viz man stránka.

Abyste to zprovoznili, ujistěte se o následujícím:

  1. Musíte používat XFree86 4.0.2 nebo novější (předchozí verze nemají XVideo)

  2. Vaše karta aktuálně podporuje hardwarovou akceleraci (moderní karty ano)

  3. X nahrává rozšíření XVideo. Zpráva ve /var/log/XFree86.0.log vypadá asi takto:

    (II) Loading extension XVideo

    Poznámka

    Takto se nahraje pouze rozšíření pro XFree86. To je v dobré instalaci nahráno vždy a neznamená to, že je načtena i podpora XVideo pro kartu!

  4. Vaše karta má podporu Xv pod Linuxem. Abyste si to ověřili, zkuste xvinfo, které je součástí distribuce XFree86. Měl by se vypsat dlouhý text podobný tomuto:

    X-Video Extension version 2.2
    screen #0
      Adaptor #0: "Savage Streams Engine"
        number of ports: 1
        port base: 43
        operations supported: PutImage
        supported visuals:
          depth 16, visualID 0x22
          depth 16, visualID 0x23
        number of attributes: 5
    (...)
        Number of image formats: 7
          id: 0x32595559 (YUY2)
            guid: 59555932-0000-0010-8000-00aa00389b71
            bits per pixel: 16
            number of planes: 1
            type: YUV (packed)
          id: 0x32315659 (YV12)
            guid: 59563132-0000-0010-8000-00aa00389b71
            bits per pixel: 12
            number of planes: 3
            type: YUV (planar)
    (...atd...)

    Musí podporovat pixelové formáty YUY2 packed a YV12 planar, aby byla použitelná s MPlayerem.

  5. A nakonec si ověřte, jestli byl MPlayer skompilován s podporou 'xv'. Proveďte mplayer -vo help | grep xv . Pokud byla skompilována podpora 'xv', měl by se objevi řádek podpobný tomuto:

      xv      X11/Xv

4.2.1. Karty 3dfx

Starší ovladače 3dfx byly známy svými problémy s XVideo akcelerací a nepodporovaly barevné prostory YUY2 ani YV12. Ověřte, že máte XFree86 verze 4.2.0 nebo vyšší, které pracuje dobře s YV12 a YUY2, zatímco předchozí verze, včetně 4.1.0, padá s YV12. Pokud zažívate podivné situace při používání -vo xv, zkuste SDL (má rovněž XVideo) a uvidíte, zda to pomůže. Prostudujte si sekci SDL pro více informací.

NEBO, zkuste NOVÉ -vo tdfxfb rozhraní! Viz sekce tdfxfb.

4.2.2. Karty S3

S3 Savage3D by měly fungovat dobře, ale pro Savage4 použijte XFree86 verze 4.0.3 nebo vyšší (v případě problémů s obrazem, zkuste 16bpp). Stejně ajko S3 Virge: má sice podporu xv, ale karta samotná je velmi pomalá, takže ji raději prodejte.

Pro karty S3 Virge nyní existuje nativní framebuffer ovladač podobný tdfxfb. Nastavte si framebuffer (čili přidejte "vga=792 video=vesa:mtrr" do příkazového řádku kernelu) a použijte -vo s3fb (-vf yuy2 a -dr rovněž pomůžou).

Poznámka

Zatím není jasné, kterým modelům Savage chybí podpora YV12 a konvertují ovladačem (pomalé). Pokud podezříváte kartu, opatřete si novější ovladač, nebo slušně požádejte v konferenci MPlayer-users o ovladač s MMX/3DNow!.

4.2.3. Karty nVidia

nVidia není vždy pod Linuxem nejlepší volbou... Open-source ovladač v XFree86 podporuje většinu těchto karet, ale v některých případech musíte použít binární closed-source ovladač od nVidie, který je k dispozici na serveru nVidia. Tento ovladač budete potřebovat vždy, pokud zároveň chcete 3D akceleraci.

Karty Riva128 nemají podporu XVideo v nVidia ovladači z XFree86 :( Stěžujte si nVidii.

Ačkoli MPlayer obsahuje VIDIX ovladač pro většinu nVidia karet, zatím je ve stavu beta verze a má jisté nedostatky. Více informací naleznete v sekci nVidia VIDIX.

4.2.4. Karty ATI

Ovladač GATOS (který byste měli použít, pokud nemáte Rage128 nebo Radeon) má zapnutý VSYNC ve výchozím stavu. To znamená, že rychlost dekódování (!) je synchronizována s obnovovacím kmitočtem monitoru. Pokud se vám zdá přehrávání pomalé, zkuste nějak vypnout VSYNC, nebo nastavte obnovovací kmitočet na n*(snímková rychlost filmu) Hz.

Radeon VE - pokud potřebujete X, použijte pro tuto kartu XFree86 4.2.0 nebo vyšší. Není zde podpora pro TV out. Samozřejmě s MPlayerem můžete mít s trochou štěstí akcelerovaný display s nebo bez TV výstupu a nepotřebujete žádné X knihovny. Přečtěte si sekci VIDIX.

4.2.5. Karty NeoMagic

Tyto karty lze nalézt v mnoha laptopech. Musíte použít XFree86 4.3.0 nebo vyšší, nebo použijte ovladače s podporou Xv od Stefana Seyfrieda. Stačí vybrat ten, který je vhodný pro vaši verzi XFree86.

XFree86 4.3.0 obsahuje podporu Xv, avšak Bohdan Horst poslal malý patch pro zdrojový kód XFree86, který zrychluje operace s framebufferem (čili XVideo) až čtyřikrát. Patch byl zařazen do XFree86 CVS a měl by být v další verzi vydané po 4.3.0.

Abyste mohli přehrávat obsah velikosti DVD, změňte svůj XF86Config takto:

Section "Device"
    [...]
    Driver "neomagic"
    Option "OverlayMem" "829440"
    [...]
EndSection

4.2.6. Karty Trident

Chcete-li používat Xv s kartou Trident, což nepracuje s 4.1.0, nainstalujte si XFree 4.2.0. 4.2.0 přidává podporu pro celoobrazovkové Xv pro kartu Cyberblade XP.

Alternativně, MPlayer obsahuje VIDIX ovladač pro kartu Cyberblade/i1.

4.2.7. Karty Kyro/PowerVR

Pokud chcete používat Xv s kartou založenou na čipu Kyro (například Hercules Prophet 4000XT), měli byste si stáhnout ovladače z PowerVR serveru.

4.2.8. Karty Intel

Tyto karty lze nalézt v mnoha laptopech. Doporučujeme aktuální Xorg.

Abyste umožnili přehrávání obsahu velikosti DVD (a větší), změňte svůj XF86Config/xorg.conf takto:

Section "Device"
    [...]
    Driver "intel"
    Option "LinearAlloc" "6144"
    [...]
EndSection

Vynechání této volby obvykle vede k chybě jako

X11 error: BadAlloc (insufficient resources for operation)

při pokusu použít -vo xv.

4.3. DGA

PŘEDMLUVA.  Tento dokument se několika slovy snaží vysvětlit co je to DGA a co výstupní videorozhraní DGA pro MPlayer udělat může (a co ne).

CO JE DGA.  DGA je zkratka pro Direct Graphics Access, což je program pro obejití X servru a přímou modifikaci paměti framebufferu. Technicky to znamená mapování paměti framebufferu do paměťového prostoru vašeho procesu. To kernel umožňuje pouze pokud máte práva superuživatele. Ty dostanete buď nalogováním se jako root, nebo nastavením SUID bitu spustitelnému souboru MPlayeru (nedoporučujeme ).

Existují dvě verze DGA: DGA1 je používáno XFree 3.x.x a DGA2 bylo představeno v XFree 4.0.1.

DGA1 poskytuje pouze přímý přístup k framebufferu jak byl popsán výše. Chcete-li přepínat rozlišení videosignálu, musíte se spolehnout na rozšíření XVidMode.

DGA2 zahrnuje vlastnosti rozšíření XVidMode a rovněž umožňuje přepínat barevnou hloubku zobrazovače. Takže můžete jendoduše provozovat X server s hloubkou 32 bitů a přepnout na barevnou hloubku 15 bitů a naopak.

DGA má ovšem i jisté obtíže. Zdá se, že je nějak závislé na grafickém čipu, který používáte a na implementaci video ovladače X serveru, který tento čip obsluhuje. Takže nefunguje na všech systémech...

INSTALACE PODPORY DGA PRO MPLAYER.  Nejprve si ověřte, že X nahrávají rozšíření DGA, viz v /var/log/XFree86.0.log:

(II) Loading extension XFree86-DGA

XFree86 4.0.x nebo vyšší je vřele doporučován! Video rozhraní DGA MPlayeru je autodetekováno ./configure, nebo jej můžete vynutit pomocí --enable-dga.

Pokud rozhraní nemůže přepnout do menšího rozlišení, experimentujte s volbami -vm (pouze s X 3.3.x), -fs, -bpp, -zoom, abyste nalezli videorežim, do kterého se video napasuje. Momentálně není žádný převodník :(

Staňte se rootem. DGA vyžaduje práva roota, aby mohl přímo zapisovat do video paměti. Pokud jej chcete provozovat jako uživatel, pak nainstalujte MPlayer jako SUID root:

chown root /usr/local/bin/mplayer
chmod 750 /usr/local/bin/mplayer
chmod +s /usr/local/bin/mplayer

A nyní to bude pracovat také pod obyčejným uživatelem.

Bezpečnostní riziko

Toto je velké bezpečnostní riziko! Nikdy to nedělejte na serveru nebo počítači ke kterému mohou mít přístup ostatní lidé, jelikož ti mohou získat superuživatelská práva díky SUID root MPlayeru.

Nyní použijte volbu -vo dga a je to! (doufám:) Také byste měli vyzkoušet, jestli vám pracuje volba -vo sdl:dga! Je mnohem rychlejší!

PŘEPÍNÁNÍ ROZLIŠENÍ.  Rozhraní DGA umožňuje přepínání rozlišení výstupního signálu. To odstraňuje potřebu (pomalého) softwarového škálování a zároveň poskytuje obraz na celou obrazovku. Ideálně by se mělo přepnout na přesné rozlišení (s výjimkou dodržení poměru stran) video dat, ale X server umožňuje poze přepínání do rozlišení předdefinovaných v /etc/X11/XF86Config (nebo /etc/X11/XF86Config-4 pro XFree 4.X.X). Ty jsou definovány takzvanými "modelines" a závisí na schopnostech vašeho video hardwaru. X server projíždí tento konfigurační soubor při startu a zakáže režimy (modelines) nevhodné pro váš hardware. Povolené videorežimy naleznete v X11 log souboru. Tel lze nalézt zde: /var/log/XFree86.0.log.

Tyto vstupy jsou známy dobrou funkcí na Riva128 čipu, s použitím modulu ovladače nv.o X serveru.

Section "Modes"
  Identifier "Modes[0]"
  Modeline "800x600"  40     800 840 968 1056  600 601 605 628
  Modeline "712x600"  35.0   712 740 850 900   400 410 412 425
  Modeline "640x480"  25.175 640 664 760 800   480 491 493 525
  Modeline "400x300"  20     400 416 480 528   300 301 303 314 Doublescan
  Modeline "352x288"  25.10  352 368 416 432   288 296 290 310
  Modeline "352x240"  15.750 352 368 416 432   240 244 246 262 Doublescan
  Modeline "320x240"  12.588 320 336 384 400   240 245 246 262 Doublescan
EndSection

DGA & MPLAYER.  DGA je v MPlayeru použito na dvou místech: SDL rozhraní může být nastaveno pro jeho použití (-vo sdl:dga) a přímé DGA rozhraní (-vo dga). Výše uvedené je platné pro obě varianty; v následující sekci vysvětlíme jak pracuje DGA rozhraní MPlayeru.

VLASTNOSTI.  DGA rozhraní je použito zadáním volby -vo dga na příkazovém řádku. Výchozím chováním je přepnout na rozlišení co nejbižší originálním rozměrům videa. Zcela záměrně se ignorují volby -vm a -fs (umožňující přepínání videorežimů a zobrazení na celou obrazovku) - vždy zkouší pokrýt tak velkou plochu obrazovky, jak je to jen možné pomocí přepnutí videorežimu, což nás oprostí od využívání dalších CPU cyklů pro škálování obrazu. Pokud se vám nelíbí režim, který vybere automatika, můžete ji přinutit pro výběr režimu nejblíže odpovídajícímu rozlišení, které zadáte pomocí -x a -y. Při zadání volby -v, vypíše DGA rozhraní, spolu s dalšími věcmi, seznam všech rozlišení podporovaných vašim aktuálním XF86Config souborem. Máte-li DGA2, můžete jej rovněž přinutit použít různé barevné hloubky pomocí volby -bpp. Platné barevné hloubky jsou 15, 16, 24 a 32. To jestli jsou tyto barevné hloubky nativně podporovány, nebo musí být provedena (pravděpodobně pomalá) konverze závisí na vašem hardware.

Pokud jste natolik šťastlivci, že máte dostatek volné mimoobrazové paměti, aby se zde vměstnal celý obrázek, použije DGA rozhraní dvojitou vyrovnávací paměť, což vám zajistí mnohem plynulejší přehrávání filmů. Rozhraní vás bude informovat jestli je dvojitý buffer zapnutý nebo ne.

Dvojitou vyrovnávací pamětí se rozumí to, že je další snímek vykreslován do paměti mimo zobrazovanou plochu, zatímco je zobrazován aktuální snímek. Jakmile je další snímek připraven, grafický čip je informován o pozici v paměti, kde je nový snímek a jednoduše přesune data k zobrazení odtud. Mezitím je další buffer v paměti zaplňován novými videodaty.

Dvojitá vyrovnávací paměť může být zapnuta volbou -double a vypnuta volbou -nodouble. Současná výchozí hodnota je vypnutí dvojité vyrovnávací paměti. Při použití DGA rozhraní bude display na obrazovce (OSD) pracovat pouze při zapnuté dvojité vyrovnávací paměti. Zapnutí dvojité vyrovnávací paměti však může vyústit velkou ztrátou výkonu (na mé K6-II+ 525 to použije dalších 20% CPU výkonu!) v závislosti na implementaci DGA pro váš hardware.

OTÁZKA RYCHLOSTI.  Obecně by přístup přes DGA framebuffer měl být alespoň tak rychlý jako použití rozhraní X11 navíc s celoobrazovkovým režimem. Procentní hodnoty rychlosti vypisované MPlayerem byste měli brát s rezervou, jelikož například při použití X11 nezahrnují čas spotřebovaný X serverem pro vlastní vykreslování. Zavěste terminál na sériovou linku počítače a spusťte top, abyste viděli co se opravdu děje ve vašem počítači.

Obecně zrychlení použitím DGA oproti 'běžnému' X11 velmi závisí na vaší grafické kertě a jak dobře je pro ni optimalizován modul X serveru.

Pokud máte pomalý stroj, raději použijte 15 nebo 16 bitovou hloubku, jelikož vyžaduje pouze poloviční průchodnost paměti oproti 32 bitovému zobrazení.

Použití hloubky 24 bitů je dobré i v případě, že vaše karta nativně podporuje pouze barevnou hloubku 32 bitů, jelikož se přenáší o 25% méně dat oproti režimu 32/32.

Viděl jsem pár AVI souborů přehrávat na Pentiu MMX 266. Procesory AMD K6-2 pracují při 400 MHZ a výše.

ZNÁMÉ CHYBY.  Podle některých vývojářů XFree je DGA zvěrstvo. Říkají, abyste je raději nepoužívali. Jeho implementace není vždy bezproblémová v každém dostupném ovladači pro XFree.

  • V XFree 4.0.3 je v nv.o chyba vedoucí k podivným barvám.

  • Ovladač pro ATI vyžaduje více než jedno zpětné přepnutí režimu po skončení používání DGA.

  • Některé ovladače selžou při přepnutí do normálního rozlišení (použijte Ctrl+Alt+Numerické + a Ctrl+Alt+Numerické - pro ruční přepnutí).

  • Některé ovladače zobrazují divné barvy.

  • Některé ovladače lžou o množství paměti kterou mapují do adresového prostoru procesu, takže vo_dga nepoužije dvojitou vyrovnávací paměť (SIS?).

  • Některé ovladače nezvládnou ohlásit dokonce ani jeden platný režim. V tom případě rozhraní DGA spadne s hláškou o nesmaslném režimu 100000x100000 nebo tak.

  • OSD pracuje pouze se zapnutou dvojitou vyrovnávací pamětí (jinak poblikává).

4.4. SDL

SDL (Simple Directmedia Layer) je zjednodušeně unifikované video/audio rozhraní. Programy, které ji používají, znají pouze SDL a ne jaký audio nebo video ovladač SDL aktuálně používá. Například klon DOOMa může běžet na svgalib, aalib, X, fbdev a dalších. Musíte jen nastavit (například) video ovladač pomocí proměnné prostředí SDL_VIDEODRIVER. Aspoň teoreticky.

V MPlayeru používáme její softwarový škálovač ovladače X11 pro karty/ovladače, které nepodporují XVideo, dokud nevytvoříme vlastní (rychlejší, hezčí) softwarový škálovač. Rovněž jsme používali její výstup na aalib, ale nyní máme vlastní, což je mnohem pohodlnější. Její DGA režim byl až doposud lepší než náš. Sledujete? :)

Rovněž pomáhá s některými chybnými ovladači/kartami, pokud je video roztřesené (nikoli problém pomalého stroje), nebo se zpožďuje zvuk.

SDL video rozhraní podporuje zobrazování titulků pod filmem, v (pokud je) černém okraji.

4.5. SVGAlib

INSTALACE.  Budete muset nainstalovat svgalib i s development balíčkem, aby MPlayer vytvořil své SVGAlib rozhraní (autodetekováno, ale nelze vynutit) a nezapomeňte upravit /etc/vga/libvga.config tak, aby odpovídal vaší kartě a monitoru.

Poznámka

Ujistěte se, že nepoužíváte volbu -fs, jelikož zapíná použití softwarového škálování, což je pomalé. Pokud jej opravdu potřebujete, použijte volbu -sws 4, což poskytuje špatnou kvalitu, ale je o poznání rychlejší.

PODPORA EGA (4BPP).  SVGAlib obsahuje EGAlib a MPlayer umí zobrazovat jakýkoli film v 16 barvách, což je vhodné v následujících konfiguracích:

  • EGA karta s EGA monitorem: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp

  • EGA karta s CGA monitorem: 320x200x4bpp, 640x200x4bpp

Hodnota bpp (bitů na pixel) musí být nastavena na 4 ručně: -bpp 4

Obraz bude nejspíš muset být zmenšený tak, aby se vešel v EGA režimu:

-vf scale=640:350

nebo

-vf scale=320:200

Když potřebujeme rychlou, ale nekvalitní škálovací rutinu:

-sws 4

Možná bude muset být vypnuta automatická korekce poměru stran:

-noaspect

Poznámka

Podle mých zkušeností lze dosáhnout nejlepší kvality obrazu na EGA obrazovkách mírným snížením jasu: -vf eq=-20:0. Na svém počítači jsem rovněž musel snížit vzorkovací kmitočet zvuku, protože zvuk pří 44kHz byl vadný: -srate 22050.

Zapnout OSD a titulky můžete pouze v kombinaci s expand filtrem, viz man stránka pro přesné parametry.

4.6. Výstup na Framebuffer (FBdev)

Podpora pro cíl FBdev je autodetekována během ./configure. Přečtěte si dokumentaci framebufferu ve zdrojových kódech kernelu (Documentation/fb/*) pro více informací.

Pokud vaše karta nepodporuje standard VBE 2.0 (starší ISA/PCI karty, jako S3 Trio64), pouze VBE 1.2 (nebo straší?): Nuže, stále máte k dispozici VESAfb, ale budete muset nahrát SciTech Display Doctor (původně UniVBE) před startem Linuxu. Použijte bootovací disk DOSu nebo tak. A nezapoměňte si zaregistrovat svůj UniVBE ;))

Výstup FBdev přijímá několik dodatečných voleb:

-fb

nastaví zařízení framebufferu k použití (výchozí: /dev/fb0)

-fbmode

název režimu k použití (podle /etc/fb.modes)

-fbmodeconfig

config soubor režimů (výchozí: /etc/fb.modes)

-monitor-hfreq, -monitor-vfreq, -monitor-dotclock

důležité hodnoty, viz example.conf

Pokud se chcete přepnout do určitého režimu, pak použijte

mplayer -vm -fbmode name_of_mode soubor

  • -vm samotná zvolí nejpříhodnější režim z /etc/fb.modes. Může být rovněž použita spolu s volbami -x a -y. Volba -flip je podporována pouze pokud pixelový formát filmu odpovídá pixelovému formátu videorežimu. Věnujte pozornost hodnotě bpp. Ovladač fbdev zkusí použít aktuální, nebo pokud zadáte volbu -bpp, pak tuto.

  • Volba -zoom není podporována (použijte -vf scale). Nelze použít režimy 8bpp (nebo nižší).

  • Pravděpodobně budete chtít vypnout kursor:

    echo -e '\033[?25l'

    nebo

    setterm -cursor off

    a spořič obrazovky:

    setterm -blank 0

    Pro opětovné zapnutí kursoru:

    echo -e '\033[?25h'

    nebo

    setterm -cursor on

Poznámka

Změna videorežimu FBdev nepracuje ve VESA framebufferu a nechtějte to po nás, jelikož to není omezení MPlayeru.

4.7. Matrox framebuffer (mga_vid)

mga_vid je kombinací výstupního video rozhraní a Linuxového jaderného modulu, který používá Matrox G200/G400/G450/G550 video scaler/overlay jednotku pro konverzi YUV->RGB barevného prostoru a libovolé škálování videa. mga_vid má hardwarovou podporu VSYNC s trojitou vyrovnávací pamětí. Pracuje jak ve framebuffer konzoli, tak v X, ale pouze s Linuxem 2.4.x.

Chcete-li verzi ovladače pro Linux 2.6.x, podívejte se na http://attila.kinali.ch/mga/.

Instalace:

  1. Pokud jej chcete použít, nejdříve musíte sestavit mga_vid.o:

    cd drivers
    make

  2. Pake spusťte (jako root)

    make install

    což by mělo nainstalovat modul a vytvořit pro vás soubor zařízení. Ovladač nahrajte pomocí

    insmod mga_vid.o

  3. Měli byste ověřit velikost detekované paměti pomocí příkazu dmesg. Pokud je špatná, použijte volbu mga_ram_size (nejdřív rmmod mga_vid), nastavte velikost paměti karty v MB:

    insmod mga_vid.o mga_ram_size=16

  4. Aby se nahrával/odstraňoval automaticky podle potřeby, nejdříve přidejte následující řádek na konec /etc/modules.conf:

    alias char-major-178 mga_vid

  5. Teď budete muset (pře)kompilovat MPlayer, ./configure zdetekuje /dev/mga_vid a zakompiluje 'mga' rozhraní. V MPlayeru se používá pomocí -vo mga pokud máte matroxfb konzoli, nebo -vo xmga pod XFree86 3.x.x nebo 4.x.x.

Ovladač mga_vid spolupracuje s Xv.

Určité informace lze přečíst z /dev/mga_vid zařízení, například pomocí

cat /dev/mga_vid

a může do něj být zapsána změna jasu:

echo "brightness=120" > /dev/mga_vid

Ve stejném adresáři je i testovací aplikace jménem mga_vid_test. Měla by na obrazovku kreslit obrázky 256x256 bodů, pokud vše pracuje jak má.

4.8. Podpora 3Dfx YUV

Tento ovladač používá ovladač framebufferu tdfx z jádra pro přehrávání filmů s YUV akcelerací. Budete potřebovat jádro s podporou tdfxfb a rekompilovat s

./configure --enable-tdfxfb

4.9. tdfx_vid

Toto je kombinace Linuxového jaderného modulu a video výstupního rozhraní podobného mga_vid. Budete potřebovat 2.4.x kernel s agpgart ovladačem, jelikož tdfx_vid používá AGP. Předejte --enable-tdfxfb do configure abyste sestavili video výstupní rozhraní a sestavte jaderný modul pomocí následujících instrukcí.

Instalace jaderného modulu tdfx_vid.o:

  1. Kompilace tdfx_vid.o:

    cd drivers
    make

  2. Pak spusťte (jako root)

    make install

    což by mělo nainstalovat modul a vytvořit soubor zařízení. Nahrajte ovladač pomocí

    insmod tdfx_vid.o

  3. Aby se nahrával a odstraňoval automaticky podle potřeby, vložte nejprve následující řádku na konec /etc/modules.conf:

    alias char-major-178 tdfx_vid

Ve stejném adresáři je testovací aplikace jménem tdfx_vid_test. Měla by vypisovat pár užitečných informací, pokud vše dobře pracuje.

4.10. Rozhraní OpenGL

MPlayer podporuje zobrazování filmů pomocí OpenGL, ale pokud vaše platforma/ovladač podporuje xv což by měl být případ PC s Linuxem, použijte raději xv, jelikož výkon OpenGL je o poznání horší. Pokud máte X11 implementaci bez podpory xv, je OpenGL slušná alternativa.

Naneštěstí ne všechny ovladače tuto vlastnost podporují. Ovladače Utah-GLX (pro XFree86 3.3.6) ji podporují pro všechny karty. Viz http://utah-glx.sf.net pro detaily jak je nainstalovat.

XFree86(DRI) 4.0.3 nebo pozdější podporují OpenGL s kartami Matrox a Radeon, 4.2.0 a pozdější podporují Rage128. Viz http://dri.sf.net pro stažení a instalační instrukce.

Rada od jednoho z uživatelů: GL video výstup lze použít pro dosažení vertikálně synchronizovaného TV výstupu. Budete muset nastavit proměnnou prostředí (aspoň na nVidii):

export __GL_SYNC_TO_VBLANK=1

4.11. AAlib – zobrazování v textovém režimu

AAlib je knihovna pro zobrazování grafiky v textovém režimu pomocí výkonného ASCII renderovače. Existuje spousta programů, ktaré ji již podporují, jako DOOM, Quake, atd. MPlayer pro ni obsahuje šikovné rozhraní. Pokud ./configure zjistí nainstalovanou aalib, sestaví se aalib libvo rozhraní.

Můžete použít některé klávesy v AA okně pro změnu renderovacích voleb:

KlávesaAkce
1 sníží kontrast
2 zvýší kontrast
3 sníží jas
4 zvýší jas
5 vypíná/zapíná rychlé renderování
6 nastaví rozhodovací režim (žádný, error distribution, Floyd Steinberg)
7 inverze obrazu
8 přepíná mezi ovládáním aa a MPlayeru

Můžete použít následující volby příkazového řádku:

-aaosdcolor=V

změna barvy OSD

-aasubcolor=V

změna barvy titulků

kde V může být: 0 (normální), 1 (tmavé), 2 (tučné), 3 (polotučný font), 4 (reverz), 5 (speciální).

AAlib samotná poskytuje velké množství voleb. Zde je několik důležitých:

-aadriver

Nastaví doporučený aa ovladač (X11, curses, Linux).

-aaextended

Použití všech 256 znaků.

-aaeight

Použití osmibitového ASCII.

-aahelp

Vypíše všechny aalib volby.

Poznámka

Renderování je velmi náročné na CPU, zvlášť při použití AA-na-X (aalib na X) a nejméně náročné je na standardní neframebuferované konzoli. Použijte SVGATextMode pro nastavení velkého textového režimu a užijte si! (secondary head Hercules cards rock :)) (ale IMHO můžete použít volbu -vf 1bpp pro grafiku na hgafb:)

Použijte volbu -framedrop, pokud váš počítač není dostatečně rychlý pro renderování všech snímků!

Při přehrávání na terminálu dosáhnete lepší rychlosti i kvality použitím ovladače Linux, bez curses (-aadriver linux). Ale pak budete potřebovat práva k zápisu do /dev/vcsa<terminal>! Aalib to nedetekuje, ale vo_aa zkouší najít nejlepší režim. Pro více ladících možností viz http://aa-project.sf.net/tune.

4.12. libcaca – Barevná ASCII Art knihovna

Knihovna libcaca je grafická knihovna produkující text místo pixelů, takže může fungovat na starších video kartách a textových terminálech. Není nepodobná známé knihovně AAlib. libcaca vyžaduje k činnosti terminál, takže by měla fungovat na všech Unixových systémech (včetně Mac OS X) pomocí buď knihovny slang nebo knihovny ncurses, pod DOSem pomocí knihovny conio.h a na systémech Windows pomocí buď slang nebo ncurses (pomocí emulace Cygwin) nebo conio.h. Pokud ./configure detekuje libcaca, bude sestaveno rozhraní caca libvo.

Odlišnosti od AAlib jsou:

  • 16 dostupných barev pro znakový výstup (256 barev pro pár)

  • rozhodování podle barev v obrázku

Ale libcaca má také následující omezení:

  • nemá podpora pro jas, kontrast a gamu

V caca okně můžete použít některé klávesy pro změnu renderovacích volby:

KlávesaAkce
d Přepíná metody rozhodování v libcaca.
a Přepíná vyhlazování v libcaca.
b Přepíná pozadí v libcaca.

libcaca také respektuje některé proměnné prostředí:

CACA_DRIVER

Nastaví doporučený caca ovladač, jako ncurses, slang, x11.

CACA_GEOMETRY (pouze X11)

Nastaví počet řad a sloupců. Např. 128x50.

CACA_FONT (pouze X11)

Nastaví použitý font. Např. fixed, nexus.

Použijte volbu -framedrop, pokud váš počítač není dost rychlý pro renderování všech snímků.

4.13. VESA - výstup do VESA BIOSu

Tento ovladač byl navržen a představen jako obecný ovladač pro jakoukoli video kartu, která má VESA VBE 2.0 kompatibilní BIOS. Další výhodou tohoto ovladače je, že zkouší vynutit zapnutí výstupu na TV. VESA BIOS EXTENSION (VBE) Version 3.0 Date: September 16, 1998 (Strana 70) uvádí:

Karty Dual-Controller.  VBE 3.0 podporuje karty s dual-controllerem za předpokladu že, jelikož jsou typicky oba controllery vybaveny stejným OEM a nastavovány jedinou BIOS ROM na stejné grafické kartě, je možné skrýt před aplikací přítomnost dvou controllerů. To omezuje nezávislé použití jednotlivých controllerů, ale umožňuje aplikacím vydaným před VBE 3.0 pracovat normálně. VBE funkce 00h (Návrat informací o controlleru) vrací kombinované informace obou conrollerů, včetně kombinovaného seznamu platných režimů. Příslušný controller je aktivován jakmile aplikace vybere režim. Všechny ostatní VBE funkce pak pracují s aktivním controllerem.

Máte tedy možnost s tímto rozhraním dostat funkční TV výstup. (Soudím že TV výstup má velmi často samostatnou jednotku, nebo aspoň samostatný výstup.)

VÝHODY

  • Máte šanci sledovat video dokonce i když Linux nezná váš video hardware.

  • Nepotřebujete mít ve svém Linuxu nainstalovány žádné věci související s grafikou (jako X11 (alias XFree86), fbdev atd). Toto rozhraní lze provozovat z textového režimu.

  • Máte šanci získat funkční TV-out. (Je to pravda minimálně s kartami ATI).

  • Toto rozhraní volá int 10h handler, takže není emulátorem – volá skutečné věci skutečného BIOSu v reálném režimu (ve skutečnosti v režimu vm86).

  • Můžete s ním použít VIDIX, takže dostanete akcelerované video a TV výstup současně! (Doporučeno pro karty ATI.)

  • Máte-li VESA VBE 3.0+ a nastavili jste si někde monitor-hfreq, monitor-vfreq, monitor-dotclock (config soubor nebo příkazový řádek) dostanete nejvyšší možný obnovovací kmitočet. (Using General Timing Formula). Abyste této funkce dosáhli, musíte nastavit všechna nastavení monitoru.

NEVÝHODY

  • Pracuje pouze na systémech x86.

  • Může to použít pouze root.

  • Zatím je dostupné pouze pro Linux.

Důležité

Nepoužívejte toto rozhraní s GCC 2.96! Nefunguje!

VOLBY PŘÍKAZOVÉHO ŘÁDKU DOSTUPNÉ PRO VESA

-vo vesa:volby

zatím dostupné: dga pro vynucení dga režimu a nodga pro jeho potlačení. V režimu dga můžete zapnout dvojitou vyrovnávací paměť pomocí volby -double. Poznámka: Tyto volby můžete vynechat, abyste zapli autodetekci dga režimu.

ZNÁMÉ PROBLÉMY A KLIČKY

  • Pokud máte nainstalován NLS font v Linuxové konzoli a použijete VESA rozhraní v textovém režimu, pak po ukončení MPlayeru budete mít nahrán ROM font místo národního. Můžete si opět nahrát národní font například pomocí utility setsysfont z distribuce Mandrake/Mandriva. (Tip: Stejná utilita je použita pro lokalizaci fbdev).

  • Některé Linuxové grafické ovladače neobnovují aktivní režim BIOSu v DOSové paměti. Takže pokud máte tento problém – vždy používejte VESA rozhraní pouze v textovém režimu. Jinak bude přesto aktivován textový režim (#03) a budete muset restartovat počítač.

  • Často po ukončení VESA rozhraní dostanete černou obrazovku. Chcete-li vrátit obraz do původního stavu – jednoduše se přepněte do jiné konzole (stiskem Alt+F<x>) a pak se přepněte zpět stejným způsobem.

  • Chcete-li funkční TV-out, musíte mít připojený TV konektor před startem počítače, jelikož se video BIOS inicializuje pouze jednou během POST procedury.

4.14. X11

Pokud možno se mu vyhněte. Posílá obraz do X11 (používá rozšíření sdílená paměť) bez jakékoli hardwarové akcelerace. Podporuje (MMX/3DNow/SSE akcelerované, ale přesto pomalé) softwarové škálování. Použijte volby -fs -zoom. Většina karet má hardwarovou podporu škálování, použijte pro ně volbu -vo xv, nebo -vo xmga pro karty Matrox.

Problém je, že většina karet nepodporuje hardwarovou akceleraci na sekundárním výstupu/TV. V těchto případech uvidíte místo filmu zelenou/modrou obrazovku. Teď se hodí toto rozhraní, ale potřebujete silný procesor pro použití softwarového škálování. Nepoužívejte SDL softwarový výstup a škálování, má horší kvalitu obrazu!

Softwarové škálování je velmi pomalé, zkuste raději měnit videorežimy. Je to jednoduché. Viz modelines v DGA sekci a přidejte je do svého XF86Config.

  • Máte-li XFree86 4.x.x: použijte volbu -vm. Ta změní rozlišení tak, aby do něj film dobře vešel. Když ne:

  • S XFree86 3.x.x: musíte cyklovat dostupnými rozlišeními pomocí tlačítek Ctrl+Alt+Numerické + a Ctrl+Alt+Numerické -

Pokud nemůžete najír rozlišení, která jste vložili, pročtěte si výstup XFree86. Některé ovladače nezvládnou nízké bodové kmitočty potřebné pro režimy s nízkým rozlišením videa.

4.15. VIDIX

PŘEDMLUVA.  VIDIX je zkratka pro VIDeo Interface for *niX (video rozhraní pro *nix). VIDIX bylo navrženo a představeno jako rozhraní pro rychlé uživatelské ovladače dosahujících video výkonu jako dosahuje mga_vid na kartách Matrox. Je rovněž dobře přenositelné.

Toto rozhraní bylo navrženo jako pokus napasovat existující video akcelerující rozhraní (známé jako mga_vid, rage128_vid, radeon_vid, pm3_vid) do pevného schéma. Poskytuje vysokoúrovňové rozhraní k čipům známým jako BES (BackEnd scalers) nebo OV (Video Overlays). Neposkytuje nízkoúrovňové rozhraní k věcem známým jako grafické servery. (Nechci konkurovat X11 týmu v přepínání grafických režimů). Čili hlavním cílem tohoto rozhraní je maximalizace rychlosti přehrávání videa.

POUŽITÍ

  • Můžete použít samostatné video rozhraní: -vo xvidix. Toto rozhraní bylo vytvořeno jako front end X11 k technologii VIDIX. Vyžaduje X server a může pracovat pouze pod X serverem. Poznamenejme, že jelikož přímo komunikuje s hardwarem a obchází X ovladač, pixmapy uložené v paměti grafické karty můžou být poškozeny. Můžete se tomu vyhnout omezením množství video paměti použité X pomocí volby "VideoRam" v XF86Config o 4MB. Pokud máte méně než 8MB video ram, můžete místo toho použít volbu "XaaNoPixmapCache" v sekci screen.

  • Existuje konzolové VIDIX rozhraní: -vo cvidix. To vyžaduje pro většinu karet funkční inicializovaný framebuffer (jinak pouze rozhodíte obrazovku) a dosáhnete podobného efektu jako s -vo mga nebo -vo fbdev. nVidia karty však jsou schopny zobrazit plně grafické video na reálné textové konzoli. Viz sekci nvidia_vid pro více informací. Abyste se zbavili textu na okrajích a blikajícího kursoru, zkuste něco jako

    setterm -cursor off > /dev/tty9

    (předpokládáme, že tty9 není dosud používaná) a pak se přepneme do tty9. Na druhou stranu volba -colorkey 0 by měla poskytnout video běžící na "pozadí", zprávná funkce však závisí na funkčnosti colorkey.

  • Můžete použít VIDIXové podzařízení, které bylo zabudováno do několika video ovladačů, například: -vo vesa:vidix (pouze Linux) a -vo fbdev:vidix.

Nezáleží na tom, které video výstupní rozhraní je použito s VIDIX.

POŽADAVKY

  • Video karta by měla být v grafickém režimu (vyjma karet nVidia s výstupním rozhraním -vo cvidix).

  • Výstupní video rozhraní MPlayeru by mělo znát aktivní video režim a být schopno sdělit VIDIXovému podzařízení některé video charakteristiky serveru.

METODY POUŽITÍ.  Když použijete VIDIX jako subdevice (-vo vesa:vidix), pak je konfigurace video režimu je provedeno výstupním video rozhraním (zkrátka vo_serverem). Takže můžete zadat na příkazovém řádku MPlayeru stejné volby jako pro vo_server. Návdavkem rozeznává volbu -double jako globální parametr. (Doporučuji použít tuto volbu s VIDIX aspoň pro ATI kartu). Stejně jako -vo xvidix, dosud zná následující volby: -fs -zoom -x -y -double.

Rovněž můžete uvést VIDIXový ovladač jako třetí podvolbu na příkazovém řádku:

mplayer -vo xvidix:mga_vid.so -fs -zoom -double soubor.avi

nebo

mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 soubor.avi

Ale je to nebezpečné a neměli byste to dělat. V tomto případě bude zadaný ovladač vynucen a výsledek je nepředvídatelný (může vám zatuhnout počítač). Měli byste to použít POUZE pokud jste si absolutně jistí, že to bude fungovat a MPlayer to neudělá automaticky. Řekněte o tom prosím vývojářům. Správný způsob je použití VIDIX bez argumentů, aby proběhla autodetekce.

Jelikož VIDIX vyžaduje přímý přístup k hardware, můžete jej buď spustit jako root, nebo nastavit SETUID bit binárce MPlayeru (Varování: Toto je bezpečnostní risk!). Alternativně můžete použít speciální jaderný modul, například:

  1. Stáhněte si vývojovou verzi svgalib (například 1.9.17), NEBO si stáhněte verzi vytvořenou Alexem speciálně pro použití s MPlayerem (ke kompilaci nepotřebuje zdrojový kód svgalib) z odtud.

  2. Skompilujte modul v adresáři svgalib_helper (naleznete ji v svgalib-1.9.17/kernel/, pokud jste si stáhli zdrojový kód ze serveru svgalib) a nahrajte (insmod) jej.

  3. Pro vytvoření potřebných zařízení v adresáři /dev proveďte jako root

    make device

    v adresáři svgalib_helper.

  4. Přesuňte adresář svgalib_helper do podadresáře vidix zdrojových kódů MPlayeru.

  5. Odkomentujte řádek CFLAGS obsahující text "svgalib_helper" v souboru vidix/Makefile.

  6. Překompilujte.

4.15.1. Karty ATI

V současnosti je většina ATI karet podporována nativně od Mach64 až po nejnovější Radeony.

Existují dvě skompilované binárky: radeon_vid pro Radeony a rage128_vid pro karty Rage 128. Můžete některou vynutit, nebo nechat VIDIX rozhraní autodetekovat všechny dostupné ovladače.

4.15.2. Karty Matrox

Matrox G200, G400, G450 a G550 jsou hlášeny jako funkční.

Ovladač podporuje video ekvalizéry a měl by být téměř tak rychlý jako Matrox framebuffer

4.15.3. Karty Trident

Existuje ovladač pro čipset Trident Cyberblade/i1, který lze nalézt na motherboardech VIA Epia.

Ovladač byl napsán a je udržován Alastairem M. Robinsonem

4.15.4. Karty 3DLabs

Ačkoli existuje ovladač pro čipy 3DLabs GLINT R3 a Permedia3, nikdo je netestoval, takže hlášení vítáme.

4.15.5. Karty nVidia

Unikátní vlastností ovladače nvidia_vid je jeho schopnost zobrazit video na jednoduché, čisté, pouze textové konzoli – bez framebufferu nebo nějaké X magie. Pro tento účel budete muset použít video rozhraní cvidix, jak to ukazuje následující příklad:

mplayer -vo cvidix příklad.avi

4.15.6. Karty SiS

Toto je velmi experimentální kód, stejně jako nvidia_vid.

Byl testován na SiS 650/651/740 (nejobvyklejší čipsety použité v SiS verzích "Shuttle XPC" barebones boxes out there)

Hlášení očekávána!

4.16. DirectFB

„DirectFB je grafická knihovna navržená se zřetelem na vestavěné systémy. Nabízí maximálně hardwarově akcelerovaný výkon při minimální spotřebě zdrojů a zatížení.“ – citováno z http://www.directfb.org

Vlastnosti DirectFB v této sekci vynechám.

Ačkoli MPlayer není podporován jako „video provider“ v DirectFB, toto video rozhraní umožní přehrávání videa přes DirectFB. Bude to samozřejmě akcelerované. Na mém Matroxu G400 byla rychlost DirectFB stejná jako XVideo.

Vždy se snažte používat nejnovější verzi DirectFB. Můžete nastavovat volby pro DirectFB na příkazovém řádku pomocí volby -dfbopts. Volbu vrstvy lze provést metodou podzařízení, např.: -vo directfb:2 (výchozí je vrstva -1: autodetekce)

4.17. DirectFB/Matrox (dfbmga)

Přečtěte si prosím hlavní DirectFB sekci pro obecné informace.

Toto video výstupní zařízení zapne CRTC2 (na sekundárním výstupu) na kartách Matrox G400/G450/G550, takže zobrazuje video nezávisle na hlavním výstupu.

Ville Syrjala's má README a HOWTO na své domácí stránce, kde vysvětluje, jak rozběhnout DirectFB TV výstup na kartách Matrox.

Poznámka

První DirectFB verze se kterou se nám to povedlo byla 0.9.17 (je chybová, potřebuje surfacemanager patch z výše uvedeného URL). Portace CRTC2 kódu do mga_vid bylo plánováno léta, patche vítáme.

4.18. MPEG dekodéry

4.18.1. DVB výstup a vstup

MPlayer podporuje karty s čipsetem Siemens DVB od výrobců jako Siemens, Technotrend, Galaxis nebo Hauppauge. Poslední DVB ovladače jsou dostupné na Linux TV serveru. Pokud chcete provádět softwarové transkódování, měli byste mít aspoň 1GHz CPU.

Configure by měl detekovat vaši DVB kartu. Pokud ne, vynuťte detekci pomocí

./configure --enable-dvb

Pokud máte ost hlavičky na nestandardním místě, nastavte cestu pomocí

./configure --extra-cflags=zdrojový adresář DVB/ost/include

Pak kompilujte a instalujte obvyklým způsobem.

POUŽITÍ.  Hardwarové dekódování proudů obsahujících MPEG–1/2 video a/nebo audio lze provést tímto příkazem:

mplayer -ao mpegpes -vo mpegpes soubor.mpg|vob

Dekódování jakéhokoli jiného typu video proudu vyžaduje transkódování MPEG–1, což je pomalé a nemusí stát za to, zvlášť s pomalým počítačem. Můžete jej dosáhnout příkazem podobným tomuto:

mplayer -ao mpegpes -vo mpegpes váš_soubor.ext
mplayer -ao mpegpes -vo mpegpes -vf expand váš_soubor.ext

Pamatujte, že DVB karty podporují pouze výšky 288 a 576 pro PAL nebo 240 a 480 pro NTSC. Jiné výšky musíte přeškálovat přidáním scale=šířka:výška s šířkou a výškou, které chcete do volby -vf. DVB karty akceptují různé šířky jako 720, 704, 640, 512, 480, 352 atd, a provádí hardwarově vodorovné škálování, takže ve většině případů nemusíte vodorovně škálovat. Pro 512x384 (poměr stran 4:3) MPEG–4 (DivX) zkuste:

mplayer -ao mpegpes -vo mpegpes -vf scale=512:576

Pokud máte širokoúhlý film a nechcete jej škálovat na plnou výšku, můžete použít filtr expand=š:v pro přidání černých okrajů. Pro promítání 640x384 MPEG–4 (DivX), zkuste:

mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 soubor.avi

Pokud je váš procesor příliš slabý pro 720x576 MPEG–4 (DivX), zkuste podškálovat:

mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 soubor.avi

Pokud se rychlost nezlepší, zkuste podškálovat i výšku:

mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 soubor.avi

Pro OSD a titulky použijte OSD vlastnost expand filtru. Takže místo expand=š:v nebo expand=š:v:x:y, použijte expand=š:v:x:y:1 (pátý parametr :1 na konci zapne renderování OSD). Možná byste měli trochu posunout obraz nahoru, abyste měli větší černý okraj pro titulky. Rovněž byste měli posunout nahoru titulky, pokud jsou mimo TV obrazovku. Použijte volbu -subpos <0-100> pro toto nastavení (-subpos 80 je dobrá volba).

Chcete-li přehrávat filmy s jinou snímkovou rychlostí než 25 fps na PAL TV, nebo na pomalém CPU, přidejte volbu -framedrop.

Chcete-li zachovat poměr stran MPEG–4 (DivX) souborů a dosáhnout optimálních škálovacích parametrů (hardwarové horizontální škálování a softwarové vertikální škálování zatímco zachováte správný poměr stran), použijte filtr dvbscale:

pro 4:3 TV: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1
pro 16:9 TV: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1

Digitální TV (vstupní DVB modul). Můžete použít svou DVB kartu pro sledování Digitální TV.

Měli byste mít nainstalovány programy scan a szap/tzap/czap/azap; všechny jsou zařazeny v balíčku ovladačů.

Ověřte si, zda vaše ovladače pracují správně s progamy jako je dvbstream (to je základ vstupního DVB modulu).

Nyní byste měli skompilovat soubor ~/.mplayer/channels.conf, se syntaxí akceptovanou szap/tzap/czap/azap, nebo nechat scan, aby jej skompiloval.

Pokud máte více než jeden typ karty (Např. Satellitar, Terrestrial, Cable a ATSC) můžete si uložit své channels soubory podle typu jako ~/.mplayer/channels.conf.sat, ~/.mplayer/channels.conf.ter, ~/.mplayer/channels.conf.cbl, a ~/.mplayer/channels.conf.atsc, kdy MPlayer použije tyto soubory spíše než ~/.mplayer/channels.conf, a vy musíte pouze nastavit, kterou kartu použít.

Ujistěte se, že máte pouze nekódované kanály ve svém channels.conf souboru, jinak se MPlayer pokusí přeladit na nejbližší zobrazitelný, ale to může trvat dlouho, pokud je zde mnoho po sobě jdoucích šifrovaných kanálů.

V polích audio a video můžete použít rozšířenou syntaxi: ...:pid[+pid]:... (maximálně 6 pidů každé); v tom případě zahrne MPlayer do datového proudu všechny zadané pidy plus pid 0 (který obsahuje PAT). Doporučujeme zahrnout do každého řádku PMT pid pro odpovídající kanál (pokud jej znáte) Můžete rovněž zadat 8192, to vybere všechny pidy na této frekvenci a vy pak můžete přepínat programy pomocí TAB. To může vyžadovat větší šířku pásma, ale laciné karty vždy přenášejí všechny kanály minimálně do jádra, takže u nich v tom nebude velký rozdíl. Další možná použití jsou: televideo pid, druhá audio stopa, atd.

Pokud MPlayer často protestuje o

Příliš mnoha video/audio paketech ve vyrovnávací paměti

nebo pokud si povšimnete rostoucí desynchronizace mezi zvukem a videem, zkuste použít MPEG–TS demuxer z libavformat přidáním -demuxer lavf -lavfdopts probesize=128 na příkazovém řádku.

Pro zobrazení prvního z kanálů uvedeného v seznamu, spusťte

mplayer dvb://

Pokud chcete sledovat určitý kanál, například R1, spusťte

mplayer dvb://R1

Pokud máte více než jednu kartu, musíte rovněž uvést číslo karty, na které lze kanál sledovat (např. 2). Syntyxe je:

mplayer dvb://2@R1

Pro změnu kanálu stiskněte klávesu h (další) nebo k (předchozí), nebo použijte OSD menu.

Pokud váš ~/.mplayer/menu.conf obsahuje řádek <dvbsel> podobný tomu v ukázkovém souboru etc/dvb-menu.conf (který můžete použít k přepsání ~/.mplayer/menu.conf), bude v hlavním menu podseznam, kde si budete moci zvolit kanál ze svého channels.conf. Může mu případně předcházet menu se seznamem dostupných karet, pokud máte více než jednu použitelnou MPlayerem.

Pokud si chcete uložit program na disk, můžete použít

mplayer -dumpfile r1.ts -dumpstream dvb://R1

Pokud jej chcete zaznamenat v odlišném formátu (reenkódovat jej), spusťte místo toho příkaz podobný následujícímu:

mencoder -o r1.avi -ovc xvid -xvidencopts bitrate=800\
    -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1

Přečtěte si man stránku pro seznam voleb, které můžete předat vstupnímu DVB modulu.

BUDOUCNOST.  Máte-li otázky, nebo chcete dostávat oznámení o nových vlastnostech a zapojit se do diskuse o těchto věcech, připojte se k naší MPlayer-DVB e-mailové konferenci. Pamatujte prosím, že jazykem konference je angličtina.

V budoucnu můžete očekávat schopnost zobrazovat OSD a titulky pomocí nativní podpory OSD v DVB kartách, stejně jako plynulejší přehrávání filmů s jinou snímkovou rychlostí, než 25 fps a transkódování MPEG–2 na MPEG–4 v reálném čase (částečná dekomprese).

4.18.2. DXR2

MPlayer podporuje hardwarově akcelerované přehrávání pomocí karty Creative DXR2.

Nejdříve musíte mít správně nainstalované DXR2 ovladače. Ovladače a návod k jejich instalaci naleznete na stránkách DXR2 Resource Center.

POUŽITÍ

-vo dxr2

Zapíná TV výstup.

-vo dxr2:x11 nebo -vo dxr2:xv

Zapíná Overlay výstup v X11.

-dxr2 <volba1:volba2:...>

Tato volba je použita k ovládání DXR2 ovladače.

Overlay čipset použitý v DXR2 má mizernou kvalitu, ale výchozí nastavení pracuje vždy. OSD lze použít spolu s overlay (ne na TV) při jeho vykreslení v klíčovací barvě. S výchozím nastavením klíčovací barvy můžete dosáhnout různých výsledků, obvykle uvidíte klíčovací barvu kolem znaků nebo jiné srandovní věci. Pokud ale vhodně upravíte klíčování, můžete dosáhnout použitelných výsledků.

Prostudujte si prosím man stránku pro dostupné volby.

4.18.3. DXR3/Hollywood+

MPlayer podporuje hardwarově akcelerované přehrávání videa pomocí karet Creative DXR3 a Sigma Designs Hollywood Plus. Obě tyto karty používají MPEG dekodér em8300 od Sigma Designs.

Nejprve budete potřebovat správně nainstalované DXR3/H+ ovladače verze 0.12.0 nebo pozdější. Ovladače a návod na jejich instalaci naleznete na stránkách DXR3 & Hollywood Plus for Linux. configure by mělo automaticky detekovat vaši kartu a kompilace by se měla obejít bez potíží.

POUŽITÍ

-vo dxr3:prebuf:sync:norm=x:zařízení

overlay aktivuje overlay místo TVOut. Pro správnou funkci vyžaduje, abyste měli správně nakonfigurované nastavení overlay. Nejjednodužší způsob nastavení overlay, je spuštění autocal. Pak spusťte MPlayer s video výstupem nastaveným na dxr3 s vypnutým overlay, spusťte dxr3view. V dxr3view si můžete hrát s nastavením overlay a pozorovat změny v reálném čase. Snad bude tato funkce časem dostupná z GUI MPlayeru. Jakmile máte správně nastaveno overlay, není již nutné používat dxr3view. prebuf zapíná prebuffering. Prebuffering je vlastnost čipu em8300, která mu umožňuje podržet si více než jeden videosnímek současně. To znamená, že pokud jej máte zapnutý, snaží se MPlayer udržet vyrovnávací paměť videa (buffer) naplněný daty. Pokud jej provozujete na pomalém stroji, použije MPlayer téměř nebo přesně 100% výkonu CPU. To je zvlášť časté, pokud přehráváte čisté MPEG datové proudy (jako DVD, SVCD atp.) jelikož je MPlayer nemusí převádět do MPEG, naplní buffer velmi rychle. S prebufferingem je přehrávání videa mnohem méně citlivé na zaměstnávání CPU jinými programy. Nebudou zahozeny snímky, pokud si aplikace neuzme CPU na dlouhou dobu. Pokud přehráváte bez prebufferingu, je em8300 mnohem citlivější na vytížení CPU, takže doporučujeme zapnout MPlayerovu volbu -framedrop pro zachování synchronizace. sync zapíná nový sync–engine. To je zatím experimentální vlastnost. Se zapnutým sync budou vnitřní hodiny em8300 neustále sledovány a pokud se začnou rozcházet s časovačem MPlayeru, budou resetovány, což způsobí, že em8300 zahodí veškeré snímky, které čekají ve frontě. norm=x nastaví TV normu DXR3 karty bez nutnosti externího nástroje jako em8300setup. Platné normy jsou 5 = NTSC, 4 = PAL-60, 3 = PAL. Zvláštní normy jsou 2 (automaticné nastavení s použitím PAL/PAL-60) a 1 (automatické nastavení s použitím PAL/NTSC), jelikož ty určí použitou normu podle snímkové rychlosti filmu. norm = 0 (výchozí) nezmění aktuální normu. device = číslo zařízení, které se má použít, pokud máte více než jednu em8300 kartu. Jakoukoli z těchto voleb můžete vynechat. Volba :prebuf:sync, zdá se, pracuje skvěle při přehrávání filmů v MPEG–4 (DivX). Lidé však hlásili potíže s volbou prebuf při přehrávání souborů v MPEG–1/2. Měli byste je nejprve zkusit přehrát bez dodatečných voleb a pokud narazíte na potíže se synchronizací nebo DVD titulky, zkuste to s volbou :sync.

-ao oss:/dev/em8300_ma-X

Pro zvukový výstup, kde X je číslo zařízení (0 máte-li jen jednu kartu).

-af resample=xxxxx

Čip em8300 neumí přehrávat signál vzorkovaný méně než 44100Hz. Pokud je vzorkovací kmitočet pod 44100Hz, zvolte buď 44100Hz nebo 48000Hz podle toho, násobek kterého je blíž. Čili pokud má film zvuk 22050Hz použijte 44100Hz, jelikož 44100 / 2 = 22050, pokud jej má 24000Hz použijte 48000Hz jelikož 48000 / 2 = 24000 a tak dále. S výstupem digitálního audia to nefunguje (-ac hwac3).

-vf lavc/fame

Pro přehrávání ne–MPEG obsahu na em8300 (např. MPEG–4 (DivX) nebo RealVideo) musíte nastavit MPEG–1 video filtr jako libavcodec (lavc). Viz manuál pro další informace o -vf lavc. V tuto chvíli není možné nastavit snímkovou rychlost em8300, což znamená, že je pevně nastavena na 30000/1001 snímků/s (fps). Z toho důvodu doporučujeme, abyste použili -vf lavc=quality:25 zvlášť pokud používáte prebuffering. Proč tedy 25 a ne 30000/1001? Nu, důvodem je, že pokud zadáte 30000/1001, začne obraz trochu poskakovat. Důvod tohoto jevu nám není znám. Pokud to nastavíte někde mezi 25 a 27, obraz se ustálí. Pro tuto chvíli se to dá pouze uznat jako fakt.

-vf expand=-1:-1:-1:-1:1

Ačkoli DXR3 ovladač umí dodat OSD do MPEG–1/2/4 videa, má to mnohem nižší kvalitu než tradiční OSD MPlayeru a má i různé problémy s obnovováním. Výše uvedený příkazový řádek nejprve převede vstupní video do MPEG–4 (je to nutné, sorry), pak aplikuje filtr expand, který však nic neexpanduje (-1: výchozí), ale doplní normální OSD do obrazu (na to je ta „1“ na konci).

-ac hwac3

Čip em8300 podporuje přehrávání zvuku v AC–3 (prostorový zvuk) přes digitální audio výstup na kartě. Viz výš volbu -ao oss. Ta musí být použita pro nastavení výstupu do DXR3 místo zvukové karty.

4.19. Ostatní vizualizační hardware

4.19.1. Zr

Toto je zobrazovací rozhraní (-vo zr) pro mnoho MJPEG zachytávacích/přehrávacích karet (testováno na DC10+ a Buz a mělo by pracovat i s LML33, tedy DC10). Rozhraní pracuje tak, že snímek zakóduje do JPEG a pak jej pošle do karty. Pro enkódování do JPEG se používá libavcodec a je pro ně nezbytný. Ve speciálním cinerama režimu můžete sledovat filmy v pravém širokoúhlém formátu, kterého je dosaženo tak, že máte dvě promítačky a dvě MJPEG karty. V závislosti na rozlišení a nastavení kvality může toto rozhraní vyžadovat spoustu výkonu CPU. Nezapomeňte zadat -framedrop, pokud je váš počítač příliš pomalý. Poznámka: Můj AMD K6-2 350MHz je (s -framedrop) vcelku adekvátní pro sledování materiálu o rozměru VCD a podškálovaných filmů.

Toto rozhraní komunikuje s jaderným modulem dostupným na http://mjpeg.sf.net, takže jej nejdříve musíte zprovoznit. Přítomnost MJPEG karty je autodetekována skriptem configure. Pokud detekce selže, vynuťte ji pomocí

./configure --enable-zr

Výstup může být ovlivňován několika volbami. Obšírný výklad těchto voleb naleznete v man stránce, krátký přehled obržíte spuštěním

mplayer -zrhelp

Věci jako škálování a OSD (display na obrazovce) nejsou tímto rozhraním pokryty, ale lze jich dosáhnout pomocí video filtrů. Například mějte video o rozlišení 512x272 a chcete jej přehrávat na celé obrazovce přes DC10+, pak máte tři základní možnosti, jak to udělat. Můžete škálovat video na šířku 768, 384 nebo 192. Z důvodu výkonu a kvality si zvolíte škálování filmu na 384x204 pomocí bilineárního softwarového škálovače. Příkazový řádek je pak

mplayer -vo zr -sws 0 -vf scale=384:204 film.avi

Ořezání lze provést crop filtrem a samotným rozhraním. Řekněme, že film je příliš široký pro promítání na vaší Buz a proto chcete použít -zrcrop pro zůžení filmu, pak byste měli použít následující příkaz

mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi

chcete-li použít filtr crop, proveďte

mplayer -vo zr -vf crop=720:320:80:0 benhur.avi

Zvláštní případy -zrcrop vyvolá režim cinerama, takže rozprostřete film na několik televizí nebo promítaček, čímž se vytvoří větší obraz. Předpokládejme, že máte dvě promítačky. Levá je připojena k vaší Buz na /dev/video1 a pravý je připojen do vaší DC10+ na /dev/video0. Film má rozlišení 704x288. Předpokládejme rovněž, že pravá promítačka je černobílá a levá umí JPEG snímky s kvalitou 10, pak byste měli použít následující příkaz

mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \
    -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \
        movie.avi

Jak vidíte, volby uvedené před druhým -zrcrop jsou předány pouze do DC10+ a volby za druhým -zrcrop do Buz. Maximální počet MJPEG karet zahrnutých do cinerama režimu jsou čtyři, takže můžete sestavit zobrazovací stěnu 2x2.

Nakonec důležité upozornění: Nespouštějte ani nezastavujte XawTV na přehrávacím zařízení během přehrávání, zhavaru je vám počítač. Můžete však NEJDŘÍV spustit XawTV a PAK spustit MPlayer, počkat až MPlayer skončí a PAK zastavit XawTV.

4.19.2. Blinkenlights

Toto rozhraní je schopno přehrávání pomocí Blinkenlights UDP protokolu. Pokud nevíte co je Blinkenlights nebo jeho nástupce Arcade, zjistěte si to. Ačkoli je to dost možná nejméně používané video výstupní rozhraní, bezpochyby je tím nejlepším, co může MPlayer nabídnout. Stačí shlédnout některá z Blinkenlights dokumentačních videí. Na Arcade video můžete vidět výstupní rozhraní Blinkenlights v akci v 00:07:50.

4.20. Podpora TV výstupu

4.20.1. Karty Matrox G400

Pod Linuxem máte dva způsoby jak zprovoznit TV výstup na G400:

Důležité

pro instrukce k TV výstupu na Matrox G450/G550 si prostudujte textovou část!

XFree86

Pomocí ovladače a HAL modulu dostupného na stránkách Matrox. Takto dostanete X na TV.

Tato metoda vám neposkytne akcelerované přehrávání jako pod Windows! Sekundární jednotka má pouze YUV framebuffer, BES (Back End Scaler, YUV škálovač na kartách G200/G400/G450/G550) na něm nepracuje! Ovladač pro Windows to nějak obchází, pravděpodobně použitím 3D jednotky pro zoom a YUV framebufferu pro zobrazení zoomovaného obrazu. Pokud opravdu chcete použít X, použijte volby -vo x11 -fs -zoom, ale bude to POMALÉ a bude zapnuta ochrana proti kopírování Macrovision (Macrovision můžete obejít pomocí tohoto perlového skriptu).

Framebuffer

Pomocí matroxfb modulů v jádrech řady 2.4. Jádra 2.2 v nich neobsahují podporu pro TV, takže jsou pro tento účel nepoužitelná. Měli byste povolit VŠECHNY matroxfb-specifické vlastnosti během kompilace (vyjma MultiHead) a zakompilovat je do modulů! Rovněž potřebujete zapnuté I2C.

  1. Vstupte do TVout a zadejte ./compile.sh. Nainstalujte TVout/matroxset/matroxset někde do cesty PATH.

  2. Nemáte-li nainstalován fbset, vložte TVout/fbset/fbset někde do cesty PATH.

  3. Nemáte-li nainstalován con2fb, vložte TVout/con2fb/con2fb někde do cesty PATH.

  4. Pak vstupte do adresáře TVout/ ve zdrojovém adresáři MPlayeru a spusťte ./modules jako root. Vaše textová konzole přejde do režimu framebuffer (není cesta zpět!).

  5. Dále EDITUJTE a spusťte skript ./matroxtv. Objeví se vám velmi jednoduché menu. Stiskněte 2 a Enter. Nyní byste měli mít stejný obraz na svém monitoru i TV. Pokud má obraz na TV (výchozí je PAL) nějaké podivné šrámy, nebyl skript schopen nastavit správně rozlišení (na výchozích 640x512). Zkuste jiná rozlišení z menu a/nebo experimentujte s fbset.

  6. Jo. Dalším úkolem je nechat zmizet kurzor z tty1 (nebo odjinud) a vypnout mazání obrazovky. Spusťe následující příkazy:

    echo -e '\033[?25l'
    setterm -blank 0

    nebo

    setterm -cursor off
    setterm -blank 0

    Předchozí nejspíš bude lepší umístit do skriptu a také vyčistit obrazovku. Pro zpětné zapnutí kurzoru:

    echo -e '\033[?25h'

    nebo

    setterm -cursor on

  7. A jasně. Spusťte přehrávání filmu:

    mplayer -vo mga -fs -screenw 640 -screenh 512 soubor

    (Pokud používáte X, přepněte se nyní do matroxfb pomocí například Ctrl+Alt+F1.) Změňte 640 a 512 pokud máte nastaveno jiné rozlišení...

  8. Užijte si ultra-rychlý ultra-vybavený Matrox TV výstup (lepší než Xv)!

Výroba kabelu pro Matrox TV–out.  Zříkáme se jakékoli odpovědnosti nebo záruky za jakékoli poškození způsobené touto dokumentací.

Kabel pro G400.  Na čtvrtém pinu CRTC2 konektoru je kompozitní video signál. Zem je na šestém, sedmém a osmém pinu. (informaci poskytl Balázs Rácz)

Kabel pro G450.  Kompozitní video signál je na pinu jedna. Zem je na pátém, šestém, sedmém a patnáctém (5, 6, 7, 15) pinu. (informaci poskytl Balázs Kerekes)

4.20.2. Karty Matrox G450/G550

Podpora TV výstupu pro tyto karty byla přidána teprve nedávno a dosud není v ostré verzi jádra. V současnosti nelze (aspoň pokud vím) použít modul mga_vid, protože ovladač G450/G550 pracuje pouze v jedné konfiguraci: první CRTC čip (s mnohem více schopnostmi) na první displej a druhá CRTC (žádné BES – pro popis BES viz sekci G400 výše) na TV. Takže v současnosti můžete použít pouze MPlayerovo fbdev výstupní rozhraní.

První CRTC nemůže být v současnosti přesměrována na sekundární výstup. Autor jaderného ovladače matroxfb – Petr Vandrovec – pro to snad vyrobí podporu pomocí zobrazení výstupu prvního CRTC na oba výstupy najednou, což se pro tuto chvíli doporučuje pro G400, viz předchozí sekce.

Potřebnou záplatu jádra a podrobné HOWTO lze stáhnout z http://www.bglug.ca/matrox_tvout/

4.20.3. Karty ATI

ÚVOD.  V současnosti nechce ATI podporovat žádný ze svých TV-out čipů pod Linuxem z důvodu jejich licencované technologii Macrovision.

STATUS TV VÝSTUPU NA KARTÁCH ATI POD LINUXEM

  • ATI Mach64: podporovaný GATOSem.

  • ASIC Radeon VIVO: podporovaný GATOSem.

  • Radeon a Rage128: podporovaný MPlayerem! Podívejte se na sekce VESA a VIDIX.

  • Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4: podporovaný atitvoutem.

Ne ostatních kartách prostě použijte rozhraní VESA bez VIDIX. Vyžaduje to výkoný CPU.

Jediné co musíte, je mít TV konektor zapojený před zapnutím PC jelikož video BIOS se inicializuje pouze jednou během POST procedury.

4.20.4. nVidia

Nejprve si MUSÍTE stáhnout closed–source ovladače z http://nvidia.com. Nebudu zde popisovat instalaci a konfiguraci, jelikož je to mimo rámec této dokumentace.

Jakmile je funkční XFree86, XVideo a 3D akcelerace, editujte sekci Device v souboru XF86Config, podle následujícího příkladu (upravte si to pro svou kartu/TV):

Section "Device"
        Identifier      "GeForce"
        VendorName      "ASUS"
        BoardName       "nVidia GeForce2/MX 400"
        Driver          "nvidia"
        #Option         "NvAGP" "1"
        Option          "NoLogo"
        Option          "CursorShadow"  "on"

        Option          "TwinView"
        Option          "TwinViewOrientation" "Clone"
        Option          "MetaModes" "1024x768,640x480"
        Option          "ConnectedMonitor" "CRT, TV"
        Option          "TVStandard" "PAL-B"
        Option          "TVOutFormat" "Composite"
EndSection

Samozřejmě je nejdůležitější část TwinView.

4.20.5. NeoMagic

Čip NeoMagic lze nalézt v různých laptopech. Některé z nich jsou vybaveny jednoduchým analogovým TV enkodérem, některé jej mají mnohem pokročilejší.

  • Analogový enkodér: Bylo nám hlášeno, že použitelný TV lze dosáhnout použitím -vo fbdev nebo -vo fbdev2. Musíte mít v jádře podporu vesafb a dopsat do příkazového řádku jádra následující parametry: append="video=vesafb:ywrap,mtrr" vga=791. Měli byste nastartovat X, pak se přepnout do terminálového režimu např. pomocí Ctrl+Alt+F1. Pokud se vám nepodaří nastartovat X před spuštěním MPlayeru z konzole, bude video pomalé a trhané (vysvětlení uvítáme). Nalogujte se do konzole a zadejte následující příkaz:

    clear; mplayer -vo fbdev -zoom -cache 8192 dvd://

    Video by nyní mělo běžet v konzoli a vyplňovat asi polovinu LCD obrazovky laptopu. Pro přepnutí na TV stiskněte Fn+F5 třikrát. Testováno na Tecra 8000, 2.6.15 jádro s vesafb, ALSA v1.0.10.

  • Chrontel 70xx enkodér: Nalezen v IBM Thinkpad 390E a bude pravděpodobně i ostatních Thinkpadech nebo noteboocích.

    Musíte použít -vo vesa:neotv_pal pro PAL nebo -vo vesa:neotv_ntsc pro NTSC. To vám zpřístupní funkci TV výstupu v následujících 16 bpp a 8 bpp režimech:

    • NTSC 320x240, 640x480 a možná také 800x600.

    • PAL 320x240, 400x300, 640x480, 800x600.

    Režim 512x384 není podporován BIOSem. Musíte obraz škálovat do jiného rozlišení pro aktivaci TV výstupu. Pokud vidíte obraz na obrazovce v 640x480 nebo v 800x600, ale ne v 320x240 nebo jiném menším rozlišení, musíte nahradit dvě tabulky ve vbelib.c. Viz funkci vbeSetTV pro více informací. V tomto případě prosím kontaktujte autora.

    Známá omezení: pouze VESA, žádné další ovládací prvky jako jas, kontrast, úroveň černé, filtrace blikání nejsou implementovány.

Kapitola 5. Porty

5.1. Linux

Hlavní vývojovou platformou je Linux na x86, ačkoli MPlayer pracuje na mnoha jiných portech Linuxu. Binární balíčky MPlayeru jsou dostupné z několika zdrojů. Nicméně není žádný z těchto balíčků podporován. Hlaste tedy problémy jejich autorům, nikoli nám.

5.1.1. Vytvoření balíčku pro Debian

Pro vytvoření balíčku pro Debian spusťte následující příkaz v adresáři se zdrojovým kódem MPlayeru:

fakeroot debian/rules binary

Pokud chcete předat nějaké volby pro configure, můžete nastavit proměnnou prostředí DEB_BUILD_OPTIONS. Například, pokud chcete GUI a podporu OSD menu, měli byste použít:

DEB_BUILD_OPTIONS="--enable-gui --enable-menu" fakeroot debian/rules binary

Rovněž můžete předat některé proměnné do Makefile. Například, pokud chcete kompilovat pomocí gcc 3.4 i v případě, že to není výchozí kompilátor:

CC=gcc-3.4 DEB_BUILD_OPTIONS="--enable-gui" fakeroot debian/rules binary

K vyčistění zdrojového stromu spusťte následující příkaz:

fakeroot debian/rules clean

Jako root můžete nainstalovat .deb balíček obvyklým způsobem:

dpkg -i ../mplayer_version.deb

Christian Marillat vytvářel jistou dobu neoficiální Debianí balíčky MPlayeru, MEncoderu a našich binárních balíků s kodeky, můžete si je stáhnout (apt-get) z jeho domácí stránky.

5.1.2. Balení RPM

Dominik Mierzejewski udržuje oficiální RPM balíčky MPlayeru pro Fedora Core. Ty jsou dostupné z repozitáře.

RPM balíčky pro Mandrake/Mandriva jsou dostupné z P.L.F.. SuSE zařadilo do své distribuce zmrzačenou verzi MPlayeru. V posledních verzích ji odstranili. Funkční RPM naleznete na links2linux.de.

5.1.3. ARM

MPlayer pracuje na Linuxových PDA s ARM CPU např. Sharp Zaurus, Compaq Ipaq. Nejjednodušší způsob jak si opatřit MPlayer je, stáhnout si jej z některého OpenZaurus balíčkového kanálu. Pokud si jej chcete skompilovat sami, měli byste nahlédnout do adresáře mplayer a libavcodec v buildroot OpenZaurus distribuce. Zde mají vždy poslední Makefile a patche používané pro sestavení SVN verze MPlayeru. Pokud potřebujete GUI rozhraní, můžete použít xmms-embedded.

5.2. *BSD

MPlayer běží na všech známých BSD verzích. Existují portované/pkgsrc/fink/atd verze MPlayeru, které lze pravděpodobně snadněji použít, než naše surové zdrojové kódy.

K sestavení MPlayeru budete potřebovat GNU make (gmake - nativní BSD make nebude pracovat) a současnou verzi binutils.

Pokud si MPlayer stěžuje, že nemůže najít /dev/cdrom nebo /dev/dvd, vytvořte příslušný symbolický link:

ln -s /dev/vaše_cdrom_zařízení /dev/cdrom

Chcete-li používat Win32 DLL v MPlayeru, budete muset rekompilovat jádro s volbou "USER_LDT" (pokud nepoužíváte FreeBSD-CURRENT, kde je to výchozí).

5.2.1. FreeBSD

Pokud váš procesor má SSE, rekompilujte jádro s "options CPU_ENABLE_SSE" (vyžaduje FreeBSD-STABLE nebo patche do jádra).

5.2.2. OpenBSD

Vzhledem k omezením v různých verzích gas (GNU assembleru – pozn. překl.) (relokace vs MMX), budete muset kompilovat ve dvou krocích: Nejprve se ujistěte že je nenativní as jako první ve vaší $PATH a proveďte gmake -k, pak zajistěte, aby se použila nativní verze a proveďte gmake.

Od OpenBSD 3.4 není již výše uvedená metoda potřeba.

5.2.3. Darwin

Viz sekce Mac OS.

5.3. Komerční Unix

MPlayer byl portován na mnoho komerčních variant Unixu. Jelikož vývojová prostředí na těchto systémech bývají odlišná od těch na svobodných Unixech, budete muset provést ruční úpravy, aby se kompilace povedla.

5.3.1. Solaris

MPlayer by měl běžet na Solarisu 2.6 nebo novějším. Použijte SUN audio rozhraní pomocí volby -ao sun pro přehrávání zvuku.

Na UltraSPARCích, MPlayer využívá jejich rozšíření VIS (ekvivalentní MMX), zatím jen v libmpeg2, libvo a libavcodec, ale nikoli v mp3lib. Můžete přehrávat VOB soubor na 400MHz CPU. Budete k tomu potřebovat nainstalovanou mLib.

Caveat:

  • Podpora mediaLib je v současnosti vypnutá ve výchozím nastavení MPlayeru kvůli chybovosti. Uživatelé SPARCu překládající MPlayer s podporou mediaLib hlásili tlustý zelený pruh v libavcodecem enkódovaném a dekódovaném videu. Pokud chcete, můžete si ji zapnout:

    ./configure --enable-mlib

    Děláte to na vlastní nebezpečí. Uživatelé x86 by nikdy neměli používat mediaLib, jelikož vede k velmi slabému výkonu MPlayeru.

Pro kompilaci balíku budete potřebovat GNU make (gmake, /opt/sfw/gmake), jelikož nativní make Solarisu nebude pracovat. Typickou chybou kompilace s make Solarisu namísto GNU make je:

% /usr/ccs/bin/make
make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen

Na Solarisu SPARC, potřebujete GNU C/C++ Compiler; nezáleží na tom, zda je GNU C/C++ compiler konfigurován s nebo bez GNU assembleru.

Na Solarisu x86, potřebujete GNU assembler a GNU C/C++ compiler, konfigurovaný pro použití GNU assembleru! Kód MPlayeru na platformě x86 intenzivně používá MMX, SSE a 3DNOW! instrukce, které nemůže být kompilovány Sun assemblerem /usr/ccs/bin/as.

Skript configure zkouší zjistit, který assembler je použitý vaším příkazem "gcc" (v případě že autodetekce selže, použijte volbu --as=/kdekoli/máte/nainstalován/gnu-as pro nastavení configure skriptu tak, aby našel GNU "as" na vašem systému).

Řešení běžných potíží:

  • Chybová zpráva z configure na systému Solaris x86 s použitím GCC bez GNU assembleru:

    % configure
    ...
    Checking assembler (/usr/ccs/bin/as) ... , failed
    Please upgrade(downgrade) binutils to 2.10.1...

    (Řešení: Nainstalujte a použijte gcc konfigurovaný s --with-as=gas)

    Typická chyba, kterou dostanete při kompilaci pomocí GNU C kompilátoru, který nepoužívá GNU as:

    % gmake
    ...
    gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
        -fomit-frame-pointer  -I/usr/local/include   -o mplayer.o mplayer.c
    Assembler: mplayer.c
    "(stdin)", line 3567 : Illegal mnemonic
    "(stdin)", line 3567 : Syntax error
    ... more "Illegal mnemonic" and "Syntax error" errors ...
    

  • MPlayer může zhavarovat (segfault), pokud dekódujete nebo enkódujete video používající win32 kodeky:

    ...
    Trying to force audio codec driver family acm...
    Opening audio decoder: [acm] Win32/ACM decoders
    sysi86(SI86DSCR): Invalid argument
    Couldn't install fs segment, expect segfault
    
    
    MPlayer interrupted by signal 11 in module: init_audio_codec
    ...

    To díky změně na sysi86() ve verzích Solaris 10 a před-Solaris Nevada b31. V Solaris Nevada b32 to bylo opraveno; Sun však ještě musí portovat opravu do Solaris 10. MPlayer Project upozornil Sun na tento problém a záplata pro Solaris 10 je v současnosti rozpracována. Více informací o této chybě naleznete na: http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6308413.

  • Díky chybám v Solarisu 8, nemůžete přehrávat DVD disky větší než 4 GB:

    • Ovladač sd(7D) na Solarisu 8 x86 má chybu v přístupu k diskovému bloku >4GB na zařízeních, které mají logical blocksize != DEV_BSIZE (čili CD-ROM a DVD média). Díky 32Bit int overflow, dostanete přístupovou diskovou adresu modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22516). Tento problém neexistuje ve SPARC verzi Solarisu 8.

    • Podobná chyba je i v kódu systému souborů hsfs(7FS) (AKA ISO9660), hsfs nemusí podporovat oddíly/disky větší než 4GB, ke všem datům je přistupováno modulo 4GB (http://groups.yahoo.com/group/solarisonintel/message/22592). Problém hsfs může být odstraněn nainstalováním patche 109764-04 (sparc) / 109765-04 (x86).

5.3.2. HP-UX

Joe Page hostuje podrobné HP-UX MPlayer HOWTO od Martina Ganssera na jeho domácí stránce. Podle těchto instrukcí by kompilace měla proběhnout bez potíží. Následující informace jsou vytaženy ze zmíněného HOWTO.

Potřebujete GCC 3.4.0 nebo pozdější, GNU make 3.80 nebo pozdější a SDL 1.2.7 nebo pozdější. HP cc nevytvoří funkční program, předchozí verze GCC jsou chybové. Pro funkci OpenGL musíte nainstalovat Mesa a video rozhraní gl a gl2 by měly pracovat. Jejich rychlost však může být velmi malá, podle rychlosti CPU. Dobrou náhradou za spíše slabý nativní HP-UX systém je GNU esound.

Vytvořte DVD zařízení průzkumem SCSI pomocí:

# ioscan -fn

Class          I            H/W   Path          Driver    S/W State    H/W Type        Description
...
ext_bus 1    8/16/5      c720  CLAIMED INTERFACE  Built-in SCSI
target  3    8/16/5.2    tgt   CLAIMED DEVICE
disk    4    8/16/5.2.0  sdisk CLAIMED DEVICE     PIONEER DVD-ROM DVD-305
                         /dev/dsk/c1t2d0 /dev/rdsk/c1t2d0
target  4    8/16/5.7    tgt   CLAIMED DEVICE
ctl     1    8/16/5.7.0  sctl  CLAIMED DEVICE     Initiator
                         /dev/rscsi/c1t7d0 /dev/rscsi/c1t7l0 /dev/scsi/c1t7l0
...

Výstup na obrazovce ukazuje Pioneer DVD-ROM na SCSI adrese 2. Instance karty pro hardwarovou cestu 8/16 je 1.

Vytvořte link ze surového zařízení na DVD zařízení.

ln -s /dev/rdsk/c<SCSI bus instance>t<SCSI target ID>d<LUN> /dev/<device>

Příklad:

ln -s /dev/rdsk/c1t2d0 /dev/dvd

Níže uvádíme řešení některých běžných problémů:

  • Spadne při startu s hlášením:

    /usr/lib/dld.sl: Unresolved symbol: finite (code) from /usr/local/lib/gcc-lib/hppa2.0n-hp-hpux11.00/3.2/../../../libGL.sl

    To znamená, že funkce .finite(). není dostupná ve standardní HP-UX matematické knihovně. Místo ní je zde .isfinite().. Řešení: Použijte poslední Mesa depot soubor.

  • Spadne při přehrávání s hlášením:

    /usr/lib/dld.sl: Unresolved symbol: sem_init (code) from /usr/local/lib/libSDL-1.2.sl.0

    Řešení: Použijte volbu extralibdir v configure --extra-ldflags="/usr/lib -lrt"

  • MPlayer havaruje (segfault) s hlášením:

    Pid 10166 received a SIGSEGV for stack growth failure.
    Possible causes: insufficient memory or swap space, or stack size exceeded maxssiz.
    Segmentation fault

    Řešení: HP-UX kernel má výchozí velikost zásobníku 8MB(?) na proces.(11.0 a novější 10.20 patche vám umožní zvýšit maxssiz až na 350MB pro 32-bit programy). Musíte zvětšit maxssiz a rekompilovat kernel (a restartovat). Pro tento účel můžete použít SAM. (Když už to budete dělat, ověřte parametr maxdsiz pro maximální množství paměti, které může program použít. Závisí na vašich aplikacích, jestli je výchozích 64MB dost nebo ne.)

5.3.3. AIX

MPlayer lze úspěšně přeložit na AIX 5.1, 5.2 a 5.3, pomocí GCC 3.3 nebo vyšší. Kompilace MPlayeru na AIX 4.3.3 a nížsích nebyla testována. Velmi doporučujeme kompilovat MPlayer pomocí GCC 3.4 nebo vašší, nebo pokud kompilujete na POWER5, vyžaduje se GCC 4.0.

Ujistěte se, že používáte GNU make (/opt/freeware/bin/gmake) pro sestavení MPlayeru, jelikož při použití /usr/ccs/bin/make budete mít problémy.

Detekce procesoru je stále nedokončena. Testovány byly následující architektury:

  • 604e

  • POWER3

  • POWER4

Následující architektury nebyly testovány, ale měly by pracovat:

  • POWER

  • POWER2

  • POWER5

Zvuk přes Ultimedia Services není podporován, jelikož Ultimedia byla opuštěna v AIX 5.1; tudíš je jedinou možností použití ovladačů AIX Open Sound System (OSS) od 4Front Technologies z http://www.opensound.com/aix.html. 4Front Technologies volně poskytuje OSS ovladače pro AIX 5.1 pro nekomerční použití; zatím však neexistují zvukové ovladače pro AIX 5.2 nebo 5.3. To znamená, že AIX 5.2 a 5.3 nejsou nyní schopny provozovat MPlayer se zvukem.

Řešení běžných potíží:

  • Pokud dostanete tuto chybovou hlášku z configure:

    $ ./configure
    ...
    Checking for iconv program ... no
    No working iconv program found, use
    --charset=US-ASCII to continue anyway.
    Messages in the GTK-2 interface will be broken then.

    To proto, že AIX používá nestandardní názvy znakových sad; proto konverze výstupu MPlayeru do jiné znakové sady není zatím podporována. Řešením je:

    $ ./configure --charset=noconv

5.3.4. QNX

Musíte si stáhnout a nainstalovat SDL pro QNX. Pak spusťte MPlayer s volbami -vo sdl:driver=photon a -ao sdl:nto, mělo by to být rychlé.

Výstup -vo x11 bude ještě pomalejší než na Linuxu, jelikož QNX má pouze X emulaci, která je velmi pomalá.

5.4. Windows

Ano, MPlayer běží na Windows pod Cygwin a MinGW. Nemá zatím oficiální GUI, ale verze pro příkazový řádek je plně funkční. Měli byste navštívit konferenci MPlayer-cygwin pro pomoc a poslední informace. Oficiální Windows binárky naleznete na download stránce. Instalátor a jednoduché GUI frontendy jsou dostupné z externích zdrojů. Odkazy na ně jsme umístili v sekci Windows na naší stránce s projekty.

Pokud se chcete vyhnout použití příkazové řádky, můžete použít malý trik s umístěním zástupce na pracovní plochu, který bude obsahovat v sekci spuštění něco takového:

c:\cesta\k\mplayer.exe %1

To nechá MPlayer přehrát jakýkoli film, který je přetažen na zástupce. Přidejte -fs pro celoobrazovkový režim.

Nejlepších výsledků dosáhnete použitím nativního DirectX video rozhraní (-vo directx). Alternativami jsou OpenGL a SDL, ale výkon OpenGL se velmi různí na jednotlivých systémech a o SDL je známo, že na některých systémech drobí video nebo padá. Pokud je obraz rozsypán, zkuste vypnout hardwarovou akceleraci pomocí -vo directx:noaccel. Stáhněte si hlavičkové soubory DirectX 7 pro kompilaci výstupního rozhraní DirectX. Navíc budete muset mít nainstalovány DirectX 7 nebo vyšší, aby rozhraní pracovalo.

VIDIX nyní pracuje pod Windows jako -vo winvidix, ačkoli je stále experimentální a vyžaduje trochu manuálního nastavování. Stáhněte si dhahelper.sys nebo dhahelper.sys (s podporou MTRR) a zkopírujte jej do adresáře vidix/dhahelperwin ve svém stromě se zdrojovými kódy MPlayeru. Otevřete konzoli a přesuňte se do tohoto adresáře. Pak zadejte

gcc -o dhasetup.exe dhasetup.c

a spusťte

dhasetup.exe install

jako Administrator. Pak budete muset restartovat. Jakmile budete hotovi, zkopírujte .so soubory z vidix/drivers do adresáře mplayer/vidix relativního k vašemu mplayer.exe.

Pro nejlepší výsledky by měl MPlayer používat barevný prostor, který podporuje vaše video karta v hardware. Naneštěstí některé Windows ovladače grafických karet špatně hlásí některé barevné prostory jako podporované v hardware. Chcete-li zjistit které, zkuste

mplayer -benchmark -nosound -frames 100 -vf format=barevny_prostor film

kde barevny_prostor může být barevný prostor vypsaný volbou -vf format=fmt=help. Pokud najdete barevný prostor, který vaše karta zvládá zjevně špatně, -vf noformat=barevny_prostor zakáže jeho použití. Přidejte si to do vašeho konfig souboru, aby zůstal zakázán natrvalo.

Pro Windows máme k dispozici speciální balíčky kodeků na naší download stránce, abyste mohli přehrávat formáty, pro které zatím není nativní podpora. Umístěte kodeky někde do cesty (path), nebo přidejte --codecsdir=c:/cesta/ke/kodekům (případně --codecsdir=/cesta/ke/kodekům používate-li Cygwin) do configure. Máme několik zpráv, že Real DLL musí mít práva zápisu pro uživatele, který pouští MPlayer, ale pouze na některých systémech (NT4). Máte-li potíže, zkuste jim přidat právo zápisu.

Můžete přehrávat VCD přehráváním .DAT nebo .MPG souborů, které Windows ukazuje na VCD. Pracuje to takto (upravte písmeno disku vaší CD-ROM):

mplayer d:/mpegav/avseq01.dat

DVD pracují také, upravte -dvd-device na písmeno DVD-ROM mechaniky:

mplayer dvd://<titul> -dvd-device d:

Cygwin/MinGW terminál je spíše pomalý. Přesměrování výstupu nebo použití volby -quiet podle hlášení zvýší výkon na některých systémech. Direct rendering (-dr) může rovněž pomoci. Pokud je přehrávání trhané, zkuste -autosync 100. Pokud vám některé z těchto voleb pomohly, měli byste si je zapsat do konfiguračního souboru.

Poznámka

Runtime CPU detekce na Windows vypíná podporu SSE kvůli opakovaným a těžko vystopovatelným se SSE souvisejícím pádům. Pokud chcete mít podporu SSE pod Windows, budete muset kompilovat bez runtime CPU detekce.

Máte-li Pentium 4 a dojde k pádu při použití RealPlayer kodeků, možná budete muset vypnout podporu hyperthreading.

5.4.1. Cygwin

Musíte používat Cygwin 1.5.0 nebo vyšší, abyste mohli kompilovat MPlayer.

Hlavičkové soubory DirectX musí být rozbaleny do /usr/include/ nebo /usr/local/include/.

Instrukce a soubory nutné pro běh SDL pod Cygwin lze nalézt na libsdl stránkách.

5.4.2. MinGW

Instalace takové verze MinGW, aby bylo lze kompilovat MPlayer byla obtížná, ale nyní pracuje bez dalších úprav. Jen nainstalujte MinGW 3.1.0 nebo vyšší a MSYS 1.0.9 nebo vyšší a zvolte v MSYS postinstall, že je MinGW nainstalováno.

Rozbalte DirectX hlavičkové soubory do /mingw/include/.

Podpora MOV compressed header vyžaduje zlib, kterou MinGW neobsahuje. Konfigurujte ji s --prefix=/mingw a nainstalujte ji před kompilací MPlayeru.

Kompletní instrukce pro překlad MPlayeru a potřebné knihovny naleznete v MPlayer MinGW HOWTO.

5.5. Mac OS

MPlayer nepracuje na Mac OS verzích pod 10, ale měl by být bez úprav kompilovatelný na Mac OS X 10.2 a vyšších. Preferovaná verze kompileru je Apple verze GCC 3.x a vyšších. Základní prostředí pro kompilaci můžete získat instalací Xcode od Apple. Máte-li Mac OS X 10.3.9 nebo pozdější a QuickTime 7 můžete použít výstupní video rozhraní corevideo.

Naneštěstí toto základní prostředí neumožňuje využít všechny pěkné vlastnosti MPlayeru. Například, budete-li chtít mít zakompilovánu podporu OSD, budete muset mít na svém stroji nainstalovány knihovny fontconfig a freetype. Narozdíl od jiných Unixů, jako je většina variant Linuxu a BSD, OS X nemá balíčkovací systém distribuovaný se systémem.

Můžete vybírat minimálně ze dvou: Finku a MacPorts. Oba poskytují zhruba stejné služby (např. mnoho dostupných balíčků, řešení závislostí, schopnost jednoduše přidávat/aktualizovat/odebírat balíčky, atp...). Fink nabízí jak předkompilované binární balíčky, tak možnost kompilovat všechno ze zdrojového kódu, zatímco MacPorts nabízí pouze možnost kompilace ze zdrojového kódu. Autor této příručky zvolil MacPorts z jednoduchého důvodu, že jeho základní nastavení je mnohem lehčí. Pozdější příklady budou založeny na MacPorts.

Například pro kompilaci MPlayer s podporou OSD:

sudo port install pkgconfig

Takto nainstalujete pkg-config, což je systém pro správu knihovních příznaků compile/link. MPlayerův skript configure jej používá pro správnou detekci knihoven. Pak můžete nainstalovat fontconfig podobným způsobem:

sudo port install fontconfig

Následně můžete pokračovat spuštěním MPlayerova configure skriptu (ověřte proměnné prostředí PKG_CONFIG_PATH a PATH, aby configure našel knihovny instalované pomocí MacPorts):

PKG_CONFIG_PATH=/opt/local/lib/pkgconfig/ PATH=$PATH:/opt/local/bin/ ./configure

5.5.1. MPlayer OS X GUI

Můžete si stáhnout nativní GUI pro MPlayer spolu s předkompilovanými binárkami MPlayeru pro Mac OS X z MPlayerOSX projektu, ale upozorňujeme: tento projekt již není aktivní.

Naštěstí byl MPlayerOSX převzat členem MPlayer týmu. Předváděcí verze lze stáhnout z naší download stránky a oficiální verze by měla přijít již brzy.

Abyste mohli skompilovat MPlayerOSX ze zdrojového kódu sami, budete potřebovat mplayerosx, main a kopii main SVN modulu jménem main_noaltivec. mplayerosx je GUI nadstavba, main je MPlayer a main_noaltivec je MPlayer přeložený bez podpory AltiVec.

Pro stažení SVN modulů použijte:

svn checkout svn://svn.mplayerhq.hu/mplayerosx/trunk/ mplayerosx
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk/ main

Abyste skompilovali MPlayerOSX budete muset setavit asi toto:

Adresář_se_zdrojáky_MPlayeru
   |
   |--->main           (Zdrojový kód MPlayeru ze Subversion)
   |
   |--->main_noaltivec (Zdrojový kód MPlayeru ze Subversion konfigurován s --disable-altivec)
   |
   \--->mplayerosx     (Zdrojový kód MPlayer OS X ze Subversion)

Nejdřív musíte skompilovat main a main_noaltivec.

Pro začátek, pro dosažení maximální zpětné kompatibility, nastavte globální proměnnou:

export MACOSX_DEPLOYMENT_TARGET=10.3

Pak konfigurujte:

Pokud konfigurujete pro G4 nebo pozdější CPU s podporou AltiVec, proveďte následující:

./configure --disable-gl --disable-x11

Pokud konfigurujete pro stroj s G3 bez AltiVec, použijte:

./configure --disable-gl --disable-x11 --disable-altivec

Možná budete muset editovat config.mak a změnit -mcpu a -mtune z 74XX na G3.

Pokračujte s

make

pak jděte do adresáře mplayerosx a napište

make dist

To vytvoří komprimovaný .dmg archiv s binárkou připravenou k použití.

Také lze použít projekt Xcode 2.1; starý projekt pro Xcode 1.x již nepracuje.

Kapitola 6. Základní použití MEncoderu

Úplný seznam dostupných voleb a příkladů pro MEncoder naleznete v man stránce. Řadu užitečných příkladů a podrobných návodů pro použití mnoha enkódovacích voleb naleznete v tipech pro enkódování, které byly získány z několika diskusí v konferenci MPlayer-users. Prohledejte archivy zde, hlavně pro starší věci a také zde chcete-li bohatost diskusí o všech aspektech a problémech vztažených k enkódování MEncoderem.

6.1. Výběr kodeků a nosných formátů

Audio a video kodeky pro enkódování jsou vybírány příslušnými volbami -oac a -ovc. Napište například:

mencoder -ovc help

pro seznam video kodeků podporovaných verzí programu MEncoder na vašem počítači. Dostupné jsou následující možnosti:

Audio (zvukové) kodeky:

Jméno audio kodekuPopis
mp3lameEnkóduje do VBR, ABR nebo CBR MP3 pomocí LAME
lavcPoužije se některý z libavcodec audio kodeků
faacFAAC AAC audio enkodér
toolameEnkodér MPEG Audio Layer 2
twolameEnkodér MPEG Audio Layer 2 založený na tooLAME
pcmNekomprimovaný PCM zvuk
copyNereenkóduje, pouze kopíruje komprimované vzorky

Video kodeky:

Jméno video kodekuPopis
lavcPoužije se některý z libavcodec video kodeků
xvidXviD, MPEG-4 Advanced Simple Profile (ASP) kodek
x264x264, MPEG-4 Advanced Video Coding (AVC), alias H.264 kodek
nuvnuppel video, používaný některými realtime aplikacemi
rawNekomprimované videosnímky
copyNereenkóduje, pouze kopíruje komprimované snímky
framenoPoužité pro 3-průchodové enkódování (nedoporučujeme)

Výstupní nosný formát je vybírán volbou -of. Zadejte:

mencoder -of help

pro seznam všech nosných formátů podporovaných verzí MEncoderu na vašem počítači. Dostupné jsou následující možnosti:

Nosné formáty:

Název nosného formátuPopis
lavfJeden z nosných formátů podporovaných libavformat
aviAudio-Video Interleaved (Prokládané audio s videem)
mpegMPEG-1 a MPEG-2 PS
rawvideosurový (raw) video datový proud (žádný muxing – pouze jeden video proud)
rawaudiosurový (raw) audio datový proud (žádný muxing – pouze jeden audio proud)

Nosný formát AVI je nativním nosným formátem MEncoderu, což znamená, že je tím, který je nejlépe zpracován a pro nějž byl MEncoder navržen. Jak bylo zmíněno, ostatní nosné formáty jsou použitelné, ale můžete při jejich použití narazit na problémy.

Nosné formáty libavformat:

Pokud jste si zvolili libavformat pro provádění muxování výstupního souboru (pomocí -of lavf), příslušný nosný formát bude určen z přípony výstupního souboru. Můžete vynutit určitý nosný formát pomocí parametru format knihovny libavformat.

Název libavformat nosného formátuPopis
mpgMPEG-1 a MPEG-2 PS
asfAdvanced Streaming Format
aviAudio-Video Interleaved
wavWaveform Audio
swfMacromedia Flash
flvMacromedia Flash video
rmRealMedia
auSUN AU
nutotevřený nosný formát NUT (experimentální a dosud neslučitelný se specifikací)
movQuickTime
mp4formát MPEG-4
dvSony Digital Video
mkvOtevřený nosný audio/video formát Matroska

Jak vidíte, libavformat umožňuje MEncoderu muxovat do velkého množství nosných formátů. Naneštěstí, jelikož MEncoder nebyl od počátku navržen pro podporu jiných nosných formátů než AVI, měli byste být paranoidní ve vztahu k výstupnímu souboru. Ověřte si prosím pro jistotu, že audio/video synchronizace je OK a soubor lze správně přehrát i jinými přehrávači, než MPlayer.

Příklad 6.1. Enkódování do formátu Macromedia Flash

Vytvoření Macromedia Flash videa vhodného pro přehrávání ve webovém prohlížeči pomocí Macromedia Flash pluginu:

mencoder vstupní.avi -o výstupní.flv -of lavf \
    -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc \
    -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3


6.2. Výběr vstupního souboru nebo zařízení

MEncoder umí enkódovat ze souborů nebo přímo z DVD či VCD disku. Vložte na příkazovém řádku jméno souboru pro enkódování souboru, nebo dvd://číslo_titulu nebo vcd://číslo_stopy pro enkódování DVD titulu či VCD stopy. Máte-li již zkopírováno DVD na hard disk (k tomu můžete použít nástroj jako dvdbackup, dostupný na mnoha systémech), a chcete enkódovat z kopie, měli byste i zde použít syntaxi dvd:// ve spojení s volbou -dvd-device následovanou cestou do kořenového adresáře skopírovaného DVD. Volby -dvd-device a -cdrom-device lze rovněž použít k přenastavení cest k souborům zařízení pro přímé čtení disků, pokud výchozí /dev/dvd a /dev/cdrom na vašem systému nepracují.

Enkódujete-li z DVD, je často vhodné vybrat kapitolu nebo rozsah kapitol k enkódování. Pro tento účel můžete použít volbu -chapter. Například s volbou -chapter 1-4 se budou z DVD enkódovat pouze kapitoly 1 až 4. To se zvlášť hodí, pokud budete enkódovat film na velikost 1400 MB určený pro dvě CD, jelikož budete mít jistotu, že zlom nastane přesně na hranici kapitol místo uprostřed scény.

Pokud máte podporovanou TV zachytávací kartu, můžete rovněž enkódovat ze zařízení TV vstupu. Použijte tv://číslo_kanálu jako jméno souboru a volbu -tv pro konfiguraci různých nastavení zachytávání. Vstup z DVB pracuje obdobně.

6.3. Dvouprůchodové enkódování MPEG-4 ("DivX")

Název vychází z faktu, že soubor je enkódován dvakrát. První enkódování (dubbed pass) vytvoří dočasné soubory (*.log) velikosti několika megabajtů, které zatím nemažte (můžete smazat AVI, nebo raději žádné nevytvářejte a přesměrujte je do /dev/null). Ve druhém průchodu je vytvořen dvouprůchodový výstupní soubor s použitím řízení datového toku z dočasných souborů. Výsledný soubor bude mít lepší kvalitu obrazu. Pokud jste o tom teď slyšeli poprvé, měli byste si prostudovat některé návody dostupné na netu.

Příklad 6.2. Kopírování zvukové stopy

Dvouprůchodové enkódování druhé stopy z DVD do MPEG-4 ("DivX") AVI zatímco se zvuk pouze zkopíruje.

mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
    -oac copy -o výstup.avi


Příklad 6.3. Enkódování zvukové stopy

Dvouprůchodové enkódování DVD do MPEG-4 ("DivX") AVI a současně enkódování zvukové stopy do MP3. Při této metodě buďte opatrní, jelikož v některých případech může vést k rozjetí zvuku s videem.

mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
    -oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
    -oac mp3lame -lameopts vbr=3 -o výstup.avi


6.4. Enkódovánído video formátu Sony PSP

MEncoder podporuje enkódování do Sony PSP video formátu, ale mohou se lišit, v závislosti na revizi PSP softwaru, s tím spojená omezení. Budete-li respektovat následující omezení, neměli byste narazit na potíže:

  • Datový tok: by neměl překročit 1500kbps, ale poslední verze podporovaly prakticky jakýkoli datový tok pokud hlavička tvrdí, že není příliš vysoký.

  • Rozměry: šířka a výška PSP videa by měly být násobky 16 a výsledek šířka * výška musí být <= 64000. Za určitých okolností může být možné, aby PSP hrál i ve vyšším rozlišení.

  • Audio: jeho vzorkovací kmitočet by měl být 24kHz pro videa MPEG-4 a 48kHz pro H.264.

Příklad 6.4. Enkódování do PSP

mencoder -ofps 30000/1001 -af lavcresample=24000 -vf harddup -oac lavc \
    -ovc lavc -lavcopts aglobal=1:vglobal=1:vcodec=mpeg4:acodec=libfaac \
    -of lavf -lavfopts format=psp \
    vstupní.video -o výstupní.psp

Poznamenejme, že můžete nastavit jméno videa pomocí -info name=JménoFilmu.


6.5. Enkódování do MPEG formátu

MEncoder umí vytvořit výstupní soubor formátu MPEG (MPEG-PS). Pokud používáte MPEG-1 nebo MPEG-2 video, obvykle je to proto, že enkódujete pro omezený formát jako je SVCD, VCD nebo DVD. Konkrétní požadavky těchto formátů jsou objasněny v sekci návod pro vytvoření VCD a DVD.

Výstupní souborový formát MEncoderu změníte použitím volby -of mpeg.

Příklad:

mencoder vstupní.avi -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video \
    -oac copy ostatní_volby -o výstupní.mpg

Vytvoření MPEG-1 souboru vhodného pro přehrávání na systémech s minimální podporou multimédií, jako je výchozí instalace Windows:

mencoder vstupní.avi -of mpeg -mpegopts format=mpeg1:tsaf:muxrate=2000 \
    -o výstupní.mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
    -lavcopts vcodec=mpeg1video:vbitrate=1152:keyint=15:mbd=2:aspect=4/3

To samé, ale použijeme libavformat MPEG muxer:

mencoder vstupní.avi -o VCD.mpg -ofps 25 -vf scale=352:288,harddup -of lavf \
    -lavfopts format=mpg -oac lavc -lavcopts acodec=mp2:abitrate=224 -ovc lavc \
    -lavcopts vcodec=mpeg1video:vrc_buf_size=327:keyint=15:vrc_maxrate=1152:vbitrate=1152:vmax_b_frames=0

Tip:

Pokud vás z nějakého důvodu neuspokojí kvalita videa z druhého průchodu, můžete znovu spustit enkódování videa s jiným cílovým datovým tokem, s tím, že máte uložen soubor se statistikami z předchozího průchodu. To je možné proto, že cílem statistického souboru je především zaznamenat komplexitu každého snímku, která příliš nezávisí na datovém toku. Povšimněte si, že ačkoli nejvyšší kvality dosáhnete pokud všechny průchody poběží při stejném datovém toku, tak se výsledek příliš neliší.

6.6. Škálování (změna velikosti) filmů

Často potřebujeme změnit velikost obrázků ve filmu a to z mnoha důvodů: zmenšení souboru, zátěže sítě atd. Mnoho lidí dokonce mění velikost při převodu DVD nebo SVCD do DivX AVI. Pokud si přejete video přeškálovat, přečtěte si sekci Zachování poměru stran.

Samotný proces škálování je prováděn video filtrem scale: -vf scale=šířka:výška. Jeho kvalita může být nastavena volbou -sws. Pokud ji neuvedete, MEncoder použije 2: bikubickou.

Použití:

mencoder vstup.mpg -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell \
    -vf scale=640:480 -o výstup.avi

6.7. Proudové kopírování

MEncoder může zpracovat vstupní datové proudy dvěma způsoby: enkóduje je, nebo je kopíruje. Tato část je o kopírování.

  • Video proud (volba -ovc copy): můžete dělat pěkné věci :) Jako umístění (nikoli konverze!) FLI nebo VIVO nebo MPEG-1 videa do AVI souboru! Samozřejmě takové soubory přehraje pouze MPlayer :) A proto to nejspíš nemá žádnou rozumnou hodnotu. A teď vážně: kopírování video proudu může být užitečné například tehdy, když má být enkódován pouze zvuk (např. nekomprimovaný PCM do MP3).

  • Audio proud (volba -oac copy): jednoduché. Je možné vzít externí zvukový soubor (MP3, WAV) a namultiplexovat jej do výstupního proudu. K tomu použijte volbu -audiofile soubor.

Použití -oac copy pro kopírování z jednoho nosného fomátu do jiného může vyžadovat použití -fafmttag pro zachování příznaku formátu zvuku původního souboru. Například pokud konvertujete NSV soubor s AAC zvukem do nosného formátu AVI, bude příznak formátu zvuku nesprávný a bude jej nutno změnit. Seznam příznaků audio formátu naleznete v souboru codecs.conf.

Příklad:

mencoder vstupní.nsv -oac copy -fafmttag 0x706D \
    -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -o výstupní.avi

6.8. Enkódování z množství vstupních obrázkových souborů (JPEG, PNG, TGA, atd.)

MEncoder je schopen vytvořit film z jednoho nebo více JPEG, PNG nebo TGA souborů. Pomocí jednoduchého snímkového kopírování může vytvořit MJPEG (Motion JPEG), MPNG (Motion PNG) nebo MTGA (Motion TGA) soubory.

Vysvětlení procesu:

  1. MEncoder dekóduje vstupní soubor(y) pomocí knihovny libjpeg (když dekóduje PNG, použije libpng).

  2. Potom MEncoder nakrmí dekódovaný snímek do zvoleného video kompresoru (DivX4, Xvid, FFmpeg msmpeg4, atd.).

Příklady.  Vysvětlení volby -mf je v man stránce.

Vytvoření MPEG-4 souboru ze všech JPEG souborů v aktuálním adresáři:

mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc lavc \
    -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o výstup.avi

Vytvoření MPEG-4 souboru z některých JPEG souborů v aktuálním adresáři:

mencoder mf://snímek001.jpg,snímek002.jpg -mf w=800:h=600:fps=25:type=jpg \
    -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o výstup.avi

Vytvoření MPEG-4 souboru ze seznamu vyjmenovaných JPEG souborů (seznam.txt v aktuálním adresáři obsahuje seznam souborů k použití jako zdroj, každý soubor na samostatném řádku):

mencoder mf://@seznam.txt -mf w=800:h=600:fps=25:type=jpg \
    -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell -oac copy -o výstup.avi

Můžete kombinovat různé typy, bez ohledu na metodu, kterou používáte – individuální jména souborů, žolíky nebo soubor se seznamem – přičemž musí mít přirozeně stejné rozměry. Takže můžete např. vzít úvodní snímek z PNG souboru a pak vložit slideshow z JPEG fotek.

Vytvoření Motion JPEG (MJPEG) souboru ze všech JPEG souborů v aktuálním adresáři:

mencoder mf://*.jpg -mf w=800:h=600:fps=25:type=jpg -ovc copy -oac copy -o výstup.avi

Vytvoření nekomprimovaného souboru ze všech PNG souborů v aktuálním adresáři:

mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o výstup.avi

Poznámka

Šířka musí být celé číslo násobek 4, to je dáno omezením RAW RGB AVI formátu.

Vytvoření Motion PNG (MPNG) souboru ze všech PNG souborů v aktuálním adresáři:

mencoder mf://*.png -mf w=800:h=600:fps=25:type=png -ovc copy -oac copy -o výstup.avi

Vytvoření Motion TGA (MTGA) souboru ze všech TGA souborů v aktuálním adresáři:

mencoder mf://*.tga -mf w=800:h=600:fps=25:type=tga -ovc copy -oac copy -o výstup.avi

6.9. Extrakce DVD titulků do VOBsub souboru

MEncoder je schopen vyextrahovat titulky z DVD do VOBsub formátovaných souborů. Ty sestávají ze dvou souborů zakončených .idx a .sub a jsou obvykle zabaleny v jediném .rar archivu. MPlayer je umí přehrávat s pomocí voleb -vobsub a -vobsubid.

Zadejte základní jméno (čili bez přípony .idx nebo .sub) výstupních souborů pomocí volby -vobsubout a index pro tyto titulky ve zbývajících souborech pomocí -vobsuboutindex.

Pokud není vstup z DVD, měli byste použít -ifo pro indikaci .ifo souboru nutného k vytvoření výsledného .idx souboru.

Pokud vstup není z DVD a nemáte .ifo soubor, budete muset použít volbu -vobsubid k nastavení, pro které id jazyka se má vytvořit .idx soubor.

Každým spuštěním se přidají běžící titulky pokud soubory .idx a .sub již existují. Takže byste je měli všechny odstranit dříve než začnete.

Příklad 6.5. Kopírování dvojích titulků z DVD během dvouprůchodového enkódování

rm titulky.idx titulky.sub
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 \
    -vobsubout titulky -vobsuboutindex 0 -sid 2
mencoder dvd://1 -oac copy -ovc lavc -lavcopts vcodec=mpeg4:mbd=2:trell:vpass=2 \
    -vobsubout titulky -vobsuboutindex 1 -sid 5

Příklad 6.6. Kopírování francouzských titulků z MPEG souboru

rm titulky.idx titulky.sub
mencoder movie.mpg -ifo movie.ifo -vobsubout titulky -vobsuboutindex 0 \
    -vobsuboutid fr -sid 1 -nosound -ovc copy

6.10. Zachování poměru stran

DVD a SVCD (čili MPEG-1/2) soubory obsahují hodnotu poměru stran, popisující, jak by měl přehrávač škálovat video proud, takže lidé nebudou mít šišaté hlavy (př.: 480x480 + 4:3 = 640x480). Pokud ovšem enkódujeme do AVI (DivX) souborů, mějte na paměti, že AVI hlavičky neukládají tuto hodnotu. Přeškálování videa je odporné a časově náročné, takže musí být lepší způsob!

A zde jej máte

MPEG-4 má unikátní vlastnost: video proud může obsahovat svůj požadovaný poměr stran. Ano, přesně jako MPEG-1/2 (DVD, SVCD) a H.263 soubory. Naneštěstí kromě MPlayeru jen málo video přehrávačů podporuje tento atribut MPEG-4.

Tato vlastnost může být použita pouze s kodekem mpeg4 z libavcodecu. Mějte na paměti: ačkoli MPlayer korektně přehraje vytvořený soubor, ostatní přehrávače použijí špatný poměr stran.

Opravdu byste měli oříznout černé okraje nad a pod filmem. Nastudujte si použití filtrů cropdetect a crop v man stránce.

Použití

mencoder sample-svcd.mpg -vf crop=714:548:0:14 -oac copy -ovc lavc \
    -lavcopts vcodec=mpeg4:mbd=2:trell:autoaspect -o output.avi

Kapitola 7. Enkódování s MEncoderem

7.1. Vytvoření MPEG-4 ("DivX") ripu DVD filmu ve vysoké kvalitě
7.1.1. Příprava na enkódování: Určení zdrojového materiálu a datového toku
7.1.1.1. Zjištění snímkové rychlosti zdroje
7.1.1.2. Určení zdrojového materiálu
7.1.2. Pevný kvantizer vs. více průchodů
7.1.3. Omezení pro efektivní enkódování
7.1.4. Ořezávání a škálování
7.1.5. Volba rozlišení a datového toku
7.1.5.1. Výpočet rozlišení
7.1.6. Filtrování
7.1.7. Prokládání a Telecine
7.1.8. Enkódování prokládaného videa
7.1.9. Poznámky k Audio/Video synchronizaci
7.1.10. Výběr video kodeku
7.1.11. Zvuk
7.1.12. Muxování (multiplexování)
7.1.12.1. Zlepšování spolehlivosti muxování a A/V synchronizace
7.1.12.2. Limitace nosného formátu AVI
7.1.12.3. Muxování do nosného formátu Matroska
7.2. Jak naložit s telecine a prokladem v NTSC DVD
7.2.1. Představení
7.2.2. Jak zjistit o jaký typ videa se jedná
7.2.2.1. Progresivní (neprokládané)
7.2.2.2. Telecinováno (přepsáno pro NTSC televizi)
7.2.2.3. Prokládané
7.2.2.4. Smíšené progresivní a telecinované
7.2.2.5. Smíšené progresivní a prokládané
7.2.3. Jak enkódovat jednotlivé kategorie
7.2.3.1. Progresivní
7.2.3.2. Telecinované
7.2.3.3. Prokládané
7.2.3.4. Smíšené progresivní a telecinované
7.2.3.5. Smíšené progresivní a prokládané
7.2.4. Poznámky pod čarou
7.3. Enkódování s rodinou kodeků libavcodec
7.3.1. Video kodeky libavcodec
7.3.2. Audio kodeky libavcodec
7.3.2.1. Pomocná tabulka pro PCM/ADPCM formát
7.3.3. Enkódovací volby libavcodecu
7.3.4. Příklady nastavení enkódování
7.3.5. Uživatelské inter/intra matice
7.3.6. Příklad
7.4. Enkódování pomocí kodeku Xvid
7.4.1. Jaké volby by měly být použity, abychom dosáhli nejlepších výsledků?
7.4.2. Volby pro enkódování s Xvid
7.4.3. Enkódovací profily
7.4.4. Příklady nastavení enkódování
7.5. Enkódování x264 kodekem
7.5.1. Enkódovací volby x264
7.5.1.1. Úvodem
7.5.1.2. Volby které primárně ovlivňují rychlost a kvalitu
7.5.1.3. Volby náležející různým preferencím
7.5.2. Příklady nastavení enkódování
7.6. Enkódování rodinou kodeků Video For Windows
7.6.1. Podporované kodeky Video for Windows
7.6.2. Použití vfw2menc pro vytvoření souboru s nastavením kodeku.
7.7. Použití MEncoderu pro vytvoření QuickTime-kompatibilních souborů
7.7.1. Proč by někdo chtěl vytvářet QuickTime-kompatibilní soubory?
7.7.2. QuickTime 7 omezení
7.7.3. Ořez
7.7.4. Škálování
7.7.5. A/V synchronizace
7.7.6. Datový tok
7.7.7. Příklad enkódování
7.7.8. Přemuxování do MP4
7.7.9. Přidání stop s meta daty
7.8. Použití MEncoderu k vytváření VCD/SVCD/DVD-kompatibilních souborů.
7.8.1. Omezení Formátů
7.8.1.1. Omezení Formátů
7.8.1.2. Omezení velikosti GOP
7.8.1.3. Omezení datového toku
7.8.2. Výstupní volby
7.8.2.1. Poměr stran
7.8.2.2. Zachování A/V synchronizace
7.8.2.3. Převod vzorkovacího kmitočtu
7.8.3. Použití libavcodec pro enkódování VCD/SVCD/DVD
7.8.3.1. Úvodem
7.8.3.2. lavcopts
7.8.3.3. Příklady
7.8.3.4. Pokročilé volby
7.8.4. Enkódování zvuku
7.8.4.1. toolame
7.8.4.2. twolame
7.8.4.3. libavcodec
7.8.5. Spojení všeho dohromady
7.8.5.1. PAL DVD
7.8.5.2. NTSC DVD
7.8.5.3. PAL AVI obsahující AC–3 zvuk do DVD
7.8.5.4. NTSC AVI obsahující AC–3 zvuk do DVD
7.8.5.5. PAL SVCD
7.8.5.6. NTSC SVCD
7.8.5.7. PAL VCD
7.8.5.8. NTSC VCD

7.1. Vytvoření MPEG-4 ("DivX") ripu DVD filmu ve vysoké kvalitě

Velmi častou otázkou je "Jak mohu vytvořit rip v nejvyšší možné kvalitě pro danou velikost?". Další otázkou je "Jak vytvořím DVD rip v nejvyšší možné kvalitě? Velikost souboru mě nezajímá, chci tu nejvyšší kvalitu."

Druhá otázka je poněkud špatně položená. Konec konců, pokud je vám lhostejná velikost souboru, proč prostě nezkopírujete celý MPEG-2 video proud z DVD? Jistěže vaše AVI bude mít kolem 5 GB, ale pokud chcete nejvyšší kvalitu a na velikosti nezáleží, je to jistě nejlepší volba.

Ve skutečnosti, důvodem převodu DVD do MPEG-4 je právě to, že vám na velikosti souboru záleží.

Je těžké nabídnout kuchařku jak vytvořit DVD rip ve velmi vysoké kvalitě. Je nutné uvážit množství faktorů a měli byste rozumět těmto detailům, jinak budete asi zklamáni výsledkem. Níže prozkoumáme některé z těchto věcí a pak se podíváme na příklad. Předpokládáme, že použijete libavcodec pro enkódování videa, ačkoli teorie je stejná i pro ostatní kodeky.

Pokud je toho na vás moc, asi byste měli použít některý z pěkných frontendů, které jsou zmíněny v sekci MEncoder na naší stránce odvozených projektů. Takto budete schopni dosahovat vysoce kvalitních ripů bez velkého přemýšlení, protože většina těchto nástrojů je navržena tak, aby dělala vhodná rozhodnutí za vás.

7.1.1. Příprava na enkódování: Určení zdrojového materiálu a datového toku

Předtím než i jen pomyslíte na enkódování filmu, budete muset učinit několik přípravných kroků.

Prvním a nejdůležitějším krokem před enkódováním by mělo být zjištění druhu obsahu se kterým máte co do činění. Pokud vaše zdrojové video pochází z DVD nebo veřejné/kabelové/satelitní TV, bude uložen v jednom ze dvou formátů: NTSC v Severní Americe a Japonsku, PAL v Evropě, atd. Je ovšem důležité si uvědomit, že to je pouze formátování pro prezentaci v televizi a často neodpovídá originálnímu formátu filmu. Zkušenosti ukazují, že NTSC materiál je mnohem těžší enkódovat, jelikož musíme identifikovat více věcí ve zdrojovém videu. Abyste dosáhli uspokojivého výsledku, musíte znát původní formát. Nevezmete-li to správně v potaz, dostanete obraz plný nejrůznějších vad, včetně ošklivých kombinačních (proklad) artefaktů a zdvojených nebo dokonce zahozených snímků. Kromě toho, že budete mít nekvalitní obraz, artefakty rovněž snižují efektivitu kódování: Dosáhnete horší kvalitu na jednotku datového toku.

7.1.1.1. Zjištění snímkové rychlosti zdroje

Zde máte seznam běžných typů zdrojového materiálu, kde na který nejspíš narazíte a jejich volby:

  • Standardní film: Vytvořený pro promítání v kině při 24fps.

  • PAL video: Zaznamenáno PAL video kamerou s rychlostí 50 půlsnímků za sekundu. Půlsnímek sestává jen z lichých nebo sudých řádků daného snímku. Televize je navržena pro jejich střídavé zobrazování jako laciná forma analogové komprese. Lidské oko to pravděpodobně vykompenzuje, ale jakmile porozumíte prokládání, naučíte se jej vidět i v TV a už si ji neužijete. Dva půlsnímky netvoří úplný snímek, protože jsou zaznamenány s časovou odchylkou 1/50 sekundy a proto se nekryjí, dokud je zde pohyb.

  • NTSC Video: Zaznamenáno NTSC video kamerou s rychlostí 60000/1001 půlsnímků za sekundu, nebo 60 půlsnímků za sekundu v době před barevnou televizí. Jinak obdobné PAL.

  • Animovaný film: Obvykle kreslený při 24 snímcích za sekundu, ale rovněž bývá v některé variantě prměnné snímkové rychlosti.

  • Počítačová grafika (CG): Může mít jakoukoli snímkovou rychlost, ale některé jsou častější než jiné; 24 a 30 snímků za sekundu jsou typické pro NTSC a 25 snímků za sekundu zase pro PAL.

  • Starý film: Různé nižší snímkové rychlosti.

7.1.1.2. Určení zdrojového materiálu

Filmy sestávající ze snímků jsou nazývány progresivní, zatímco ty složené z nezávislých půlsnímků buď prokládané, nebo jen video – ačkoli druhý termín je zavádějící.

Abychom to ještě zkomplikovali, některé filmy mohou být směsí všeho výše uvedeného.

Nejdůležitějším rozdílem mezi všemi těmito formáty je to, že základem některých jsou snímky a jiných půlsnímky. Vždy, když je film připravován pro promítání v televizi (včetně DVD), je převeden na půlsnímky. Různé metody jak toho lze dosáhnout jsou souhrnně nazývány "telecine" a nechvalně známé NTSC "3:2 pulldown" je jednou z variant. Pokud nebyl základ vašeho filmu rovněž půlsnímkový (se stejnou půlsnímkovou rychlostí), máte film v jiném formátu, než byl původně.

Zde je několik běžných typů pulldown:

  • PAL 2:2 pulldown: Je nejhezčí z nich. Každý snímek je zobrazován po dobu dvou půlsnímků tak, že se oddělí liché a sudé řádky a zobrazují se střídavě. Pokud měl originál 24 snímků za sekundu, zrychlí se film o 4%.

  • PAL 2:2:2:2:2:2:2:2:2:2:2:3 pulldown: Každý 12 snímek je zobrazen po dobu tří půlsnímků, místo dvou. To odstraní nevýhodu 4% zrychlení, ale znesnadní obrácený proces. Obvykle je používán pouze u hudební produkce, jelikož zde by 4% zrychlení znatelně poškodilo hudební zážitek.

  • NTSC 3:2 telecine: Snímky jsou zobrazovány po dobu 2 nebo 3 půlsnímků, čímž je dosaženo 2.5 krát vyšší půlsnímkové rychlosti, než je originální snímková rychlost. Výsledek je dále velmi mírně spomalen ze 60 půlsnímků za sekundu na 60000/1001 půlsnímků za sekundu, aby se dosáhlo NTSC půlsnímkové rychlosti.

  • NTSC 2:2 pulldown: Používá se pro promítání 30fps materiálu na NTSC. Pěkné, stejně jako 2:2 PAL pulldown.

Existují rovněž metody pro konverzi mezi NTSC a PAL videem, ale to již je nad rámec této příručky. Pokud se setkáte s takovým filmem a budete jej chtít enkódovat, bude pro vás nejlepší opatřit si jej v originálním formátu. Konverze mezi těmito formáty je vysoce destruktivní a nelze ji čistě zvrátit, takže výsledek velmi utrpí, pokud je vytvořen z konvertovaného materiálu.

Když je video ukládáno na DVD, po sobě jdoucí páry půlsnímků jsou seskupovány do snímků, dokonce i když nejsou určeny pro zobrazení ve stejném okamžiku. Standard MPEG-2 použitý na DVD a digitální televizi poskytuje možnost jak pro enkódování originálních progresivních snímků, tak pro uložení informací do hlavičky snímku o počtu půlsnímků, po jejichž dobu by měl být daný snímek zobrazován. Pokud je použita tato metoda, film bývá často označen jako "soft-telecined", jelikož proces pouze řídí DVD přehrávač pro aplikaci pulldown na film spíše než že mění samotný film. Tento případ je velmi upřednostňován, jelikož může být snadno zvrácen (ve skutečnosti ignorován) enkodérem a proto poskytuje maximální kvalitu. Mnoho DVD a televizních produkčních společností však nepoužívá vhodné enkódovací techniky, ale místo toho produkují filmy s "hard telecine", kdy jsou ve skutečnosti půlsnímky duplikovány ve výsledném MPEG-2.

Postupy pro tyto případy budou uvedeny později v této příručce. Prozatím si řekneme několik návodů pro identifikaci o jaký typ materiálu jde:

NTSC regiony:

  • Pokud MPlayer při přehrávání vypíše, že se snímková rychlost změnila na 24000/1001 a již se to nezmění, pak se nejspíš jedná o progresivní obsah, který byl "soft telecinován".

  • Pokud MPlayer ukazuje, že se snímková rychlost mění tam a zpět mezi 24000/1001 a 30000/1001 a někdy vidíte "combing", pak je zde několik možností. Segmenty 24000/1001 fps mají téměř jistě "soft telecinovaný" progresivní obsah, ale 30000/1001 fps části mohou mít buď hard-telecined 24000/1001 fps obsah, nebo se jedná o 60000/1001 půlsnímků za sekundu NTSC video. Použijte stejný postup jako v následujících dvou případech pro určení který z nich to je.

  • Pokud MPlayer neukáže změnu snímkové rychlosti a všechny snímky jsou zubaté, je váš film ve formátu NTSC video s 60000/1001 půlsnímky za sekundu.

  • Pokud MPlayer neukáže změnu snímkové rychlosti a dva snímky z pěti vypadají zubatě, má vaše video "hard telecinovaný" 24000/1001fps obsah.

PAL regiony:

  • Pokud není nikde vidět žádné zubatění, je váš film 2:2 pulldown.

  • Pokud vidíte jak se objevuje a mizí zubatění každou půlsekundu, pak je váš film 2:2:2:2:2:2:2:2:2:2:2:3 pulldown.

  • Pokud je zubatění vidět stále, je to PAL video s 50 půlsnímky za sekundu.

Rada:

MPlayer umí spomalit přehrávání videa pomocí volby -speed. Zkuste použít -speed 0.2 pro velmi pomalé přehrávání nebo opakovaně stiskejte klávesu "." pro krokováníé po snímcích a najděte vzor, pokud jej nevidíte při plné rychlosti.

7.1.2. Pevný kvantizer vs. více průchodů

Enkódování vašeho videa je možné provést v široké škále kvality. S moderními video enkodéry a trochou předkodekové komprese (zmenšení a odšumování) je možné dosáhnout velmi dobré kvality v 700 MB, pro 90-110 minut dlouhé širokoúhlé video. Jinak lze všechna videa, snad kromě těch nejdelších, enkódovat v téměř perfektní kvalitě do 1400 MB.

Jsou tři přístupy k enkódování videa: pevný datový tok (CBR), pevný kvantizer a víceprůchodový (ABR, neboli průměrovaný datový tok).

Komplexnost snímků ve filmu a tím i počet bitů potřebných pro jejich komprimaci, se může velmi lišit od scény ke scéně. Moderní enkodéry se umí přizpůsobit těmto potřebám změnou datového toku. V jednoduchých režiměch, jako je CBR, však enkodéry neznají nároky na datový tok budoucích scén a tak nemohou překročit požadovaný střední datový tok na dlouhou dobu. Pokročilejší režimy, jako je víceprůchodové enkódování, umí vzít v potaz statistiky z předchozích režimů, což odstraní výše zmíněný problém.

Poznámka:

Většina kodeků, které podporují ABR enkódování, podporují pouze dvouprůchodové enkódování, zatímco ostatní jako x264, Xvid a libavcodec podporují víceprůchodové enkódování, které s každým průchodem trochu zlepší kvalitu, ačkoli toto zlepšení již není viditelné, nebo měřitelné po asi čtvrtém průchodu. V této sekci budeme považovat dvouprůchodové a víceprůchodové enkódování za rovnocenné.

V každém z těchto režimů video kodek (jako je libavcodec) rozbije videosnímek na makrobloky 16x16 pixelů a potom na každý makroblok aplikuje kvantizer. Čím je nižší kvantizer, tím je vyšší kvalita a datový tok. Metoda, kterou enkodér filmu používá pro určení jaký kvantizer použít pro daný makroblok, se liší a je vysoce ovlivnitelná. (Toto je extrémní zjednodušení daného procesu, ale je vhodné rozumět základnímu principu.)

Pokud nastavíte konstantní datový tok, bude videokodek enkódovat video tak, že zahodí detaily podle potřeby a jen tolik, aby se udržel pod zadaným datovým tokem. Pokud je vám opravdu lhostejná velikost souboru, můžete také použít CBR a nastavit datový tok na nekonečno. (V praxi to znamená nastavit hodnotu tak vysoko, aby nijak neomezovala, jako 10000 Kbitů.) Bez reálného omezení datového toku použije kodek nejnižší možný kvantizer pro každý makroblok (ten je nastaven pomocí vqmin pro libavcodec, kde je výchozí 2). Jakmile nastavíte dostatečně nižší datový tok, takže je kodek přinucen použít vyšší kvantizer, pak téměř jistě snížíte kvalitu svého videa. Abyste se tomu vyhnuli, měli byste zvážit zmenšení videa podle postupu popsaného později v této příručce. Všeobecně byste se měli úplně vyhnout CBR, pokud vám záleží na kvalitě.

Při konstantním kvantizeru kodek používá kvantizer nastavený volbou vqscale (pro libavcodec) na každý makroblok. Pokud chcete maximálně kvalitní rip, opět bez ohledu na datový tok, můžete použít vqscale=2. To povede ke stejnému datovému toku a PSNR (odstup signál – šum) jako CBR s vbitrate=infinity a výchozím vqmin rovným 2.

Problém s konstantní kvantizací je ten, že používá zadaný kvantizer ať to daný makroblok potřebuje či nikoli. Je totiž možné použít vyšší kvantizer na makroblok bez obětování viditelné kvality. Proč tedy plýtvat bity s nemístně nízkým kvantizerem? Váše CPU má tolik cyklů, kolik máte času, ale na harddisku máte jen určitý počet bitů.

Při dvouprůchodovém enkódování se v prvním průchodu projde film jakoby měl být CBR, ale vlastnosti každého snímku se zaznamenají do logu. Tato data jsou pak použita při druhém průchodu pro inteligentní stanovení použitého kvantizeru. V rychlých scénách nebo scénách s velkým počtem detailů budou častěji používány vyšší kvantizery a v pomalých nebo méně detailních scénách zase nižší kvantizery. Obvykle je důležitější množství pohybu než detailů.

Pokud použijete vqscale=2, plýtváte bity. Pokud použijete vqscale=3, pak nedostanete nejkvalitnější možný rip. Dejme tomu, že ripujete DVD při vqscale=3 a výsledkem je 1800Kbit. Pokud provedete dvouprůchodové enkódování s vbitrate=1800, výsledné video bude mít vyšší kvalitu při stejném datovém toku.

Jelikož jsme vás nyní přesvědčili, že dvouprůchodový režim je správná volba, skutečnou otázkou je, jaký datový tok použít? Odpověď je, že není jediná odpověď. Ideálně byste měli zvolit takový datový tok, který zajistí nejlepší rovnováhu mezi kvalitou a velikostí souboru. Ten bude pokaždé jiný v závislosti na zdrojovém videu.

Pokud na velikosti souboru nezáleží, pak je dobrý startovní můstek pro rip s velmi vysokou kvalitou je kolem 2000 Kbitů plus-mínus 200 Kbitů. Pro rychlé akční nebo vysoce detailní zdrojové video, nebo máte-li velmi kritické oko, se budete rozhodovat mezi 2400 nebo 2600. U některých DVD nepoznáte rozdíl při 1400 Kbitech. Je vhodné experimentovat se scénami při různých datových tocích, abyste pro to dostali cit.

Pokud se snažíte o určitou velikost, budete muset nějak spočítat datový tok. Ale ještě předtím musíte zjistit, kolik místa byste měli rezervovat pro zvukové(ou) stopy(u), takže byste si je měli ripnout jako první. Můžete si pak spočítat datový tok pomocí následující rovnice: datový_tok = (požadovaná_velikost_v_Mbajtech - velikost_zvuku_v_Mbajtech) * 1024 * 1024 / délka_v_sek * 8 / 1000 Například abyste nacpali dvouhodinový film na 702MB CD, se 60MB zvukovou stopou, bude muset být datový tok videa: (702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 = 740kbps (kilobitů za sekundu)

7.1.3. Omezení pro efektivní enkódování

Ze samé podstaty komprese typu MPEG vyplývají určitá omezení, která byste měli ctít, pokud chcete maximální kvalitu. MPEG rozdělí video na čtverce 16x16 nazývané makrobloky, které se skládají ze čtyř bloků 8x8 jasové (luma) složky a dvou bloků 8x8 barevné (chroma) složky v polovičním rozlišení (jeden pro osu červená-cyan (modrozelená) a druhý pro osu modrá-žlutá). Dokonce i když šířka a výška vašeho videa nejsou násobky 16, použije enkodér dostatek 16x16 makrobloků, aby pokryl celou oblast obrazu a zabere místo navíc, které přijde vniveč. Takže chcete-li maximalizovat kvalitu při dané velikosti souboru, není dobrý nápad používat rozměry které nejsou násobky 16.

Většina DVD má také různě velké černé okraje videa. Ponechání těchto ploch různým způsobem velmi snižuje kvalitu.

  1. Komprese typu MPEG je velmi závislá na plošných frekvenčních transformacích, konkrétně Diskrétní Kosinové Transformaci (DCT), která se podobá Fourierově transformaci. Tento druh enkódování je efektivní na reprezentaci opakujících se vzorů a pozvolné přechody, ale má potíže s ostrými přechody. Chcete-li je enkódovat, musíte použít mnoho bitů, jinak se objeví artefakty známé jako kroužkování.

    Frekvenční transformace (DCT) je provedena zvlášť pro každý makroblok (ve skutečnosti na každý blok), takže problém nastane pouze tehdy, je-li ostrý přechod uvnitř bloku. Pokud vaše černé okraje začínají přesně na hranicích násobků 16 pixelů, pak to není problém. Černé okraje jsou však na DVD jen málokdy pěkně umístěny, takže je v praxi budete muset vždy odstranit, abyste se vyhnuli tomuto problému.

Navíc k plošně frekvenčním transformacím používá komprese typu MPEG vektory pohybu k popisu změn od jednoho snímku ke druhému. Vektory pohybu přirozeně pracují méně efektivně s novým obsahem přicházejícím zpoza okrajů snímku, protože ten nebyl přítomen na předchozím snímku. Dokud se obraz rozšiřuje směrem k okrajům snímku, nemají s tím vektory pohybu žádný problém, ale jsou-li zde černé okraje, může problém nastat:

  1. Komprese typu MPEG ukládá pro každý makroblok vektor, identifikující která část předchozího obrázku by měla být zkopírována onoho makrobloku jako základ pro predikci následujícího snímku. Pouze zbývající odlišnosti musí být enkódovány. Pokud makroblok přesahuje okraj obrázku a obsahuje část černého okraje, vektory pohybu z ostatních částí obrázku přepíší černý okraj. To znamená mnoho bitů spotřebovaných buď na znovuzačernění, nebo se (spíš) vektory pohybu nepoužijí vůbec a všechny změny v tomto makrobloku se budou kódovat přímo. Jinými slovy se velmi sníží efektivita enkódování.

    Tento problém nastává opět jen v případě, že černé okraje nezačínají na lince jejíž pozice je násobkem 16.

  2. Nakonec zde máme makroblok uvnitř obrázku do nějž se posunuje objekt z okraje obrázku. Kódování typu MPEG neumí říct "zkopíruj to co je na obrázku, ale ne černý okraj." Takže se zkopíruje i černý okraj a spotřebuje se spousta bitů na enkódování té části obrázku, která tu měla být.

    Pokud se obrázek dostane úplně ven z enkódované oblasti, má MPEG speciální optimalizace pro opakované kopírování pixelů na okraj obrázku pokud přijde vektor pohybu zvenčí enkódované oblasti. Tato vlastnost bude k ničemu, pokud má film černé okraje. Na rozdíl od problémů 1 a 2 zde umístění okrajů na násobky 16 nepomůže.

  3. Navzdory tomu, že okraje jsou úplně černé a nikdy se nemění, je zde vždy alespoň minimální datový tok spotřebovaný na větší množství makrobloků.

Ze všech těchto důvodů doporučujeme zcela odstranit černé okraje. Dále, pokud je na okraji obrázku oblast se šumem/zkreslením, jejím odstřižením se ještě zvýší efektivita enkódování. Videofilní puristé, kteří chtějí zůstat tak blízko originálu, jak je to jen možné, mohou protestovat proti tomuto ořezání, ale pokud nehodláte enkódovat s konstantním kvantizerem, kvalita kterou dostanete díky ořezání znatelně převýší množství ztracených informací na okrajích.

7.1.4. Ořezávání a škálování

Připomeňme z předchozí části, že konečná velikost obrázku by měla mít jak šířku, tak výšku beze zbytku dělitelnou 16, čehož můžete dosáhnout pomocí ořezání, škálování, nebo kombinací obou.

Při ořezávání byste se měli držet několika zásad, abyste předešli poškození svého filmu. Normální YUV formát 4:2:0, ukládá barvonosnou (chroma) informaci podvzorkovanou, čili hustota vzorkování barvy je poloviční oproti jasové (černobílé) složce v obou směrech. Prohlédněte si tento diagram, kde L označuje vzorkovací body jasu a C barvy.

LLLLLLLL
CCCC
LLLLLLLL
LLLLLLLL
CCCC
LLLLLLLL

Jak vidíte, řádky i sloupce obrázku se přirozeně párují. Při ořezávání tedy musí být hodnoty odsazení i rozměrů sudá čísla. Pokud nejsou, nebude se barvonosná informace zprávně krýt s jasovou. Teoreticky lze stříhat s lichým odsazením, ale to vyžaduje převzorkování barvy, což je potenciálně ztrátový úkon a není podporován filtrem crop.

Dále, prokládané video je vzorkováno takto:

Horní půlsnímekSpodní půlsnímek
LLLLLLLL        
CCCC        
        LLLLLLLL
LLLLLLLL        
        CCCC
        LLLLLLLL
LLLLLLLL        
CCCC        
        LLLLLLLL
LLLLLLLL        
        CCCC
        LLLLLLLL

Jak vidíte, tak se vzor opakuje každé 4 řádky, takže při ořezu prokládaného videa musí být odsazení v ose y a výška beze zbytku delitelné 4.

Nativní DVD rozlišení je 720x480 pro NTSC a 720x576 pro PAL, ale je zde ještě příznak poměru stran, který udává, zda se jedná o obrazovku (full-screen)(4:3), nebo širokoúhlý film (wide-screen)(16:9). Mnoho (jestli ne většina) širokoúhlých DVD není přesně 16:9, ale bude buď 1.85:1 anebo 2.35:1 (cinescope). To znamená, že zde budou ve videu černé okraje, které bude nutné odstřihnout.

MPlayer poskytuje filtr pro detekci potřebného ořezu, který stanoví ořezový obdélník (-vf cropdetect). Spusťte MPlayer s volbou -vf cropdetect a on vám vypíše nastavení filtru crop pro ořezání okrajů. Měli byste nechat běžet film tak dlouho, dokud není použita celá plocha obrázku, abyste dostali správné hodnoty crop.

Pak otestujte získané hodnoty z příkazového řádku MPlayeru vypisované cropdetectem a upravte obdélník podle potřeby. V tom vám pomůže filtr rectangle, který umožňuje interaktivně nastavit obdélník pro váš film. Nezapomeňte zachovat výše uvedená doporučení, abyste nepoškodili barevnou mapu.

Škálování je obvykle nevhodné. Škálování prokládaného videa je obtížné a pokud chcete zachovat prokládání, měli byste se mu úplně vyhnout. Pokud mebudete škálovat, ale budete chtít používat rozměry v násobcích 16, budete muset oříznout i část obrazu. Neponechávejte ani malé černé okraje, jelikož se velmi špatně kódují!

Protože MPEG-4 používá makrobloky 16x16, měli byste se ujistit, že oba rozměry videa jsou násobkem 16, jinak snížíte kvalitu, zvlášť při nízkých datových tocích. Můžete to zajistit zaokrouhlením šířky a výšky ořezového obdélníku dolů na nejbližší násobek 16. Jak jsme již řekli, měli byste při ořezávání zvýšit odsazení (offset) v ose y o polovinu rozdílu mezi starou a novou výškou, takže bude výsledné video bráno ze středu snímku. Z důvodu principu vzorkování DVD videa se ujistěte, že je odsazení sudé číslo. (Popravdě, přijměte jako pravidlo, nikdy nepoužívat liché hodnoty pro jakýkoli z parametrů při ořezávání a škálování videa.) Pokud nechcete zahodit těch několik pixelů navíc, můžete místo toho raději změnit velikost videa (škálovat). Na to se podíváme v příkladu níže. V praxi můžete nechat filtr cropdetect udělat všechnu práci zmíněnou výše, jelikož má volitelný parametr round (zaokrouhlení), jehož výchozí hodnota je 16.

Rovněž buďte opatrní na "napůl černé" pixely na okrajích. Vždy je rovněž odstřihněte, jinak zde budete plýtvat bity, které můžete použít jinde.

Poté co provedete vše, co jsme si doposud řekli, budete mít video, které asi nebude právě 1.85:1 nebo 2.35:1, ale někde poblíž. Můžete spočítat nový poměr stran ručně, ale MEncoder nabízí volbu pro libavcodec nazývanou autoaspect, která to za vás udělá. Nezvětšujte video jen proto, abyste dosáhli čtvercových pixelů, pokud je vám milé místo na disku. Škálování by mělo být provedeno při přehrávání, kdy přehrávač použije poměr stran uložený v AVI pro zajištění správného rozlišení. Naneštěstí ne všechny přehrávače uplatňují tuto autoškálovací informaci, takže můžete přece jen chtít škálovat.

7.1.5. Volba rozlišení a datového toku

Pokud nebudete enkódovat v režimu konstantního kvantizeru, musíte zvolit velikost datového toku. Koncepce datového toku je velmi jednoduchá. Je to (průměrný) počet bitů spotřebovaný na jednu sekundu filmu. Normálně se datový tok udává v kilobitech (1000 bitů) za sekundu. Velikost vašeho filmu je pak datový tok násobený délkou filmu, plus malá režie (viz například sekci kontejner AVI). Ostatní parametry jako je škálování, ořezání atd. nezmění velikost souboru, pokud zároveň nezměníte datový tok!

Datový tok se nemění proporcionálně k rozlišení. Jinými slovy, soubor 320x240 při 200 kbit/sek nebude mít stejnou kvalitu jako ten samý film při 640x480 a 800 kbitech/sek! Jsou pro to dva důvody:

  1. Dojem: MPEG artefakty jsou patrné tím více, čím jsou více zvětšené! Artefakty se objevují ve velikosti bloků (8x8). Vaše oko neodhalí chyby ve 4800 malých blocích tak snadno jako ve 1200 velkých (předpokládáme, že oboje budete škálovat na celou obrazovku).

  2. Teoretický: Když zmenšíte obrázek, ale stále použijete stejnou velikost bloků (8x8) pro frekvenční prostorovou transformaci, přesunete více dat do oblasti vyšších frekvencí. Zjednodušeně řečeno, každý pixel nyní obsahuje více detailů, než předtím. Dokonce i když připustíme, že jste zmenšili obraz obsahující 1/4 informací o daném prostoru, stále může obsahovat mnoho detailů v daném frekvenčním pásmu (předpokládáme, že vysoké frekvence byly v originálním 640x480 snímku ořezány).

Dřívější návody doporučovaly volit datový tok a rozlišení rozpočítáním bitů na pixely, ale to obvykle není správně ze zmíněných důvodů. Mnohem lepším se zdá odhad, že je datový tok úměrný čtverci rozlišení, takže 320x240 při 400 kbit/sek by mělo být srovnatelné s 640x480 při 800 kbit/sek. Tato úměra však nebyla ověřena teoreticky ani empiricky. Navíc, vezmeme-li v úvahu to, že se filmy velmi liší šumem, počtem detailů, množstvím pohybu atd, je beznadějné vytvořit obecná doporučení pro počet bitů na délku diagonály (analogie bitů na pixel, avšak používá plochu obrazu).

Tolik k obtížnosti volby datového toku a rozlišení.

7.1.5.1. Výpočet rozlišení

Následující kroky vás provedou výpočty rozlišení výsledného filmu tak, abyste příliš nesnížili kvalitu videa s přihlédnutím k několika typům informací o zdrojovém videu. Nejdřív byste si měli spočítat enkódovaný poměr stran: PSo = (Šo x (PSa / PRdvd )) / Vo

kde:

  • Šo a Vo jsou šířka a výška ořezaného videa,

  • PSa je zobrazovaný poměr stran, jež je obvykle 4/3 nebo 16/9,

  • PRdvd je poměr pixelů v DVD, který je roven 1.25=(720/576) pro DVD v PALu a 1.5=(720/480) pro DVD v NTSC,

Pak si můžete spočítat rozlišení X a Y podle určitého faktoru kvality komprese (CQ): RozY = INT(SQRT( 1000*Datový_tok/25/PSo/CQ )/16) * 16 a RozX = INT( RozY * PSo / 16) * 16

Dobře, ale co je CQ? CQ odpovídá počtu bitů na pixel a na snímek po zakódování. Jinými slovy, čím vyšší je CQ, tím nižší je šance uvidět enkódovací artefakty. Pokud ovšem máte cílový rozměr vašeho filmu (1 nebo 2 CD například), máte jen omezené množství bitů, které můžete spotřebovat; takže je nutné najít vhodný kompromis mezi komprimovatelností a kvalitou.

CQ závisí na datovém toku, efektivitě video kodeku a na rozlišení filmu. Abyste zvýšili CQ, obvykle zmenšíte daný film, takže je datový tok spočítán ve funkci cílové velikosti a délky filmu, které jsou konstantní. S MPEG-4 ASP kodeky jako jsou Xvid a libavcodec, vede CQ pod 0.18 obvykle k velmi čtverečkovanému obrázku, protože není dostatek bitů pro zakódování informací každého makrobloku. (MPEG4, stejně jako mnoho jiných kodeků seskupuje pixely do bloků při komprimaci obrázku; pokud není dostatek bitů, jsou viditelné hranice těchto bloků.) Proto je rozumné volit CQ v rozmezí 0.20 až 0.22 pro rip na 1 CD a 0.26 až 0.28 pro rip na 2 CD při standardních enkódovacích volbách. Pokročilejší volby podobné těm zmiňovaným zde pro libavcodec a Xvid by měly umožnit dosažení stejné kvality při CQ v rozsahu od 0.18 do 0.20 pro rip na 1 CD a 0.24 až 0.26 pro rip na 2 CD. S MPEG-4 ASP kodeky jako je x264, můžete použít CQ v rozmezí 0.14 až 0.16 při standardních enkódovacích volbách a měli byste být schopni jít až na nízký od 0.10 do 0.12 s pokročilými x264 enkódovacími volbami.

Prosíme berte v potaz, že CQ je jen informační pomůcka závisející na enkódovaném obsahu. CQ okolo 0.18 může být dostatečně dobrý pro Bergmana, na rozdíl od filmu jako je Matrix, který obsahuje mnoho rychlých scén. Na druhou stranu je zbytečné zvyšovat CQ výš než 0.30, jelikož budete plýtvat bity za minimální zisk kvality. Také berte v potaz, jak jsme již řekli, že videa s nízkým rozlišením vyžadují vyšší CQ (v porovnání s např. DVD rozlišením), aby vypadala dobře.

7.1.6. Filtrování

Naučit se používat video filtry MEncoderu je základem pro produkci dobrých videí. Veškeré úpravy videa jsou prováděny pomocí filtrů -- ořezání, škálování, úprava barev, odstranění šumu, zaostření, odstranění prokladu, telecinování, inverzní telecine a deblokování, abychom jmenovali alespoň některé. Spolu s vyčerpávajícím počtem podporovaných vstupních formátů je nabídka dostupných filtrů v MEncoderu jednou z jeho hlavních výhod oproti podobným aplikacím.

Filtry jsou nahrávány v řadě za použití volby -vf :

-vf filtr1=volby,filtr2=volby,...

Většina filtrů přebírá několik číselných voleb oddělených dvojtečkou, ale syntaxe voleb se liší od filtru k filtru, takže si přečtěte manuál pro více informací o filtru který chcete použít.

Filtry zpracovávají video v pořadí, v jakém jsou načteny. Například následující řada:

-vf crop=688:464:12:4,scale=640:464

nejprve vyřízne z obrázku oblast 688x464 s levým horním rohem v bodě (12,4) a výsledek pak zmenší na 640x464.

Určité filtry potřebují být nahrány na začátku, nebo co nejblíž začátku řetězu filtrů, aby mohly využívat informace z video dekodéru, které budou ztraceny nebo znehodnoceny ostatními filtry. Nejdůležitější příklady jsou pp (postprocesing, pouze pokud provádí deblok nebo dering operace), spp (další postprocesor pro odstranění MPEG artefaktů), pullup (inverzní telecine) a softpulldown (pro konverzi soft telecine na hard telecine).

Všeobecně byste měli filtrovat co nejméně je to možné, abyste zůstali co nejblíže DVD originálu. Ořezání je často nutné (vysvětleno výše), ale vyhněte se škálování videa. Ačkoli je zmenšení občas preferováno před použitím vyšších kvantizérů. My se musíme vyvarovat obou těchto případů: pamatujte, že jsme se již na začátku rozhodli obětovat bity za kvalitu.

Rovněž neupravujte gamu, kontrast, jas, atd. Co vypadá dobře na vaší obrazovce, nemusí vypadat dobře na ostatních. Tyto korekce by měly být prováděny výhradně při přehrávání.

Jednu věc byste však udělat mohli, a to protáhnout video velmi lehkým odšumovacím filtrem, jako je -vf hqdn3d=2:1:2. Zde je opět důvodem využití bitů k lepšímu účelu: proč jimi plýtvat na enkódování šumu, když si můžete šum přidat až při přehrávání? Zvýšením parametrů pro hqdn3d dále zvýší komprimovatelnost, ale pokud zvýšíte hodnoty příliš, riskujete zhoršení viditelnosti obrazu. Výše zmíněné hodnoty (2:1:2) jsou dost konzervativní; měli byste si zaexperimentovat s vyššími hodnotami a zhodnotit výsledky sami.

7.1.7. Prokládání a Telecine

Téměř veškeré filmy jsou natáčeny při 24 snímcích/s. Jelikož NTSC má snímkovou rychlost 30000/1001 snímků/s, je třeba provést úpravu těchto 24 snímků/s videí, aby měly správnou NTSC snímkovou rychlost. Tato úprava se jmenuje 3:2 pulldown a obecně je známa jako telecine (protože je pulldown často prováděn během přenosu filmu na video) a, jednoduše řečeno, pracuje tak, že se film zpomalí na 24000/1001 snímků/s a každý čtvrtý snímek se zopakuje.

Naopak žádné speciální úpravy se neprovádějí videu pro PAL DVD, která běží při 25 snímcích/s. (Technicky lze na PAL provést telecine, tzv. 2:2 pulldown, ale v praxi se nepoužívá.) Film s 24 snímky/s je jednoduše přehráván rychlostí 25 snímků/s. Výsledkem je, že video běží o něco rychleji, ale pokud nejste vetřelec, tak si rozdílu ani nevšimnete. Většina filmů má navíc výškově korigovaný zvuk, takže při přehrávání 25 snímků/s vše zní jak má i přesto, že zvuk (a proto i celé video) má o 4% kratší dobu přehrávání než NTSC DVD.

Jelikož video na PAL DVD nebylo upravováno, nemusíte si dělat starosti s jeho snímkovou rychlostí. Zdroj má 25 snímků/s, váš rip také. Pokud ovšem ripujete NTSC DVD film, musíte provést inverzní telecine.

Filmy točené rychlostí 24 snímků/s jsou na NTSC DVD uloženy buď jako 30000/1001 po telecine, nebo jako progresivní (neprokládaný) se snímkovou 24000/1001 snímků/s, na kterých by měl provést telecine DVD přehrávač za letu. Není to ale zákon: některé TV série jsou prokládané (např. Buffy Lovec upírů), zatímco jiné jsou porůznu neprokládané nebo prokládané (např. Anděl, nebo 24 hodin).

Doporučujeme, abyste si přečetli sekci o tom Jak si poradit s telecine a prokladem na NTSC DVD a naučili se jak využít různé možnosti.

Pokud ovšem většinou ripujete pouze filmy, nejspíš se setkáváte s neprokládaným nebo prokládaným videem 24 snímků/s. V tom případě můžete použít pullup filtr -vf pullup,softskip.

7.1.8. Enkódování prokládaného videa

Pokud je film, který chcete enkódovat, prokládaný (NTSC video nebo PAL video), budete si muset vybrat, zda jej chcete "odproložit" nebo ne. Zatímco odstranění prokladu učiní váš film použitelným na progresivně vykreslovaných zobrazovačích jako jsou počítačové monitory a projektory. Cenou za to je, snížení rychlosti z 50 nebo 60000/1001 půlsnímků za sekundu na 25 nebo 30000/1001 snímků za sekundu a zhruba polovina informací bude z vašeho filmu ztracena ve scénách s významným množstvím pohybu.

Proto pokud enkódujete ve vysoké kvalitě pro archivační účely, doporučujeme ponechat film prokládaný. Vždy můžete provést odstranění prokladu při přehrávání pokud zobrazujete na progresivně zobrazujícím zařízení. Výkon současných počítačů nutí přehrávače používat filtr prokladu, což působí mírnou degradaci kvality obrazu. Budoucí přehrávače však budou schopny napodobovat chování prokládané TV obrazovky, odstraňovat proklad v plné půlsnímkové rychlosti a odvozovat 50 nebo 60000/1001 úplných snímků za sekundu z prokládaného videa.

Když pracujete s prokládaným videem, musíte zvláště dbát na:

  1. Výška a svislé odsazení pro ořezání musí být násobkem 4.

  2. Jakékoli svislé škálování musí být provedeno v prokládaném režimu.

  3. Postprocesní a odšumovací filtry nemusí pracovat podle očekávání, dokud nezařídíte, aby zpracovávaly najednou pouze jeden půlsnímek a mohou vám poškodit video při nesprávném použití.

S vědomím těchto souvislostí vám předkládáme první příklad:

mencoder capture.avi -mc 0 -oac lavc -ovc lavc -lavcopts \
    vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224

Povšimněte si voleb ilme a ildct.

7.1.9. Poznámky k Audio/Video synchronizaci

MEncoderovy audio/video synchronizační algoritmy byly navrženy se záměrem obnovy souborů s vadnou synchronizací. V některých případech však můžou působit zbytečné zahazování a duplikaci snímků a možná mírnou A/V desynchronizaci při použití s bezvadným vstupem (přirozeně tyto A/V synchronizační omezení projeví pouze pokud kopírujete zvukovou stopu při překódovávání videa, což je velmi doporučováno). Můžete však přepnout do základní A/V synchronizace s volbou -mc 0, nebo ji přidejte do svého konfiguračního souboru ~/.mplayer/mencoder config file, aspoň pokud pracujete pouze s kvalitními zdroji (DVD, zachytávaná TV, vysoce kvalitní MPEG-4 ripy, atd) ale nikoli s vadnými ASF/RM/MOV soubory.

Chcete-li si dále pohlídat podivné zahazování snímků a duplikaci, můžete použít -mc 0 spolu s -noskip. To zamezí veškeré A/V synchronizaci a snímky se skopírují jedna k jedné, takže to nelze použít ve spojení s filtry, které v nestřženém okamžiku přidají nebo zahodí snímky, nebo pokud zdrojové video má proměnnou snímkovou rychlost! V tom případě není použití -noskip obecně doporučováno.

O takzvaném "tříprůchodovém" enkódování zvuku podporovaném MEncoderem bylo hlášeno, že způsobuje A/V desynchronizaci. To nastává tehdy, pokud je použito v kombinaci s některými filtry, takže není v tuto chvíli doporučováno používat tříprůchodové enkódování zvuku. Tato vlastnost je zachována pouze z důvodu kompatibility a pro expertní uživatele, kteří vědí, kdy je bezpečné ji použít a kdy ne. Pokud jste o tomto režimu nikdy předtím neslyšeli, zapoměňte, že jsme se o něm vůbec zmínili!

Existují rovněž hlášení o A/V desynchronizaci při enkódování ze stdin MEncoderem. Nedělejte to! Vždy použijte jako zdroj soubor nebo CD/DVD/atd zařízení.

7.1.10. Výběr video kodeku

Výběr vhodného video kodeku k použití závisí na několika faktorech, jako je velikost, kvalita, schopnost přehrávání po síti, použitelnost nebo obliba, z nichž některé jsou čistě věcí osobního vkusu, jiné závisí na technických omezeních.

  • Účinost komprimace: Jednoduše můžeme říct, že většina kodeků novější generace je vytvořena tak, aby dosahovala vyšší kvality a komrimace než předchozí generace. Proto se autoři této příručky a mnoho jiných lidí, domnívají že neuděláte chybu, [1] když zvolíte MPEG-4 AVC kodeky, jako x264 místo MPEG-4 ASP kodeků jako jsou libavcodec MPEG-4, nebo Xvid. (Pokročilé vývojáře kodeků by mohl zajímat názor Michaela Niedermayera na "proč mě štve MPEG4-ASP".) Podobně byste měli dosáhnout lepší kvality použitím MPEG-4 ASP místo MPEG-2 kodeků.

    Novější kodeky, které jsou v rozsáhlém vývoji, mohou obsahovat chyby, kterých si dosud nikdo nevšiml a které mohou zničit výsledek. To je daň za použití nejnovější technologie.

    Navíc, v začátku používání nového kodeku se budete muset strávit nějaký čas seznámením se s jeho volbami, abyste se dověděli co kde nastavit pro dosažení požadované kvality obrazu.

  • Hardwarová kompatibilita: Obvykle trvá dlouhou dobu, než začnou stolní video přehrávače podporovat nejnovější videokodeky. Výsledkem toho je, že většina z nich podporuje pouze kodeky MPEG-1 (jako VCD, XVCD a KVCD), MPEG-2 (jako DVD, SVCD a KVCD) a MPEG-4 ASP (jako DivX, LMP4 z libavcodecu a Xvid) (Pozor: obvykle nejsou podporovány všechny vlastnosti (features) MPEG-4 ASP). Nahlédněte prosím do technických specifikací vašeho přehrávače (pokud jsou), nebo si vygooglete více informací.

  • Nejlepší kvalita na enkódovací čas: Kodeky, které již jsou zde nějakou dobu (jako libavcodec MPEG-4 a Xvid), jsou obvykle vysoce optimalizovány všemi druhy chytrých algoritmů a SIMD assembly kódem. Proto mají snahu dosahovat nejlepší poměr kvality na enkódovací čas. Mohou však mít některé velmi pokročilé volby, které, pokud jsou zapnuty, velmi spomalí enkódování při mizivém zisku.

    Pokud vám jde o rychlost, měli byste se držet výchozího nastavení video kodeku (ačkoli byste stejně měli zkusit ostatní volby zmíněné v dalších částech této příručky).

    Rovněž můžete zvážit použití kodeku, který umí vícevláknové zpracování, což je ovšem k něčemu jen uživatelům víceprocesorových strojů. libavcodec MPEG-4 to umožňuje, ale nárůst rychlosti je omezený a dostanete nepatrně méně kvalitní obraz. Vícevláknový režim Xvid, aktivovaný volbou threads, můžete využít ke zvýšení rychlosti enkódování — obvykle o 40–60% — s velmi malým nebo žádným zhoršením obrazu. x264 rovněž umožňuje vícevláknové enkódování, které v současnosti zrychluje enkódování asi o 94% na každé procesorové jádro, ale snížuje PSNR o 0.05dB.

  • Osobní vkus: Zde jsme v rovině téměř iracionální: Ze stejného důvodu, pro který někteří setrvávali léta u DivX 3 i když novější kodeky již dělaly zázraky, preferují někteří lidé Xvid nebo libavcodec MPEG-4 před x264.

    Udělejte si vlastní úsudek a neposlouchejte lidi, kteří přísahají na jediný kodek. Udělejte si několik vzorků ze surových zdrojů a porovnejte různé volby enkódování a kodeky, abyste nalezli ten, který vám vyhovuje nejlépe. Nejlepší kodek je ten, který nejlépe ovládáte a který vypadá nejlépe na vaší obrazovce [2]!

Seznam podporovaných kodeků najdete v sekci výběr kodeků a nosných formátů.

7.1.11. Zvuk

Zvuk je mnohem jednodušší problém k řešení: pokud prahnete po kvalitě, prostě jej nechte jak je. Dokonce i AC–3 5.1 datové proudy mají nanejvýš 448Kbitů/s a stojí za každý bit. Možná jste v pokušení převést zvuk do Ogg Vorbis při vysoké kvalitě, ale jen proto, že dnes nemáte A/V receiver pro hardwarové dekódování AC–3 neznamená, že jej nebudete mít zítra. Připravte své DVD ripy na budoucnost zachováním AC–3 datových proudů. Datový proud AC–3 můžete zachovat buď jeho zkopírováním přímo do video proudu během enkódování. Také můžete extrahovat AC–3 proud, abyste jej pak namixovali do nosičů jako je NUT nebo Matroska.

mplayer zdrojový_soubor.vob -aid 129 -dumpaudio -dumpfile zvuk.ac3

vytáhne do souboru zvuk.ac3 zvukovou stopu číslo 129 ze souboru zdrojový_soubor.vob (NB: DVD VOB soubory obvykle používají odlišné číslování audia, což znamená, že VOB zvuková stopa 129 je druhou zvukovou stopou v souboru).

Někdy ovšem opravdu nemáte jinou možnost než dále komprimovat zvuk, aby vám zbylo více bitů na video. Většina lidí volí komprimaci buď pomocí MP3 nebo Vorbis audio kodeků. Zatímco ten druhý je efektivnější z prostorového hlediska, MP3 je lépe podporován hardwarovými přehrávači, ačkoli časy se mění.

Nepoužívejte -nosound, enkódujete-li soubor se zvukem, dokonce i v tom případě, že budete enkódovat a muxovat zvuk samostatně později. Ačkoli to může v ideálním případě fungovat, použití -nosound spíše skryje určité problémy v nastaveních enkódování na příkazovém řádku. Jinými slovy vám přítomnost zvukové stopy zajistí, pokud neuvidíte hlášky typu Příliš mnoho audio paketů ve vyrovnávací paměti, že budete schopni dosáhnout správné synchronizace.

Musíte nechat MEncoder zpracovat zvuk. Můžete například skopírovat originální zvukovou stopu během enkódování pomocí -oac copy, nebo jej převést na "tenký" 4 kHz mono WAV PCM pomocí -oac pcm -channels 1 -srate 4000. Jinak v některých případech vytvoříte video soubor, který nebude synchronní se zvukem. Tyto případy nastávají tehdy, když počet videosnímků ve zdroji neodpovídá celkové délce zvukových vzorků, nebo pokud je zvuk přerušovaný či překrývaný díky chybějícím či nadbývajícím audio vzorkům. Správným způsobem jak toto řešit, je vložení ticha nebo odstřižení zvuku na těchto místech. MPlayer to však neumí, takže pokud demuxujete AC–3 zvuk a enkódujete jej zvláštní aplikací (nebo jej dumpnete do PCM MPlayerem), zůstanou zmíněné vady jak jsou a jediný způsob jak je opravit je zahodit/namnožit video snímky v těchto místech. Dokud MEncoder sleduje zvuk při enkódování videa, může provádět toto zahazování/duplikování (což je obvykle OK, jelikož nastává při černé obrazovce/změně scény), ale pokud MEncoder nevidí zvuk, zpracuje snímky jak jsou a ty pak nepasují na konečnou zvukovou stopu když například spojíte svou video a zvukovou stopu do Matroska souboru.

Nejdříve ze všeho budete muset převést DVD zvuk do WAV souboru, který pak použije zvukový kodek jako vstup. Například:

mplayer zdrojový_soubor.vob -ao pcm:file=výsledný_zvuk.wav \
    -vc dummy -aid 1 -vo null

vylije druhou zvukovou stopu ze souboru zdrojový_soubor.vob do souboru výsledný_zvuk.wav. Měli byste normalizovat zvuk před enkódováním, protože DVD zvukové stopy jsou obvykle nahrávány při nízkých hlasitostech. Můžete například použít nástroj normalize, který je k dispozici ve většině distribucí. Pokud používáte Windows, stejnou práci udělá nástroj jako BeSweet. Komprimovat budete buď ve Vorbisu nebo MP3. Například:

oggenc -q1 cílový_zvuk.wav

provede enkódování cílového_zvuku.wav s kvalitou 1, která přibližně odpovídá 80Kb/s a je to minimální kvalita na kterou byste měli enkódovat, pokud vám záleží na kvalitě. Poznamenejme, že MEncoder v současnosti neumí muxovat Vorbis zvukové stopy do výstupního souboru, protože podporuje pouze AVI a MPEG kontejnery jako výstup. Pro oba platí, že některé přehrávače mohou mít problémy s udržením audio/video synchronizace, pokud je přítomen VBR zvuk jako je Vorbis. Nemějte obavy, v tomto dokumentu vám ukážeme, jak to lze udělat pomocí programů třetích stran.

7.1.12. Muxování (multiplexování)

Nyní, když máte své video enkódované, budete jej nejspíš chtít muxovat s jednou nebo více zvukovými stopami do nosného filmového formátu, jako je AVI, MPEG, Matroska nebo NUT. MEncoder je zatím schopen nativně zapracovat zvuk a video pouze do nosných formátů MPEG a AVI. Například:

mencoder -oac copy -ovc copy  -o výstupní_film.avi \
    -audiofile vstupní_audio.mp2 vstupní_video.avi

To by mělo sloučit video soubor vstupní_video.avi a zvukový soubor vstupní_audio.mp2 do AVI souboru výstupní_film.avi. Tento příkaz pracuje s MPEG-1 layer I, II a III (známým jako MP3) zvukem, WAV a také několika dalšími formáty zvuku.

MEncoder obsahuje experimentální podporu pro libavformat, což je knihovna z projektu FFmpeg, která podporuje muxování a demuxování celé řady nosných formátů. Například:

mencoder -oac copy -ovc copy  -o výstupní_film.asf -audiofile vstupní_audio.mp2 \
    vstupní_video.avi -of lavf -lavfopts format=asf

To provede stejnou činnost jako předchozí příklad, avšak výstupním formátem bude ASF. Prosím berte na vědomí, že tato podpora je velmi experimentální (ale den ode dne lepší) a bude funkční pouze pokud jste zkompilovali MPlayer s podporou pro libavformat (což znamená, že předkompilovaná binární verze nebude většinou fungovat).

7.1.12.1. Zlepšování spolehlivosti muxování a A/V synchronizace

Můžete se dostat do vážných problémů s A/V sychronizací, pokud se snažíte muxovat video a některé zvukové stopy, kdy bez ohledu na nastavení zpoždění zvuku nedosáhnete správné synchronizace. To může nastat, pokud použijete některé video filtry, které zahodí nebo zdvojí některé snímky, jako jsou filtry pro inverzi telecine. Velmi doporučujeme přidat videofiltr harddup na samý konec řetězu videofiltrů pro potlačení tohoto problému.

Bez harddup, pokud chce MEncoder duplikovat snímek, závisí na muxeru, aby vložil značku do nosiče, takže bude poslední snímek zobrazen znovu, aby se dosáhlo synchronizace, přičemž se nezapíše žádný snímek. S harddup, MEncoder pustí poslední zobrazený snímek znovu do řetězu filtrů. To znamená, že enkodér obdrží stejný snímek dvakrát a comprimuje ho. To povede k o něco většímu souboru, ale nezpůsobí problémy při demuxování nebo remuxování do jiného nosného formátu.

Rovněž nemáte jinou možnost než použít harddup s těmi nosnými formáty, které nejsou těsně spjaty s MEncoderem, jako jsou ty, které jsou podporovány přes libavformat, které nemusí podporovat duplikaci na úrovni nosného formátu.

7.1.12.2. Limitace nosného formátu AVI

Ačkoli je to po MPEG-1 nejpodporovanější nosný formát, má AVI i jisté zásadní nedostatky. Snad nejviditelnější je režie. Na každý chunk AVI souboru je 24 bajtů ztraceno na hlavičky a index. To se projeví asi 5 MB na hodinu, neboli 1-2.5% prodloužení 700 MB filmu. Nevypadá to jako mnoho, ale může to znamenat rozdíl mezi možností použít video při 700 kbitech/s nebo 714 kbitech/s a tady se každý bit projeví na kvalitě.

Navíc k této neefektivitě má AVI také následující hlavní omezení:

  1. Může být uchováván pouze obsah s konstantní snímkovou rychlostí. To je zvláště omezující, když má původní materiál, který chcete enkódovat, smíšený obsah. Například směs NTSC videa a filmového materiálu. Jistěže jsou zde cestičky, které umožní uložit obsah se smíšenou snímkovou rychlostí v AVI, ale ty zvyšují (již tak velkou) režii pětinásobně nebo víc, proto nejsou praktické.

  2. Zvuk v AVI musí mít buď konstantní datový tok (CBR) nebo konstantní velikost rámce (čili všechny rámce se dekódují na stejný počet vzorků). Naneštěstí ten nejefektivnější kodek, Vorbis, nesplňuje ani jeden z těchto požadavků. Pokud tedy plánujete uložit svůj film do AVI, budete muset použít méně efektivní kodek, jako MP3 nebo AC–3.

Z výše uvedených důvodů MEncoder zatím nepodporuje proměnnou snímkovou rychlost ani enkódování Vorbis. Nemusíte to však považovat za omezení, jestliže je MEncoder jediným nástrojem pro vaše enkódování. Nakonec je možné použít MEncoder pouze pro enkódování videa a pak použít externí nástroje pro enkódování zvuku a namuxování do jiného nosného formátu.

7.1.12.3. Muxování do nosného formátu Matroska

Matroska je svobodný a otevřený standard nosného formátu, zaměřený na nabídku mnoha pokročilých vlastností, které starší nosné formáty, jako AVI, nemohou poskytnout. Například Matroska podporuje zvuk s proměnným datovým tokem (VBR), proměnné snímkové rychlosti (VFR), kapitoly, přílohy souborů, kód pro detekci chyb (EDC) a moderní A/V kodeky jako "Advanced Audio Coding" (AAC), "Vorbis" nebo "MPEG-4 AVC" (H.264), z nichž žádný nelze použít v AVI.

Nástroje pro vytváření Matroska souborů jsou souhrnně nazvány mkvtoolnix a jsou dostupné pro většinu Unixových platforem a stejně tak Windows. Protože je Matroska otevřený standard, můžete najít jiné nástroje, které vám lépe padnou, ale protože mkvtoolnix je nejrozšířenější a je podporován přímo Matroska týmem, pokryjeme jen jejich použití.

Asi nejsnazší způsob, jak začít s Matroskou je použít MMG, grafickou nadstavbu dodávanou s mkvtoolnix a řídit se návodem k mkvmerge GUI (mmg)

Můžete rovněž muxovat zvukové a video soubory z příkazového řádku:

mkvmerge -o výstup.mkv vstupní_video.avi vstupní_audio1.mp3 vstupní_audio2.ac3

To spojí video soubor vstupní_video.avi a dva zvukové soubory vstupní_audio1.mp3 a vstupní_audio2.ac3 do Matroska souboru výstup.mkv. Matroska, jak jsme již řekli, umí mnohem víc než to, jako více zvukových stop (včetně doladění audio/video synchronizace), kapitoly, titulky, stříhání, atd... Detaily naleznete v dokumentaci k těmto aplikacím.

7.2. Jak naložit s telecine a prokladem v NTSC DVD

7.2.1. Představení

Co je to telecine?  Pokud moc nerozumíte tomu, co je napsáno v tomto dokumentu, přečtěte si článek na Wikipedii. Je to srozumitelný a rozumně vyčerpávající popis co je to telecine.

Poznámka k číslům.  Mnoho dokumentů, včetně výše odkazované příručky, udává hodnotu půlsnímků za sekundu NTSC videa jako 59.94 a odpovídající snímky za sekundu jako 29.97 (pro telecinované a prokládané video) a 23.976 (pro neprokládané). Pro jednoduchost některé dokumenty zaokrouhlují tyto hodnoty na 60, 30 a 24.

Přesně řečeno jsou všechna tato čísla přibližná. Černobílé NTSC video mělo přesně 60 půlsnímků za sekundu, ale později byla zvolena hodnota 60000/1001, aby bylo možné přidat barevná data a zůstat kompatibilní se starými černobílými televizemi. Digitální NTSC (např. na DVD) má rovněž rychlost 60000/1001 půlsnímků za sekundu. Z toho vyplývá, že prokládané a telecinované video má 30000/1001 snímků za sekundu; neprokládané video má 24000/1001 snímků za sekundu.

Starší verze dokumentace MEncoderu a mnoho zpráv v archivu konference hovoří o 59.94, 29.97 a 23.976. Všechna dokumentace MEncoderu byla aktualizována a používá zlomkových hodnot. Vy byste je měli používat také.

-ofps 23.976 je nesprávně. Místo toho byste měli použít -ofps 24000/1001.

Jak je používáno telecine.  Veškeré video určené k zobrazení na NTSC televizi musí mít 60000/1001 půlsnímků za sekundu. Filmy vyráběné pro televizi jsou často natáčeny přímo ve 60000/1001 půlsnímcích za sekundu, ale většina filmů do kin je natáčena při 24 nebo 24000/1001 snímcích za sekundu. Když je film přepisován na DVD, je video upraveno pro televizi v procesu zvaném telecine.

Na DVD není video ve skutečnosti nikdy uloženo v 60000/1001 půlsnímcích za sekundu. Video jež bylo původně 60000/1001, bude mít každý pár půlsnímků zkombinován do podoby snímku s rychlostí 30000/1001 snímků za sekundu. Hardwarové DVD přehrávače pak čtou příznak, zabudovaný ve video proudu, který udává jestli první půlsnímek tvoří liché nebo sudé řádky.

Obsah ve 24000/1001 snímcích za sekundu obvykle zůstává tak jak byl v době přepisu na DVD a DVD přehrávač musí provést telecine za letu. Někdy je však video telecinováno před uložením na DVD; dokonce i když mělo původně 24000/1001 snímků za sekundu, bude mít 60000/1001 půlsnímků za sekundu. Pokud je uložen na DVD, páry půlsnímků jsou zkombinovány do formy 30000/1001 snímků za sekundu.

Když se podíváme na jednotlivé snímky vzniklé z videa o 60000/1001 půlsnímcích za sekundu, telecinovaného nebo ne, je zřetelně vidět toto prokládání jakmile je zde nějaký pohyb, jelikož jeden půlsnímek (řekněme liché řádky) reprezentuje časový okamžik o 1/(60000/1001) sekundy pozdější než ten druhý. Přehrávání prokládaného videa na počítači vypadá škaredě jak proto, že monitor má vyšší rozlišení, ale i proto, že video je zobrazováno snímek po snímku místo půlsnímek po půlsnímku.

Poznámky:

  • Tento odstavec platí pouze pro NTSC DVD, nikoli PAL.

  • Řádky s příklady spuštění MEncoderu v dokumentu nejsou určeny pro opravdové použití. Obsahují pouze nutné minimum vyžadované pro enkódování příslušné ke kategorii videa. Jak dělat dobré DVD ripy nebo doladit libavcodec pro maximální kvalitu není v záběru tohoto dokumentu.

  • Poznámky pod čarou příslušné pro tuto příručku jsou linkovány takto: [1]

7.2.2. Jak zjistit o jaký typ videa se jedná

7.2.2.1. Progresivní (neprokládané)

Progresivní video je původně natočeno při 24000/1001 snímcích za sekundu a uloženo na DVD beze změn.

Když přehrajete progresivní DVD v MPlayeru, MPlayer vypíše následující řádek jakmile začne přehrávat:

demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.

Od tohoto okamžiku by demux_mpg neměl nikdy říct že našel "30000/1001 fps NTSC obsah"

Když sledujete progresivní video, neměli byste nikdy vidět žádný proklad. Dejte si ale pozor, jelikož je občas trošku telecine namixováno tam, kde byste to vůbec nečekali. Setkal jsem se s TV show na DVD, které měly sekundu telecine při každé změně scény nebo na zcela náhodných místech. Jednou jsem se díval na DVD, které bylo do půlky progresivní a od půlky telecinováno. Pokud chcete být opravdu důkladní, můžete oskenovat celý film:

mplayer dvd://1 -nosound -vo null -benchmark

Použití volby -benchmark nechá MPlayer přehrát film tak rychle, jak je to jen možné; stejně to ale, podle výkonu hardware, chvíli potrvá. Vždy, když demux_mpg ohlásí změnu snímkové rychlosti, řádek těsně nad hlášením ukáže čas ve kterém ke změně došlo.

Občas je progresivní video na DVD označeno jako "soft-telecine" protože je zamýšleno, aby telecine provedl DVD přehrávač.

7.2.2.2. Telecinováno (přepsáno pro NTSC televizi)

Telecinované video bylo původně natočeno při 24000/1001, ale bylo telecinováno před zápisem na DVD.

MPlayer (nikdy) nehlásí žádnou změnu snímkové rychlosti, když přehrává telecinované video.

Při sledování telecinovaného videa uvidíte prokladové artefakty, které jako by "blikaly": opakovaně mizí a objevují se. Blíže se na to můžete podívat:

  1. mplayer dvd://1
  2. Převiňte na část s pohybem.

  3. Použijte klávesu . pro krokování po jednom snímku.

  4. Sledujte vzor prokládaně vypadajících a progresivně vypadajících snímků. Pokud je vzor, který sledujete PPPII,PPPII,PPPII,..., pak je video telecinováno. Pokud vidíte jiný vzor, pak mohlo být video telecinováno použitím nějaké nestandardní metody; MEncoder neumí bezztrátově převést nestandardní telecine do progresivního. Pokud nevidíte žádný vzor, pak je video nejspíš prokládané.

Někdy je telecinované video na DVD označeno jako "hard-telecine". Jelikož hard-telecine již je ve 60000/1001 půlsnímcích za sekundu, DVD přehrávač přehraje video bez jakýchkoli manipulací.

Dalším způsobem jak zjistíte, že je váš zdroj telecinován, je přehrát jej s volbami -vf pullup a -v a uvidíte, jak pullup nachází vzor. Pokud je zdroj telecinován, mělibyste vidět na konzoli vzor 3:2 s opakujícím se 0+.1.+2 a 0++1. Tato technika má tu výhodu, že nemusíte sledovat zdroj, abyste jej identifikovali, což se může hodit, pokud chcete automatizovat enkódovací proceduru, nebo ji provést vzdáleně přes pomalou linku.

7.2.2.3. Prokládané

Prokládané video bylo od samého začátku filmováno při 60000/1001 půlsnímcích za sekundu a uloženo na DVD ve 30000/1001 snímcích za sekundu. Efekt prokládání (často označovaný jako "roztřepení") je výsledkem skládání půlsnímků do snímků. Vzdálenost mezi půlsnímky má být 1/(60000/1001) sekundy a proto když jsou zobrazeny současně, je rozdíl jasně patrný.

Stejně jako u telecinovaného videa by MPlayer neměl hlásit jakékoli změny snímkové rychlosti při přehrávání prokládaného obsahu.

Když si prohlédnete video blíže pomocí krokování snímků pomocí klávesy ., uvidíte, že každý jednotlivý snímek je prokládaný.

7.2.2.4. Smíšené progresivní a telecinované

Veškerý obsah "smíšeného progresivního a telecinovaného" videa měl původně 24000/1001 snímků za sekundu, ale některé části prošly telecine.

Když MPlayer přehrává tuto kategorii, bude (častoi opakovaně) přepínat mezi "30000/1001 snímky/s NTSC" a "24000/1001 snímky/s progresivním NTSC". Sledujte spodek MPlayerova výstupu, abyste zachytili tyto zprávy.

Měli byste prověřit části se "30000/1001 snímky/s NTSC", abyste měli jistotu, že jsou skutečně telecinovány a ne jen prokládané.

7.2.2.5. Smíšené progresivní a prokládané

Ve "smíšeném progresivním a prokládaném" obsahu bylo progresivní a prokládané video splácáno dohromady.

Tato kategorie vypadá jako "smíšené progresivní a telecine", dokud si neprohlédnete části se 30000/1001 snímky/s a neuvidíte, že nemají telecine vzor.

7.2.3. Jak enkódovat jednotlivé kategorie

Jak jsem se zmínil na začátku, příklady příkazových řádků MEncoderu níže nejsou určeny pro praktické použití; pouze demonstrují, minimum voleb nutných k tomu, abyste správně enkódovali každou kategorii.

7.2.3.1. Progresivní

Progresivní video nevyžaduje žádné speciální filtrování pro enkódování. Jediná volba, která by určitě neměla chybět je -ofps 24000/1001. Jinak se MEncoder pokusí enkódovat při 30000/1001 snímcích/s a bude opakovat snímky.

mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001

Často se stává, že video, které vypadá progresivně, má v sobě zamíchány kratičké telecinované části. Pokud si nejste jisti, je nejbezpečnější považovat video za smíšené progresivní a telecinované. Ztráta výkonu je jen malá [3].

7.2.3.2. Telecinované

Telecine lze obrátit a dostat tak původní 24000/1001 obsah, za použití metody zvané inverzní telecine. MPlayer má několik filtrů právě pro tuto činnost; nejlepší z těchto filtrů, pullup, je popsán v části smíšené progresivní a telecinované.

7.2.3.3. Prokládané

V praxi není většinou možné dostat kompletní progresivní video z prokládaného obsahu. Jediný způsob jak to udělat bez ztráty poloviny svislého rozlišení je zdvojením snímkové rychlosti a zkusit "odhadnout" co mám provést s odpovídajícími linkami každého z půlsnímků (má to ovšem i nevýhody – viz metoda 3).

  1. Enkódujte video v prokládané formě. Obvykle prokládání způsobí těžkou újmu schopnosti enkodéru dobře komprimovat, ale libavcodec má dvě volby určené právě pro lepší ukládání prokládaného videa: ildct a ilme. Rovněž velmi doporučujeme použití volby mbd=2 [2] protože bude enkódovat makrobloky jako neprokládané tam, kde není žádný pohyb. Volba -ofps zde není nutná.

    mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2

  2. Použijte filtr odstraňující proklad před enkódováním. Je jich zde několik, můžete si vybrat. Každý z nich má svá pro i proti. Prohlédněte si výstup mplayer -pphelp a mplayer -vf help abyste zjistili, které jsou k dispozici (grep pro "deint"), přečtěte si Deinterlacing filters comparison od Michaela Niedermayera a vyhledejte e-mailové konference MPlayeru, kde naleznete mnoho diskusí o různých filtrech. Snímková rychlost se ani zde nemění, takže žádné -ofps. Odstranění proklady by rovněž mělo být provedeno po ořezání [1], ale před škálováním.

    mencoder dvd://1 -oac copy -vf yadif -ovc lavc

  3. Naneštěstí je tato volba vadná v MEncoderu; měla by dobře pracovat v MEncoder G2, ale ten tu zatím není. Stejně je určením -vf tfields vytvoření kompletního snímku z každého půlsnímku, což zvýší snímkovou rychlost na 60000/1001. Výhoda tohoto přístupu je v tom, že nepřijdete o žádná data; Protože však každý snímek pochází jen z jediného půlsnímku, musí být chybějící linky nějak dopočítány. Neexistuje mnoho dobrých metod, generujících chybějící data, takže výsledek bude trochu podobný tomu, když se použije některý filtr odstraňující proklad. Generováním chybějících linek vznikají další problémy tím, že se zdvojnásobí množství dat. Takže jsou potřeba vyšší datové toky pro enkódování, aby byla zachována kvalita a spotřebuje se více výkonu CPU jak pro enkódování, tak pro dekódování. tfields má několik různých voleb pro volbu způsobu generování chybějících linek. Pokud použijete tuto možnost, prostudujte si manuál a zvolte si volbu, která s vaším materiálem vypadá nejlépe. Poznamenejme, že při použití tfields musíte nastavit -fps a -ofps na dvojnásobek snímkové rychlosti originálu.

    mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \
        -fps 60000/1001 -ofps 60000/1001

  4. Pokud plánujete výrazné zmenšování, můžete extrahovat a enkódovat jen jeden z půlsnímků. Samozřejmě přijdete o polovinu svislého rozlišení, ale pokud plánujete zmenšení ideálně na 1/2 originální velikosti, nebude na této ztrátě vůbec záležet. Výsledek bude progresivní soubor s 30000/1001 snímky za sekundu. Celý postup spočívá v použití -vf field a následném ořezu [1] a příslušném škálování. Pamatujte, že musíte nastavit scale tak, aby kompenzoval zmenšení svislého rozměru na polovinu.

    mencoder dvd://1 -oac copy -vf field=0 -ovc lavc

7.2.3.4. Smíšené progresivní a telecinované

Abychom převedli smíšené progresivní a telecinované video zcela na progresivní video, musí být telecinované části inverzně telecinovány. K tomu lze dospět třemi postupy popsanými níže. Poznamenejme, že byste měli vždy provést inverzní telecine před jakýmkoliv škálováním; a v případě, že přesně nevíte co děláte, také před ořezáním [1]. Volba -ofps 24000/1001 je vyžadována, protože výstupní video bude mít 24000/1001 snímků za sekundu.

  • -vf pullup je navržen tak, aby inverzně telecinoval, ale progresivní data nechával jak jsou. Pro správnou funkci musí být pullup následován filtrem softskip, jinak MEncoder zhavaruje. pullup je však nejčistší a nejpřesnější dostupnou metodou pro enkódování jak telecinovaného, tak "smíšeného progresivního a telecinovaného".

    mencoder dvd://1 -oac copy -vf pullup,softskip
        -ovc lavc -ofps 24000/1001

  • Starší metodou je, spíše než inverzně telecinovat telecinované části, telecinovat progresivní části a poté inverzně telecinovat celé video. Zní to zmateně? softpulldown je filtr, který projde celé video a převede celý soubor na telecinovaný. Pokud budeme následovat softpulldown buď detc nebo ivtc, bude konečný výsledek zcela progresivní. Nutná je volba -ofps 24000/1001.

    mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
      

  • Osobně jsem nepoužil -vf filmdint, ale toto o něm (přibližně) řekl D Richard Felker III:

    Je to OK, ale IMO to zkouší až příliš často odstraňovat proklad místo provádění inverzního telecine (stejně jako settop DVD přehrávače & progresivní televize) což vede ke škaredému třepotání a dalším artefaktům. Pokud jej chcete používat, měli byste předtím alespoň trochu času věnovat ladění voleb a sledováním výstupu, abyste měli jistotu, že vám to něco nekazí.

7.2.3.5. Smíšené progresivní a prokládané

Máme dvě volby pro práci s touto kategorií, obě jsou však kompromisem. Měli byste se rozhodnout podle trvání/umístění každého typu.

  • Považujte to za progresivní. Prokládané části budou vypadat prokládaně a některé z prokládaných políček bude muset být zahozeno, což povede k nestejnoměrnému poskakování. Můžete proti tomu nasadit postprocesní filtr, pokud chcete, ale tím mírně degradujete progresivní části.

    Této volbě byste se měli rozhodně vyhnout, pokud chcete nakonec zobrazovat video na zobrazovači s prokládaným obrazem (přes TV kartu například). Pokud máte prokládané snímky ve videu s rychlostí 24000/1001 snímků za sekundu, budou telecinovány spolu s progresivními snímky. Polovina prokládaných "snímků" bude zobrazena po dobu trvání třech snímků (3/(60000/1001) sekund), což povede k poskakování. Efekt "cukání zpět" vypadá skutečně zle. Pokud se o to přece pokusíte, musíte použít filtr odstraňující proklad, jako je lb nebo l5.

    Špatnou volbou je to i pro progresivní zobrazovač. Ten zahodí páry po sobě jdoucích snímků, což povede k přerušování, které může být více viditelné, než při druhé metodě, která zobrazuje některé progresivní snímky dvakrát. Prokládané video se 30000/1001 snímky za sekundu je totiž poněkud trhané, protože by ve skutečnosti mělo být promítáno při 60000/1001 půlsnímcích za sekundu, takže zdvojení některých snímků není tak moc vidět.

    V každém případě je nejlepší posoudit obsah a způsob, jakým bude zobrazován. Pokud je vaše video z 90% progresivní a nikdy jej nebudete pouštět na televizi, měli byste volit progresivní přístup. Pokud je progresívní jen z poloviny, pravděpodobně jej bude lepší enkódovat jako by bylo celé prokládané.

  • Pokládat jej za prokládané. Některé snímky v progresivních částech budou muset být duplikovány, což povede k nepravidelnému poskakování. Opět platí, že filtry pro odstranění prokladu mohou poněkud degradovat progresivní části.

7.2.4. Poznámky pod čarou

  1. K ořezu:  Video data na DVD jsou ukládána ve formátu zvaném YUV 4:2:0. V YUV videu jsou, jasová ("černobílá"; angl. luma) a barvonosná (angl. chroma) složka ukládány odděleně. Protože je lidské oko méně citlivé na změnu barvy, než na jas, připadá v YUV 4:2:0 obrázku pouze jeden barvonosný pixel na každé čtyři jasové pixely. V progresivním obrázku má každý čtverec 2x2 jasových pixelů právě jeden barvonosný pixel. Proto musíte ořezávat progresivní YUV 4:2:0 na sudé rozměry a používat sudé odsazení (offsety). Například crop=716:380:2:26 je OK, ale crop=716:380:3:26 není.

    Když máte co do činění s prokládaným YUV 4:2:0, je situace mnohem komplikovanější. Místo každých čtyřech pixelů ve snímku sdílejících barvonosný pixel, každé čtyři jasové pixely v každém půlsnímku sdílejí barvonosný pixel. Když jsou půlsnímky proloženy do snímku, každá linka má výšku jeden pixel. A nyní místo aby dané čtyři pixely tvořily čtverec, jsou první dva vedle sebe a druhé dva jsou vedle sebe o dvě linky níž. Dva pixely těsně pod nimi patří do jiného půlsnímku a proto sdílí jiný barvonosný pixel se dvěma jasovými pixely o dva řádky níž. Všechno tohle nás nutí mít svislé rozměry ořezání a odsazení bezezbytku dělitelné čtyřmi. Vodorovné stačí když budou sudé.

    Pro telecinované video doporučuji, abyste ořezání prováděli až po inverzi telecine. Jakmile je video progresivní, stačí řezat jen na sudé rozměry. Pokud si však přece jen chcete dopřát mírné zrychlení, které může poskytnout časný ořez, musíte svisle dodržet násobky čtyřech, jinak nebude mít filtr pro inverzi telecine správná data.

    Prokládané (nikoli telecinované) video musíte vždy ořezávat svisle násobky čtyř, pokud před ořezáním nepoužijete -vf field.

  2. K volbám pro enkódování a kvalitě:  Jen proto, že doporučuji mbd=2 zde neznamená, že by tato volba nemohla být použita jinde. V kombinaci s trell, je mbd=2 jednou ze dvou voleb libavcodecu, které nejvíce zvyšují kvalitu a vy byste měli vždy použít alespoň tyto dvě, pokud není na škodu zpomalení rychlosti enkódování (např. při enkódování v reálném čase). Mnoho dalších voleb libavcodecu zvyšuje kvalitu enkódování (a snižuje jeho rychlost), ale to je mimo zaměření tohoto textu.

  3. K výkonu filtru pullup:  Použití pullup je bezpečné (spolu se softskip ) na progresivní video a je to obvykle dobrá volba, pokud nebyl zdroj prověřen, že je celý progresivní. Ve většině případů je ztráta výkonu malá. V ojedinělých případech enkódování způsobí pullup, že je MEncoder o 50% pomalejší. Přidání zpracování zvuku a pokročilých lavcopts zastíní tento rozdíl tak, že rozdíl v rychlosti působený použitím pullup se sníží na 2%.

7.3. Enkódování s rodinou kodeků libavcodec

libavcodec zajišťuje jednoduché enkódování do mnoha zajímavých video a audio formátů. Můžete enkódovat do následujících kodeků (více méně aktuální):

7.3.1. Video kodeky libavcodec

Jméno video kodekuPopis
mjpegMotion JPEG
ljpeglossless (bezztrátový) JPEG
jpeglsJPEG LS
targaTarga obrázek
gifGIF obrázek
bmpBMP obrázek
pngPNG obrázek
h261H.261
h263H.263
h263pH.263+
mpeg4standardní ISO MPEG-4 (DivX, Xvid kompatibilní)
msmpeg4prvotní MPEG-4 varianta od MS, v3 (DivX3)
msmpeg4v2prvotní MPEG-4 od MS, v2 (použitý ve starých ASF souborech)
wmv1Windows Media Video, verze 1 (WMV7)
wmv2Windows Media Video, verze 2 (WMV8)
rv10RealVideo 1.0
rv20RealVideo 2.0
mpeg1videoMPEG-1 video
mpeg2videoMPEG-2 video
huffyuvbezztrátová komprese
ffvhuffFFmpeg modifikovaná huffyuv bezztrátová komprese
asv1ASUS Video v1
asv2ASUS Video v2
ffv1bezztrátový video kodek z FFmpeg
svq1Sorenson video 1
flvSorenson H.263 používaný ve Flash Video
flashsvFlash Screen Video
dvvideoSony Digital Video
snowExperimentální vlnkově orientovaný kodek z FFmpeg
zbmvZip Blocks Motion Video

První pole obsahuje názvy kodeků, které můžete přiřadit konfiguračnímu parametru vcodec, např: -lavcopts vcodec=msmpeg4

Příklad s MJPEG kompresí:

mencoder dvd://2 -o titul2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy

7.3.2. Audio kodeky libavcodec

Jméno audio kodekuPopis
ac3Dolby Digital (AC-3)
adpcm_*Adaptivní PCM formáty – viz pomocnou tabulku
flacFree Lossless Audio Codec (FLAC)
g726G.726 ADPCM
libamr_nb3GPP Adaptive Multi-Rate (AMR) narrow-band
libamr_wb3GPP Adaptive Multi-Rate (AMR) wide-band
libfaacAdvanced Audio Coding (AAC) – používá FAAC
libgsmETSI GSM 06.10 plný rozsah
libgsm_msMicrosoft GSM
libmp3lameMPEG-1 audio layer 3 (MP3) – používá LAME
mp2MPEG-1 audio layer 2 (MP2)
pcm_*PCM formáty – viz pomocnou tabulku
adpcm_ima_wavIMA adaptivní PCM (4 bity na vzorek, komprese 4:1)
sonicexperimentální FFmpeg ztrátový kodek
roq_dpcmId Software RoQ DPCM
soniclsexperimentální FFmpeg bezztrátový kodek
vorbisVorbis
wmav1Windows Media Audio v1
wmav2Windows Media Audio v2

Vprvním sloupci naleznate jména kodeků, které byste měli přiřadit parametru acodec, například: -lavcopts acodec=ac3

Příklad s kompresí AC–3:

mencoder dvd://2 -o titul2.avi -oac lavc -lavcopts acodec=ac3 -ovc copy

Narozdíl od jejích videokodeků, audio kodeky z knihovny libavcodec neprovádějí inteligentní rozdělení přidělených bitů, jelikož jim chybí byť jen minimální psychoakustický model (pokud vůbec), který obsahuje většina implementací ostatních kodeků. Vězte však, že všechny tyto kodeky zvuku jsou velmi rychlé a pracují bez potíží všude, kde máte MEncoder se zakompilovanou knihovnou libavcodec (což je naprostá většina případů) a nezávisejí na externích knihovnách.

7.3.2.1. Pomocná tabulka pro PCM/ADPCM formát

Název PCM/ADPCM kodekuPopis
pcm_s32lesigned 32-bit little-endian
pcm_s32besigned 32-bit big-endian
pcm_u32leunsigned 32-bit little-endian
pcm_u32beunsigned 32-bit big-endian
pcm_s24lesigned 24-bit little-endian
pcm_s24besigned 24-bit big-endian
pcm_u24leunsigned 24-bit little-endian
pcm_u24beunsigned 24-bit big-endian
pcm_s16lesigned 16-bit little-endian
pcm_s16besigned 16-bit big-endian
pcm_u16leunsigned 16-bit little-endian
pcm_u16beunsigned 16-bit big-endian
pcm_s8signed 8-bit
pcm_u8unsigned 8-bit
pcm_alawG.711 A-LAW
pcm_mulawG.711 μ-LAW
pcm_s24daudsigned 24-bit D-Cinema Audio format
pcm_zorkActivision Zork Nemesis
adpcm_ima_qtApple QuickTime
adpcm_ima_wavMicrosoft/IBM WAVE
adpcm_ima_dk3Duck DK3
adpcm_ima_dk4Duck DK4
adpcm_ima_wsWestwood Studios
adpcm_ima_smjpegSDL Motion JPEG
adpcm_msMicrosoft
adpcm_4xm4X Technologies
adpcm_xaPhillips Yellow Book CD-ROM eXtended Architecture
adpcm_eaElectronic Arts
adpcm_ctCreative 16->4-bit
adpcm_swfAdobe Shockwave Flash
adpcm_yamahaYamaha
adpcm_sbpro_4Creative VOC SoundBlaster Pro 8->4-bit
adpcm_sbpro_3Creative VOC SoundBlaster Pro 8->2.6-bit
adpcm_sbpro_2Creative VOC SoundBlaster Pro 8->2-bit
adpcm_thpNintendo GameCube FMV THP
adpcm_adxSega/CRI ADX

7.3.3. Enkódovací volby libavcodecu

V ideálním případě byste asi chtěli jen říct enkodéru, aby se přepnul do režimu "vysoká kvalita" a šel na to. To by bylo jistě hezké, ale naneštěstí je to těžké zavést, jelikož různé volby enkódování vedou k různé kvalitě v závislosti na zdrojovém materiálu. To proto, že komprese závisí na vizuálních vlastnostech daného videa. Například anime a živá akce mají zcela rozdílné vlastnosti a tedy vyžadují odlišné volby pro dosažení optimálního enkódování. Dobrá zpráva je, že některé volby by nikdy neměly chybět, jako mbd=2, trell a v4mv. Podrobný popis obvyklých enkódovacích voleb naleznete níže.

Volby k nastavení:

  • vmax_b_frames: 1 nebo 2 je v pořádku, v závislosti na filmu. Poznamenejme, že pokud chcete mít svá videa dekódovatelná kodekem DivX5, budete muset zapnout podporu uzavřeného GOP, pomocí volby libavcodecu cgop, ale budete také muset vypnout detekci scény, což není dobrý nápad, jelikož tak trochu zhoršíte efektivitu enkódování.

  • vb_strategy=1: pomáhá ve scénách s rychlým pohybem. Vyžaduje vmax_b_frames >= 2. V některých videích může vmax_b_frames snížit kvalitu, ale vmax_b_frames=2 spolu s vb_strategy=1 pomůže.

  • dia: okruh vyhledávání pohybu. Čím větší, tím lepší a pomalejší. Záporné hodnoty mají úplně jiný význam. Dobrými hodnotami jsou -1 pro rychlé enkódování, nebo 2-4 pro pomalejší.

  • predia: předprůchod pro vyhledávání pohybu. Není tak důležitý jako dia. Dobré hodnoty jsou 1 (výchozí) až 4. Vyžaduje preme=2, aby byla opravdu k něčemu.

  • cmp, subcmp, precmp: Porovnávací funkce pro odhad pohybu. Experimentujte s hodnotami 0 (výchozí), 2 (hadamard), 3 (dct) a 6 (omezení datového toku). 0 je nejrychlejší a dostatečná pro precmp. Pro cmp a subcmp je 2 dobrá pro anime a 3 zase pro živou akci. 6 může, ale nemusí být o něco lepší, ale je pomalá.

  • last_pred: Počet prediktorů pohybu přebíraných z předchozího snímku. 1-3 nebo tak pomůžou za cenu menšího zdržení. Vyšší hodnoty jsou však pomalé a nepřináší žádný další užitek.

  • cbp, mv0: Ovládá výběr makrobloků. Malá ztráta rychlosti za malý zisk kvality.

  • qprd: adaptivní kvantizace založená na komplexnosti makrobloku. Může pomoci i uškodit v závislosti na videu a ostatních volbách. Toto může způsobovat artefakty, pokud nenastavíte vqmax na nějakou rozumně malou hodnotu (6 je dobrá, možná byste ale měli jít až na 4); vqmin=1 může také pomoci.

  • qns: velmi pomalá, zvlášť v kombinaci s qprd. Tato volba nutí enkodér minimalizovat šum díky kompresi artefaktů, místo aby se snažil striktně zachovávat věrnost videa. Nepoužívejte ji, pokud jste již nezkusili všechno ostatní kam až to šlo a výsledek přesto není dost dobrý.

  • vqcomp: Vylepšení ovládání datového toku. Dobré hodnoty se liší podle videa. Můžete to bezpečně ponechat jak to je, pokud chcete. Snížením vqcomp pustíte více bitů do scén s nízkou komplexností, zvýšením je pošlete do scén s vysokou komplexností (výchozí: 0.5, rozsah: 0-1. doporučený rozsah: 0.5-0.7).

  • vlelim, vcelim: Nastaví jediný koeficient prahu eliminace pro jasové a barevné roviny. Ty jsou enkódovány odděleně ve všech MPEGu podobných algoritmech. Myšlenka stojící za těmito volbami je použití dobré heuristiky pro určení, zda je změna v bloku menší než vámi nastavený práh a v tom případě se blok enkóduje jako "nezměněný". To šetří bity a možná i zrychlí enkódování. vlelim=-4 a vcelim=9 se zdají být dobré pro hrané filmy, ale příliš nepomohou s anime; pokud enkódujete animované vido, měli byste je asi nechat beze změn.

  • qpel: Odhad pohybu s přesností na čtvrt pixelu. MPEG-4 používá přesnost na půl pixelu jako výchozí při vyhledávání pohybu, proto je tato volba spojena s určitou režií, jelikož se do výstupního souboru ukládá více informací. Kompresní zisk/ztráta závisí na filmu, ale obvykle to není příliš efektivní na anime. qpel vždy způsobí zvýšení výpočetní náročnosti dekódování (v praxi +25% času CPU).

  • psnr: neovlivní aktuální enkódování, ale zaznamená typ/velikost/kvalitu každého snímku do log souboru a na konci vypíše souhrnný PSNR (odstup signálu od šumu).

Volby se kterými nedoporučujeme si hrát:

  • vme: Výchozí je nejlepší.

  • lumi_mask, dark_mask: Psychovizuálně adaptivní kvantizace. Nehrajte si s těmito volbami, pokud vám jde o kvalitu. Rozumné hodnoty mohou být efektivní ve vašem případě, ale pozor, je to velmi subjektivní.

  • scplx_mask: Snaží se předcházet blokovým artefaktům, ale postprocesing je lepší.

7.3.4. Příklady nastavení enkódování

Následující nastavení jsou příklady nastavení různých kombinací voleb enkodéru, které ovlivňují poměr rychlost versus kvalita při shodném cílovém datovém toku.

Veškerá nastavení byla testována na video vzorku 720x448 @30000/1001 snímků za sekundu, cílový datový tok byl 900kbps a prováděly se na AMD-64 3400+ při 2400 MHz v režimu 64 bitů. Každá kombinace nastavení má uvedenu změřenou rychlost enkódování (ve snímcích za sekundu) a ztrátu PSNR (v dB) oproti nastavení "velmi vysoká kvalita". Rozumějte však že, v závislosti na vašem zdrojovém materiálu, typu počítače a pokrokům ve vývoji, můžete dospět k velmi odlišným výsledkům.

PopisVolbyRychlost [fps]Relativní ztráta PSNR [dB]
Velmi vysoká kvalitavcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=260
Vysoká kvalitavcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo15-0.5
Rychlé enkódovánívcodec=mpeg4:mbd=2:trell:v4mv:turbo42-0.74
Enkódování v reálném časevcodec=mpeg4:mbd=2:turbo54-1.21

7.3.5. Uživatelské inter/intra matice

Díky této vlastnosti libavcodecu můžete nastavit uživatelskou inter (I-snímky/klíčové snímky) a intra (P-snímky/predikované (rozumějte vypočítané) snímky) matice. To je podporováno mnoha kodeky: mpeg1video a mpeg2video jsou hlášeny jako funkční.

Typické použití této vlastnosti je nastavení matic preferovaných KVCD specifikacemi.

Kvantizační Matice KVCD "Notch":

Intra:

 8  9 12 22 26 27 29 34
 9 10 14 26 27 29 34 37
12 14 18 27 29 34 37 38
22 26 27 31 36 37 38 40
26 27 29 36 39 38 40 48
27 29 34 37 38 40 48 58
29 34 37 38 40 48 58 69
34 37 38 40 48 58 69 79

Inter:

16 18 20 22 24 26 28 30
18 20 22 24 26 28 30 32
20 22 24 26 28 30 32 34
22 24 26 30 32 32 34 36
24 26 28 32 34 34 36 38
26 28 30 32 34 36 38 40
28 30 32 34 36 38 42 42
30 32 34 36 38 40 42 44

Použití:

$ mencoder vstup.avi -o výstup.avi -oac copy -ovc lavc \
    -lavcopts inter_matrix=...:intra_matrix=...

mencoder vstup.avi -ovc lavc -lavcopts \
vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37,\
12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27,\
29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79\
:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26,\
28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34,\
36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg

7.3.6. Příklad

Takže jste si koupili zbrusu novou kopii filmu Harry Potter a Tajemná komnata (širokoúhlou verzi samozřejmě) a chcete si toto DVD ripnout, takže si jej můžete přidat do svého Domácího PC kina. Je to region 1 DVD, takže je v NTSC. Níže uvedený příklad je stále vhodný i pro PAL, jen musíte vynechat -ofps 24000/1001 (protože výstupní snímková rychlost je shodná se vstupní) a přirozeně budou rozdílné souřadnice pro ořez.

Po spuštění mplayer dvd://1, postupujeme podle informací obsažených v sekci Jak naložit s telecine a prokladem v NTSC DVD a zjistíme že je to 24000/1001 neprokládané video, takže nepotřebujeme použít inverzní telecine filtr, jako je pullup nebo filmdint.

Dále musíme zjistit vhodný ořezový obdélník, takže použijeme filtr cropdetect:

mplayer dvd://1 -vf cropdetect

Ujistěte se, že jste přešli přes zaplněný snímek (nějakou jasnou scénu mimo úvodní a koncové titulky) a v konzoli MPlayeru uvidíte:

crop area: X: 0..719  Y: 57..419  (-vf crop=720:362:0:58)

Potom přehrajeme film s tímto filtrem, abychom otestovali jeho správnost:

mplayer dvd://1 -vf crop=720:362:0:58

A zjistíme, že to vypadá zcela v pořádku. Dále se ujistíme, že šířka i výška jsou násobky 16. Šířka je v pořádku, výška ovšem ne. Protože jsme nepropadli v sedmé třídě z matematiky, víme, že nejbližším násobkem 16 nižším než 362 je 352.

Mohli bychom použít crop=720:352:0:58, ale bude lepší ustřihnout kousek nahoře i dole, takže zachováme střed. Zkrátili jsme výšku o 10 pixelů, ale nechceme zvýšit odsazení v ose y o 5 pixelů, protože je to liché číslo, což by nepříznivě ovlivnilo kvalitu. Místo toho zvýšíme odsazení v ose y o 4 pixely:

mplayer dvd://1 -vf crop=720:352:0:62

Další důvod pro odstřižení pixelů shora i zdola je to, že si můžeme být jisti odstřižením napůl černých pixelů pokud existují. Pokud je však vaše video telecinováno, ujistěte se, že máte v řetězu filtrů pullup filtr (nebo jiný filtr pro inverzi telecine, který hodláte použít) ještě před odstraněním prokladu a ořezem. (Pokud se rozhodnete zachovat vaše video prokládané, pak se ujistěte, že vaše vertikální odsazení (offset) je násobkem 4.)

Pokud si děláte starosti se ztrátou těch 10 pixelů, možná raději snížíte rozměry na nejbližší násobek 16. Řetězec filtrů by pak vypadal asi takto:

-vf crop=720:362:0:58,scale=720:352

Takto malé zmenšení videa bude znamenat ztrátu malého množství detailů, což bude pravděpodobně stěží postřehnutelné. Zvětšování by naopak vedlo ke snížení kvality (pokud byste nezvýšili datový tok). Ořez odstraní tyto pixely úplně. To je jedna z věcí, kterou byste si měli uvážit pro každý případ zvlášť. Například pokud bylo DVD video vyrobeno pro televizi, měli byste se vyvarovat vertikálnímu škálování, jelikož počet řádků odpovídá originální nahrávce.

Při prohlídce jsme zjistili, že video je poměrně akční, s vysokým počtem detailů, takže jsme zvolili datový tok 2400 Kbitů.

Nyní jsme připraveni provést dvouprůchodové enkódování. Průchod jedna:

+mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi -ovc lavc \
    -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=1 \
    -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2

A průchod dva je stejný, jen nastavíme vpass=2:

mencoder dvd://1 -ofps 24000/1001 -oac copy -o Harry_Potter_2.avi -ovc lavc \
    -lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:autoaspect:vpass=2 \
    -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2

Volby v4mv:mbd=2:trell velmi zvýší kvalitu za cenu časové náročnosti enkódování. Vcelku není důvod tyto volby vypustit, pokud je primárním cílem kvalita. Volby cmp=3:subcmp=3 vyberou porovnávací funkci, která poskytuje lepší kvalitu, než výchozí. S tímto parametrem můžete zkusit experimentovat (nahlédněte do man stránky pro seznam možných hodnot), jelikož různé funkce mohou mít velký vliv na kvalitu v závislosti na zdrojovém materiálu. Například pokud zjistíte, že libavcodec produkuje příliš mnoho čtverečkových artefaktů, můžete zkusit zvolit experimentální NSSE jako porovnávací funkci přes *cmp=10.

V případě tohoto filmu bude výsledné AVI dlouhé 138 minut a veliké kolem 3GB. A protože jste řekli, že na velikosti nezáleží, je to přijatelná velikost. Ale pokud byste jej chtěli menší, můžete zkusit nižší datový tok. Efekt zvyšování datového toku se totiž neustále snižuje, takže zatímco je zlepšení po zvýšení z 1800 Kbitů na 2000 Kbitů zjevné, nemusí být již tak velké nad 2000 Kbitů. Beze všeho s tím experimentujte, dokud nebudete spokojeni.

Jelikož jsme protáhli video odšumovacím filtrem, měli bychom jej trochu přidat během přehrávání. To, spolu s spp post-procesním filtrem, znatelně zvýší vnímanou kvalitu a pomůže odstranit čtverečkové artefakty ve videu. S MPlayerovou volbou autoq může být množství postprocesingu prováděného filtrem spp přizpůsobováno vytížení CPU. V tuto chvíli rovněž můžete provést korekci gama a/nebo barevnou korekci k dosažení nejlepších výsledků. Například:

mplayer Harry_Potter_2.avi -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3

7.4. Enkódování pomocí kodeku Xvid

Xvid je svobodná knihovna pro enkódování MPEG-4 ASP video datových proudů. Před začátkem enkódování budete muset nastavit MEncoder pro její podporu.

Tato příručka se zaměřuje na poskytování stejného druhu informací jako příručka enkódování s x264. Takže prosím začněte přečtením první části této příručky.

7.4.1. Jaké volby by měly být použity, abychom dosáhli nejlepších výsledků?

Začněte prosím pročtením sekce Xvid v manuálové stránce MPlayeru. Tato část má být doplněním man stránky.

Výchozí nastavení Xvid jsou dobrým kompromisem mezi rychlostí a kvalitou, takže je můžete bez obav použít, pokud vám nebude něco v dalším textu jasné.

7.4.2. Volby pro enkódování s Xvid

  • vhq Tato volba ovlivní rozhodovací algoritmus makrobloku, kde vyšší nastavení znamená lepší rozhodování. Výchozí nastavení mohou být bezpečně použita pro každé enkódování, zatímco vyšší nastavení vždy pomohou PSNR, ale je znatelně pomalejší. Poznamenejme, že lepší PSNR nemusí nutně znamenat, že bude obraz vypadat lépe, ale udává, že je blíže originálu. Vypnutí této volby viditelně zrychlí enkódování; pokud je pro vás rychlost kritická, pak to stojí za to.

  • bvhq Tato volba provádí to samé co vhq, ale v B-snímcích. Má zanedbatelný vliv na rychlost a trochu vylepšuje kvalitu (kolem +0.1dB PSNR).

  • max_bframes Větší počet povolených po sobě jdoucích B-snímků obvykle zvyšuje komprimovatelnost, ačkoli to může vést k většímu počtu blokových artefaktů. Výchozí nastavení je dobrým kompromisem mezi komprimovatelností a kvalitou, ale můžete ji zvýšit nad 3, pokud toužíte po nízkém datovém toku. Můžete ji rovněž snížit na 1 nebo 0, pokud vám jde o perfektní kvalitu, ale v tom případě byste se měli ujistit, že máte nastaven dostatečně vysoký datový tok, aby byla jistota, že komrimátor nebude zvyšovat kvantizer, aby jej dosáhl.

  • bf_threshold Tato volba ovládá B-snímkovou citlivost enkodéru, kdy vyšší hodnota vede k častějšímu použití B-snímků (a naopak). Má být použita spolu s max_bframes; pokud jste blázen do datového toku, měli byste zvýšit jak max_bframes, tak bf_threshold, nebo naopak můžete zvýšit max_bframes a snížit bf_threshold, takže bude enkodér používat více B-snímků pouze na místech, které je opravdu potřebují. Nízká hodnota max_bframes a vysoká bf_threshold asi není nejrozumnější volbou, jelikož přinutí enkodér umísťovat B-snímky na místa, které z nich nebudou těžit, ale sníží se jejich vizuální kvalita. Pokud však potřebujete být kompatibilní s domácími přehrávači, které podporují pouze staré DivX profily (ty podporují pouze 1 po sobě jdoucí B-snímek), je to vaše jediná cesta ke zvýšení komprimovatelnosti pomocí B-snímků.

  • trellis Optimalizuje proces kvantizace pro dosažení nejlepšího kompromisu mezi PSNR a datovým tokem, což umožňuje znatelnou úsporu bitů. Ušetřené bity budou využity v jiných částech videa, což zvýší celkovou vizuální kvalitu. Měli byste ji vždy mít zapnutou, jelikož její kvalitativní přínos je značný. Dokonce i když potřebujete vyšší rychlost, nevypínejte ji, dokud jste nevypli vhq a nezredukovali ostatní volby náročné na CPU na minimum.

  • hq_ac Aktivuje metodu odhadu s menšími náklady na koeficienty, což trochu zmenší výstupní soubor (okolo 0,15 až 0,19%, což odpovídá zvýšení PSNR o méně než 0.01dB) při zanedbatelném vlivu na rychlost. Je proto doporučeno ponechat ji vždy zapnutou.

  • cartoon Volba navržená pro lepší enkódování kresleného obsahu. Nemá vliv na rychlost, pouze doladí heuristiku pro výběr režimu pro tento druh obsahu.

  • me_quality Tato volba ovládá přesnost vyhledávání pohybu. Čím vyšší me_quality, tím bude přesnější odhad původního pohybu a výsledný snímek přesněji zachytí originální pohyb.

    Výchozí nastavení je nejlepší ve všech případech; takže ji nedoporučujeme vypínat, pokud nepotřebujete za každou cenu zvýšit rychlost, jelikož všechny bity ušetřené dobrým odhadem pohybu mohou být použity jinde a zvýšit tak celkovou kvalitu. Každopádně nechoďte níž než na 5, a když, tak jen jako poslední možnost.

  • chroma_me Zlepšuje odhad pohybu tím, že bere v potaz i chroma (barevnou) informaci, zatímco samotné me_quality používá pouze černobílou (luma). To spomalí enkódování o 5-10%, ale docela vylepší vizuální kvalitu omezením blokových artefaktů a zmenší velikost souboru asi o 1.3%. Pokud vám jde hlavně o rychlost, měli byste tuto volbu vypnout dříve, než začnete snižovat me_quality.

  • chroma_opt Je určena spíše ke zvýšení kvality barev a vyčištění bílých/černých okrajů, než k vylepšení koprimovatelnosti. To vám může pomoci omezit "red stairs" efekt.

  • lumi_mask Zkouší přiřadit nižší datový tok částem obrázku, které lidské oko dobře nevidí, což umožní enkodéru použít ušetřené bity na důležitějších místech obrázku. Kvalita výsledku značně závisí na osobních preferencích a na typu a nastavení monitoru použitého pro prohlížení (typicky to nebude vypadat dobře pokud je jasný, nebo je to TFT monitor).

  • qpel Zvýší počet možných vektorů pohybu zvýšením přesnosti vyhledávání pohybu z poloviny pixelu na čtvrtinu pixelu. Ideou je nalezení lepších vektorů pohybu, které naoplátku sníží datový tok (což zvýší kvalitu). Vektory pohybu s přesností na čtvrt pixelu však vyžadují pro sebe pár bitů navíc a výsledné vektory ne vždy dávají (o mnoho) lepší výsledky. Docela často vydá kodek bity na vyšší přesnost, ale dosáhne jen malého nebo žádného zvýšení kvality. Naneštěstí není způsob jak zjistit možný zisk qpel předem, takže musíte enkódovat s a bez ní, abyste měli jistotu.

    qpel může až zdvojnásobit čas enkódování a vyžaduje až o 25% více výpočetního výkonu pro dekódování. Volba není podporována všemi stolními přehrávači.

  • gmc Pokouší se ušetřit bity v panoramatických scénách použitím jediného vektoru pohybu pro celý snímek. To téměř vždy zvýší PSNR, ale znatelně zpomalí enkódování (stejně jako dekódování). V každém případě byste ji měli používat pouze pokud máte vhq nastavené na maximum. GMC v Xvid je mnohem sofistikovanější než v DivX, ale je podporována jen několika stolními přehrávači.

7.4.3. Enkódovací profily

Xvid podporuje enkódovací profily pomocí volby profile, což je využíváno pro k zařazení omezení nastavení Xvid videoproudu tak, aby byl přehratelný na všem, co podporuje vybraný profil. Omezení se vstahují k rozlišením, datovému toku a různým MPEG-4 vlastnostem. Následující tabulka ukazuje, co který profil podporuje.

 SimpleAdvanced SimpleDivX
Název profilu0123012345HandheldPortable NTSCPortable PALHome Theater NTSCHome Theater PALHDTV
Šířka [pixely]1761763523521761763523523527201763523527207201280
Výška [pixely]144144288288144144288288576576144240288480576720
Snímková rychlost [fps]15151515303015303030153025302530
Max průměrný datový tok [kbps]646412838412812838476830008000537.648544854485448549708.4
Nejvyšší průměrný datový tok za poslední 3 sekundy [kbps]          800800080008000800016000
Max. B-snímků0000      011112
MPEG kvantizace    XXXXXX      
Adaptivní kvantizace    XXXXXXXXXXXX
Enkódování prokládaného    XXXXXX   XXX
Čtvrtpixelová přesnost    XXXXXX      
Globální kompenzace pohybu    XXXXXX      

7.4.4. Příklady nastavení enkódování

Následující nastavení jsou příklady nastavení různých kombinací voleb enkodéru, které ovlivňují poměr rychlost versus kvalita při shodném cílovém datovém toku.

Veškerá nastavení byla testována na video vzorku 720x448 @30000/1001 snímků za sekundu, cílový datový tok byl 900kbps a prováděly se na AMD-64 3400+ při 2400 MHz v režimu 64 bitů. Každá kombinace nastavení má uvedenu změřenou rychlost enkódování (ve snímcích za sekundu) a ztrátu PSNR (v dB) oproti nastavení "velmi vysoká kvalita". Rozumějte však že, v závislosti na vašem zdrojovém materiálu, typu počítače a pokrokům ve vývoji, můžete dospět k velmi odlišným výsledkům.

PopisVolbyRychlost [fps]Relativní ztráta PSNR [dB]
Velmi vysoká kvalitachroma_opt:vhq=4:bvhq=1:quant_type=mpeg160
Vysoká kvalitavhq=2:bvhq=1:chroma_opt:quant_type=mpeg18-0.1
Rychlé enkódováníturbo:vhq=028-0.69
Enkódování v reálném časeturbo:nochroma_me:notrellis:max_bframes=0:vhq=038-1.48

7.5. Enkódování x264 kodekem

x264 je svobodná knihovna pro enkódování H.264/AVC video proudů. Pře zahájením enkódování budete muset nastavit její podporu v MEncoderu.

7.5.1. Enkódovací volby x264

Začněte prosím prohlídkou sekce x264 man stránky MPlayeru. Tato sekce je zamýšlena jako doplněk manuálové stránky. Zde naleznete tipy, které volby budou nejspíše zajímat většinu lidí. Man stránka je více uhlazená, ale také více vyčerpávající a občas nabízí mnohem lepší technické detaily.

7.5.1.1. Úvodem

Tato příručka pokrývá dvě hlavní kategorie enkódovacích voleb:

  1. Volby které mění dobu enkódování za kvalitu

  2. Volby které mohou být použitelné pro naplnění různých osobních preferencí a speciálních požadavků

Nakonec jen vy můžete rozhodnout, které volby jsou nejlepší pro vaše účely. Rozhodování v první kategorii voleb je nejjednodušší: stačí když zhodnotíte zda změny kvality ospravedlní rychlostní rozdíly. Druhá skupina voleb může být mnohem subjektivnější záležitostí a v úvahu může přijít více faktorů. Poznamenejme, že některé volby "osobních preferencí a speciálních požadavků" mohou také značně ovlivnit kvalitu nebo rychlost enkódování, ale to není jejich hlavní funkce. Několik voleb "osobních preferencí" může dokonce způsobit změny, po kterých se někomu zdá být výsledek lepší a jinému horší.

Než budeme pokračovat, poznamenejme, že tento návod používá jediné měřítko kvality: celkový PSNR. Stručné vysvětlení co je to PSNR, naleznete ve Wikipedii pod heslem PSNR. Celkové PSNR je poslední hlášené PSNR číslo při zařazení volby psnr v x264encopts. Kdykoli píšeme o PSNR, je jedním z předpokladů tohoto sdělení to, že jsou použity shodné datové toky.

Téměř všechny komentáře v tomto návodu předpokládají, že enkódujete dvouprůchodově. Při porovnávání voleb jsou zde dva hlavní důvody pro použití dvouprůchodového enkódování. Zaprvé, dvouprůchodové enkódování vám získá zhruba 1dB PSNR, což je znatelný rozdíl. Zadruhé, testování voleb pomocí přímého porovnání kvality v jednoprůchodových výsledcích je pochybné, jelikož se datový tok značně liší s každým enkódováním. Není vždy snadné určit, zda se změnila kvalita díky změně voleb, nebo z větší části odpovídají změnám datového toku.

7.5.1.2. Volby které primárně ovlivňují rychlost a kvalitu

  • subq: Z voleb, které umožňují vyměnit čas za kvalitu, jsou obvykle nejdůležitější subq a frameref (viz níže). Máte-li zájem ovlivnit jak rychlost, tak kvalitu, jsou to první volby, které byste měli zvážit. Ve smyslu rychlosti se spolu volby frameref a subq velmi silně ovlivňují. Zkušenosti ukazují, že při jednom referenčním snímku si subq=5 vezme asi o 35% více času než subq=1. Při 6 referenčních snímcích naroste spomalení nad 60%. Vliv subq na PSNR se zdá být poměrně stálý, bez ohledu na počet referenčních snímků. Typicky subq=5 získá 0.2-0.5 dB celkového PSNR přes subq=1. To je obvykle již viditelné.

    Režim subq=6 je pomalejší a vede k vyšší kvalitě za rozumnou cenu. Oproti subq=5 obvykle získává 0.1-0.4 dB celkového PSNR za cenu ztráty rychlosti 25%-100%. Narozdíl od ostatních úrovní subq nezávisí chování subq=6 tolik na frameref a me. Místo toho závisí efektivita subq=6 hlavně na počtu použitých B-snímků. Při běžném použití to znamená, že subq=6 má velký vliv jak na rychlost, tak na kvalitu v komplexních, velmi pohyblivých scénách, ale nemusí mít takový vliv ve scénách s malým pohybem. Poznamenejme, že stále doporučujeme nastavit bframes na nenulovou hodnotu (viz níže).

    subq=7 je nejpomalejší, s nejvyšší kvalitou. V porovnání s subq=6, obvykle získá 0.01–0.05 dB globálního PSNR za zpomalení v rozmezí 15%–33%. Jelikož je poměr získané kvality ku ztrátě rychlosti docela malý, měli byste tuto volbu používat pouze pokud chcete ušetřit každý možný bit a doba enkódování není problém.

  • frameref: Výchozí nastavení frameref je 1, ale nemělo by to být bráno tak, že je rozumné nastavovat jej na 1. Pouhé zvýšení frameref na 2 získá okolo 0.15dB PSNR s 5-10% spomalením, což je zřejmě dobrý obchod. frameref=3 získá kolem 0.25dB PSNR navíc k frameref=1, což již může být viditelný rozdíl. frameref=3 je asi o 15% pomalejší než frameref=1. Naneštěstí se zisk rychle vytrácí. Při frameref=6 můžete očekávat zisk pouze 0.05-0.1 dB nad frameref=3 při dodatečném 15% zpomalení. Nad frameref=6 je zisk kvality obvykle velmi malý (ačkoli byste měli mít na paměti, že se to může výrazně lišit v závislosti na zdrojovém materiálu). V poměrně typickém případě zlepší frameref=12 celkový PSNR o pouhé 0.02dB nad frameref=6, při spomalení o 15%-20%. Při tak vysokých hodnotách frameref lze říct pouze jedinou dobrou věc, a to že jejich další zvyšování téměř nikdy nesníží PSNR, ale další zisk kvality je stěží měřitelný, natož viditelný.

    Poznámka:

    Zvýšení frameref na nemístně vysokou hodnotu může a obvykle taky sníží efektivitu kódování, pokud vypnete CABAC. Se zapnutým CABAC (výchozí chování) se zdá být možnost nastavit frameref "příliš vysoko" příliš vzdálená na to, abyste se tím museli trápit a v budoucnu mohou optimalizace tuto možnost zcela vyloučit.

    Pokud vám záleží na rychlosti, bývá vhodným kompromisem použít nízké hodnoty subq a frameref v prvním průchodu a zvýšit je ve druhém. Typicky to má zanedbatelný záporný vliv na konečnou kvalitu: Pravděpodobně stratíte méně než 0.1dB PSNR, což by měl být až příliš malý rozdíl, než aby byl vidět. Odlišné hodnoty frameref však mohou místy ovlivnit volbu typu snímku. Nejspíš to budou ojedinělé případy, ale chcete-li si být zcela jisti, zjistěte, jestli vaše video obsahuje buď blýskavé vzory přes celou obrazovku, nebo rozsáhlé krátkodobé změny, které by mohly vynutit I-snímek. Nastavte frameref pro první průchod tak, aby byl dostatečně velký pro pokrytí doby bliknutí (nebo změny). Například, pokud scéna přepíná tam a zpět mezi dvěma obrázky přes tři snímky, nastavte frameref pro první průchod na 3 a více. Tento případ je nejspíš zcela ojedinělý v hraných filmech, ale občas se vyskytuje v záznamech z videoher.

  • me: Tato volba je určena pro výběr metody vyhledávání pohybu. Změnou této volby jednoduše měníte poměr kvalita-versus-rychlost. Volba me=dia je jen o málo procent rychlejší než výchozí vyhledávání za cenu pod 0.1dB globálního PSNR. Výchozí nastavení (me=hex) je rozumným kompromisem mezi rychlostí a kvalitou. Volba me=umh získá o trošku méně než 0.1dB globální PSNR, při spomalení, které se liší v závislosti na frameref. Při vysokých hodnotách frameref (řekněme 12 nebo tak), je me=umh asi o 40% pomalejší než výchozí me=hex. Při frameref=3, klesne způsobené spomalení na 25%-30%.

    Volba me=esa používá tak rozsáhlé vyhledávání, že je příliš pomalá pro praktické využití.

  • partitions=all: Tato volba zapíná použití bloků 8x4, 4x8 a 4x4 v predikovaných makroblocích (navíc k výchozím blokům). Její aktivace vede k poměrně stálé 10%-15% ztrátě rychlosti. Tato volba je poměrně neužitečná ve zdroji obsahujícím pouze pomalý pohyb, naproti tomu u některých zdrojů s rychlým pohybem, přesněji zdrojů s velkým množstvím malých pohyblivých objektů, můžete očekávat zisk okolo 0.1dB.

  • bframes: Použitelnost B-snímků je ve většině ostatních kodeků diskutabilní. V H.264 se to změnilo: jsou zde nové techniky a typy bloků pro použití v B-snímcích. Obvykle i naivní algoritmus pro výběr B-snímku může zajistit znatelný zisk PSNR. Také je zajímavé, že pokud vypnete adaptivní rozhodování o B-snímku (nob_adapt), zvýší obvykle enkódování s bframes o trochu rychlost enkódování.

    S vypnutým adaptivním rozhodováním o B-snímku (x264encopts - volba nob_adapt), optimální hodnota tohoto nastavení nebývá obvykle vyšší než bframes=1, jinak mouhou utrpět velmi pohyblivé scény. Se zapnutým adaptivním rozhodováním o B-snímku (výchozí chování), je obvykle bezpečné použít vyšší hodnoty; enkodér se pokusí snížit použití B-snímků ve scénách, kde by snížily kompresi. Enkodér zřídka použije více než 3 nebo 4 B-snímky; nastavení této volby na vyšší hodnotu bude mít jen nepatrný vliv.

  • b_adapt: Poznámka: Výchozí je zapnuto.

    Je-li tato volba zapnuta, bude enkodér používat rychlou heuristiku pro snížení počtu B-snímků ve scénách, kde by jejich použitím příliš nezískaly. Můžete použít b_bias pro nastavení jak přátelský bude enkodér k B-snímkům. Spomalení působené adaptivními B-snímky je nyní spíše malé, ale stejně tak potenciální zisk kvality. Obvykle však nijak neškodí. Poznamenejme, že ovlivňuje rychlost a rozhodování o typu snímku pouze v prvním průchodu. b_adapt a b_bias nemají žádný vliv v následných průchodech.

  • b_pyramid: Pokud používáte >=2 B-snímky, můžete také zapnout tuto volbu; jak říká man stránka, dostanete malé zvýšení kvality bez ztráty rychlosti. Poznamenejme, že tato videa nelze číst dekodéry založenými na libavcodec staršími než 5. března 2005.

  • weight_b: V typických případech tato volba nepřináší velký zisk. V prolínacích nebo stmívacích scénách však vážená predikce umožňuje poměrně velkou úsporu datového toku. V MPEG-4 ASP bývá stmívání obvykle nejlépe kódováno jako série velkých I-snímků; použití vážené predikce v B-snímcích umožňuje změnit alespoň některé z nich na rozumně menší B-snímky. Spomalení enkódování se zdá být minimální, pokud nějaké je. Rovněž, v rozporu s tím, co si někteří lidé mohou myslet, požadavky dekodéru na CPU nejsou váženou predikcí ovlivněny, ostatní možnosti jsou stejně náročné.

    Naneštěstí má aktuálně algoritmus adaptivního rozhodování o B-snímcích výraznou tendenci vyvarovat se B-snímků při stmívání. Dokud se to nezmění, bude dobré přidat nob_adapt do x264encopts, pokud očekáváte, že stmívání bude mít znatelný vliv ve vašem konkrétním klipu.

  • threads: Tato volba umožňuje vytvořit více vláken pro enkódování na více procesorech. Jejich počet si můžete nastavit ručně, nebo raději nastavte threads=auto a ponechte x264 detekovat kolik máte procesorů k dispozici a zvolit vhodný počet vláken. Pokud máte víceprocesorový stroj, měli byste tuto volbu uvážit, jelikož dokáže lineárně zvýšit rychlost podle počtu procesorových jader (okolo 94% na jádro) při velmi malém snížení kvality (asi 0,005dB pro duální procesor a okolo 0,01dB pro čtyřprocesorový stroj).

7.5.1.3. Volby náležející různým preferencím

  • Dvouprůchodové enkodování: Výše jsme doporučovali vždy používat dvouprůchodové enkódování, ale stále existují důvody proč jej nepoužít. Například pokud zachytáváte TV vysílání a enkódujete v reálném čase, nemáte jinou možnost, než použít jeden průchod. Jeden průchod je samozřejmě rychlejší než dva; pokud použijete stejné volby v obou průchodech, pak je dvouprůchodové enkódování téměř dvakrát pomalejší.

    Stále jsou však velmi dobré důvody pro použití dvouprůchodového režimu. Volič datového toku v jednoprůchodovém režimu není oduševnělý a často dělá nerozumné volby, protože nevidí celkový obraz. Předpokládejme, že máte například dvouminutové video skládající se ze dvou částí. První polovina je vysoce pohyblivá scéna dlouhá 60 sekund, která samostatně vyžaduje kolem 2500kbps, aby vypadala slušně. Hned za ní následuje méně náročná 60 sekundová scéna, která vypadá dobře při 300kbps. Vyžádáte si 1400kbps, což je teoreticky dostatečné pro pokrytí obou scén. Jednoprůchodový volič datového toku v tom případě učiní několik "chyb". První blok může skončit těžce překvantizovaný, takže bude nepoužitelně a zbytečně čtverečkovaný. Druhá část bude velmi podkvantizovaná; to může vypadat dobře, ale spotřeba bitů na tento vzhled je nerozumně vysoká. Čeho se dá ještě hůře vyvarovat je problém přechodu mezi těmito scénami. První sekundy málo pohyblivé poloviny budou těžce překvantizovány, protože volič toku stále očekává nároky na datový tok, se kterými se potýkal v první polovině videa. Tato "chybová doba" překvantizované málo pohyblivé scény bude vypadat neskutečně špatně a skutečně použije méně než 300kbps, které by potřebovala, aby vypadala dobře. Existují způsoby pro zmírnění nástrah jednoprůchodového enkódování, ale ty mohou tíhnout ke zvyšování nepřesnosti datového toku.

    Víceprůchodový volič datového toku nabízí velké výhody oproti jednomu průchodu. Díky statistikám generovaným v prvním průchodu může enkodér určit, s rozumnou přesností, bitovou náročnost enkódování každého snímku při jakémkoli kvantizéru. To umožňuje mnohem racionálnější, lépe naplánovanou spotřebu bitů mezi drahými (hodně pohyblivými) a levnými (málo pohyblivými) scénami. Několik nápadů jak upravit tuto spotřebu podle svého naleznete níže viz qcomp.

    Navíc dva průchody nemusí trvat dvakrát tak dlouho jako jeden. Můžete upravit volby prvního průchodu pro nejvyšší rychlost a nižší kvalitu. Pokud si dobře zvolíte své volby, můžete mít velmi rychlý první průchod. Výsledná kvalita ve druhém průchodu bude trochu horší, protože predikce velikosti je méně přesná, ale rozdíl v kvalitě je obvykle příliž malý, aby byl vidět. Zkuste např. přidat subq=1:frameref=1 do x264encopts prvnímu průchodu. Pak ve druhém průchodu použijte pomalejší volby pro vyšší kvalitu: subq=6:frameref=15:partitions=all:me=umh

  • Tříprůchodové enkódování? x264 nabízí možnost provádět větší počet následných průchodů. Pokud zadáte pass=1 v prvním průchodu a pak použijete pass=3 v následujícím průchodu, pak tento průchod jak načte statistiky z předchozího, tak zapíše své vlastní. Další průchod po něm pak bude mít velmi dobrou základnu pro vysoce přesnou predikci velikosti snímků při zvoleném kvantizéru. V praxi se celková kvalita z toho vzešlá blíží nule a je možné, že třetí průchod bude mít horší celkový PSNR než jeho předchúdce. Při běžném použití tři průchody pomůžou, pokud dostanete buď špatnou predikci datového toku, nebo špatně vypadající přechody mezi scénami po použití pouze dvou průchodů. To se nejspíš může stát v extrémně krátkých klipech. Je rovněž několik zvláštních případů, ve kterých jsou tři a více průchodů dobré pro pokročilé uživatele, ale pro stručnost se zde těmito případy zabývat nebudeme.

  • qcomp: qcomp mění poměr počtu bitů alokovaných "drahým" velmi pohyblivým snímkům k "levným" málo pohyblivým snímkům. V jednom extrému, qcomp=0 vede k čistě konstantnímu datovému toku. Což typicky činí velmi pohyblivé scény velmi ošklivé, zatímco scény s malým pohybem vypadají perfektně, ale spotřebovávají mnohem větší datový tok, než by potřebovaly k tomu, aby ještě vypadaly skvěle. Ve druhém extrému, qcomp=1, dostanete téměř konstantní kvantizační parametr (QP). Konstantní QP nevypadá špatně, ale většina lidí soudí, že je rozumnější snížit trochu datový tok v extrémně náročných scénách (kde snížení kvality není tak vidět) a realokovat je do scén, které je snadnější enkódovat při excelentní kvalitě. Výchozí hodnota qcomp je 0.6, což může být, podle některých lidí poněkud málo (běžně se rovněž používá 0.7-0.8).

  • keyint: keyint je výhradně pro výměnu míry převinutelnosti za efektivitu kódování. Výchozí hodnota keyint je 250. V materiálu 25 snímků za sekundu to zajišťuje schopnost převíjení s 10 sekundovou přesností. Pokud soudíte, že bude důležité a užitečné být schopen převíjet s přesností 5 sekund, nastavte keyint=125; to ovšem trochu sníží kvalitu/datový tok. Pokud vám jde jen o kvalitu, nikoli převinutelnost, můžete si nastavit mnohem vyšší hodnoty (rozumějte že zisk z toho klesá a může být neznatelný až žádný). Video proud bude stále mít převíjecí body, pokud jsou zde nějaké změny scény.

  • deblock: Tato věc začíná být trochu kontroverzní.

    H.264 definuje jednoduchou deblokovací proceduru I-bloků, která používá přednastavených sil a prahů závislých na QP daného bloku. Výchozí je, že bloky s vysokým QP jsou filtrovány silně a bloky s nízkým QP nejsou deblokovány vůbec. Přednastavené síly definované standardem jsou dobře zvoleny a vyváženy tak, že jsou optimální z hlediska PSNR pro libovolné video, které zkoušíte enkódovat. Volba deblock umožňuje nastavit offsety přednastaveným deblokovacím prahům.

    Zdá se, že si mnoho lidí myslí, že je dobré snížit sílu deblokovacího filtru o vysokou hodnotu (řekněme, -3). To však není téměř nikdy dobrý nápad a v mnoha případech lidé, kteří to dělají, nerozumí dobře tomu, jak pracuje výchozí deblokování.

    První a nejdůležitější věc, kterou byste měli vědět o in-loop deblokovacím filtru, je, že výchozí prahy jsou téměř vždy optimální z hlediska PSNR. V řídkých případech, kdy nejsou, je ideální offset plusmínus 1. Úprava deblokovacích parametrů o větší hodnotu téměř zaručeně poškodí PSNR. Zesílení filtru setře více detailů; oslabení filtru povede k zvýšené viditelnosti blokování.

    Rozhodně je hloupost snižovat deblokovací prahy pokud má vaše video převážně nízkou plošnou komplexnost (čili málo detailů nebo šumu). In-loop filtr odvádí téměř výbornou práci v ukrývání artefaktů, které se mohou vyskytnout. Pokud má zdroj vysokou plšnou komplexnost, pak jsou artefakty méně viditelné. To proto, že kroužkování vypadá podobně jako detail nebo šum. Lidské oko snadno rozpozná, pokud je odstraněn detail, ale ne už tak snadno pozná, že je šum reprezentován špatně. Když příjde na subjektivní kvalitu, pak jsou detaily a šum do jisté míry zaměnitelné. Oslabením deblokovacího filtru nejspíše zvýšíte chybu, přidáním kroužkových artefaktů, ale oko si toho nevšimne, jelikož je zamění za detaily.

    Ani to však neospravedlňuje oslabení deblokovacího filtru. Obecně dostanete kvalitnější šum pomocí postprocesingu. Pokud vaše H.264 videa vypadají příliš neostře nebo rozmazaně, zkuste si pohrát s -vf noise při přehrávání. Volba -vf noise=8a:4a by měla skrýt většinu středně silných artefaktů. Téměř určitě to bude vypadat lépe, než výsledky, které byste mohli dosáhnout pohráváním si s deblokovacím filtrem.

7.5.2. Příklady nastavení enkódování

Následující nastavení jsou příklady nastavení různých kombinací voleb enkodéru, které ovlivňují poměr rychlost versus kvalita při shodném cílovém datovém toku.

Veškerá nastavení byla testována na video vzorku 720x448 @30000/1001 snímků za sekundu, cílový datový tok byl 900kbps a prováděly se na AMD-64 3400+ při 2400 MHz v režimu 64 bitů. Každá kombinace nastavení má uvedenu změřenou rychlost enkódování (ve snímcích za sekundu) a ztrátu PSNR (v dB) oproti nastavení "velmi vysoká kvalita". Rozumějte však že, v závislosti na vašem zdrojovém materiálu, typu počítače a pokrokům ve vývoji, můžete dospět k velmi odlišným výsledkům.

PopisVolbyRychlost [fps]Relativní ztráta PSNR [dB]
Velmi vysoká kvalitasubq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid=normal:weight_b60
Vysoká kvalitasubq=5:8x8dct:frameref=2:bframes=3:b_pyramid=normal:weight_b13-0.89
Rychlé enkódovánísubq=4:bframes=2:b_pyramid=normal:weight_b17-1.48

7.6. Enkódování rodinou kodeků Video For Windows

Video for Windows poskytuje jednoduché enkódování pomocí binárních videokodeků. Můžete enkódovat následujícími kodeky (pokud jich máte víc, řekněte nám to prosím!)

Pamatujte, že podpora těchto kodeků je velmi experimentální a některé z nich nemusí pracovat správně. Některé kodeky budou pracovat pouze v určitých barevných prostorech. Pokud kodek selže, zkuste -vf format=bgr24 a -vf format=yuy2.

7.6.1. Podporované kodeky Video for Windows

Název souboru videokodekuPopis (FourCC)md5sumPoznámka
aslcodec_vfw.dllAlparysoft bezztrátový kodek vfw (ASLC)608af234a6ea4d90cdc7246af5f3f29a 
avimszh.dllAVImszh (MSZH)253118fe1eedea04a95ed6e5f4c28878vyžaduje -vf format
avizlib.dllAVIzlib (ZLIB)2f1cc76bbcf6d77d40d0e23392fa8eda 
divx.dllDivX4Windows-VFWacf35b2fc004a89c829531555d73f1e6 
huffyuv.dllHuffYUV (bezztrátový) (HFYU)b74695b50230be4a6ef2c4293a58ac3b 
iccvid.dllCinepak Video (cvid)cb3b7ee47ba7dbb3d23d34e274895133 
icmw_32.dllMotion Wavelets (MWV1)c9618a8fc73ce219ba918e3e09e227f2 
jp2avi.dllImagePower MJPEG2000 (IPJ2)d860a11766da0d0ea064672c6833768b-vf flip
m3jp2k32.dllMorgan MJPEG2000 (MJ2C)f3c174edcbaef7cb947d6357cdfde7ff 
m3jpeg32.dllMorgan Motion JPEG Codec (MJPG)1cd13fff5960aa2aae43790242c323b1 
mpg4c32.dllMicrosoft MPEG-4 v1/v2b5791ea23f33010d37ab8314681f1256 
tsccvid.dllTechSmith Camtasia Screen Codec (TSCC)8230d8560c41d444f249802a2700d1d5shareware chyba na windows
vp31vfw.dllOn2 Open Source VP3 Codec (VP31)845f3590ea489e2e45e876ab107ee7d2 
vp4vfw.dllOn2 VP4 Personal Codec (VP40)fc5480a482ccc594c2898dcc4188b58f 
vp6vfw.dllOn2 VP6 Personal Codec (VP60)04d635a364243013898fd09484f913fb 
vp7vfw.dllOn2 VP7 Personal Codec (VP70)cb4cc3d4ea7c94a35f1d81c3d750bc8dvadné FourCC?
ViVD2.dllSoftMedia ViVD V2 kodek VfW (GXVE)a7b4bf5cac630bb9262c3f80d8a773a1 
msulvc06.DLLMSU Lossless kodek (MSUD)294bf9288f2f127bb86f00bfcc9ccdda Dekódovatelný Window Media Playerem, MPlayerem nikoli (zatím).
camcodec.dllCamStudio lossless video kodek (CSCD)0efe97ce08bb0e40162ab15ef3b45615sf.net/projects/camstudio

První pole obsahuje názvy kodeků, které by měly být zadány parametru codec, například: -xvfwopts codec=divx.dll Kód FourCC používaný jednotlivými kodeky jsou uvedeny v závorce.

Příklad převodu ISO DVD upoutávku na VP6 flash video soubor s použitím compdata nastavení datového toku:

mencoder -dvd-device zeiram.iso dvd://7 -o upoutavka.flv \
-ovc vfw -xvfwopts codec=vp6vfw.dll:compdata=onepass.mcf -oac mp3lame \
-lameopts cbr:br=64 -af lavcresample=22050 -vf yadif,scale=320:240,flip \
-of lavf

7.6.2. Použití vfw2menc pro vytvoření souboru s nastavením kodeku.

Pro enkódování s Video for Windows kodeky, budete muset nastavit datový tok a další volby. Funkčnost je potvrzena na platformně x86 na *NIX i Windows.

Nejprve musíte sestavit program vfw2menc. Ten je umístěn v podadresáři TOOLS zdrojových kódů MPlayeru. Pro sestavení na Linuxu můžete použít Wine:

winegcc vfw2menc.c -o vfw2menc -lwinmm -lole32

Pro sestavení na Windows v MinGW nebo Cygwin použijte:

gcc vfw2menc.c -o vfw2menc.exe -lwinmm -lole32

Pro sestavení v MSVC budete potřebovat getopt. Getopt lze najít v originálním vfw2menc archivu dostupném na stránkách: MPlayer on win32 projektu.

Níže uvádíme příklad s VP6 kodekem.

vfw2menc -f VP62 -d vp6vfw.dll -s firstpass.mcf

To otevře dialogové okno VP6 kodeku. Pro druhý průchod opakujte tento krok, ale použijte -s secondpass.mcf.

Uživatelé Windows mohou použít -xvfwopts codec=vp6vfw.dll:compdata=dialog, aby dostali dialogové okno kodeku před zahájením enkódování.

7.7. Použití MEncoderu pro vytvoření QuickTime-kompatibilních souborů

7.7.1. Proč by někdo chtěl vytvářet QuickTime-kompatibilní soubory?

Je několik důvodů, proč můžete chtít vytvářet QuickTime-kompatibilní soubory.

  • Chcete, aby byl každý počítačový anlfabet schopen sledovat vaše videa na jakékoli rozšířené platformě (Windows, Mac OS X, Unixy …).

  • QuickTime je schopen využít více harwarových i softwarových urychlovacích funkcí Mac OS X, než platformně nezávislý přehrávač, jako MPlayer nebo VLC. To znamená, že vaše soubory mají šanci na plynulé přehrávání na starších strojích s G4.

  • QuickTime 7 podporuje H.264, kodek nové generace, který poskytuje podstatně lepší kvalitu obrazu, než předchozí generace kodeků (MPEG-2, MPEG-4 …).

7.7.2. QuickTime 7 omezení

QuickTime 7 podporuje H.264 video a AAC zvuk, ale nepodporuje je, pokud jsou namuxovány v AVI kontejneru. Můžete však použít MEncoder pro enkódování videa a zvuku a pak použít externí program, např. mp4creator (součást MPEG4IP suite) pro přemuxování do MP4 kontejneru.

Podpora H.264 v QuickTime je omezená, takže se budete muset vzdát některých pokročilých vlastností. Pokud enkódujete video s vlastnostmi, které QuickTime 7 nepodporuje, budou přehrávače založené na QuickTime zobrazovat pouze hezky bílou obrazovku, místo očekávaného videa.

  • B-snímky: QuickTime 7 podporuje maximálně 1 B-snímek, čili -x264encopts bframes=1. To znamená, že b_pyramid a weight_b nebudou mít žádný efekt, jelikož vyžadují, aby bframes bylo vyšší než 1.

  • Makrobloky: QuickTime 7 nepodporuje 8x8 DCT makrobloky. Tato volba (8x8dct) je výchozí vypnuto, takže se ujistěte, že ji explicitně nezapnete. To také znamená, že volba i8x8 nebude mít žádný efekt, jelikož vyžaduje 8x8dct.

  • Poměr stran: QuickTime 7 nepodporuje SAR (sample aspect ratio) informace v MPEG-4 souborech; předpokládá, že SAR=1. Přečtěte si sekci o škálování, abyste to obešli.

7.7.3. Ořez

Řekněme, že chcete ripnout svou nově zakoupenou kopii "Letopisů Narnie". Vaše DVD je region 1, což znamená že je v NTSC. Příklad níže lze aplikovat na PAL, jen musíte vynechat -ofps 24000/1001 a použijete trošku jiné crop a scale rozměry.

Po spuštění mplayer dvd://1, postupujete podle pokynů uvedených v sekci Jak si poradit s telecine a prokladem v NTSC DVD a zjistíte, že je to 24000/1001 fps progresivní video. To poněkud zjednoduší proces, jelikož nepotřebujete použít inverzní telecine filtr jako pullup nebo filtr odstranění prokladu jako yadif.

Dále potřebujete odstřihnout černé okraje na zhora a zdola obrazu, podle postupu uvedeného v této předešlé sekci.

7.7.4. Škálování

Další krok je opravdu srdcervoucí. QuickTime 7 nepodporuje MPEG-4 videa se vzorkovým poměrem stran jiným než 1, takže budete muset obraz roztáhnout (to vyplýtvá spoustu diskového prostoru) nebo zmenšit (čímž ztratíme některé detaily ze zdrojového videa) na čtvercové pixely. Ať zvolíte jakkoli, je to velmi neefektivní, ale nelze se tomu vyhnout, pokud chcete, aby se video dalo přehrávat pomocí QuickTime 7. MEncoder může provést vhodné zvětšení nebo zmenšení uvedením buď -vf scale=-10:-1 nebo -vf scale=-1:-10. Takto naškálujete video na správnou šířku pro ořezanou výšku, zarovnanou na nejbližší násobek 16 pro optimální kompresi. Pamatujte, že pokud ořezáváte, měli byste nejprve ořezávat, potom škálovat:

-vf crop=720:352:0:62,scale=-10:-1

7.7.5. A/V synchronizace

Protože budete muxovat do odlišného nosného formátu, měli byste vždy použít volbu harddup, abyste se ujistili, že duplikované snímky budou duplikovány ve video výstupu. Bez této volby MEncoder jen vloží do video proudu značky pro duplikované snímky a je jen na přehrávači, aby zobrazil snímek dvakrát. Naneštěstí tato "měkká duplikace" nepřežije přemuxování, takže se zvuk může pomalu rozjíždět s videem.

Celý řetěz filtrů pak vypadá takto:

-vf crop=720:352:0:62,scale=-10:-1,harddup

7.7.6. Datový tok

Jako vždy je výběr datového toku otázkou technických parametrů zdroje, jak jsou objasněny zde, stejně jako otázkou vkusu. Tento film je dost akční a obsahuje mnoho detailů, ale H.264 video vypadá dobře při mnohem menším datovém toku než XviD nebo jiné MPEG-4 kodeky. Po dlouhém experimentování se autor této příručky rozhodl enkódovat tento film při 900kbps a myslí, že vypadá dobře. Můžete snížit datový tok, pokud potřebujete ušetřit místo, nebo jej zvýšit, chcete-li zvýšit kvalitu.

7.7.7. Příklad enkódování

Nyní jste připraveni enkódovat video. Jelikož nám leží na srdci kvalita, samozřejmě použijeme víceprůchodové enkódování. Chcete-li poněkud urychlit enkódování, můžete přidat volbu turbo do prvního průchodu; to snižuje subq a frameref na 1. Pro zvýšení diskového prostoru, můžete použít volbu ss pro odstranění prvních několika sekund videa. (Zjistil jsem, že tento konkrétní film má 32 sekund log a titulků.) bframes může být 0 nebo 1. Ostatní volby jsou dokumentovány v Enkódování s x264 kodekem a v man stránce.

mencoder dvd://1 -o /dev/null -ss 32 -ovc x264 \
-x264encopts pass=1:turbo:bitrate=900:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf crop=720:352:0:62,scale=-10:-1,harddup \
-oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
-ofps 24000/1001

Pokud máte víceprocesorový stroj, nenechte si ujít příležitost podstatně zvýšit enkódování zapnutím x264 vícevláknového režimu přidáním threads=auto do x264encopts na příkazovém řádku.

Druhý průchod je stejný, jen nastavíte výstupní soubor a nastavíte pass=2.

mencoder dvd://1 -o narnia.avi -ss 32 -ovc x264 \
-x264encopts pass=2:turbo:bitrate=900:frameref=5:bframes=1:\
me=umh:partitions=all:trellis=1:qp_step=4:qcomp=0.7:direct_pred=auto:keyint=300 \
-vf crop=720:352:0:62,scale=-10:-1,harddup \
-oac faac -faacopts br=192:mpeg=4:object=2 -channels 2 -srate 48000 \
-ofps 24000/1001

Výsledné AVI by mělo perfektně hrát v MPlayeru, ale QuickTime jej nepřehraje, jelikož nepodporuje H.264 muxovaný v AVI. Takže dalším krokem je přemuxovat video do MP4 konteineru.

7.7.8. Přemuxování do MP4

Existuje spousta způsobů, jak remuxovat AVI do MP4. Můžete použít mp4creator, který je součástí MPEG4IP suite.

Nejprve demuxujte AVI do oddělených zvukových a video proudů, pomocí MPlayeru.

mplayer narnia.avi -dumpaudio -dumpfile narnia.aac
mplayer narnia.avi -dumpvideo -dumpfile narnia.h264

Jména souborů jsou důležitá; mp4creator vyžaduje, aby AAC zvukové proudy byly pojmenovány .aac a H.264 video proudy zase .h264.

Nyní použijte mp4creator pro vytvoření nového MP4 souboru ze zvukového a video proudů.

mp4creator -create=narnia.aac narnia.mp4
mp4creator -create=narnia.h264 -rate=23.976 narnia.mp4

Narozdíl od enkódovacího kroku, musíte zadat snímkovou rychlost jako desetinné číslo (např. 23.976), nikoli zlomek (např. 24000/1001).

Tento narnia.mp4 soubor by měl být přehratelný jakoukoli QuickTime 7 aplikací, jako je QuickTime Player nebo iTunes. Pokud plánujete sledovat video ve webovém prohlížeči s QuickTime pluginem, měli byste rovněž označkovat film, aby jej QuickTime plugin mohl začít přehrávat už v době stahování. mp4creator umí vytvořit značkovací (hint) stopy:

mp4creator -hint=1 narnia.mp4
mp4creator -hint=2 narnia.mp4
mp4creator -optimize narnia.mp4

Můžete ověřit výsledek, abyste se ujistili, že značkovací stopy byly vytvořeny úspěšně:

mp4creator -list narnia.mp4

Měli byste vidět seznam stop: 1 zvukovou, 1 video a 2 značkovací stopy.

Track   Type    Info
1       audio   MPEG-4 AAC LC, 8548.714 secs, 190 kbps, 48000 Hz
2       video   H264 Main@5.1, 8549.132 secs, 899 kbps, 848x352 @ 23.976001 fps
3       hint    Payload mpeg4-generic for track 1
4       hint    Payload H264 for track 2

7.7.9. Přidání stop s meta daty

Pokud chcete přidat stopy, které se objevují v iTunes, můžete použít AtomicParsley.

AtomicParsley narnia.mp4 --metaEnema --title "The Chronicles of Narnia" --year 2005 --stik Movie --freefree --overWrite

Volba --metaEnema odstraňuje existující metadata (mp4creator vkládá své jméno do "encoding tool" tagu) a --freefree uvolní místo po smazaných metadatech. Volba --stik nastaví typ videa (jako Film nebo TV šou), což iTunes používá pro sdružování podobných video souborů. Volba --overWrite přepisuje původní soubor; bez ní vytvoří AtomicParsley nový automaticky pojmenovaný soubor ve stejném adresáři a ponechá původní soubor nedotčen.

7.8. Použití MEncoderu k vytváření VCD/SVCD/DVD-kompatibilních souborů.

7.8.1. Omezení Formátů

MEncoder je schopen vytvořit soubory ve formátu MPEG pro VCD, SCVD a DVD pomocí knihovny libavcodec. Tyto soubory pak mohou být použity ve spojení s programem vcdimager nebo dvdauthor pro vytváření disků přehratelných na stolním přehrávači.

Formáty DVD, SVCD a VCD mají silná omezení. K dispozici máte pouze malý výběr velikostí enkódovaného obrazu a poměrů stran. Pokud váš film nesplňuje tyto požadavky, budete jej muset škálovat, ořezat nebo přidat černé okraje, aby byl kompatibilní.

7.8.1.1. Omezení Formátů

FormátRozlišeníV. kodecV. dat. tokVzork. kmitočetA. kodecA. dat. tokFPSPoměr stran
NTSC DVD720x480, 704x480, 352x480, 352x240MPEG-29800 kbps48000 HzAC–3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9 (pouze pro 720x480)
NTSC DVD352x240[a]MPEG-11856 kbps48000 HzAC–3,PCM1536 kbps (max)30000/1001, 24000/10014:3, 16:9
NTSC SVCD480x480MPEG-22600 kbps44100 HzMP2384 kbps (max)30000/10014:3
NTSC VCD352x240MPEG-11150 kbps44100 HzMP2224 kbps24000/1001, 30000/10014:3
PAL DVD720x576, 704x576, 352x576, 352x288MPEG-29800 kbps48000 HzMP2,AC–3,PCM1536 kbps (max)254:3, 16:9 (pouze pro 720x576)
PAL DVD352x288[a]MPEG-11856 kbps48000 HzMP2,AC–3,PCM1536 kbps (max)254:3, 16:9
PAL SVCD480x576MPEG-22600 kbps44100 HzMP2384 kbps (max)254:3
PAL VCD352x288MPEG-11152 kbps44100 HzMP2224 kbps254:3

[a] Tato rozlišení jsou zřídka použita pro DVD, protože mají docela nízkou kvalitu.

Pokud má vaše video poměr stran 2.35:1 (většina současných akčních filmů), budete muset přidat černé okraje, nebo ořezat video na 16:9, abyste mohli vytvořit DVD nebo VCD. Pokud přidáváte černé okraje, zkuste je napasovat do 16 pixelových okrajů, abyste minimalizovali vliv na výkon enkódování. Naštěstí má DVD dostatečně vysoký datový tok, takže se nemusíte příliš zabývat efektivitou enkódování, ale u SVCD a VCD je k dispozici jen malý datový tok, takže vyžaduje větší snahu pro dosažení přijatelné kvality.

7.8.1.2. Omezení velikosti GOP

DVD, VCD a SVCD vás rovněž omezují na relativně nízké GOP (skupina obrázků) velikosti. Pro materiál 30 snímků za sekundu je největší povolená GOP velikost 18. Pro 25 nebo 24 snímků/s je maximum 15. Velikost GOP je nastavena pomocí volby keyint.

7.8.1.3. Omezení datového toku

VCD video musí být CBR při 1152 kbps. Tento velmi omezující požadavek je zde spolu s velmi malou vbv vyrovnávací pamětí 327 kilobitů. SVCD umožňuje proměnné datové toky až do 2500 kbps a poněkud méně omezující velikost vbv bufferu 917 kilobitů. Datové toky pro DVD mohou být libovolné až do 9800 kbps (ačkoli typické datové toky jsou asi poloviční) a velikost vbv buferu je 1835 kilobitů.

7.8.2. Výstupní volby

MEncoder má volby pro ovládání výstupního formátu. Pomocí těchto voleb jej můžete instruovat, aby použil správný typ souboru.

Volby pro VCD a SVCD se nazývají xvcd a xsvcd, protože to jsou rozšířené formáty. Nejsou přesně kompatibilní hlavně proto, že výstup neobsahuje skenovací offsety. Pokud potřebujete generovat SVCD obraz, měli byste protáhnout výstupní soubor programem vcdimager.

VCD:

-of mpeg -mpegopts format=xvcd

SVCD:

-of mpeg -mpegopts format=xsvcd

DVD (s časovými značkami v každém snímku, je-li to možné):

-of mpeg -mpegopts format=dvd:tsaf

DVD s NTSC Pullup:

-of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001

Toto umožňuje enkódovat 24000/1001 fps progresivní materiál při 30000/1001 fps při zachování slučitelnosti s DVD.

7.8.2.1. Poměr stran

Argument aspect z -lavcopts se používá pro zakódování poměru stran souboru. Během přehrávání je pak tato hodnota použita pro obnovení videa na správnou velikost.

16:9 neboli "Widescreen"

-lavcopts aspect=16/9

4:3 neboli "Fullscreen"

-lavcopts aspect=4/3

2.35:1 neboli "Cinemascope" NTSC

-vf scale=720:368,expand=720:480 -lavcopts aspect=16/9

Pro výpočet správné velikosti pro škálování, použijte rozšířenou NTSC šířku 854/2.35 = 368

2.35:1 neboli "Cinemascope" PAL

-vf scale=720:432,expand=720:576 -lavcopts aspect=16/9

Pro výpočet správné velikosti pro škálování, použijte rozšířenou PAL šířku 1024/2.35 = 432

7.8.2.2. Zachování A/V synchronizace

Aby byla zachována synchronizace zvuku s videem během enkódování, musí MEncoder zahazovat nebo duplikovat snímky. To funguje celkem dobře při muxování do AVI souboru, ale téměř s jistotou neudrží A/V synchronizaci s jinými muxery jako MPEG. To je důvodem pro nutnost přidání video fitru harddup na konec řetězu filtrů, abychom se tomuto problému vyhnuli. Více technických informací o harddup naleznete v sekci Zlepšení muxování a A/V synchronizace, nebo v man stránce.

7.8.2.3. Převod vzorkovacího kmitočtu

Pokud není vzorkovací kmitočet zvuku takový, jaký je vyžadován cílovým formátem, je nutný převod vzorkovacího kmitočtu. To zajišťuje použití volby -srate spolu se zvukovým filtrem -af lavcresample.

DVD:

-srate 48000 -af lavcresample=48000

VCD a SVCD:

-srate 44100 -af lavcresample=44100

7.8.3. Použití libavcodec pro enkódování VCD/SVCD/DVD

7.8.3.1. Úvodem

libavcodec můžete použít pro vytvoření videa kompatibilního s VCD/SVCD/DVD použitím příslušných voleb.

7.8.3.2. lavcopts

Zde máte seznam polí v -lavcopts, která je nutné změnit, abyste dostali video vhodné pro VCD, SVCD, nebo DVD:

  • acodec: mp2 pro VCD, SVCD nebo PAL DVD; ac3 je obecně používán pro DVD. PCM zvuk může být rovněž použitý pro DVD, ale většinou je to velké plýtvání místem. Poznamenejme, že MP3 není slučitelné s žádným z těchto formátů, ale přehrávače s jeho přehrátím obvykle nemají problém.

  • abitrate: 224 pro VCD; do 384 pro SVCD; do 1536 pro DVD, ale obvykle se hodnoty pohybují od 192 kbps pro stereo do 384 kbps pro 5.1 kanálový zvuk.

  • vcodec: mpeg1video pro VCD; mpeg2video pro SVCD; mpeg2video je obvykle použitý pro DVD, ale můžete použít také mpeg1video pro CIF rozlišení.

  • keyint: Použitý pro nastavení velikosti GOP. 18 pro 30fps materiál, nebo 15 pro 25/24 fps materiál. Zdá se, že komerční producenti preferují interval mezi klíčovými snímky 12. Je možné použít vyšší hodnotu a stále být kompatibilní s většinou přehrávačů. keyint na 25 by neměla nikdy způsobit potíže.

  • vrc_buf_size: 327 pro VCD, 917 pro SVCD a 1835 pro DVD.

  • vrc_minrate: 1152, pro VCD. Může být vynecháno pro SVCD a DVD.

  • vrc_maxrate: 1152 pro VCD; 2500 pro SVCD; 9800 pro DVD. Pro SVCD a DVD, můžete použít nižší hodnoty v závislosti na vašich osobních preferencích a potřebách.

  • vbitrate: 1152 pro VCD; do 2500 pro SVCD; do 9800 pro DVD. Pro dva poslední formáty by mělo být vbitrate nastaveno podle vlastního uvážení. Například pokud trváte na umístění asi 20 hodin na DVD, mohli byste použít vbitrate=400. Výsledná kvalita bude nejspíš hrozná. Pokud se pokoušíte dosáhnout maximální možné kvality na DVD, použijte vbitrate=9800, ale pak se vám nevejde ani celá hodina záznamu na jednovrstvé DVD.

  • vstrict: Pro vytváření DVD by mělo být použito vstrict=0. Bez této volby vytvoří MEncoder datový proud, který některé stolní přehrávače neumí správně dekódovat.

7.8.3.3. Příklady

Toto je typická minimální sada -lavcopts pro enkódování videa:

VCD:

-lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\
vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2

SVCD:

-lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\
keyint=15:acodec=mp2

DVD:

-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3

7.8.3.4. Pokročilé volby

Pro vyšší kvalitu enkódování můžete také přidat kvalitu zlepšující volby do lavcopts, jako je trell, mbd=2 a další. Poznamenejme, že qpel a v4mv, které jsou často dobré pro MPEG-4, nejsou použitelné s MPEG-1 nebo MPEG-2. Pokud se snažíte vytvořit DVD s velmi vasokou kvalitou, může být vhodné přidat dc=10 do lavcopts. Takto to můžete pomoci omezit oběvování bloků ve stálobarevných plochách. Podtrženo sečteno, zde máte příklad nastavení lavcopts pro DVD s vyšší kvalitou:

-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\
keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\
vqmin=1:lmin=1:dc=10:vstrict=0

7.8.4. Enkódování zvuku

VCD a SVCD podporují zvuk MPEG-1 layer II. Použít můžete toolame, twolame, nebo MP2 enkodér z libavcodecu. MP2 libavcodecu je dalek toho, aby byl stejně dobrý jako druhé dvě knihovny, avšak měl by být vždy po ruce. VCD podporuje pouze zvuk s konstantním datovým tokem (CBR), zatímco SVCD podporuje také proměnný datový tok (VBR). Používejte VBR opatrně, jelikož některé mizerné stolní přehrávače jej nemusí dobře podporovat.

Pro DVD zvuk se používá AC–3 kodek z libavcodec.

7.8.4.1. toolame

Pro VCD a SVCD:

-oac toolame -toolameopts br=224

7.8.4.2. twolame

Pro VCD a SVCD:

-oac twolame -twolameopts br=224

7.8.4.3. libavcodec

Pro DVD s 2 kanálovým zvukem:

-oac lavc -lavcopts acodec=ac3:abitrate=192

Pro DVD s 5.1 kanálovým zvukem:

-channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384

Pro VCD a SVCD:

-oac lavc -lavcopts acodec=mp2:abitrate=224

7.8.5. Spojení všeho dohromady

Tato sekce obsahuje kompletní příkazy pro vytvoření VCD/SVCD/DVD kompatibilních videí.

7.8.5.1. PAL DVD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
  -vf scale=720:576,harddup -srate 48000 -af lavcresample=48000 \
  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 25 \
  -o film.mpg film.avi

7.8.5.2. NTSC DVD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
  -vf scale=720:480,harddup -srate 48000 -af lavcresample=48000 \
  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=16/9 -ofps 30000/1001 \
  -o film.mpg film.avi

7.8.5.3. PAL AVI obsahující AC–3 zvuk do DVD

Pokud již má zdroj AC–3 zvuk, použijte -oac copy místo reenkódování.

mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf \
  -vf scale=720:576,harddup -ofps 25 \
  -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
keyint=15:vstrict=0:aspect=16/9 -o film.mpg film.avi

7.8.5.4. NTSC AVI obsahující AC–3 zvuk do DVD

Pokud již má zdroj AC–3 zvuk a video je NTSC @ 24000/1001 fps:

mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \
  -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\
  vrc_maxrate=9800:vbitrate=5000:keyint=15:vstrict=0:aspect=16/9 -ofps 24000/1001 \
  -o film.mpg film.avi

7.8.5.5. PAL SVCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \
    scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
    vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 25 \
    -o film.mpg film.avi

7.8.5.6. NTSC SVCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd  -vf \
    scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
    vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\
vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 30000/1001 \
    -o film.mpg film.avi

7.8.5.7. PAL VCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
    scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
    vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:\
vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 25 \
    -o film.mpg film.avi

7.8.5.8. NTSC VCD

mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \
    scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \
    vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:\
vbitrate=1152:vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \
    -o film.mpg film.avi



[1] Buďte však opartní: Dekódování MPEG-4 AVC videa v DVD rozlišení vyžaduje rychlý stroj (např.Pentium 4 nad 1.5GHz, nebo Pentium M nad 1GHz).

[2] Stejný film nemusí vypadat stejně na monitoru někoho jiného, nebo když je přehráván jiným dekodérem, takže si prověřujte své výtvory přehráváním na různých sestavách.

Kapitola 8. Často Kladené Dotazy (FAQ)

8.1. Vývoj
Otázka: Jak vytvořím správně patch pro MPlayer?
Otázka: Jak přeložím MPlayer do nového jazyka?
Otázka: Jak mohu podpořit vývoj MPlayeru?
Otázka: Jak se mohu stát vývojářem MPlayeru?
Otázka: Proč nepoužíváte autoconf/automake?
8.2. Kompilace a instalace
Otázka: Kompilace skončí s chybou a gcc vypíše nějakou záhadnou zprávu obsahující frázi internal compiler error nebo unable to find a register to spill nebo can't find a register in class `GENERAL_REGS' while reloading `asm'.
Otázka: Existují binární (RPM/Debian) balíčky MPlayeru?
Otázka: Jak mohu skompilovat 32 bitový MPlayer na 64 bitovém Athlonu?
Otázka: Configure skončí s následujícím textem a MPlayer se nezkompiluje! Your gcc does not support even i386 for '-march' and '-mcpu'
Otázka: Mám Matrox G200/G400/G450/G550, jak zkompiluji/použiji ovladač mga_vid?
Otázka: Během 'make', si MPlayer stěžuje na chybějící X11 knihovny. Tomu nerozumím, vždyť mám nainstalovány X11!?
Otázka: Kompilace na Mac OS 10.3 vede k několika linkovacím chybám.
8.3. Obecné dotazy
Otázka: Existují nějaké e-mailové konference pro MPlayer?
Otázka: Našel/našla jsem odpornou chybu když jsem chtěl(a) přehrát svůj oblíbený film! Komu to mám oznámit?
Otázka: Mám potíže s přehráváním souborů s ... kodekem. Mohu je používat?
Otázka: Při startu přehrávání dostanu následující hlášku, ale jinak vše vypadá dobře: Linux RTC init: ioctl (rtc_pie_on): Permission denied
Otázka: Jak si mohu udělat snímek obrazovky?
Otázka: Co znamenají čísla na stavovém řádku?
Otázka: Objevuje se chybová zpráva o chybějícím souboru /usr/local/lib/codecs/ ...
Otázka: Jak zařídit, aby si MPlayer pamatoval volby, které používám pro konkrétní soubor, např. film.avi?
Otázka: Titulky jsou hezké, nejkrásnější jaké jsem viděl, ale zpomalují přehrávání! Vím že je to nepravděpodobné ...
Otázka: Nemohu se dostat do GUI menu. Kliknu pravým tlačítkem, ale nemám přístup k žádné z položek!
Otázka: Jak mohu spustit MPlayer na pozadí?
8.4. Potíže s přehráváním
Otázka: Nemohu přijít na příčinu nějakého podivného problému při přehrávání.
Otázka: Jak dostanu titulky do černých okrajů kolem filmu?
Otázka: Jak mohu vybrat audio/titulkové stopy z DVD, OGM, Matroska nebo NUT souboru?
Otázka: Zkouším přehrávat náhodný stream z internetu, ale nedaří se mi to.
Otázka: Stáhnul jsem si film přes P2P síť ale nefunguje!
Otázka: Nedaří se mi přimět titulky, aby se zobrazovaly, pomoc!!
Otázka: Proč MPlayer nefunguje na Fedora Core?
Otázka: MPlayer zhavaruje s hláškou MPlayer interrupted by signal 4 in module: decode_video nebo MPlayer přerušen signálem 4 v modulu: decode_video
Otázka: Když zkouším grabovat z tuneru, funguje to, ale jsou divné barvy. V jiných programech je to OK.
Otázka: Dostávám podivné procentní hodnoty (příliš velké) při přehrávání na notebooku.
Otázka: Synchronizace zvuku a videa se úplně rozpadne když spustím MPlayer jako root na notebooku. Když jej spustím jako uživatel, pracuje normálně.
Otázka: Při přehrávání souboru se začne přehrávání zadrhávat a dostanu následující hlášení: Badly interleaved AVI file detected - switching to -ni mode... nebo Detekován špatně prokládaný AVI soubor – přepínám do režimu -ni...
8.5. Potíže video/audio ovaldače (vo/ao)
Otázka: Když přejdu do celoobrazovkového režimu, dostanu pouze černé okraje kolem obrazu bez jeho zvětšení na celou obrazovku.
Otázka: Právě jsem nainstaloval MPlayer. Když chci však otevřít video soubor, nastane fatální chyba: Error opening/initializing the selected video_out (-vo) device. nebo Selhalo otevření/inicializace vybraného video_out (-vo) rozhraní. Jak mohu vyřašit své problémy?
Otázka: Mám problémy s [váš okenní manažer] a celoobrazovkovými xv/xmga/sdl/x11 režimy ...
Otázka: Zvuk se během přehrávání AVI souboru rozejde s videem.
Otázka: Můj počítač přehrává MS DivX AVI s rozlišeními ~ 640x300 a stereo MP3 zvukem příliš pomalu. Když použiji volbu -nosound, vše je v pořádku (jen bez zvuku).
Otázka: Jak mohu použít dmix spolu s MPlayerem?
Otázka: Nemám zvuk při přehrávání videa a dostanu chybovou zprávu podobnou této: AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) audio_setup: Nelze otevřít audio zařízení /dev/dsp: Zařízení nebo rozhraní je již používáno nelze otevřít/inicializovat audio zařízení -> BEZ ZVUKU Audio: bez zvuku!!! Začínám přehrávat...
Otázka: Pokus spustím MPlayer pod KDE, dostanu pouze černou obrazovku a nic se neděje. Asi po minutě se video spustí.
Otázka: Mám problémy s A/V synchronizací. Některé mé AVI hrají dobře, ale některé s dvojnásobnou rychlostí!
Otázka: Když přehrávám tento soubor, rozjede se mi zvuk s obrazem a/nebo MPlayer havaruje s hláškou: DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer! nebo DEMUXER: Příliš mnoho (945 v 8390980 bytech) video paketů ve vyrovnávací paměti!
Otázka: Jak se zbavím A/V desynchronizace při převíjení v RealMedia proudech?
8.6. Přehrávání DVD
Otázka: Což takhle DVD navigace/nabídky?
Otázka: Nepřehraji žádná současná DVD od Sony Pictures/BMG.
Otázka: Co takhle titulky? Umí je MPlayer zobrazovat?
Otázka: Jak nastavím kód regionu na mé DVD mechanice? Nemám Windows!
Otázka: Nemohu přehrát DVD, MPlayer skončí nebo vypíše chyby "Encrypted VOB file!".
Otázka: Musím být (setuid) root, abych mohl(a) přehrávat DVD?
Otázka: Je možné přehrát/enkódovat pouze vybrané kapitoly?
Otázka: Přehrávání DVD je zdlouhavé!
Otázka: Zkopíroval(a) jsem DVD pomocí vobcopy. Jak jej mohu přehrát/enkódovat z harddisku?
8.7. Požadavky na vlastnosti
Otázka: Pokud je MPlayer v pauze a já se pokusím převíjet, nebo stisknu jakoukoli klávesu, MPlayer se odpauzuje. Rád(a) bych převíjel(a) film v pauze.
Otázka: Rád(a) bych převíjel(a) o +/- 1 snímek místo o 10 sekund.
8.8. Enkódování
Otázka: Jak mohu enkódovat?
Otázka: Jak mohu "nahrát" celý DVD titul do souboru?
Otázka: Jak vytvořím (S)VCD automaticky?
Otázka: Jak vytvořím (S)VCD?
Otázka: Jak spojím dva video soubory?
Otázka: Jak mohu opravit AVI soubory s vadným indexem nebo prokládáním?
Otázka: Jak mohu opravit poměr stran videa v AVI souboru?
Otázka: Jak mohu zálohovat a enkódovat VOB soubor s poškozeným začátkem?
Otázka: Nemohu zakódovat DVD titulky do AVI!
Otázka: Jak mohu enkódovat pouze některé kapitoly z DVD?
Otázka: Zkouším pracovat s 2GB+ soubory na souborovém systému VFAT. Bude to fungovat?
Otázka: Co znamenají čísla na stavovém řádku během enkódování?
Otázka: Jakto že je doporučený datový tok vypisovaný MEncoderem záporný?
Otázka: Nemohu kompilovat ASF soubor do AVI/MPEG-4 (DivX) protože používá 1000 fps.
Otázka: Jak vložím titulky do výstupního souboru?
Otázka: Jak zakóduji pouze zvuk z hudebního videa?
Otázka: Proč přehrávače třetích stran selhávají při přehrávání MPEG-4 filmů enkódovaných MEncoderem pozdější verze než 1.0pre7?
Otázka: Jak mohu enkódovat soubor jen se zvukem?
Otázka: Jak mohu přehrát titulky zabudované v AVI?
Otázka: MPlayer neumí...

8.1. Vývoj

Otázka: Jak vytvořím správně patch pro MPlayer?
Otázka: Jak přeložím MPlayer do nového jazyka?
Otázka: Jak mohu podpořit vývoj MPlayeru?
Otázka: Jak se mohu stát vývojářem MPlayeru?
Otázka: Proč nepoužíváte autoconf/automake?

Otázka:

Jak vytvořím správně patch pro MPlayer?

Odpověď:

Sepsali jsme krátký dokument popisující všechny nezbytné detaily. Následujte tyto instrukce.

Otázka:

Jak přeložím MPlayer do nového jazyka?

Odpověď:

Přečtěte si translation HOWTO, to vám objasní vše. Podrobnější pomoc můžete dostat v e-mailové konferenci MPlayer–translations.

Otázka:

Jak mohu podpořit vývoj MPlayeru?

Odpověď:

Rádi přijmeme vaše hardwarové a softwarové příspěvky. Ty nám pomáhají neustále vylepšovat MPlayer.

Otázka:

Jak se mohu stát vývojářem MPlayeru?

Odpověď:

Vždy uvítáme nové kodéry i dokumentaristy. Přečtěte si technickou dokumentaci abyste dostali obecnou představu. Pak byste se měli přihlásit do MPlayer-dev-eng e-mailové konference a začít psát kód. Pokud chcete pomoci s dokumentací, připojte se do konference MPlayer-docs.

Otázka:

Proč nepoužíváte autoconf/automake?

Odpověď:

Máme modulární, ručně dělaný konfigurační a překladový systém, který odvádí docela dobrou práci, tak proč to měnit? Konec konců se nám nelíbí auto* nástroje, stejně jako ostatním lidem.

8.2. Kompilace a instalace

Otázka: Kompilace skončí s chybou a gcc vypíše nějakou záhadnou zprávu obsahující frázi internal compiler error nebo unable to find a register to spill nebo can't find a register in class `GENERAL_REGS' while reloading `asm'.
Otázka: Existují binární (RPM/Debian) balíčky MPlayeru?
Otázka: Jak mohu skompilovat 32 bitový MPlayer na 64 bitovém Athlonu?
Otázka: Configure skončí s následujícím textem a MPlayer se nezkompiluje! Your gcc does not support even i386 for '-march' and '-mcpu'
Otázka: Mám Matrox G200/G400/G450/G550, jak zkompiluji/použiji ovladač mga_vid?
Otázka: Během 'make', si MPlayer stěžuje na chybějící X11 knihovny. Tomu nerozumím, vždyť mám nainstalovány X11!?
Otázka: Kompilace na Mac OS 10.3 vede k několika linkovacím chybám.

Otázka:

Kompilace skončí s chybou a gcc vypíše nějakou záhadnou zprávu obsahující frázi internal compiler error nebo unable to find a register to spill nebo can't find a register in class `GENERAL_REGS' while reloading `asm'.

Odpověď:

Právě jste narazili na chybu v gcc. Nahlaste ji prosím týmu gcc, nikoli nám. Z nějakého důvodu se zdá, že MPlayer často spouští chyby kompileru. Přesto je však nebudeme odstraňovat, ani je v našich zdrojových textech obcházet. Chcete-li se vyhnout těmto problémům, zůstaňte věrni té verzi kompileru, která je známa jako spolehlivá a stabilní, nebo často upgradujte.

Otázka:

Existují binární (RPM/Debian) balíčky MPlayeru?

Odpověď:

Podrobnosti viz sekce Debian a RPM.

Otázka:

Jak mohu skompilovat 32 bitový MPlayer na 64 bitovém Athlonu?

Odpověď:

Vyzkoušejte následující volby configure:

./configure --target=i386-linux --cc="gcc -m32" --as="as --32" --with-extralibdir=/usr/lib

Otázka:

Configure skončí s následujícím textem a MPlayer se nezkompiluje!

Your gcc does not support even i386 for '-march' and '-mcpu'

Odpověď:

Vaše gcc není správně nainstalováno, detaily naleznete v souboru config.log.

Otázka:

Mám Matrox G200/G400/G450/G550, jak zkompiluji/použiji ovladač mga_vid?

Odpověď:

Přečtěte si sekci mga_vid.

Otázka:

Během 'make', si MPlayer stěžuje na chybějící X11 knihovny. Tomu nerozumím, vždyť mám nainstalovány X11!?

Odpověď:

... ale nemáte nainstalován vývojářský (dev/devel) balíček pro X11. Nebo ne zprávně. V Red Hatu se nazývá XFree86-devel*, v Debianu Woody je to xlibs-dev, v Debianu Sarge je to libx11-dev. Také se přesvědčte, že symlinky /usr/X11 a /usr/include/X11 existují.

Otázka:

Kompilace na Mac OS 10.3 vede k několika linkovacím chybám.

Odpověď:

Chyba linkování, kterou zakoušíte vypadá nejspíš takto:

ld: Undefined symbols:
_LLCStyleInfoCheckForOpenTypeTables referenced from QuartzCore expected to be defined in ApplicationServices
_LLCStyleInfoGetUserRunFeatures referenced from QuartzCore expected to be defined in ApplicationServices

Tento problém působí vývojáři Apple, kteří používají 10.4 pro kompilaci svého software a distribuují binárky uživatelům 10.3 přes Software Update. Nedefinované symboly jsou přítomny v Mac OS 10.4, ale nikoli 10.3. Jedním z řešení může být downgrade na QuickTime 7.0.1. Následující řešení je však lepší.

Získejte starší verzi frameworků. Získáte zde komprimovaný soubor obsahující QuickTime 7.0.1 Framework a 10.3.9 QuartzCore Framework.

Rozbalte soubory někde mimo adresář System. (čili neinstalujte tyto frameworky do svého /System/Library/Frameworks! Použití těchto starších verzí slouží jen k obejití linkovacích chyb!)

gunzip < CompatFrameworks.tgz | tar xvf -

V config.mak byste měli přidat -F/cesta/kam/jste/to/rozbalili do proměnné OPTFLAGS. Pokud používáte X-Code, můžete prostě zvolit tyto frameworky místo systémových.

Výsledná binárka MPlayeru bude využívat framework nainstalovaný na vašem systému přes dynamické linkování prováděné za běhu. (Můžete si to ověřit pomocí otool -l).

8.3. Obecné dotazy

Otázka: Existují nějaké e-mailové konference pro MPlayer?
Otázka: Našel/našla jsem odpornou chybu když jsem chtěl(a) přehrát svůj oblíbený film! Komu to mám oznámit?
Otázka: Mám potíže s přehráváním souborů s ... kodekem. Mohu je používat?
Otázka: Při startu přehrávání dostanu následující hlášku, ale jinak vše vypadá dobře: Linux RTC init: ioctl (rtc_pie_on): Permission denied
Otázka: Jak si mohu udělat snímek obrazovky?
Otázka: Co znamenají čísla na stavovém řádku?
Otázka: Objevuje se chybová zpráva o chybějícím souboru /usr/local/lib/codecs/ ...
Otázka: Jak zařídit, aby si MPlayer pamatoval volby, které používám pro konkrétní soubor, např. film.avi?
Otázka: Titulky jsou hezké, nejkrásnější jaké jsem viděl, ale zpomalují přehrávání! Vím že je to nepravděpodobné ...
Otázka: Nemohu se dostat do GUI menu. Kliknu pravým tlačítkem, ale nemám přístup k žádné z položek!
Otázka: Jak mohu spustit MPlayer na pozadí?

Otázka:

Existují nějaké e-mailové konference pro MPlayer?

Odpověď:

Ano. Podívejte se do sekce e-mailových konferencí naší domácí stránky.

Otázka:

Našel/našla jsem odpornou chybu když jsem chtěl(a) přehrát svůj oblíbený film! Komu to mám oznámit?

Odpověď:

Přečtěte si prosím postupy hlášení chyb a následujte instrukce.

Otázka:

Mám potíže s přehráváním souborů s ... kodekem. Mohu je používat?

Odpověď:

Prověřte stav kodeku, pokud neobsahuje váš kodek, přečtěte si Win32 codec HOWTO a kontaktujte nás.

Otázka:

Při startu přehrávání dostanu následující hlášku, ale jinak vše vypadá dobře:

Linux RTC init: ioctl (rtc_pie_on): Permission denied

Odpověď:

Potřebujete speciálně nastavené jádro, abychom mohli použít RTC časování. Detaily naleznete v RTC části dokumentace.

Otázka:

Jak si mohu udělat snímek obrazovky?

Odpověď:

Abyste si mohli udělat snímek, musíte použít video výstupní rozhraní, které nepoužívá překrývání. Jde to například pod X11 s -vo x11, pod Windows funguje -vo directx:noaccel.

Alternativně můžete spustit MPlayer s video filtrem screenshot (-vf screenshot) a stisknout tlačítko s pro sejmutí obrazu.

Otázka:

Co znamenají čísla na stavovém řádku?

Odpověď:

Příklad:

A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49% 1.00x

A: 2.1

pozice zvukové stopy v sekundách

V: 2.2

pozice videa v sekundách

A-V: -0.167

odchylka audio-video v sekundách (zpoždění (delay))

ct: 0.042

celková provedená korekce A-V synchronizace

57/57

snímků přehráno/dekódováno (počítáno od posledního převíjení)

41%

zatížení CPU video kodekem v procentech (při slice renderování a direct renderování zahrnuje i video_out)

0%

video_out zatížení CPU

2.6%

procentuální zatížení CPU audio kodekem

0

počet zahozených snímků pro zachování A-V synchronizace

4

aktuální úroveň postprocesingu obrazu (při použití -autoq)

49%

aktuální naplnění vyrovnávací paměti (běžně okolo 50%)

1.00x

rychlost přehrávání v násobcích původní rychlosti

Většina z nich je určena pro ladění chyb. Použijte volbu -quiet, aby zmizely. U některých souborů můžete vidět, že zatížení CPU video_outem je nulové (0%). To proto, že je volán přímo video kodekem a nelze jej měřit odděleně. Pokud chcete znát rychlost video_out, porovnejte rozdíl při přehrávání souboru do -vo null a do obvyklého video výstupního zařízení.

Otázka:

Objevuje se chybová zpráva o chybějícím souboru /usr/local/lib/codecs/ ...

Odpověď:

Stáhněte si a nainstalujte binární kodeky z naší download stránky.

Otázka:

Jak zařídit, aby si MPlayer pamatoval volby, které používám pro konkrétní soubor, např. film.avi?

Odpověď:

Vytvořte soubor s názvem film.avi.conf s volbami jen pro tento soubor a umístěte jej do ~/.mplayer nebo do adresáře s filmem.

Otázka:

Titulky jsou hezké, nejkrásnější jaké jsem viděl, ale zpomalují přehrávání! Vím že je to nepravděpodobné ...

Odpověď:

Poté co provedete ./configure, vyeditujte config.h a nahraďte #undef FAST_OSD za #define FAST_OSD. Pak rekompilujte.

Otázka:

Nemohu se dostat do GUI menu. Kliknu pravým tlačítkem, ale nemám přístup k žádné z položek!

Odpověď:

Používáte FVWM? Zkuste následující:

  1. StartSettingsConfigurationBase Configuration

  2. Set Use Applications position hints to Yes

Otázka:

Jak mohu spustit MPlayer na pozadí?

Odpověď:

Použijte:

mplayer volby soubor < /dev/null &

8.4. Potíže s přehráváním

Otázka: Nemohu přijít na příčinu nějakého podivného problému při přehrávání.
Otázka: Jak dostanu titulky do černých okrajů kolem filmu?
Otázka: Jak mohu vybrat audio/titulkové stopy z DVD, OGM, Matroska nebo NUT souboru?
Otázka: Zkouším přehrávat náhodný stream z internetu, ale nedaří se mi to.
Otázka: Stáhnul jsem si film přes P2P síť ale nefunguje!
Otázka: Nedaří se mi přimět titulky, aby se zobrazovaly, pomoc!!
Otázka: Proč MPlayer nefunguje na Fedora Core?
Otázka: MPlayer zhavaruje s hláškou MPlayer interrupted by signal 4 in module: decode_video nebo MPlayer přerušen signálem 4 v modulu: decode_video
Otázka: Když zkouším grabovat z tuneru, funguje to, ale jsou divné barvy. V jiných programech je to OK.
Otázka: Dostávám podivné procentní hodnoty (příliš velké) při přehrávání na notebooku.
Otázka: Synchronizace zvuku a videa se úplně rozpadne když spustím MPlayer jako root na notebooku. Když jej spustím jako uživatel, pracuje normálně.
Otázka: Při přehrávání souboru se začne přehrávání zadrhávat a dostanu následující hlášení: Badly interleaved AVI file detected - switching to -ni mode... nebo Detekován špatně prokládaný AVI soubor – přepínám do režimu -ni...

Otázka:

Nemohu přijít na příčinu nějakého podivného problému při přehrávání.

Odpověď:

Máte zatoulaný soubor codecs.conf v ~/.mplayer/, /etc/, /usr/local/etc/ a podobně? Odstraňte jej, protože zastaralé codecs.conf soubory mohou způsobit obskurní potíže a jsou zamýšleny jen pro použití vývojáři pracujícími na podpoře kodeků. Tento soubor má přednost před vestavěným nastavením kodeků MPlayeru, což způsobí katastrofu, jakmile dojde k nekompatibilním změnám v nových verzích programu. Pokud není používán experty, jedná se jistou cestu do pekel, působící náhodné a těžko odhalitelné pády aplikace a problémy s přehráváním. Pokud jej tedy stále ještě někde máte, ihned se jej zbavte.

Otázka:

Jak dostanu titulky do černých okrajů kolem filmu?

Odpověď:

Použijte video filtr expand pro rozšíření vertikálního rozměru oblasti do které je film renderován a umístěte film do její horní části, například:

mplayer -vf expand=0:-100:0:0 -slang de dvd://1

Otázka:

Jak mohu vybrat audio/titulkové stopy z DVD, OGM, Matroska nebo NUT souboru?

Odpověď:

Musíte použít -aid (ID zvuku) nebo -alang (jazyk zvuku), -sid(ID titulků) nebo -slang (jazyk titulků), například:

mplayer -alang eng -slang eng example.mkv
mplayer -aid 1 -sid 1 example.mkv

Chcete-li vědět jaké jsou k dispozici:

mplayer -vo null -ao null -frames 0 -v filename | grep sid
mplayer -vo null -ao null -frames 0 -v filename | grep aid

Otázka:

Zkouším přehrávat náhodný stream z internetu, ale nedaří se mi to.

Odpověď:

Zkuste přehrávat stream s volbou -playlist.

Otázka:

Stáhnul jsem si film přes P2P síť ale nefunguje!

Odpověď:

Váš soubor je poškozený nebo falešný. Pokud jej máte od kámoše a jemu funguje, zkuste si porovnat md5sum hashe.

Otázka:

Nedaří se mi přimět titulky, aby se zobrazovaly, pomoc!!

Odpověď:

Ujistěte se, že máte správně nainstalovány fonty. Znovu proveďte kroky v části Fonty a OSD sekce instalace. Pokud používáte TrueType fonty, ověřte zda máte nainstalovánu FreeType knihovnu. Další postup zahrnuje prověření vašich titulků v textovém editoru nebo v jiných přehrávačích. Také je zkuste převézt do jiného formátu.

Otázka:

Proč MPlayer nefunguje na Fedora Core?

Odpověď:

Ve Fedoře je špatná spolupráce mezi exec-shieldem, prelinkem a jakoukoli aplikací používající Windows DLL (tak jako MPlayer).

Problém je v tom, že exec-shield znáhodní načítací adresy všech systémových knihoven. Toto znáhodnění nastane v době předlinkování (prelink time)(jednou za dva týdny).

Když se MPlayer pokouší nahrát Windows DLL, chce ji umístit na specifickou adresu (0x400000). Pokud tam ale již je důležitá systémová knihovna, MPlayer zhavaruje. (Typickým projevem je segmentation fault při pokusu o přehrání Windows Media 9 souborů.)

Pokud narazíte na tento problém, máte dvě možnosti:

  • Počkat dva týdny. Možná to bude opět fungovat.

  • Přelinkovat všechny knihovny systému s odlišnými prelink volbami. Zde jsou instrukce krok za krokem:

    1. Vyeditujte /etc/syconfig/prelink a změňte

      PRELINK_OPTS=-mR

      na

      PRELINK_OPTS="-mR --no-exec-shield"

    2. touch /var/lib/misc/prelink.force

    3. /etc/cron.daily/prelink (To přelinkuje všechny aplikace a bude to trvat opravdu dlouho.)

    4. execstack -s /cesta/k/mplayer (Tohle vypne exec-shield pro binárku MPlayeru.)

Otázka:

MPlayer zhavaruje s hláškou

MPlayer interrupted by signal 4 in module: decode_video

nebo

MPlayer přerušen signálem 4 v modulu: decode_video

Odpověď:

Nepoužívejte MPlayer na CPU odlišném než na jakém byl kompilován, nebo jej rekompilujte s detekcí CPU za běhu (./configure --enable-runtime-cpudetection).

Otázka:

Když zkouším grabovat z tuneru, funguje to, ale jsou divné barvy. V jiných programech je to OK.

Odpověď:

Pravděpodobně vaše karta hlásí některé barevné režimy jako podporované, i když je nepodporuje. Zkuste to s YUY2 místo výchozího YV12 (viz sekci TV).

Otázka:

Dostávám podivné procentní hodnoty (příliš velké) při přehrávání na notebooku.

Odpověď:

To je práce power managementu / systému šetřícímu energií vašeho notebooku (BIOS, nikoli jádro). Zapojte konektor vnějšího napájení před zapnutím notebooku. Můžete také zkusit zda vám pomůže cpufreq (rozhraní k SpeedStep pro Linux).

Otázka:

Synchronizace zvuku a videa se úplně rozpadne když spustím MPlayer jako root na notebooku. Když jej spustím jako uživatel, pracuje normálně.

Odpověď:

Toto je opět práce power managementu (viz výš). Zapněte externí napájení před zapnutím notebooku, nebo použijte volbu -nortc.

Otázka:

Při přehrávání souboru se začne přehrávání zadrhávat a dostanu následující hlášení:

Badly interleaved AVI file detected - switching to -ni mode...

nebo

Detekován špatně prokládaný AVI soubor – přepínám do režimu -ni...

Odpověď:

Špatně prokládané soubory a volba -cache nejdou moc dohromady. Zkuste -nocache.

8.5. Potíže video/audio ovaldače (vo/ao)

Otázka: Když přejdu do celoobrazovkového režimu, dostanu pouze černé okraje kolem obrazu bez jeho zvětšení na celou obrazovku.
Otázka: Právě jsem nainstaloval MPlayer. Když chci však otevřít video soubor, nastane fatální chyba: Error opening/initializing the selected video_out (-vo) device. nebo Selhalo otevření/inicializace vybraného video_out (-vo) rozhraní. Jak mohu vyřašit své problémy?
Otázka: Mám problémy s [váš okenní manažer] a celoobrazovkovými xv/xmga/sdl/x11 režimy ...
Otázka: Zvuk se během přehrávání AVI souboru rozejde s videem.
Otázka: Můj počítač přehrává MS DivX AVI s rozlišeními ~ 640x300 a stereo MP3 zvukem příliš pomalu. Když použiji volbu -nosound, vše je v pořádku (jen bez zvuku).
Otázka: Jak mohu použít dmix spolu s MPlayerem?
Otázka: Nemám zvuk při přehrávání videa a dostanu chybovou zprávu podobnou této: AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) audio_setup: Nelze otevřít audio zařízení /dev/dsp: Zařízení nebo rozhraní je již používáno nelze otevřít/inicializovat audio zařízení -> BEZ ZVUKU Audio: bez zvuku!!! Začínám přehrávat...
Otázka: Pokus spustím MPlayer pod KDE, dostanu pouze černou obrazovku a nic se neděje. Asi po minutě se video spustí.
Otázka: Mám problémy s A/V synchronizací. Některé mé AVI hrají dobře, ale některé s dvojnásobnou rychlostí!
Otázka: Když přehrávám tento soubor, rozjede se mi zvuk s obrazem a/nebo MPlayer havaruje s hláškou: DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer! nebo DEMUXER: Příliš mnoho (945 v 8390980 bytech) video paketů ve vyrovnávací paměti!
Otázka: Jak se zbavím A/V desynchronizace při převíjení v RealMedia proudech?

Otázka:

Když přejdu do celoobrazovkového režimu, dostanu pouze černé okraje kolem obrazu bez jeho zvětšení na celou obrazovku.

Odpověď:

Vaše výstupní video rozhraní nepodporuje hardwarové škálování a protože softwarové škálování může být neskutečně pomalé, nezapíná jej MPlayer automaticky. Pravděpodobně používáte rozhraní x11 místo xv. Zkuste přidat -vo xv do příkazového řádku, nebo si najděte v sekci video alternativní video výstupní rozhraní. Volba -zoom explicitně zapne softwarové škálování.

Otázka:

Právě jsem nainstaloval MPlayer. Když chci však otevřít video soubor, nastane fatální chyba:

Error opening/initializing the selected video_out (-vo) device.

nebo

Selhalo otevření/inicializace vybraného video_out (-vo) rozhraní.

Jak mohu vyřašit své problémy?

Odpověď:

Změňte své video výstupní zařízení. Spusťte následující příkaz, abyste dostali seznam dostupných video rozhraní:

mplayer -vo help

Jakmile jste si vybrali správné video výstupní rozhraní, přidejte jej do svého konfiguračního souboru. Přidejte

vo = vybraný_vo

do ~/.mplayer/config a/nebo

vo_driver = vybraný_vo

do ~/.mplayer/gui.conf.

Otázka:

Mám problémy s [váš okenní manažer] a celoobrazovkovými xv/xmga/sdl/x11 režimy ...

Odpověď:

Přečtěte si postup hlášení chyb a pošlete nám správné hlášení chyby. Rovněž zkuste experimentovat s volbou -fstype.

Otázka:

Zvuk se během přehrávání AVI souboru rozejde s videem.

Odpověď:

Zkuste volbu -bps nebo -nobps. Pokud se to nezlepší, přečtěte si postup hlášení chyb a nahrejte soubor na FTP.

Otázka:

Můj počítač přehrává MS DivX AVI s rozlišeními ~ 640x300 a stereo MP3 zvukem příliš pomalu. Když použiji volbu -nosound, vše je v pořádku (jen bez zvuku).

Odpověď:

Váš počítač je příliš pomalý, nebo máte vadný ovladač zvukové karty. Prostudujte si dokumentaci, abyste zjistili, zda nemůžete zvýšit výkon.

Otázka:

Jak mohu použít dmix spolu s MPlayerem?

Odpověď:

Poté co nastavíte asoundrc musíte použít -ao alsa:device=dmix.

Otázka:

Nemám zvuk při přehrávání videa a dostanu chybovou zprávu podobnou této:

AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian)
audio_setup: Nelze otevřít audio zařízení /dev/dsp: Zařízení nebo rozhraní je již používáno
nelze otevřít/inicializovat audio zařízení -> BEZ ZVUKU
Audio: bez zvuku!!!
Začínám přehrávat...

Odpověď:

Máte spuštěno KDE nebo GNOME s aRts nebo ESD zvukovým démonem? Zkuste zakázat zvukový démon, nebo použijte volbu -ao arts nebo -ao esd, aby MPlayer použil aRts nebo ESD. Možná provozujete ALSA bez OSS emulace, zkuste nahrát jaderné moduly pro ALSA OSS, nebo nařiďte použití výstupního rozhraní ALSA přidáním volby -ao alsa do příkazového řádku.

Otázka:

Pokus spustím MPlayer pod KDE, dostanu pouze černou obrazovku a nic se neděje. Asi po minutě se video spustí.

Odpověď:

Zvukový démon KDE aRts blokuje zvukové zařízení. Buď čekejte až se video spustí, nebo zakažte démona aRts v ovládacím centru. Chcete-li použít aRts zvuk, nastavte výstup zvuku přes naše nativní aRts zvukové rozhraní (-ao arts). Pokud selže, nebo není zakompilováno, zjuste SDL (-ao sdl). Ujistěte se však, že vaše SDL umí pracovat s aRts zvukem. Další možností je spustit MPlayer s artsdsp.

Otázka:

Mám problémy s A/V synchronizací. Některé mé AVI hrají dobře, ale některé s dvojnásobnou rychlostí!

Odpověď:

Máte vadnou zvukovou kartu nebo její ovladač. Nejspíš je pevně nastavena na 44100Hz a vy se pokoušíte přehrát soubor s 22050Hz zvukem. Zkuste zvukový filtr resample.

Otázka:

Když přehrávám tento soubor, rozjede se mi zvuk s obrazem a/nebo MPlayer havaruje s hláškou:

DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!

nebo

DEMUXER: Příliš mnoho (945 v 8390980 bytech) video paketů ve vyrovnávací paměti!

Odpověď:

To může mít několik příčin.

  • Váš CPU a/nebo video karta a/nebo sběrnice je příliš pomalá. MPlayer v tom případě vypíše hlášku (a počet zahozených snímků rychle narůstá).

  • Pokud je to AVI, možná je špatně prokládané. Zkuste to obejít volbou -ni. Nebo může mít špatnou hlavičku, v tom případě může pomoci -nobps a/nebo -mc 0.

  • Mnoho FLV souborů bude správně hrát s -correct-pts. Naneštěstí MEncoder takovou volbu nemá, ale můžete zkusit nastavit -fps na zprávnou hodnotu ručně, pokud ji znáte.

  • Ovladač vaší zvukové karty je vadný.

Otázka:

Jak se zbavím A/V desynchronizace při převíjení v RealMedia proudech?

Odpověď:

-mc 0.1 může pomoci.

8.6. Přehrávání DVD

Otázka: Což takhle DVD navigace/nabídky?
Otázka: Nepřehraji žádná současná DVD od Sony Pictures/BMG.
Otázka: Co takhle titulky? Umí je MPlayer zobrazovat?
Otázka: Jak nastavím kód regionu na mé DVD mechanice? Nemám Windows!
Otázka: Nemohu přehrát DVD, MPlayer skončí nebo vypíše chyby "Encrypted VOB file!".
Otázka: Musím být (setuid) root, abych mohl(a) přehrávat DVD?
Otázka: Je možné přehrát/enkódovat pouze vybrané kapitoly?
Otázka: Přehrávání DVD je zdlouhavé!
Otázka: Zkopíroval(a) jsem DVD pomocí vobcopy. Jak jej mohu přehrát/enkódovat z harddisku?

Otázka:

Což takhle DVD navigace/nabídky?

Odpověď:

MPlayer nepodporuje DVD nabídky díky závažným omezením svého návrhu znemožňujícím správné nakládání se stabilními obrázky a interaktivním obsahem. Pokud chcete mít své oblíbené nabídky (menu), budete muset použít jiný přehrávač jako xine, vlc nebo Ogle. Pokud chcete mít DVD navigaci v MPlayeru, musíte si ji naprogramovat, ale uvědomte si, že to bude velká akce.

Otázka:

Nepřehraji žádná současná DVD od Sony Pictures/BMG.

Odpověď:

To je normální; byli jste podfouknuti a prodali vám uměle defektní disk. Jediný způsob, jak přehrávat tato DVD je obcházet špatné bloky na disku použitím DVDnav místo mpdvdkit2. Toho lze dosáhnout kompilací MPlayeru s podporou DVDnav a následně záměnou dvd:// za dvdnav:// na příkazovém řádku. DVDnav se zatím vzájemně vylučuje s mpdvdkit2, takže musíte configure skriptu předat volbu --disable-mpdvdkit.

Otázka:

Co takhle titulky? Umí je MPlayer zobrazovat?

Odpověď:

Ano. Viz kapitola DVD.

Otázka:

Jak nastavím kód regionu na mé DVD mechanice? Nemám Windows!

Odpověď:

Použijte nástroj regionset.

Otázka:

Nemohu přehrát DVD, MPlayer skončí nebo vypíše chyby "Encrypted VOB file!".

Odpověď:

CSS dešifrovací kód nepracuje s některými DVD mechanikami, pokud správně nenastavíte kód regionu. Viz odpověď na předchozí otázku.

Otázka:

Musím být (setuid) root, abych mohl(a) přehrávat DVD?

Odpověď:

Ne. Ačkoli musíte mít příslušná práva k souboru DVD zařízení (v /dev/).

Otázka:

Je možné přehrát/enkódovat pouze vybrané kapitoly?

Odpověď:

Ano, vyzkoušejte volbu -chapter.

Otázka:

Přehrávání DVD je zdlouhavé!

Odpověď:

Použijte volbu -cache (popsanou v man stránce) a zkuste zapnout DMA pro DVD mechaniku pomocí nástroje hdparm (popsaného v CD kapitole).

Otázka:

Zkopíroval(a) jsem DVD pomocí vobcopy. Jak jej mohu přehrát/enkódovat z harddisku?

Odpověď:

Použijte volbu -dvd-device pro nastavení adresáře, které obsahují soubory:

mplayer dvd://1 -dvd-device /cesta/do/adresáře

8.7. Požadavky na vlastnosti

Otázka: Pokud je MPlayer v pauze a já se pokusím převíjet, nebo stisknu jakoukoli klávesu, MPlayer se odpauzuje. Rád(a) bych převíjel(a) film v pauze.
Otázka: Rád(a) bych převíjel(a) o +/- 1 snímek místo o 10 sekund.

Otázka:

Pokud je MPlayer v pauze a já se pokusím převíjet, nebo stisknu jakoukoli klávesu, MPlayer se odpauzuje. Rád(a) bych převíjel(a) film v pauze.

Odpověď:

Je velmi choulostivé zavést tuto vlastnost bez ztráty A/V synchronizace. Všechny pokusy zatím selhaly, ale patche jsou vítány.

Otázka:

Rád(a) bych převíjel(a) o +/- 1 snímek místo o 10 sekund.

Odpověď:

Můžete se posunout o jedno pole vpřed stiskem .. Pokud není film pauzován, zapauzuje se pak (detaily viz man stránka). Krokování zpět pravděpodobně nebude v dohledné době implementováno.

8.8. Enkódování

Otázka: Jak mohu enkódovat?
Otázka: Jak mohu "nahrát" celý DVD titul do souboru?
Otázka: Jak vytvořím (S)VCD automaticky?
Otázka: Jak vytvořím (S)VCD?
Otázka: Jak spojím dva video soubory?
Otázka: Jak mohu opravit AVI soubory s vadným indexem nebo prokládáním?
Otázka: Jak mohu opravit poměr stran videa v AVI souboru?
Otázka: Jak mohu zálohovat a enkódovat VOB soubor s poškozeným začátkem?
Otázka: Nemohu zakódovat DVD titulky do AVI!
Otázka: Jak mohu enkódovat pouze některé kapitoly z DVD?
Otázka: Zkouším pracovat s 2GB+ soubory na souborovém systému VFAT. Bude to fungovat?
Otázka: Co znamenají čísla na stavovém řádku během enkódování?
Otázka: Jakto že je doporučený datový tok vypisovaný MEncoderem záporný?
Otázka: Nemohu kompilovat ASF soubor do AVI/MPEG-4 (DivX) protože používá 1000 fps.
Otázka: Jak vložím titulky do výstupního souboru?
Otázka: Jak zakóduji pouze zvuk z hudebního videa?
Otázka: Proč přehrávače třetích stran selhávají při přehrávání MPEG-4 filmů enkódovaných MEncoderem pozdější verze než 1.0pre7?
Otázka: Jak mohu enkódovat soubor jen se zvukem?
Otázka: Jak mohu přehrát titulky zabudované v AVI?
Otázka: MPlayer neumí...

Otázka:

Jak mohu enkódovat?

Odpověď:

Přečtěte si sekci MEncoder.

Otázka:

Jak mohu "nahrát" celý DVD titul do souboru?

Odpověď:

Jakmile jste vybrali svůj titul a ujistili se, že jej lze dobře přehrát MPlayerem, použijte volbu -dumpstream. Například:

mplayer dvd://5 -dumpstream -dumpfile dvd_dump.vob

nahraje 5. titul z DVD do souboru dvd_dump.vob

Otázka:

Jak vytvořím (S)VCD automaticky?

Odpověď:

Zkuste skript mencvcd.sh z podadresáře TOOLS. Pomocí něj můžete enkódovat DVD nebo jiné filmy do VCD nebo SVCD formátu a dokonce je vypálit přímo na CD.

Otázka:

Jak vytvořím (S)VCD?

Odpověď:

Novější verze MEncoderu umí přímo generovat MPEG-2 soubory, které mohou být použity jako základ pro vytvoření VCD nebo SVCD a měly by být přehratelné jak jsou na všech platformách (například pro sdílení videa z digitálního kamkodéru se svými počítačově negramotnými přáteli). Více informací naleznete v sekci Použití MEncoderu pro vytvoření VCD/SVCD/DVD-kompatibilních souborů.

Otázka:

Jak spojím dva video soubory?

Odpověď:

MPEGy mohou být spojeny do jediného souboru s trochou štěstí přímo. Pro AVI soubory můžete využít podporu pro více souborů v MEncoderu takto:

mencoder -ovc copy -oac copy -o výstupní.avi soubor1.avi soubor2.avi

To však bude pracovat pouze tehdy, mají-li soubory stejné rozlišení a používají stejný kodek. Také můžete zkusit avidemux a avimerge (součást sady nástrojů transcode).

Otázka:

Jak mohu opravit AVI soubory s vadným indexem nebo prokládáním?

Odpověď:

Abyste se zbavili nutnosti používat -idx pro zprovoznění převíjení v AVI souborech s vadným indexem nebo -ni pro přehrávání špatně prokládaných souborů, použijte příkaz

mencoder vstupní.avi -idx -ovc copy -oac copy -o výstupní.avi

který zkopíruje video a audio proudy do nového AVI souboru, přičenž vygeneruje správný index a správně uloží data (opraví proklad). Tento způsob samozřejmě nedokáže odstranit chyby ve video a/nebo audio proudech.

Otázka:

Jak mohu opravit poměr stran videa v AVI souboru?

Odpověď:

Poměr stran lze opravit díky volbě MEncoderu -force-avi-aspect, která přepíše poměr stran uložený v AVI OpenDML vprp hlavičce. Například:

mencoder vstupní.avi -ovc copy -oac copy -o výstupní.avi -force-avi-aspect 4/3

Otázka:

Jak mohu zálohovat a enkódovat VOB soubor s poškozeným začátkem?

Odpověď:

Hlavní problém, když chcete enkódovat VOB soubor, který je poškozen [3], je to, že bude velmi těžké získat enkódovaný soubor s perfektní A/V synchronizací. Jedna z možností je vystřihnout poškozenou část a enkódovat jen čistou část. Nejdřív musíte zjistit, kde čistá část začíná:

mplayer input.vob -sb nb_of_bytes_to_skip

Pak můžete vytvořit nový soubor obsahující pouze bezchybnou část:

dd if=input.vob of=output_cut.vob skip=1 ibs=nb_of_bytes_to_skip

Otázka:

Nemohu zakódovat DVD titulky do AVI!

Odpověď:

Musíte správně nastavit volbu -sid.

Otázka:

Jak mohu enkódovat pouze některé kapitoly z DVD?

Odpověď:

Použijte správně volbu -chapter, jako: -chapter 5-7.

Otázka:

Zkouším pracovat s 2GB+ soubory na souborovém systému VFAT. Bude to fungovat?

Odpověď:

Ne, VFAT nepodporuje 2GB+ soubory.

Otázka:

Co znamenají čísla na stavovém řádku během enkódování?

Odpověď:

Příklad:

Pos: 264.5s   6612f ( 2%)  7.12fps Trem: 576min 2856mb  A-V:0.065 [2126:192]

Pos: 264.5s

časová značka (pozice) v enkódovaném proudu

6612f

počet dokončených video snímků

( 2%)

enkódovaná část vstupního proudu

7.12fps

rychlost enkódování

Trem: 576min

odhadovaný čas potřebný pro dokončení enkódování

2856mb

odhadovaná velikost výsledného souboru

A-V:0.065

aktuální odchylka datových proudů zvuku a videa

[2126:192]

průměrný datový tok videa (v Mb/s) a průměrný datový tok zvuku (v Mb/s)

Otázka:

Jakto že je doporučený datový tok vypisovaný MEncoderem záporný?

Odpověď:

Protože datový tok při kterém enkódujete audio je příliš velký, aby se film vešel na jakékoli CD. Ověřte si, že máte dobře nainstalovaný libmp3lame.

Otázka:

Nemohu kompilovat ASF soubor do AVI/MPEG-4 (DivX) protože používá 1000 fps.

Odpověď:

Protože ASF používá variabilní snímkovou rychlost zatímco AVI pevnou, musíte ji nastavit ručně pomocí volby -ofps.

Otázka:

Jak vložím titulky do výstupního souboru?

Odpověď:

Jen přidejte volbu -sub <soubor> (nebo obdobně volbu -sid) do příkazového řádku MEncoderu.

Otázka:

Jak zakóduji pouze zvuk z hudebního videa?

Odpověď:

Přímo to není možné, ale můžete zkusit toto (všimněte si & na konci příkazu mplayer):

mkfifo encode
mplayer -ao pcm -aofile encode dvd://1 &
lame your_opts encode music.mp3
rm encode

Toto vám umožňuje použít jakýkoli enkodér, ne jen LAME, jen zaměňte lame svým oblíbeným enkodérem zvuku v příkazu výše.

Otázka:

Proč přehrávače třetích stran selhávají při přehrávání MPEG-4 filmů enkódovaných MEncoderem pozdější verze než 1.0pre7?

Odpověď:

libavcodec, nativní knihovna pro enkódování MPEG-4, obvykle přibalovaná k MEncoderu, nastavovala FourCC na 'DIVX' při enkódování MPEG-4 videí (FourCC je AVI značka pro identifikaci software použitého k enkódování a zamýšleného software k použití pro dekódování videa). To vede mnoho lidí k názoru, že libavcodec byla enkódovací knihovna DivX, zatímco ve skutečnosti je to zcela odlišná knihovna pro enkódování MPEG-4, která tento standard implementuje mnohem lépe, než DivX. Takže je novým výchozím FourCC používaným knihovnou libavcodec 'FMP4', ale toto chování můžete změnit použitím volby -ffourcc v MEncoderu. Rovněž můžete změnit FourCC existujících souborů stejným způsobem:

mencoder vstupní.avi -o výstupní.avi -ffourcc XVID

Poznamenejme, že takto nastavíte FourCC na XVID spíše než DIVX. Toto doporučujeme, protože DIVX FourCC znamená DivX4, což je velmi jednoduchý MPEG-4 kodek, zatímco jak DX50, tak XVID jsou plnohodnotné MPEG-4 (ASP). Takže pokud nastavíte FourCC na DIVX, nekteré špatné softwarové nebo hardwarové přehrávače si mohou vylámat zuby na pokročilýchvlastnostech, které libavcodec podporuje, ale DivX nikoli; naproti tomu je Xvid blíže libavcodecu z hlediska funkčnosti a je podporován všemi dobrými přehrávači.

Otázka:

Jak mohu enkódovat soubor jen se zvukem?

Odpověď:

Použijte aconvert.sh z podadresáře TOOLS ve zdrojových kódech MPlayeru.

Otázka:

Jak mohu přehrát titulky zabudované v AVI?

Odpověď:

Použijte avisubdump.c z podadresáře TOOLS, nebo si přečtěte tento dokument o extrakci/demultiplexování titulků zabudovaných v OpenDML AVI souborech.

Otázka:

MPlayer neumí...

Odpověď:

Proberte se podadresářem TOOLS, ve kterém naleznete řadu skriptů a udělátek. Dokumentaci k nim naleznete v souboru TOOLS/README.



[3] Navíc některé formy ochrany proti kopírování používané na DVD mohou být považovány za poškození obsahu.

Příloha A. Jak hlásit chyby

Dobrá hlášení chyb jsou velmi cenným příspěvkem do vývoje jakéhokoli softwarového projektu. Ale je to s nimi jako se psaním dobrého programu, sepsání dobrého hlášení problému vyžaduje trochu práce. Prosím berte na vědomí, že většina vývojářů je velmi zaneprázdněna a dostává kvanta e-mailů. Takže ačkoli je vaše zpětná vazba kritická pro vylepšování MPlayeru a velmi ceněná, prosíme pochopte, že musíte poskytnout veškeré informace které požadujeme a postupovat přesně podle instrukcí v tomto dokumentu.

A.1. Hlášení bezpečnostních chyb

V případě že jste nalezli exploitovatelnou chybu, chtěli byste udělat správnou věc a nechali nás ji opravit než ji odhalíte, budeme rádi, když nám pošlete bezpečnostní hlášení na security@mplayerhq.hu. Do hlavičky prosíme přidejte [SECURITY] nebo [ADVISORY]. Ujistěte se, že vaše hlášení obsahuje úplnou a podrobnou analýzu chyby. Zaslání opravy je velice žádoucí. Prosíme neodkládejte hlášení do doby než vytvoříte 'dokazovací' exploit, ten nám můžete zaslat dalším mailem.

A.2. Jak napravovat chyby

Pokud si myslíte, že máte potřebné schopnosti, pak vás vybízíme abyste opravil(a) chybu samostatně. Nebo jste to již udělal(a)? Přečtěte si prosím tento krátký dokument, abyste se dozvěděli jak zahrnout váš kód do MPlayeru. Lidé z konference MPlayer-dev-eng vám pomohou, pokud budete mít otázky.

A.3. Jak provádět regresní testování pomocí Subversion

Občas nastane problém typu 'předtím to fungovalo, teď už ne...'. Zde přinášíme postup krok za krokem, jak vyhledat, kdy problém nastal. Toto není určeno příležitostným uživatelům.

Nejprve si musíte opatřit zdrojové kódy MPlayeru ze Subversion. Instrukce lze nalést v sekci Subversion stránky download.

Tak dostanete v adresáři mplayer/ obraz Subversion stromu na straně klienta. Nyní aktualizujte tento obraz k datu, které chcete:

cd mplayer/
svn update -r {"2004-08-23"}

Formát data je YYYY-MM-DD HH:MM:SS. Požití tohoto datového formátu zajišťuje, že budete schopni extrahovat patche podle data, kdy byly zapsány (commit) stejně, jak jsou v MPlayer-cvslog archivu.

A teď proveďte sestavení jako při normální aktualizaci:

./configure
make

Pokud to čte nějaký neprogramátor, nejrychlejší metodou, jak se dostat k bodu, kde problém nastal, je použití binárního vyhledávání – to je vyhledávání data poruchy opakovaným dělením vyhledávacího intervalu napůl. Například pokud problém nastal v 2003, začneme v polovině roku a ptáme se, „Už je tu problém?“. Pokud ano, vraťte se na prvního dubna; pokud ne, běžte na prvního října a tak dále.

Pokud máte spoustu místa na disku (plná kompilace obvykle zabírá 100 MB a kolem 300–350 MB, pokud jsou zapnuty debugovací symboly), zkopírujte nejstarší známou funkční verzi před jejím updatem; to vám ušetří čas, pokud se budete vracet. (Obvykla je nutné spustit 'make distclean' před rekompilací starší verze, takže pokud si neuděláte záložní kopii originálního zdrojového stromu, budete v něm muset rekompilovat vše, až se vrátíte do současnosti.)

Pokud jste našli den, kdy k problému došlo, pokračujte v hledání pomocí archivu mplayer-cvslog (řazeného podle data) a preciznějším cvs update s uvedením hodiny, minuty a sekundy:

cvs update -PAd -D "2004-08-23 15:17:25"

To vám umožní lehce najít patch, který problém způsobil.

Pokud jste našli patch, který je příčinou problému, máte téměř vyhráno; ohlaste to do MPlayer Bugzilly nebo se přihlaste do MPlayer-users a pošlete to tam. Je šance, že autor navrhne opravu. Rovněž si můžete patch rozpitvat, dokud z něj nevytlučete, kde je chyba :-).

A.4. Jak oznamovat chyby

Nejprve, prosím, vyzkoušejte poslední Subversion verzi MPlayeru, jelikož vaše chyba již mohla být odstraněna. Vývoj je velmi rychlý, většina chyb v oficiálních balíčcích je nahlášena během několika dnů, nebo dokonce hodin, takže prosím používejte pouze Subversion pro hlášení chyb. To zahrnuje binární balíčky MPlayeru. Subversion instrukce naleznete na konci této stránky, nebo v souboru README. Pokud to nepomůže, prostudujte si prosím seznam známých chyb a zbytek dokumentace. Pokud je váš problém neznámý nebo jej nelze řešit pomocí našich instrukcí pak jej nahlaste jako chybu.

Prosíme, neposílejte hlášení chyb soukromě jednotlivým vývojářům. Toto je týmová práce a proto se o ně může zajímat více lidí. Čas od času měli ostatní uživatelé stejný problém a vědí jak jej obejít, dokonce i když se jedná o chybu v kódu MPlayeru.

Prosíme popište svůj problém tak podrobně, jak je to jen možné. Proveďte malé pátrání po okolnostech za kterých problém nastává. Projevuje se ta chyba jen v určitých situacích? Je vlastní určitým souborům nebo typům souborů? Stává se pouze s jedním kodekem, nebo je nezávislá na použitém kodeku? Dokážete ji zopakovat se všemi výstupními rozhraními nebo ovladači? Čím více nám poskytnete informací, tím je větší šance na odstranění problému. Nezapomeňte také připojit hodnotné informace požadované níže, jinak nebudeme schopni stanovit příčinu problému.

Skvělá, dobře napsaná příručka jak se ptát ve veřejných konferencích je How To Ask Questions The Smart Way od Erica S. Raymonda. Další příručka je How to Report Bugs Effectively od Simona Tathama. Pokud budete postupovat podle těchto rad, jistě se vám dostane pomoci. Pochopte však, že my všichni sledujeme konference dobrovolně ve svém volném čase. Máme mnoho práce a nemůžeme vám zaručit že vyřešíme váš problém nebo že vůbec dostanete odpověď.

A.5. Kam hlásit chyby

Přihlaste se do e-mailové konference MPlayer-users: http://lists.mplayerhq.hu/mailman/listinfo/mplayer-users a pošlete své hlášení o chybách na adresu mailto:mplayer-users@mplayerhq.hu kde o tom můžeme diskutovat.

Pokud chcete, můžete místo toho použít zbrusu novou Bugzillu.

Jazykem konference je Angličtina. Zachovávejte prosím Pravidla Netikety a neposílejte HTML mail do žádné z našich konferencí. Jinak můžete být ignorováni nebo vyhozeni. Pokud nevíte co je to HTML mail, nebo proč je tak zatracován, přečtěte si tento výborný dokument. Zde se dovíte detaily včetně instrukcí pro vypnutí HTML. Poznamenejme též, že nebudeme individuálně dělat CC (kopie) lidem, takže je dobré se přihlásit, abyste obdrželi svou odpověď.

A.6. Co nahlásit

Bude potřeba připojit log, konfiguraci nebo vzorky souborů ke svému hlášení chyb. Pokud jsou některé z nich opravdu velké, pak je raději nahrajte na náš HTTP server v komprimovaném formátu (preferujeme gzip a bzip2) a do zprávy zahrňte pouze cestu a název souboru. Naše konference mají limit velikosti zprávy 80k, pokud máte něco většího, musíte to zkomprimovat a nahrát na FTP.

A.6.1. Systémové informace

  • Vaše Linuxová distribuce nebo operační systém a jeho verze jako:

    • Red Hat 7.1

    • Slackware 7.0 + devel packs from 7.1 ...

  • verze jádra:

    uname -a

  • verze libc:

    ls -l /lib/libc[.-]*

  • verze gcc a ld:

    gcc -v
    ld -v

  • verze binutils:

    as --version

  • Pokud máte problémy s celoobrazovkovým režimem:

    • Druh Window manageru a jeho verze

  • Pokud máte problémy s XVIDIX:

    • Hloubka barev v X:

      xdpyinfo | grep "depth of root"

  • Pokud je chybné pouze GUI:

    • verze GTK

    • verze GLIB

    • GUI situace kdy se chyba projevila

A.6.2. Hardware a rozhraní (ovladače)

  • CPU info (to funguje pouze v Linuxu):

    cat /proc/cpuinfo

  • Výrobce a model videokarty, např:

    • ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM

    • Matrox G400 DH 32MB SGRAM

  • Typ video ovladače a jeho verze, např.:

    • vestavěný ovladač z X

    • nVidia 0.9.623

    • Utah-GLX CVS 2001-02-17

    • DRI z X 4.0.3

  • Typ zvukové karty a ovladač, např.:

    • Creative SBLive! Gold s OSS ovladačem od oss.creative.com

    • Creative SB16 s OSS ovladači z jádra

    • GUS PnP s ALSA OSS emulací

  • Pokud si nejste jisti a používáte systém Linux, přidejte výstup z lspci -vv.

A.6.3. Problémy s konfigurací

Pokud nastanou chyby během běhu ./configure, nebo selže autodetekce něčeho, prostudujte config.log. Možná naleznete odpověď zde. Například několik verzí stejné knihovny v systému, nebo jste zapomněli nainstalovat vývojový (devel) balíček (to jsou ty s koncovkou -dev). Pokud si myslíte, že je zde chyba, přidejte config.log do svého hlášení.

A.6.4. Problémy s kompilací

Zahrňte prosím tyto soubory:

  • config.h

  • config.mak

A.6.5. Problémy s přehráváním

Zahrňte prosíme výstup MPlayeru v upovídaném režimu úrovně 1 ale dejte pozor, abyste jej nezkrátili při kopírování do mailu. Vývojáři potřebují všechny zprávy pro dobrou diagnózu problému. Takto můžete přesměrovat výstup do souboru:

mplayer -v volby film > mplayer.log 2>&1

Pokud se problém vztahuje k jednomu nebo více souborům, pak prosím nahrajte potížisty na: http://streams.videolan.org/upload/

Rovněž zde nahrajte malý textový soubor se stejným základním jménem a příponou .txt. Popište problém který máte s daným souborem a připojte svůj e-mail a také výstup MPlayeru v upovídaném režimu úrovně 1. Pro reprodukci problému stačí obvykle prvních 1-5 MB souboru, ale pro jistotu vás žádáme o:

dd if=váš_soubor of=malý_soubor bs=1024k count=5

To vezme prvních pět megabajtů 'vašeho_souboru' a zapíše je do 'malého_souboru'. Pak znovu zkuste tento malý vzorek a pokud se na něm chyba projeví, pak je tento vzorek pro nás dostatečný. Prosíme nikdy neposílejte tyto soubory e-mailem! Nahrajte je na FTP a pošlete pouze cestu/název_souboru daného souboru na FTP serveru. Pokud je soubor přístupný na internetu, pak stačí poslat přesnou adresu URL.

A.6.6. Pády

Musíte spustit MPlayer z gdb a poslat nám úplný výstup nebo pokud máte core dump z pádu, můžete nám vyextrahovat užitečné informace ze souboru Core. Jak to udělat:

A.6.6.1. Jak uchovat informace o zopakovatelném pádu

Překompilujte MPlayer se zapnutým debugovacím kódem:

./configure --enable-debug=3
make

a spusťte MPlayer z gdb pomocí:

gdb ./mplayer

Nyní jste v gdb. Zadejte:

run -v volby-pro-mplayer soubor

a zopakujte pád. Jakmile to dokážete, vrátí se gdb do režimu příkazového řádku, kde musíte zadat

bt
disass $pc-32,$pc+32
info all-registers

A.6.6.2. Jak získat smysluplné informace z core dump

Vytvořte následující příkazový řádek:

bt
disass $pc-32,$pc+32
info all-registers

Pak jednoduše spusťte tento příkaz:

gdb mplayer --core=core -batch --command=příkazový_soubor > mplayer.bug

A.7. Vím co dělám...

Pokud jste vytvořili příkladné hlášení chyby pomocí výšeuvedených kroků a jste si jisti, že chyba je v MPlayeru, nikoli v kompilátoru nebo poškozený soubor, již jste si přečetli dokumentaci, ale nenalezli řešení, vaše ovladače zvuku jsou OK, pak byste se měli přihlásit do konference MPlayer-advusers a poslat hlášení chyb zde, abyste dostali lepší a rychlejší odpověď.

Mějte na paměti, že pokud zde pošlete nováčkovské otázky nebo otázky zodpovězené v manuálu, budete ignorováni nebo peskováni, místo abyste dostali vhodnou odpověď. Takže nám nenadávejte a přihlaste se do -advusers pouze pokud opravdu víte co děláte a cítíte se být pokročilým uživatelem MPlayeru, nebo vývojářem. Pokud splňujete tato kritéria, nebude pro vás těžké se přihlásit...

Příloha B. Formát skinů MPlayeru

B.1. Přehled

Nemá to sice nic společného s formátem skinu, ale měli byste vědět, že MPlayer nemá vestavěný skin, takže si musíte alespoň jeden skin nainstalovat, chcete-li používat GUI.

B.1.1. Adresáře

Adresáře prohledávané na skiny jsou (v tomto pořadí):

  1. $(DATADIR)/skins/

  2. $(PREFIX)/share/mplayer/skins/

  3. ~/.mplayer/skins/

Poznamenejme, že první z cest se může lišit podle toho, jak je MPlayer zkonfigurován (viz volby configure skriptu --prefix a --datadir).

Každý skin je instalován do vlastního adresáře v některém z výše uvedených. Například:

$(PREFIX)/share/mplayer/skins/default/

B.1.2. Formáty obrázků

Obrázky musí být truecolor (24 nebo 32 bpp) PNG.

V hlavním okně a v přehrávači (viz níž) můžete použít obrázky s 'průhledností': Oblasti vyplněné barvou #FF00FF (magenta) jsou plně průhledné, pokud jsou zobrazovány MPlayerem. To znamená, že můžete mít tvarovaná okna, pokud má váš X server XShape rozšíření.

B.1.3. Součásti skinu

Skiny mají poměrně volný formát (narozdíl například od pevného formátu skinů Winampu/XMMS), takže je jen na vás, zda vytvoříte něco skvělého.

V současnosti jsou zde čtyři okna, která můžete dekorovat: hlavní okno, podokno, ovládací panel a nabidka (tu lze aktivovat pravým myšítkem).

  • MPlayer je ovládán v hlavním okně a/nebo v ovládacím panelu. Pozadím okna je obrázek. Následující součásti mohou (a musí) být umístěny v okně: tlačítka, potenciometry (šoupátka) a popisky. Každé součásti musíte nastavit pozici a velikost.

    A tlačítko má tři stavy (stisknuto, puštěno a zakázáno), proto musí být jeho obraz svisle rozdělen do tří částí. Detaily viz součást tlačítko.

    A potenciometr (hlavně používaný pro lištu převíjení a ovládání hlasitosti/stereováhy) může mít libovolný počet fází dělících jeho obraz na jednotlivé části pod sebou. Detaily viz hpotenciometr.

    Popisky jsou poněkud zvláštní: Znaky potřebné pro jejich vykreslení jsou brány z obrazového souboru a znaky v obrázku jsou popsány souborem popisu fontu. Tento (druhý) soubor je prostý textový soubor, který popisuje pozici x,y a velikost každého znaku v obrázku (obrázkový soubor a soubor popisu fontu spolu tvoří font). Detaily viz dlabel.

    Poznámka

    Všechny obrázky mohou mít plnou průhlednost, jak je popsána v sekci o formátech obrázků. Pokud X server nepodporuje rozšíření XShape, budou průhledné části černé. Pokud byste chtěli využít tuto vlastnost, musí být šířka pozadí hlavního okna celočíselně dělitelná 8.

  • Podokno je to okno, kde se zobrazuje film. Může v něm být zobrazen určený obrázek, pokud není načten žádný film (je docela únavné, pokud zde není nic :-)). Poznámka: průhlednost zde není povolena.

  • Nabídka je jen způsob, jak ovládat MPlayer položkami menu. Vyžadovány jsou dva obrázky: jeden z nich jako menu v normálním stavu a druhý se zvýrazněnými položkami. Když pak vyvoláte menu, je zobrazen první obrázek. Při pohybu myší přes položky, je zkopírována aktuálně vybraná položka z druhého obrázku přes ten první pod kursorem (druhý obrázek není nikdy zobrazen celý).

    Položka menu je definována svou pozicí a velikostí v obrázku (detaily viz sekce nabídka).

Jednu důležitou věc jsme ještě nezmínili: Mají-li tlačítka, potenciometry a položky menu pracovat, musí MPlayer vědět, co má udělat, pokud je na ně kliknuto. To je zajištěno pomocí zpráv (událostí). Pro tyto členy tedy musíte definovat zprávy, které budou při kliku generovány.

B.1.4. Soubory

Pro výrobu skinu budete potřebovat následující:

  • Konfigurační soubor jménem skin řekne MPlayeru, jak má dát jednotlivé části skinu dohromady a co udělat, kliknete-li někde v okně.

  • Obrázek pozadí hlavního okna.

  • Obrázky položek hlavního okna (včetně jednoho nebo více souborů s popisem fontu pro vykreslování popisek).

  • Obrázek pro zobrazení v podokně (volitelný).

  • Dva obrázky pro nabídku (ty jsou potřeba pouze pokud chcete vytvořit menu).

S výjimkou konfiguračního souboru skinu si můžete pojmenovat ostatní soubory jak chcete (s tím, že vaše soubory s popisem fontu budou mít příponu .fnt).

B.2. Soubor skin

Jak jsme již řekli, je to konfigurační soubor skinu. Soubor je řádkově orientován; řádky s komentářem začínají znakem ';' (před ním jsou povoleny jen mezery a tabulátory).

Soubor je složen ze sekcí. Každá sekce popisuje skin pro aplikaci a má následující formu:

section = název cekce
.
.
.
end

Zatím máme jen jednu aplikaci, takže potřebujete jen jednu sekci: její název je movieplayer.

Uvnitř sekce je každé okno posáno blokem, který má následující formu:

window = název okna
.
.
.
end

kde název okna může být jeden z těchto řetězců:

  • main - pro hlavní okno

  • sub - pro podokno

  • menu - pro nabídku

  • playbar - ovládací panel

(Bloky sub a menu jsou volitelné - nemusíte vytvářet nabídku nebo vyzdobit podokno.)

Uvnitř window bloku můžete definovat každou položku okna řádkem v tomto tvaru:

položka = parametr

Kde položka je řetězec označující typ položky GUI a parametr je číselná nebo textová hodnota (nebo seznam hodnot oddělených čárkami).

Dáte-li to všechno dohromady, celý soubor vypadá asi takto:

section = movieplayer
  window = main
  ; ... položky hlavního okna ...
  end

  window = sub
  ; ... položky podokna ...
  end

  window = menu
  ; ... položky menu ...
  end

  window = playbar
  ; ... položky ovládacího panelu ...
  end
end

Jméno souboru s obrázkem musí být zadáno bez úvodních adresářů - obrázky jsou vyhledávány v adresáři skins. Měli byste (ale nemusíte) zadat příponu souboru. Pokud soubor neexistuje, zkouší MPlayer načíst soubor <jméno>.<příp>, kdy jsou za <příp> zkoušeny přípony png a PNG (v tomto pořadí). Použitý bude první vyhovující soubor.

Aby bylo vše jasné, uvedeme příklad. Řekněme, že máte obrázek jménem main.png, který použijeme pro hlavní okno:

base = main, -1, -1

MPlayer se pokusí nahrát soubory main, main.png, main.PNG.

Nakonec několik slov o pozicování. Hlavní okno a podokno lze umístit do odlišných rohů obrazovky zadáním souřadnic X a Y. 0 horní nebo levý, -1 je střed a -2 je vpravo nebo dole, jak je vidět na obrázku:

(0, 0)----(-1, 0)----(-2, 0)
  |          |          |
  |          |          |
(0,-1)----(-1,-1)----(-2,-1)
  |          |          |
  |          |          |
(0,-2)----(-1,-2)----(-2,-2)

B.2.1. Hlavní okno a ovládací panel

Níže uvádíme seznam položek, které mohou být použity v blocích 'window = main' ... 'end', a 'window = playbar' ... 'end'.

decoration = enable|disable

Zapne (enable) nebo vypne (disable) dekoraci hlavního okna, produkovanou okenním manažerem. Výchozí je disable.

Poznámka

V okně display to nefunguje, není to potřeba.

base = obrázek, X, Y

Umožňuje nastavit obrázek pozadí hlavního okna. Okno bude vykresleno na zadaných souřadnicích X,Y na obrazovce a bude mít velikost obrázku.

Poznámka

Tyto koordináty zatím nefungují pro okno display.

Varování

Průhledné oblasti v obrázku (obarvené #FF00FF) budou černé na X serverech bez XShape rozšíření. Šířka obrázku musí být celočíselně dělitelná 8.

button = obrázek, X, Y, šířka, výška, zpráva

Umístí tlačítko rozměru šířka * výška na pozici X,Y. Zadaná zpráva je generována při kliku na tlačítko. Zadaný obrázek musí mít tři části pod sebou (odpovídající možným stavům tlačítka) takto:

+------------+
| stisknuto  |
+------------+
|  uvolněno  |
+------------+
|  zakázáno  |
+------------+
hpotmeter = tlačítko, tšířka, tvýška, fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva

vpotmeter = tlačítko, tšířka, tvýška, fáze, počet_fází, výchozí, X, Y, šířka, výška, zpráva

Umístí vodorovný (hpotmeter) nebo svislý (vpotmeter) potenciometr velikosti šířka * výška na pozici X,Y. Obrázek může být rozdělen do různých částí pro různé fáze potenciometru (Například můžete mít potenciometr pro nastavení hlasitosti, jehož dráha se barví ze zelené na červenou, jak se jeho hodnota mění od nejmenší do největší.). hpotmeter může mít táhlo, které může být vodorovně taženo. Význam parametrů:

  • tlačítko - obrázek, který se použije pro tlačítko (musí mít tři části pod sebou, stejně jako v případě tohoto tlačítka)

  • tšířka, tvýška - velikost tlačítka

  • fáze - obrázek použitý pro různé fáze hpotmetru. Pokud žádný obrázek nechcete, můžete použít speciální hodnotu NULL. Obrázek musí být rozdělen svisle na počet_fází částí takto:

    +------------+
    |   fáze #1  |
    +------------+
    |   fáze #2  |
    +------------+
         ...
    +------------+
    |   fáze #n  |
    +------------+

  • numphases - number of phases stored in the počet_fází - počet fází uložených v obrázku fáze

  • výchozí - výchozí hodnota pro hpotmeter (v rozsahu 0100)

  • X, Y - pozice pro hpotmeter

  • šířka, výška - šířka a výška hpotmeteru

  • zpráva - zpráva generovaná při změně hodnoty hpotmeteru

font = soubor_fontu, id_fontu

Definuje font. soubor_fontu je jméno souboru popisu fontu s příponou .fnt (zde příponu nezadávejte). id_fontu je použit jako ukazatel na font (viz dlabel a slabel). Definováno může být více než 25 fontů.

slabel = X, Y, id_fontu, "text";

Umístí statický popisek na pozici X,Y. text je zobrazen fontem identifikovaným pomocí id_fontu. Text je surový řetězec ($x proměnné nefungují), který musí být uzavřen ve dvojitých uvozovkách (ale znak " nesmí být součástí textu). Popisek je zobrazen fontem identifikovaným pomocí id_fontu.

dlabel = X, Y, délka, zarovnání, id_fontu, "text"

Umístí dynamický popisek na pozici X,Y. Popisek je dynamický proto, že je jeho text periodicky obnovován. Maximální délka popisku je nastavena na délka (jeho výškou je výška znaku). Pokud je zobrazovaný text širší, pak bude rolován, jinak bude zarovnán do určeného prostoru podle hodnoty parametru zarovnání: 0 je zarovnání vpravo, 1 na střed, 2 vlevo.

Text k zobrazení je zadán parametrem text: Musí být uzavřen do dvojitých uvozovek (ale znak " nesmí být součástí textu). Popisek je zobrazen fontem identifikovaným pomocí id_fontu. V textu můžete použít tyto proměnné:

ProměnnáVýznam
$1čas přehrávání ve formátu hh:mm:ss
$2čas přehrávání ve formátu mmmm:ss
$3čas přehrávání ve formátu hh (hodiny)
$4čas přehrávání ve formátu mm (minuty)
$5čas přehrávání ve formátu ss (sekundy)
$6délka filmu ve formátu hh:mm:ss
$7délka filmu ve formátu mmmm:ss
$8čas přehrávání ve formátu h:mm:ss
$vhlasitost ve formátu xxx.xx%
$Vhlasitost ve formátu xxx.x
$Uhlasitost ve formátu xxx
$bstereováha ve formátu xxx.xx%
$Bstereováha ve formátu xxx.x
$Dstereováha ve formátu xxx
$$znak $
$aznak podle typu audia (žádné: n, mono: m, stereo: t)
$tčíslo stopy (v playlistu)
$onázev souboru
$fnázev souboru malými písmeny
$Fnázev souboru velkými písmeny
$Tznak podle typu datového proudu (soubor: f, Video CD: v, DVD: d, URL: u)
$pznak p (pokud přehráváte soubor a font obsahuje znak p)
$sznak s character (pokud přehráváte soubor a font obsahuje znak s)
$eznak e (pokud je přehrávání pozastaveno a font obsahuje znak e)
$xšířka filmu
$yvýška filmu
$Cnázev použitého kodeku

Poznámka

Proměnné $a, $T, $p, $s a $e vracejí znaky, které by měly být zobrazovány jako speciální symboly (například, e vrací symbol pauza, který obvykle vypadá jako ||). Měli byste mít font pro normální znaky a jiný font pro symboly. Více informací viz sekce o symbolech.

B.2.2. Ovládací panel

Následující vstupy mohou být použity v bloku 'window = sub' . . . 'end'.

base = obrázek, X, Y, šířka, výška

Obrázek, který bude zobrazen v okně. Okno se zobrazí na pozici zadané souřadnicemi X,Y na obrazovce (0,0 je levý horní roh). Můžete nastavit -1 pro střed a -2 pro vpravo (X) a dole (Y). Okno bude stejně velké jako obrázek. šířka a výška udávají velikost okna; jsou volitelné (pokud chybí, má okno rozměry shodné s obrázkem).

background = R, G, B

Umožňuje nastavit barvu pozadí. To je užitečné, pokud je obrázek menší než okno. R, G a B označují červenou, zelenou a modrou složku barvy (každá z nich je dekadická hodnota 0 až 255).

B.2.3. Nabídka

Jak již bylo dříve řečeno, nabídka je zobrazena pomocí dvou obrázků. Normální položky nabídky jsou brány z obrázku určeného položkou base, zatímco aktuálně zvolený vstup je brán z obrázku určeného položkou selected. Musíte definovat pozici a rozměr každé položky nabídky.

Následující vstupy mohou být použity v bloku 'window = menu'. . .'end'.

base = obrázek

Obrázek normálních položek nabídky.

selected = obrázek

Obrázek nabídky kde jsou všechny položky vybrány.

menu = X, Y, šířka, výška, zpráva

Definuje pozici X,Y a rozměr položky nabídky v obrázku. zpráva je zpráva, generovaná jakmile je uvolněno tlačítko myši nad položkou.

B.3. Fonty

Jak jsme již zmínili v sekci o částech skinu, font je definován obrázkem a souborem popisu. Můžete rozmístit znaky v obrázku libovolně, ale ujistěte se, že je jejich velikost a pozice je uvedena v souboru popisu přesně.

Soubor popisu fontu (s příponou .fnt) může obsahovat řádky s komentářem začínající ';'. Soubor musí obsahovat řádek ve formě

image = obrázek

Kde obrázek je název obrázku použitého pro font (nemusíte zadávat příponu).

"char" = X, Y, šířka, výška

Zde X a Y udávají pozici char znaku v obrázku (0,0 je levý horní roh). šířka a výška jsou rozměry znaku v pixelech.

Tento příklad definuje znaky A, B, C s použítím font.png.

; Zde může být jen "font" místo "font.png".
image = font.png

; Tři znaky pro ilustraci stačí :-)
"A" =  0,0, 7,13
"B" =  7,0, 7,13
"C" = 14,0, 7,13

B.3.1. Symboly

Některé znaky mají speciální význam, jsou-li vráceny některou z proměnných použitých v dlabel. Tyto znaky mají být zobrazovány jako symboly, takže mohou být zobrazeny věci jako pěkné DVD logo místo znaku 'd' pro DVD datový proud.

Následující tabulka obsahuje znaky, které mohou být použity k zobrazení symbolů (a tudíž vyžadují odlišný font).

ZnakSymbol
pplay
sstop
epauza
nbez zvuku
mmono zvuk
tstereo zvuk
fdatový proud je soubor
vdatový proud je Video CD
ddatový proud je DVD
udatový proud je URL

B.4. GUI zprávy

Tyto zprávy mohou být generovány tlačítky, potenciometry a položkami nabídky.

evNone

Prázdná zpráva, nemá žádný efekt (možná s výjimkou Subversion verzí :-)).

Ovládání přehrávání:

evPlay

Zahájí přehrávání.

evStop

Zastaví přehrávání.

evPause

evPrev

Skočí na předchozí stopu v playlistu.

evNext

Skočí na následující stopu v playlistu.

evLoad

Otevře soubor (otevřením okna prohlížeče souborů, kde si soubor vyberete).

evLoadPlay

Stejné jako evLoad, ale navíc se okamžitě spustí přehrávání otevřeného souboru.

evLoadAudioFile

Otevře soubor se zvukem (pomocí prohlížeče souborů)

evLoadSubtitle

Otevře soubor s titulky (pomocí prohlížeče souborů)

evDropSubtitle

Vypne aktuálně použité titulky.

evPlaylist

Otevře/zavře okno playlistu.

evPlayVCD

Zkusí otevřít disk v zadané CD-ROM mechanice.

evPlayDVD

Zkusí otevřít disk v zadané DVD-ROM mechanice.

evLoadURL

Zobrazí dialogové okno pro volbu URL.

evPlaySwitchToPause

Protiklad evPauseSwitchToPlay. Tato zpráva zahájí přehrávání a zobrazí obrázek pro tlačítko evPauseSwitchToPlay (pro indikaci, že tlačítko může být stisknuto pro pozastavení přehrávání).

evPauseSwitchToPlay

Tvoří přepínač společně s evPlaySwitchToPause. Ty mohou být použity k vytvoření tradičního play/pauza tlačítka. Obě zprávy by měly být přiřazeny tlačítkům umístěným na stejné pozici v okně. Tato zpráva pozastaví přehrávání a zobrazen bude obrázek pro evPlaySwitchToPause talčítko (pro indikaci, že tlačítko může být stisknuto pro obnovení přehrávání).

Převíjení:

evBackward10sec

Převine zpět o 10 sekund.

evBackward1min

Převine zpět o 1 minutu.

evBackward10min

Převine zpět o 10 minut.

evForward10sec

Převine vpřed o 10 sekund.

evForward1min

Převine vpřed o 1 minutu.

evForward10min

Převine vpřed o 10 minut.

evSetMoviePosition

Převine na danou pozici (může být přiřazeno potenciometru; použije se relativní hodnota (0-100%) potenciometru).

Ovládání videa:

evHalfSize

Nastaví velikost okna filmu na poloviční velikost.

evDoubleSize

Nastaví velikost okna filmu na dvojnásobnou velikost.

evFullScreen

Přepíná do celoobrazovkového režimu a zpět.

evNormalSize

Nastaví velikost okna na normální velikost.

evSetAspect

Ovládání zvuku:

evDecVolume

Sníží hlasitost.

evIncVolume

Zvýší hlasitost.

evSetVolume

Nastaví hlasitost (může být sdruženo s potenciometrem; použije se relativní hodnota potenciometru (0-100%)).

evMute

Vypne/zapne zvuk.

evSetBalance

Nastaví stereováhu (může být sdruženo s potenciometrem; použije se relativní hodnota potenciometru (0-100%)).

evEqualizer

Zapne/vypne ekvalizér.

Různé:

evAbout

Otevře okno o aplikaci.

evPreferences

Otevře okno předvoleb.

evSkinBrowser

Otevře okno voliče skinů.

evIconify

Minimalizuje okno.

evExit

Ukončí program.

B.5. Tvorba kvalitních skinů

Co když jste si přečetli o skinech pro GUI MPlayeru, odvedli to nejlepší s Gimpem a chcete nám poslat svůj skin? Přečtěte si pár návodů, abyste se vyhnuli běžným omylům a vytvořili vysoce kvalitní skin.

Chceme, aby skiny, které přidáme do našeho repozitáře odpovídaly určitým standardům kvality. Je zde také mnoho věcí, které můžete udělat, abyste nám ulehčili práci.

Za příklad si vemte skin Blue. Ten splňuje všechna kritéria od verze 1.5.

  • Ke každému skinu by měl být soubor README, obsahující informace o vás jako autorovi, o copyrightu a licenci a vše ostatní, co chcete dodat. Chcete-li mít changelog, tento soubor je dobrým místem.

  • Měl by tu být soubor VERSION neobsahující nic jiného, než číslo verze na jediném řádku (např. 1.0).

  • Horizontální a vertikální ovládání (posuvníky jako hlasitost nebo pozice) by měly mít střed knoflíku správně zarovnán na stred posuvníku. Mělo by být možné posouvat knoflík na oba konce posuvníku, ale ne za ně.

  • Jednotlivé součásti skinu by měly mít správné rozměry deklarované v souboru skin. Pokud to tak není, můžete kliknout mimo např. tlačítko a to se stejně stiskne, nebo kliknout na jeho plochu a nestisknout jej.

  • Soubor skin by měl být srovnán na znaky a neobsahovat tabulátory. Srovnán na znaky znamená, že se čísla budou rovnat do úhledných sloupců.