Naposled aktualizováno 10. 01. 2011.

Komprese pomocí kodeku x264

Co to je AVC

V součsné době je nejkvalitnějším formátem pro kompresi videa MPEG-4 AVC (Advanced Video Coding), občas také označovaný jako H.264. Vývoj kodeků tohoto standardu je zatím v poměrně raném stadiu, ale přesto již existují dvě velmi dobré a téměř kompletní implementace. Jedna komerční od firmy Ateme, kterou najdeme v programu Nero Recode, druhou je opensource kodek x264. V posledním srovnávacím testu kodeků na stránkách Doom9 byl vyhlášený jako vítěz. Proto jej lze vřele doporučit, přestože ještě nebyla vydána finální verze. K dispozici jsou pouze denní buildy označené číslem. Nějaké oficiální verze se ale dočkáme snad již brzy. Kodek x264 je součástí video přehrávače VLC, ale dá se pořídit i samostatně.

x264 je dostupný ve dvou verzích - jako klasický VfW kodek použitelný například ve VirtualDubu a jako CLI (Command Line Interface) enkoder, tedy ovládaný z příkazové řádky. Za vhodnější považuji určitě druhou možnost, VfW kodek totiž umožňuje pouze výstup do AVI. Použití zastaralého AVI kontejneru s nejmodernější MPEG-4 AVC kompresí je poměrně kontraproduktivní. Žádnou zpětnou kompatibilitu nezískáte a naopak se ochudíte o možnosti moderních kontejnerů, jako jsou MP4 nebo MKV. CLI verze umožňuje použít oba dva. Samozřejmě je možný následný bezztrátový převod mezi AVI, MP4 a MKV, který ale není vždy úplně triviální. Pokud se rozhodneme pro MP4 kontejner, lze pro kompresi zvuku použít MPEG-1 (MP3) nebo MPEG-4 (AAC). MKV rozšiřuje možnosti použité zvukové komprese o vysoce kvalitní formáty Vorbis, FLAC nebo Wavpack. Ideální video pro PC tedy získáme kombinací formátů MKV+H.264+Vorbis, které zajistí výborný poměr mezi kvalitou a kompresí.

Abysme nemuseli zadávat parametry x264 kodeku ručně, použijeme jako uživatelské rozhraní program MeGUI, jehož autorem není nikdo jiný než sám slavný Doom9. Program ke svému běhu potřebuje prostředí Microsoft .NET Framework 2.0. Z adresy http://x264.nl/ si stáhněte nejnovější x264.exe CLI enkoder. Dále musíme stáhnout a nainstalovat vlastní MeGUI. Poslední, co budeme k převodu potřebovat, je program Avisynth. Jak jej používat a jak vytvořit správný skript jsem popsal na svých strákách již několikrát, například v návodu na ripování DVD nebo pro převod DV na DVD. Avisynth je základem jakékoliv kvalitní konverze videa a není nutné se ho obávat, přestože se ovládá textovými skripty. Ty jsou totiž většinou velmi jednoduché a logické. MeGUI navíc obsahuje možnost automatického vytváření AVS skriptu (Tools -> Avisynth Script Creator).

Pokud jste připojeni k internetu, MeGUI si po startu sám stáhne nejnovější aktualizace a také všechny potřebné komponenty, hlavně x264.exe, audio a video profily a další utility. Jediné, co je třeba dodat manuálně, je Nero AAC Encoder, který je nutné stáhnout samostatně. Pokud nemáte na počítači s MeGUI internetové připojení a nechcete stahovat jednotlivé součásti zvlášť, stáhněte si balíček (komprese 7-zip) z mých stránek a rozbalte jej do adresáře MeGUI. I v tomto případě je nutné ještě dodat manuálně výše zmíněný Nero AAC Encoder, protože jeho licence nepovoluje třetím stranám jeho šíření, přestože se jedná o freeware aplikaci. Pokud tedy máte vše nastavené, můžeme přejít k nastavení MeGUI

.

Pokud jste nepoužili automatické aktualizace, je jako první po spuštění programu MeGUI nutné nastavit správné cesty k používaným programům. Pokud se spokojíte pouze s kompresí obrazu, stačí zadat cestu pouze k x264.exe v menu Tools -> Settings -> Program paths. Jestliže chcete překomprimovat pomocí MeGUI také zvuk, zvolte cestu pro příslušné enkodery - oggenc2.exe (Ogg Vorbis), NeroAacEnc.exe (AAC-MP4) nebo lame.exe (MP3). Pakliže má být výstupem MP4 nebo MKV soubor, který bude obsahovat video i zvuk, zvolte také cestu pro mp4box.exe, respektive mkvmerge.exe. MP4Box získáte spolu s instalátorem programu YAMB (bude o něm ještě zmínka) a mkvmerge je součástí programu MKVToolnix. O něm píši podrobněji v pátém díle návodu na ripování DVD. Pokud víte cesty i k dalším programům, zvolte je také. Dialog s konfigurací zavřete tlačítkem Save. V hlavním okně programu potom otevřte Avisynth skript, který může pro účely převodu videa z DVD vypadat třeba takto:

LoadPlugin ("C:\Program Files\DgMPGDec\DGDecode.dll")
Mpeg2Source ("D:\FILM\VIDEO_TS\film.d2v")
Crop (0,70,-0,-70)
LanczosResize (720,304)
MeGUI
Základní obrazovka programu MeGUI

Po otevření skriptu se objeví okno s náhledem, můžete zde tlačítky Intro a Credits označit úvodní a závěrečné titulky, pro které se dá následně zvolit vyšší stupeň komprese. Okno s náhledem zavřete a vrátíte se zpět do MeGUI. U komprese videa si vyberte kodek x264 a pod ním jeden z přednastavených profilů, vpravo ještě zvolte typ kontejneru. Volbou MP4 zde nic nezkazíte, převedení na AVI nebo MKV je otázkou chvilky. Z přednastavených profilů bude asi nejvíce vyhovovat CE-Mainprofile, který používá automatický dvouprůchodový mód s vyváženým poměrem kvalita/rychlost/kompatibilita. Pro maximální kvalitu bez kompromisů slouží předvolba HQ-Insane. Najdete zde také předvolená nastavení pro kompatibilitu s různými HW a SW přehrávači s pouze částečnou podporou MPEG-4 AVC. Jsou to například populární Apple iPod, SONY PSP, Microsoft Xbox nebo Apple QuickTime. Předvolby lze dále upravovat kliknutím na tlačítko Config. Popis jednotlivých parametrů najdete zde (anglicky).

Pokud chcete, můžete MeGUI použít také pro převod zvuku (například z AC3 na AAC). Kód pro převod zvuku je založený na programu BeHappy. Pokud chcete komprimovat zvuk do AAC, je nejvhodnějším nekoderem již zmiňovaný Nero. Alternativou je potom opensource enkoder FAAC, který má ale o dost horší kvalitu, výrazně horší i než například LAME MP3. Nejkvalitnější zvuk má formát OGG Vorbis, pro který potřebujete oggenc2 zmiňovaný v tomto návodu. Zvuk ve formátu Vorbis lze ale použít pouze v kombinaci s kontejnerem Matroška nikoliv v MP4. Kliknutím na tlačítko Config se otevře okno s podrobnou konfigurací pro konverzi zvuku.

Nero AAC Enkoder
Nastavení komprese pomocí Nero AAC enkoderu

Doporučuji nastavit vše podle obrázku. Pro pokročilejší zpracování zvuku lze použít AviSynth, ale to je trochu mimo rámec tohoto článku. O úpravách zvuku pomocí AviSynthu píši například v návodu na tvorbu DVD. Pro načtení MP3, AC3, DTS a dalších formátů zvuku je třeba Avisynth filtr NicAudio.dll, který je třeba nakopírovat do podadresáře plugins v adresáři Avisynthu. Pokud použijete online aktualizace MeGUI, mělo by se toto stát automaticky. Další možností jak načíst audio je použít volbu Force decoding via DirectShow.

MeGUI
Nastavení velikosti a formáty výstupu

Nyní tedy máme zvolenou kompresi videa i zvuku a můžeme pokračovat kliknutím na AutoEncode. Objeví se okno s nastavením výstupu. Pokud necháme zaškrtnuté políčko Muxed Output, získáme na výběr výstupní formáty MP4 a MKV, do kterých se spojí zvuk a video. Potom musíme zvolit velikost výsledného videa. Předvoleno je 700MB, tedy jedno CD. Pokud budete zvuk komprimovat pomocí BeLightu nebo chcete více zvukových stop, nezapomeňte pro ně rezervovat místo zmenšením velikosti videa. MP4 i MKV umožňují prakticky libovolný počet zvukových a titulkových stop, narozdíl od AVI. V tomto dialogu ještě můžete nastavit rozdělení výstupního souboru (například na více CD). Tlačítkem Queue přidáte kompresi do plánovače úloh. Pokud se nyní přepnete v hlavním okně na záložku Queue, uvidíte tam váš projekt a tlačítkem Start můžete spustit vlastní proces komprese. Ten bude v závislosti na rychlosti procesoru a délce filmu trvat poměrně dlouho, většinou několik hodin.

MeGUI
Fronta úloh programu MeGUI

Výsledkem nám bude MP4 nebo MKV soubor s MPEG-4 AVC kompresí videa. Podle toho jak jsme volili na začátku, bude obsahovat pouze video nebo také zvuk. V druhém případě jsem tímto hotovi a můžeme si užívat video s nejefektivnější kompresí obrazu. Pokud jsme se rozhodli pro komplexnější postup i s titulky, více zvukovými stopami nebo kompresí zvuku do formátu Vorbis, naše práce ještě nekončí. Pokud je vaší volbou formát MKV (Matroška), můžete pokračovat návodem na ripování DVD. Zde je popsáno, jak zkomprimovat zvuk, vyextrahovat titulky do formátu .SRT (SubRip) a spojit vše dohromady do jednoho MKV souboru. Pokud chcete (například pro stolní a přenosné přehrávače nebo mobilní telefony) vytvořit MP4/3GP soubor, zkomprimujte podle odkazovaného návodu zvuk do formátu MP3 nebo AAC (LC/HE/PS), vytvořte .SRT titulky a vraťte se k tomuto návodu po další postup. Upozorňuji ale, že přehrávače iPod titulky neumí a stejné to bude i s většinou mobilních telefonů. Pro tyto přístroje je nutné titulky vložit přímo do obrazu, s čímž by vám měl pomoci můj návod na AviSynth. Jako alternativu k MeGUI také můžete vyzkoušet program Avidemux, kterému by se měl věnovat můj další návod, nebo jednoduchý AutoMKV.

Tvorba MP4

YAMB
YAMB umí konvertovat AVI+SRT do MP4

Spojení obrazu, zvuku a titulků do jednoho souboru se nazývá anglicky multiplex (mux, muxing, muxování). Standard MPEG-4 kromě komprese videa a zvuku (AAC) definuje také formát pro titulky (TTXT - Timed Text) a kontejner (MP4). Pokud tedy chceme vytvořit video přesně podle standardů ISO MPEG-4, musíme použít tyto formáty. Předpokládám, že v blízkém budoucnu bude jejich podpora standardní výbavou každého přenosného nebo stolního multimediálního přehrávače. Pro spojení videa, zvuku a titulků do MP4 souboru lze použít například program MP4Box, ovládaný z příkazové řádky. I zde si ale práci usnadníme grafickým uživatelským rozhraním v podobě programu YAMB (Yet Another MP4Box UI). Práce s ním je velmi jednoduchá. Tlačítky Add přidáme video a zvuk, popřípadě titulky a kapitoly (klasický textový soubor s čísly snímků). Tlačítkem Mux potom spustíme převod. YAMB automaticky převede titulky SRT na formát TTXT, ale je nutné dát pozor na znakovou sadu titulků. Kódování češtiny CP-1250 ani ISO-8859-2 není přípustné, MP4 formát velmi rozumně nepřipouští nic jiného než Unicode UTF-8. Pokud máte titulky v jiném kódování, lze je převést na UTF-8 například programy SubRip nebo PSPad.

Přehrávání MP4

O přehrávání všemožných video formátů včetně MP4 jsem napsal samostatný článek. Takže zde pouze shrnu základní fakta. K úspěšnému přehrání MP4 videa je zapotřebí MP4 splitter, například Haali Media Splitter. Potom ještě potřebujeme dekoder videa, zvuku a titulků, ideální je FFDShow. U FFDShow je nutné nastavit v konfiguraci titulků Accept embedded subtitles. Pozor ale na filtry firmy Nero. Například jejich MP4/MOV splitter nedokáže správně předat TTXT titulky FFDShow filtru. Nero 7.x při instalaci nahrne do počítače na 50 různých DirectShow filtrů a nutno dodat, že většina z nich způsobí více škody než užitku. Takové chování programu se mi zdá značně nesolidní. Navíc si Nero ohýbá MP4 standard k obrazu svému a zjednodušuje práci svému programu Recode tím, že pro titulky používá formát VobSub (obrázkové titulky z DVD). Takové MP4 video samozřejmě nesplňuje specifikace ISO. Jak filtry od Nera najít a vyštípat, najdete například v mém před chvílí odkazovaném návodu v kapitole Řešení problémů.




Pokud máte nějaký dotaz nebo přípomínku, neváhejte mě kontaktovat.