Hlavní navigace

MPlayer a MEncoder: enkódujeme

Petr Krčmář 29. 12. 2005

V předchozích dílech jsme se naučili používat MPlayer i MEncoder a zvykli jsme si na jejich parametry. Dnes si ukážeme další podstatnou funkci - enkódování videa.

V minulém díle jsme nahrávali obraz i zvuk z televize. Výsledkem je ovšem ohromný soubor ve formátu mjpeg. Pokud chceme video uchovat pro další generace, musíme se postarat o jeho převod do rozumného formátu. Pravděpodobně nejpoužívanějším formátem současné doby je MPEG-4.

Na začátku je vhodné vysvětlit některé pojmy, které jsou velmi často chybně vykládány, a to překvapivě i velkými společnostmi.

MPEG-4 je video formát, který v roce 1998 vytvořila skupina Moving Picture Experts Group. Zdědil některé vlastnosti starších sourozenců MPEG-1 a MPEG-2 a navíc přidává řadu vlastních funkcí, které zvyšují kvalitu obrazu při stejném datovém toku. Samotné implementace jsou ponechány na jednotlivých vývojářích.

DivX je komerční kodek, který implementuje formát MPEG-4 a jeho okleštěná verze je k dispozici pro některé systémy zdarma. Pro Linux není k dispozici.

XviD je další implementací MPEG-4, na rozdíl od DivX se jedná o open source.

Implementací MPEG-4 je samozřejmě mnohem více a MPlayer obvykle využívá knihovnu libavcodec. Každopádně všechny filmy, které máte na CD, jsou v MPEG-4, ačkoliv se někdy (velmi často) chybně uvádí, že jsou v DivX. Formát DivX neexistuje.

Posledním pojmem, který si vysvětlíme, je AVI. Nejedná se o konkrétní formát, ale pouze o jakýsi kontejner, který obsahuje audio a video proudy, které je možno přehrávat zároveň. Vytvořil jej Microsoft v roce 1992. Může obsahovat audiovizuální data v libovolném formátu a samotný kontejner AVI o svém obsahu nijak nevypovídá. AVI je tedy jen pouhý nosič.

Nyní se pustíme do samotného enkódování. Předpokládám, že máme co enkódovat. Buď jsme získali vstupní data ze zmíněné televize, nebo máme DVD, ze kterého si uděláme napodobeninu pro vlastní potřebu.

Samotný proces si rozdělíme na tři kroky. V prvním enkódujeme audio a v dalších dvou video. Dvouprůchodové enkódování má mnoho výhod. Jednak přesně zjistíme, jaký datový tok budeme potřebovat, aby se nám výsledek vešel na požadované médium (pravděpodobně CD), ale také necháme MEncoder, aby si film předem osahal a zjistil, pro které scény bude potřeba větší tok a kde je možno naopak nějaký ten kilobit ušetřit. Výsledkem je pak lepší rozložení kvality.

Nevýhodou dvou průchodů je delší doba, kterou budeme ke zpracování potřebovat. Při dnešních výkonech, které počítače nabízejí, se ovšem nemusíme bát nějakých drastických časů.

MEncoder řeší ukládání dat, která získává v průběhu své práce tak, že si zakládá dočasné soubory, ve kterých jsou uchovány už vytvořené části. Můžete hotovou práci kontrolovat tak, že si obsah vytvářených dočasných souborů přehrajete. Zjiste tak například, jestli je zvuk dostatečně kvalitní a jestli je vše tak, jak jste si přáli.

Nejprve tedy přijde na řadu audio. Toto je nejrychlejší část, která nezabere příliš času a nedá se na ní ani moc zkazit. Předpokládejme, že máme soubor s názvem video.mjpeg, který budeme enkódovat. Pro práci s DVD bychom uvedli jako zdroj dvd://, případně bychom mohli doplnit číslo titulu. Obdobně můžeme jako zdroj určit televizní kartu a enkódovat rovnou, ale na to asi nebudeme mít dost výkonu. Proto jsme posledně použili mjpeg, který není tak náročný.

$ mencoder video.mjpeg -ovc frameno -oac mp3lame -lameopts abr:br=128:aq=0:mode=1 -o frameno.avi 

V tomto případě necháme zvuk enkódovat pomocí známého kodeku Lame a nastavíme proměnlivý tok tak, aby se pohyboval kolem 128 kbit. Zvuk tvoří jen malou část výsledného filmu, takže není potřeba se jím nějak moc zabývat. Samozřejmě, pokud si enkódujete záznam koncertu, asi budete chtít vyšší kvalitu. Výsledkem je zvuk v běžné MP3, takže můžete vyjít ze zkušeností s tímto formátem.

Výsledek je uložen do souboru frameno.avi, který ovšem pochopitelně v této fázi neobsahuje žádný obraz. Jak jsem řekl, můžete v tuto chvíli zjistit, zda vám kvalita vyhovuje.

Po provedení této fáze se navíc objeví tabulka toků, které MEncoder pro toto video doporučí. Vztahují se ke kapacitám médií, na která budeme výsledný film umisťovat. Doporučuji pro jistotu nastavit nižší hodnotu, abyste nebyli výsledkem překvapeni. Jedná se jen o přibližný odhad.

Nyní se vrhneme na první průchod videa:

$ mencoder video.mjpeg -ovc lavc lavcopts vcodec=mpeg4:vbitrate=650:v4mv:vhq=4:vpass=1 -oac copy -o vystup.avi 

Použijeme zmíněnou implementaci MPEG-4 v podobně libavcodec, zkráceně lavc. Zadáme, že se bude jednat o formát mpeg4 a že probíhá první průchod ( vpass=1). Zvuk jen zkopírujeme ( -oac copy) a výsledek sypeme do vystup.avi.

Pochopitelně můžeme doplnit další volby jako filtry, ořez, změnu poměru a další. To už ale nechám na vás a na vašich potřebách.

MEncoder si v této fázi film prohlédne a označí si jednotlivé scény podle náročnosti na tok. Potřebné údaje si uloží do souboru divx2pass.log. Z něj bude číst při dalším průchodu.

$ mencoder video.mjpeg -ovc lavc lavcopts vcodec=mpeg4:vbitrate=650:v4mv:vhq=4:vpass=2 -oac copy -o vystup.avi 

Jedinou změnou je v tomto případě úprava parametru vpass=1 na vpass=2. MEncoder použije data z logu a začne samotné přežvýkání filmu na kýžený výsledek. Ten je po dokončení akce uložen v souboru vystup.avi, který obsahuje jak video, tak audio část a měl by normálně hrát.

Pokud si nejste jisti některými parametry a nechcete čekat na výsledek dlouho, můžete si vyzkoušet enkódování jen na části videa. Použijte k tomu parametry -ss 00:12:34 a -endpos 00:14:20. Získáte tak pár desítek sekund výsledného videa, které bude hotové za chvíli a vy si můžete ověřit, že jsou zvolené parametry správné.

Happy encoding!

Našli jste v článku chybu?

29. 12. 2005 8:26

Jakub (neregistrovaný)
Pasáž o kódování obsahuje několi zastaralých věcí:

1. 3 průchody se separátním kódováním zvuku a souborem frameno.avi. To už se delší dobu nedoporučuje.

2. Parametr vhq v nastavení kodeku FFmpeg MPEG-4 - jednak odpovídá modernějšímu mbd=1, jednak se vždy doporučuje novější a kvalitnější mbd=2.

3. Pro zrychlení prvního průchodu se dá přidat nová volba turbo - v případě používání "vysokokvalitních" parametrů by to mělo 1. průchod urychlit dost znatelně.

Dále se dají přida…





29. 12. 2005 22:25

Jakub (neregistrovaný)
Informace v článku nejsou zavádějící, naopak se snaží o to, aby zavádějící nebyly, aby byly správné. A to je chvályhodné, protože je naprosto neuvěřitelné, kolik nepochopení a mýtů v této oblasti panuje a kolik škodlivých důsledků to má.

Je blbost dělat bezplatnou reklamu irelevantní komerční firmě, produkující irelevantní komerční produkt (firma DivX z toho zmatení a neznalosti šikovně těží celá léta - je to jedna z hlavních příčin jejího úspěchu, podobně jako úspěch Microsoft Windows a Intern…

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

DigiZone.cz: Česká televize mění schéma ČT :D

Česká televize mění schéma ČT :D

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Vládu obejde, kvůli EET rovnou do sněmovny

Vládu obejde, kvůli EET rovnou do sněmovny

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Podnikatel.cz: Víme první výsledky doby odezvy #EET

Víme první výsledky doby odezvy #EET

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Lupa.cz: Není sleva jako sleva. Jak obchodům nenaletět?

Není sleva jako sleva. Jak obchodům nenaletět?

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Lupa.cz: UX přestává pro firmy být magie

UX přestává pro firmy být magie

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte