Úvod do x264
Existují dvě verze kodeku x264
(přesněji řečeno enkodéru, protože instalace x264 neobsahuje dekodér potřebný k přehrávání vytvořeného filmu).
Jejich jádro je ale stejné.
1. x264 VFW
Vfw verzi je možno využívat např. z programu "VirtualDubMod" (tak ji využívá "Gordian Knot").
Použití vfw verze je podobné jako u xvidu popsané v příkladu 2.
2. x264 CLI
Klient verze je program "x264.exe", který se volá z příkazového řádku nebo pomocí nějakého GUI.
My v tomto příkladu použijeme klient verzi bez GUI. (V poslední době bylo dopracováno do
použitelné podoby GUI z názvem "MeGUI").
Pro popis návodu je toto nejjednodušší, zkopírujeme příkazový řádek a nemůže dojít k omylu.
Použijeme instalaci z x264.nl.
Instalační program se např. pro revizi 305 jmenuje "x264-305-install.exe" obsahuje jak VFW verzi tak klient verzi.
VFW se nám nainstaluje někam do hloubi windows, client do zvoleného adresáře.
Kromě instalačky kodeku najdeme na x264.nl další užitečné a potřebné programy.
Ne ale "avc2avi".
V současné době se objevuje každý den nová revize x264 (rozumějme verze, ale říkají tomu revize).
V našem příkladu byla použita revize 270.
Enkodér "x264.exe" vytvoří buď soubor *.264 nebo *.mp4. Soubor *.264 překonvertujeme programem "avc2avi.exe" do *.avi.
Soubor *.mp4 je možno vhodnými přehrávači přímo přehrávat.
Čím přehrát výsledný film ve formátu *.avi?
Potřebujeme program "ffdshow" jisté verze. Verze "ffdshow" závisí na tom, které volby při kódování zapneme.
Při zapnutí některých voleb budeme potřebovat i "Matroska Splitter". Tady je to dost nejasné, časem s přehráváním určitě nebudou problémy.
Ještě musíme zmínit, jak otevřít vytvořený *.avi soubour ve "VirtualDubMod" (tj. pomocí vfw dekodéru). Musíme v konfiguraci "ffdshow" (Start -
Všechny programy - ffdshow - VFW codec configuration) nastavit dekódování h264 souborů pro vfw, viz obrázek.
Popis postupu pro film Spalující touha (Eyes Wide Shut, 2 hod 32 min)
Na Celeronu D 2.53Ghz trvá celá akce pro tento film asi 16 hodin.
1. Překódování zvuku do mp3
Do adresáře, kde je nainstalován program Gordian Knot do podadresáře BeSweet (např. c:\Program Files\Gordian Knot\BeSweet\),
zkopírujeme program "BeLight" (stáhneme z internetu, odkazy najdeme opět na www.doom9.org)
a spustíme ho. Otevřeme soubor se zvukem *.ac3, nastavíme volby dle obrázku a stiskneme tlačítko start.
Pokud název souboru obsahuje za "DELAY" jinou hodnotu než nula, předplní se nám do pole DELAY.
V "Advanced settings" ponecháme defaultní hodnoty.
Za max. 20 minut program skončí a v cílovém adresáři nalezneme soubor *.mp3 obsahující zvuk překódovaný do formátu mp3.
2. Určení výstupního rozlišení filmu
Zde jen zkráceně, podrobně je to popsáno v příkladu 1 a 2.
Spustíme program "Gordian Knot". Otevřeme soubor *.d2v.
V našem případě se jedná o neanamorfní DVD, Crop nastavíme na "disable" (obraz je na DVD bez černých pruhů).
Kodek nastavíme na Divx3.11 a provedeme test komprimovatelnosti s tímto kodekem. Nezapomeňte ho nainstalovat! Dělám to takto,
zdá se mi, že test komprimovatelnosti pro Divx3.11 dává nejsmysluplnější výsledky.
Pro výsledné rozlišení neberu ale hranici 40%, ale např. v tomto příkladu 15%. Výsledný film vypadá "dost dobře".
S Divx a Xvid nemáme na to, aby film takto vypadal, nejmenší šanci. Není to akční film, scény jsou pomalé.
Proč nám "Gordian Knot" nenabídl výstupní rozlišení 640x480, které má ideální poměr stran 4:3?
Protože máme na záložce "Options" zaškrtnutý check box "Follow ITU-R B601 Standard". Za určitých předpokladů
(DVD je správně vyrobeno, u monitoru máme nastaveno správné rozlišení) je rozlišení 640x464 korektnější
(nejkorektnější je 640x468, ale to není dělitelné 16) než 640x480 a naše
*.avi bude na PC monitoru vypadat korektněji než DVD přehrávané softwarovým přehrávačem.
4. Tvorba avisynth scriptů
Při nainstalování "Gordian Knot" se nám nainstaluje i "AviSynth", což je nástroj, který nám umožňuje pomocí avisynth skriptů
(textových souborů s příponou *.avs) editovat video. Základní příkazy těchto skriptů si můžeme zobrazit v automaticky
nainstalované dokumentaci (v mém případě v souboru C:\Program Files\AviSynth 2.5\Docs\english\index.htm).
Příkazy nemusíme znát, soubor *.avs nám vytvoří "Gordian Knot". V okně
stiskneme tlačítko "Save" a uložíme si avisynth script např. pod názvem "eyes.avs".
Vypadá takto eyes.avs.
Pozor na jednu věc. Smažte nebo zakomentujte v tomto skriptu příkaz SelectEveryRange, který tam zůstane jako
produkt testu komprimovatelnosti. Určitě se jedná o chybu "Gordian Knot".
Vytvořený soubor *.avs otevřeme v programu "VirtualDubMod" (najdeme mezi programy nainstalovanými společně s "Gordian Knot")
a najdeme začátek závěrečných titulků.
Odečteme číslo snímku, na kterém začínají titulky (220999). Zkomprimuje zvlášť titulky a zvlášť film,
titulky s menším bitrate. Nejsem zastáncem nečitelných a kostkovaných titulků. Titulky jsou výtvarnou součástí filmu.
Ale zde je právě u některých filmů ten problém (ne u tohoto), blikající a poskakující animované titulky si vyžádají
obrovský bitrate na úkor filmu.
My ho zmírníme tím, že titulky zkomprimujeme zvlášť. Navíc pro titulky použijeme jiný příkaz pro přepočet výstupního rozlišení.
Namísto "LanczosResize" použitý pro film použijeme pro titulky "BilinearResize". "LanczosResize" použitý na některé titulky
vytvoří podivné tečky kolem písmen.
Soubor "eyes.avs" 2x zkopírujeme, jednou s názvem "eyes_film.avs" a podruhé s názvem "eyes_titulky.avs".
Do "eyes_film.avs"
přidáme na konec příkaz Trim(0,220998). Příkaz Trim odřezává výstup podle zadaných snímků.
Do "eyes_titulky.avs" přidáme na konec příkaz Trim(220999,228845) a změníme příkaz LanczosResize(640,464) na BilinearResize(640,464).
Soubory budou vypadat takto:
eyes_film.avs
eyes_titulky.avs
5. Komprimace titulků
Vytvoříme si dávkový soubor x264t.bat. Cesty k programu "x264.exe" a "avc2avi.exe" nahradíme vhodným způsobem
podle toho, jak je máme nainstalované. Pustíme soubor "x264t.bat" a za necelou půlhodinku se dočkáme výsledku - souboru "eyes_titulky_x264.avi".
Titulky vypadají dobře i se zadaným bitrate 78kbit/s. Jinak dávám bitrate pro titulky asi polovinu bitrate pro film.
6. Komprimace filmu
Máme tedy zvuk a část filmu - závěrečné titulky. Chceme film dát na jedno CD. Vypočteme velikost filmu.
Velikost filmu = Velikost CD - Velikost titulků - Velikost zvuku - Overhead
(Overhead přečteme v "Gordian Knotu" na záložce "Bitrate" v části "Interleaving & AviOverhead". Odklikneme "Calculate Frame Overhead".)
Velikost filmu v našem případě = 716 800 kB - 3 181 kB - 148 210 kB - 8 939 kB = 556 470 kB
Spočteme bitrate:
Bitrate = Velikost filmu v kbitech / Délka filmu ve vteřinách
Délka filmu ve vteřinách = Počet snímků filmu / 25
Počet snímků jsme zjistili při dělení filmu na film a titulky.
Bitrate v našem případě = 556 470 * 8 / 8840 = 504 kb/s
Vytvoříme si dávkový soubor x264.bat. Pustíme soubor "x264.bat" a asi za 15 hodin se dočkáme výsledku
- souboru "eyes_film_x264.avi". Pro x264 byly použity volby, které vylepšují výsledek (na úkor času komprimace).
Defaultní nastavení by vypadalo takto:
x264 --bitrate 504 --pass 1 --progress -o NUL: eyes_film.avs
x264 --bitrate 504 --pass 2 --progress -o eyes_film.264 eyes_film.avs
Zde je otevřen prostor pro experimenty. Ještě to nemám probádané. Po skončení komprimace nám enkodér vypíše PSNR. PSNR matematicky
vyjadřuje, jak se zkomprimovaný film liší od originálu. Čím vyšší PSNR, tím lépe.
7. Spojení všeho dohromady
Máme tedy zvuk a film rozdělený na titulky ("eyes_titulky_x264.avi") a vlastní film ("eyes_film_x264.avi").
Spustíme "VirtualDubMod" a přepneme do režimu "Direct stream copy".
Otevřeme soubor "eyes_film_x264.avi" (File - Open) a připojíme titulky "eyes_titulky_x264.avi" (File - Append segment).
Přimícháme zvuk, aktivujeme volbu menu Stream - Stream list. Na obrazovce, která se objeví zmáčkneme tlačítko "Add" a
přidáme soubour *.mp3 obsahující zvuk k filmu. Na tento dotaz odpovíme "Ne".
Klikneme pravým tlačítkem myši na streamu
a aktivujeme volbu menu "Interleaving". Pokud název souboru *.mp3 obsahuje řetezec "DELAY 0ms" ponecháme
defaultní nastavení pro multiplexování zvuku.
Stiskneme OK. Uložíme finální výsledek (File - Save as). Po několika minutách máme výsledek - film se zvukem.
Zkontrolujeme jeho velikost. Pokud je překročena velikost CD, tak znovu překomprimujeme titulky s menším bitrate
a provedeme bod 7 znovu. V našem případě jsou ale titulky tak malé, že nám příliš prostoru nezbývá.
Přinejhorším provedeme znovu 2. průchod komprimace filmu.
Při výpočtu jsme použili jako velikost CD hodnotu 700MB. CD je ve skutečnosti o něco větší takže máme malou rezervu.
Další rezervu poskytuje "overburn" CD.
Poznámka:
Menší problém se vyskytne potřebujeme-li vytvořit avi soubor větší než 2GB (to samozřejmě není případ zálohování DVD na CD).
Program "avc2avi" vytváří avi soubor verze 1.0, který má omezenou velikost. My ale potřebujeme vytvořit avi soubor verze "Open-DML",
který má víceméně neomezenou velikost. Pro tento případ se mi jevilo nejvhodnější použít přeci jen VFW verzi x264 a kódovat
pomocí VirtualDubMod.