Enkódování s MEncoderem
Ú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,
chcete-li bohatost diskusí o všech aspektech a problémech vztažených
k enkódování MEncoderem.
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). 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.
kopírování zvukové stopy
Dvouprůchodové enkódování 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 film.avi
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o film.avienkó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.
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac mp3lame -lameopts vbr=3 -o film.avi
mencoder dvd://2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac mp3lame -lameopts vbr=3 -o film.aviEnkódování do MPEG formátuMEncoder umí vytvořit výstupní soubor formátu
MPEG (MPEG-PS). To je pravděpodobně použitelné pouze s mpeg1video
kodekem z libavcodec, protože
přehrávače – s výjimkou MPlayeru –
očekávají MPEG-1 video a MPEG-1 layer 2 (MP2) audio proudy v MPEG souborech.
Tato vlastnost nyní není moc užitečná, pomiňme že má asi mnoho chyb, ale hlavně
proto, že MEncoder v současnosti neumí enkódovat
MPEG-1 layer 2 (MP2) zvuk, který všechny ostatní přehrávače očekávají v MPEG
souborech.
Výstupní souborový formát MEncoderu změníte použitím
volby .
Example:
mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video -oac copy další_volbymedia.avi -o výstup.mpgŠ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:
.
Jeho kvalita může být nastavena volbou .
Pokud ji neuvedete, MEncoder použije 2: bikubickou.
Použití:
mencoder vstup.mpg -ovc lavc -lavcopts vcodec=mpeg4 -vf scale=640:480 -o výstup.aviProudové 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 ):
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 ):
jednoduché. Je možné vzít externí zvukový soubor (MP3, WAV) a namultiplexovat
jej do výstupního proudu. K tomu použijte volbu
.
Enkódování s rodinou kodeků libavcodeclibavcodec
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í):
Jméno kodekuPopismjpeg
Motion JPEG
ljpeg
Lossless (bezztrátový) JPEG
h263
H.263
h263p
H.263+
mpeg4
standardní ISO MPEG-4 (DivX 5, XVID kompatibilní)
msmpeg4
prvotní MPEG-4 varianta od MS, v3 (DivX3)
msmpeg4v2
prvotní MPEG-4 od MS, v2 (použitý ve starých asf souborech)
wmv1
Windows Media Video, verze 1 (WMV7)
wmv2
Windows Media Video, verze 2 (WMV8)
rv10
starý RealVideo kodek
mpeg1video
MPEG-1 video
mpeg2video
MPEG-2 video
huffyuv
bezztrátová komprese
asv1
ASUS Video v1
asv2
ASUS Video v2
ffv1
bezztrátový video kodek z FFmpeg
První pole obsahuje názvy kodeků, které můžete přiřadit konfiguračnímu parametru
vcodec, např:
Příklad, s MJPEG kompresí:
mencoder dvd://2 -o titul2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copyEnkódování z množství vstupních obrázkových souborů (JPEG, PNG, TGA, SGI)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:MEncoderdekóduje vstupní
soubor(y) pomocí knihovny libjpeg
(když dekóduje PNG, použije libpng).
Potom MEncoder nakrmí dekódovaný snímek do
zvoleného video kompresoru (DivX4, XviD, FFmpeg msmpeg4, atd).
Příklady
Vysvětlení volby 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 -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 -oac copy -o výstup.avi
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:// -mf w=800:h=600:fps=25:type=png -ovc raw -oac copy -o výstup.avi
Šíř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.aviExtrakce DVD titulků do VOBsub souboruMEncoder 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
a .
Zadejte základní jméno (čili bez přípony .idx nebo
.sub) výstupních souborů pomocí volby
a index pro tyto titulky ve zbývajících souborech
pomocí .
Pokud není vstup z DVD, měli byste použít 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 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.
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:vpass=2 -vobsubout titulky -vobsuboutindex 1 -sid 5Kopírování francouzských titulků z MPEG souboru
rm titulky.idx titulky.sub
mencoder film.mpg -ifo film.ifo -vobsubout titulky -vobsuboutindex 0 -vobsuboutid fr -sid 1 -nosound -ovc copy
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í,
žádný video přehrávač nepodporuje tento atribut
MPEG-4, s výjimkou MPlayeru.
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 vzorové-svcd.mpg -ovc lavc -lavcopts vcodec=mpeg4:autoaspect -vf crop=714:548:0:14 -oac copy -o výstup.aviUž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
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.
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 Euvropě, 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.
Abaste dosáhli uspokojivého výsledku, musíte znát původní formát.
Nevezmete-li to správně v potaz, dostanete obraz plný ošklivých kombinačních
(proklad) artefaktů.
Kromě toho, že budete mít nekvalitní obraz, artefakty rovněž snižují
efektivitu kódování:
Dosáhnete horší kvality při daném datovém toku.
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.
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 "pulldown" a
nechvalně známé NTSC "3:2 telecine" 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 vieem, 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, jalikož 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, nobo 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 0.2 pro velmi pomalé přehrávání a
najděte vzor, pokud jej nevidíte při plné rychlosti.
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).
Poznámka:
Většina kodeků, které podporují ABR enkódování, podporují pouze dvouprůchodové
enkódování, zatímco ostatní jako x264
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 shodné.
V každém z těchto režimů 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 libavcodec 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, libavcodec bude 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 libavcodec
nejnižší možný kvantizer pro každý makroblok (ten je nastaven pomocí
, výchozí je 2). Jakmile nastavíte dostatečně nižší
datový tok, takže je libavcodec
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.
Při konstantním kvantizeru libavcodec
používá kvantizer nastavený volbou na každý makroblok.
Pokud chcete maximálně kvalitní rip, opět bez ohledu na datový tok, můžete
použít . To povede ke stejnému datovému toku a PSNR
(odstup signál–šum) jako CBR s =infinity a
výchozím 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 malým počtem detailů budou častěji používány
vyšší kvantizery a v pomalých nebo detailních scénách zase nižší kvantizery.
Pokud použijete , plýtváte bity. Pokud použijete
, pak nedostanete nejkvalitnější možný rip.
Dejme tomu, že ripujete DVD při a
výsledkem je 1800Kbit. Pokud provedete dvouprůchodové enkódování
s , 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)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
může různým způsobem snížit kvalitu.
Komprese typu MPEG je rovněž 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:
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.
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.
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.
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.
LLLLLLLLCCCCLLLLLLLLLLLLLLLLCCCCLLLLLLLL
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ímekLLLLLLLLCCCCLLLLLLLLLLLLLLLLCCCCLLLLLLLLLLLLLLLLCCCCLLLLLLLLLLLLLLLLCCCCLLLLLLLL
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 ().
Spusťte MPlayer s volbou
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é em
a upravte obdélník podle potřeby.
V tom vám pomůže filtr , který 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 udělat všechnu práci
zmíněnou výše, jelikož má volitelný parametr
(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 ,
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.
Nejdřív byste si měli spočítat enkódovaný poměr stran:
PSo = (Šo x (PSa / PRdvd )) / Vokde:
Š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 ten CQ?
CQ odpovídá počtu bitů na pixel a na snímek v 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í jak na datovém toku, tak 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í.
CQ pod 0.18 obvykle vede k velmi čtverečkovanému obrazu, 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 2 CD.
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.
Zvuk
Zvuk je mnohem jednodušší problém k řešení: pokud prahnete po kvalitě, prostě
jej nechte tak jak je.
Dokonce i AC3 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í AC3 neznamená,
že jej nebudete mít zítra. Připravte své DVD ripy zachováním AC3 datových
proudů.
Datový proud AC3 můžete zachovat buď jeho zkopírováním přímo do video proudu
během enkódování.
Také můžete extrahovat AC3 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 120 je druhou zvukovou stopou v souboru).
Někdy ovšem opravdu nemáte jinou možnost než dále zkomprimovat 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í.
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.
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 filtr .
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ím zařízení a přehrávače v budoucnosti budou schopny odstraňovat
proklad v plné půlsnímkové rychlosti, čili 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:
Výška a svislé odsazení musí být násobkem 4.
Jakékoli svislé škálování musí být provedeno v prokládaném režimu.
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:ilmv:ildct:acodec=mp2:abitrate=224
Povšimněte si voleb a .
Filtrování
Obecně byste měli filtrovat video tak málo, jak je to jen možné, abyste
zůstali co nejblíž DVD originálu. Ořezání je často nutné (jak jsme již řekli),
ale neškálujte video. Ačkoli zmenšení rozlišení je občas upřednostňováno před
použitím vyšších kvantizerů, musíme se vyhnout oběma případům: pamatujme, ž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 jiných. Tato přizpůsobení by měla být
prováděna pouze při přehrávání.
Jednu věc byste však udělat měli, a to protáhnout video velmi lehkým
odšumovací filtr, jako je .
Opět je to proto, abychom mohli některé bity lépe využít: proč s nimi plýtvat
na šum, když si jej můžete přidat při přehrávání? Zvýšení parametrů pro
ještě více zvýší komprimovatelnost, ale pokud to
přeženete, riskujete zhoršení viditelnosti obrazu. Doporučené hodnoty okolo
() jsou dost konzervativní; měli byste volně
experimentovat s vyššími hodnotami a posoudit výsledek sami.
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
, a .
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 libavcodec zatím nepodporuje uzavřený GOP (volba
zatím nepracuje), takže DivX5 nebude schopen dekódovat
nic enkódovaného s B-snímky.
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 anime,
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 +20% č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ší.
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 kino-počítače PC. 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
(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í , 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
nebo .
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) 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 , 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í y o 5 pixelů, protože je to liché
číslo, což by nepříznivě ovlivnilo kvalitu. Místo toho zvýšíme odsazení 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ů
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
Takovéto 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 -vf crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 \
-o Harry_Potter_2.avi
A průchod dva je stejný, jen nastavíme :
mencoder dvd://1 -ofps 24000/1001 -oac copy -vf crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=2 \
-o Harry_Potter_2.avi
Volby velmi zvýší kvalitu za cenu časové
náročnosti enkódování. Vcelku není důvod tuto volbu vypustit, pokud je
primárním cílem kvalita. Volby
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 .
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 post-procesním filtrem,
znatelně zvýší vnímanou kvalitu a pomůže odstranit čtverečkové artefakty ve
videu. S MPlayerovou volbou
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 3Muxování (multiplexování)
Nyní, když máte své video enkódované, budete jej nejspíš chtít muxovat
s jedním 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 zvuk a video zapracovat
pouze do nosných formátů MPEG a AVI.
Například:
mencoder -oac copy -ovc copy -o výstupní_film.avi -audiofile vstupní_audio.mp2vstupní_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.mp2vstupní_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 de 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).
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 MP 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í:
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é.
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 AC3.
Z výše uvedených důvodů MEncoder zatím
nepodporuje proměnnou snímkovou rychlost ani enkódování do Vorbisu.
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.
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.mkvvstupní_video.avivstupní_audio1.mp3vstupní_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.
Enkódování s x264 kodekemx264 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 vMEncoderu.
Jaké volby bychom měli nastavit pro nejlepší výsledky?
Začněte prosím prostudováním části
x264 v man stránce
MPlayeru.
Tato sekce je zamýšlena jako doplněk man stránky.
Obecně jsou zde tři typy uvažování při volbě vhodných voleb enkodéru:
Časová náročnost enkódování vs. kvalitaVolby rozhodující o typu snímkůVolby ovlivňující kontrolu datového toku a kvantizaci
Tento návod se většinou zaměřuje na první skupinu voleb.
Další dvě skupiny často záleží na osobních preferencích a individuálních
požadavcích.
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
v .
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.
Z voleb, které umožňují vyměnit čas za kvalitu, jsou obvykle nejdůležitější
a .
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 a
velmi silně ovlivňují.
Zkušenosti ukazují, že při jednom referenčním snímku si
vezme asi o 35% více času než
.
Při 6 referenčních snímcích naroste spomalení nad 60%.
Vliv na PSNR se zdá být poměrně stálý,
bez ohledu na počet referenčních snímků.
Typicky získá 0.2-0.5 dB
celkového PSNR přes .
To je obvykle již viditelné.
Enkódovací volby x264frameref:
Výchozí nastavení je 1, ale nemělo by to být bráno
tak, že je rozumné nastavovat jej na 1.
Pouhé zvýšení na 2 získá okolo
0.15dB PSNR s 5-10% spomalením, což je zřejmě dobrý obchod.
získá kolem 0.25dB PSNR navíc k
, což již může být viditelný
rozdíl.
je asi o 15% pomalejší než
.
Naneštěstí se zisk rychle vytrácí.
Prř můžete očekávat zisk pouze
0.05-0.1 dB nad při dodatečném
15% zpomalení.
Nad 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ší
celkový PSNR o pouhé 0.02dB nad ,
při spomalení o 15%-20%.
Při tak vysokých hodnotách 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í 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
"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 a
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 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 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 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 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í () je rozumným kompromisem
mezi rychlostí a kvalitou. Volba získá o trošku méně
než 0.1dB globální PSNR, při spomalení, které se liší v závislosti na
. Při vysokých hodnotách
(řekněme 12 nebo tak), je
asi o 40% pomalejší než výchozí . Při
, klesne způsobené spomalení na
25%-30%.
Volba používá tak rozsáhlé vyhledávání, že je příliš
pomalá pro praktické využití.
4x4mv:
Tato volba zapíná použití podčástí 8x4, 4x8 a 4x4 v predikovaných
makroblocích. 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
(), zvýší obvykle enkódování s
o trochu rychlost enkódování.
S vypnutým adaptivním rozhodováním o B-snímku
('s ),
se optimální hodnota této volby obvykle pohybuje od
do .
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.
Pokud vůbec použijete , zvažte
nastavení maximálního počtu B-snímků na 2 nebo více, pokud chcete
těžit z vážené predikce.
b_adapt:
Poznámka: Výchozí je zapnuto.
Je-li tato volba zapnuta, bude enkodér používat jendoduchou
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 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.
a nemají žádný vliv
v náslydný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
do x264encopts, pokud očekáváte, že stmívání
bude mít znatelný vliv ve vašem konkrétním klipu.
deblockalpha, deblockbeta:
Toto bude poněkud kontroverzní.
H.264 definuje jednoduchou deblokující proceduru na I-blocích, která
používá přednastavené síly a prahy na QP daného bloku.
Ve výchozím stavu jsou bloky s nízkým QP silně filtrovány a bloky s
nízkým QP nejsou deblokovány vůbec.
Přednastavené síly definované standardem jsou dobře voleny a
odchylky jsou velmi dobré, takže jsou PSNR optimální pro jakékoli
video, které zkoušíte enkódovat.
Volby a
vám umožní nastavit odchylky přednastavených deblokovacích prahů.
Zdá se, že si mnoho lidí myslí, že je vhodné výrazně snížit sílu (řekněme, -3)
deblokovacího filtru.
To však není téměř nikdy dobrý nápad a v mnoha případech lidé, kteří
tak činí, dobře nerozumí jak výchozí deblokování pracuje.
První a nejdůležitější věc, kterou byste měli o in-loop deblokovacím
filtru vědět je, že výchozí nastavení prahů je téměř vždy optimální
vzhledem k PSNR.
V řídkých případech kdy není, je ideální odchylka plus mínus 1.
Změna deblokujících parametrů o větší hodnotu vede téměř s jistotou
ke zhoršení PSNR.
Zesílení filtru setře více detailů; zeslabení zvýší viditelnost čtverečkování.
Rozhodně je nevhodné snižovat deblokovací prahy, pokud má vaše video
nízkou prostorovou komplexnost (čili nemnoho detailů nebo šumu).
In-loop filtr téměř perfektně kryje artefakty, které se vyskytnou.
Pokud má však zdroj vysokou prostorovou komplexnost, jsou artefakty
hůře rozeznatelné.
To proto, že kroužkování má tendenci vypadat jako detail nebo šum.
Lidská vizuální vnímavost si snadno povšimne, když je odstraněn detail,
ale obtížněji si všimne, když je špatně reprezentován šum.
Když příjde na subjektivní kvalitu, je šum částečně zaměnitelný s detaily.
Snížením síly deblokovacího filtru nejspíše zvýšíte chybu přidáním
kroužkových artefaktů, ale oko si toho nevšimne, protože si splete
artefakty s detaily.
To však stále neospravedlňuje
snížení síly deblokovacího filtru.
Obecně dostanete kvalitnější šum z postprocesingu.
Pokud vaše H.264 videa vypadají příliš rozmazané nebo flekaté, zkuste si
pohrát s
při přehrávání.
by mělo zamaskovat většinu smazaných
artefaků.
Téměř jistě to bude vypadat lépe než to, co dostanete pomocí
podvádění deblokovacího filtru.
Jak naložit s telecine a prokladem v NTSC DVDPředstaveníCo je to telecine?
Pokud moc nerozumíte tomu, co je napsáno v tomto dokumentu, doporučujeme
navštívit tuto stránku:
http://www.divx.com/support/guides/guide.php?gid=10
Na této adrese je 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šechny tyto čí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 (jak je 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é.
je nesprávně.
Místo toho byste měli použít .
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/10001 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]
Jak zjistit o jaký typ videa se jedná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 nechá
MPlayer přehrát film tak rychle, jak je to jen
možné; stejně to ale, v závislosti na vašem stroji, 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č.
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:
mplayer dvd://1
Převiňte na část s pohybem.
Použijte klávesu . pro krokování po jednom snímku.
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í.
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ý.
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 (často
i 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é.
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.
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.
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
. Jinak se MEncoder
pokusí enkódovat při 30000/1001 snímcích/s a bude opakovat snímky.
mencoder dvd://1 -nosound -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].
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ů, , je popsán v části
smíšené progresivní a
telecinované.
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).
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: a
. Rovněž velmi doporučujeme použití volby
[2]
protože bude enkódovat makrobloky jako neprokládané tam, kde není žádný pohyb.
Volba zde není nutná.
mencoder dvd://1 -nosound -ovc lavc -lavcopts ildct:ilme:mbd=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
abyste zjistili, které jsou k dispozici
(grep pro "deint") 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é
. 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 -nosound -vf pp=lb -ovc lavc
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 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í
musíte nastavit a
na dvojnásobek snímkové rychlosti originálu.
mencoder dvd://1 -nosound -vf tfields=2 -ovc lavc -fps 60000/1001 -ofps 60000/1001
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í 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 -nosound -vf field=0 -ovc lavcSmíš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 je vyžadována, protože výstupní video
bude mít 24000/1001 snímků za sekundu.
je navržen tak, aby inverzně telecinoval, ale
progresivní data nechával jak jsou. Pro správnou funkci
musí být následován
filtrem , jinak MEncoder
zhavaruje. 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 -nosound -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.
Zmatení? softpulldown je filtr, který projde celé video a převede celý soubor
na telecinovaný. Pokud budeme následovat softpulldown buď
nebo , bude konečný výsledek zcela
progresivní. Nutná je volba .
mencoder dvd://1 -nosound -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
Osobně jsem nepoužil , 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í.
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íčen 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 nebo .
Š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 ba 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.
Poznámky pod čarouK 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ými pixely
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
je OK, ale
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ů v rámu
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čí mohou zůstat jen 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 .
K volbám pro enkódování a kvalitě:
Jen proto, že doporučuji zde neznamená, že by tato
volba nemohla být použita jinde. V kombinaci s , je
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.
K výkonu filtru pullup:
Použití je bezpečné (spolu se ) ne 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í , že je
MEncoder o 50% pomalejší. Přidání zpracování zvuku
a pokročilých zastíní tento rozdíl tak, že rozdíl
v rychlosti působený použitím se sníží na 2%.
K překladu:
Překlad slov interlace a interleave je velmi obtížný, protože vede k jedinému
českému ekvivalentu – prokládání. V prvním případě (interlace) se jedná
o prokládání obrázku, kdy se z lichých a sudých řádků vytvoří dva půlsnímky,
což je běžné v TV.
Prokládání (interleave) je naproti tomu sloučení různého obsahu (zvuk, video)
do jediného souboru – kontejneru (např. AVI) tak, že se každá složka
rozdělí na malé části (tzv. chunky) a ty se pak jeden za druhým ukládají podle
určitého vzoru. O to se stará muxer (multiplexer). Abychom dostali zpět
jednotlivé složky, musíme poskládat proházené kousky zase zpět, o což se stará
demuxer (demultiplexor).