ffdshow - švýcarský nůž na filmy a zvuk
autor: Zombux, Kwolek , publikováno 27.11.2005
ffdshow - švýcarský nůž na filmy a zvuk

V tomto článku si posvítíme na problematiku přehrávání videa na PC. Pokusíme se poradit, co dělat se zdánlivě nepřehratelným souborem a podíváme se na změť panující v říši kodeků. V další části pak rozebereme program ffdshow, který pomůže filmy nejenom přehrát, ale navíc dokáže pomocí postprocessing filtrů zlepšit jejich obrazovou (!) i zvukovou kvalitu.


Zatímco u "počítačového" přehrávání hudby je situace poměrně jednoduchá a nejčastěji používané formáty (zejména .mp3) přehrají téměř všechny přehrávače, u videosouborů (i když se jedná o jediný soubor s příponou .avi) panuje doslova Babylón formátů. Pověstné zmatení jazyků v oblasti kodeků je opravdu značné - subformátů a verzí je neskutečně mnoho, a chudák počítač si často s nimi nedokáže poradit. Pokusíme se teď nabídnout jedno z mnoha možných řešení pro všechny...

Jak to vlastně funguje? Trocha teorie nikoho nezabije

Máte na disku videosoubor, který hodláte prohlédnout v nějakém přehrávači (BSplayeru, Winampu, Multimedia Playeru). Co se za otevřením souboru a korektním přehráním obsahu skrývá, však trochu připomíná alchymii. Stačí aby jeden článek řetězu nefungoval, a s nerušeným sledováním filmu se můžete klidně rozloučit. V čem tedy tkví tajemství přehrávání digitálního videa? Co dělat, pokud mi nějaký soubor nejde přehrát?

Odpověď je poměrně jednoduchá i složitá zároveň. Pokud něco nefunguje, s největší pravděpodobností v systému chybí patřičný kodek (slovo "kodek" je složenina enkodér-dekodér). Jeho smyslem je kódování a zpětné rozkódovávání videa. V tomto případě tedy funguje jako jakýsi "ovladač" kterého cílem je ten který formát správně rozluštit a přehrát. Problém s kodekem (chybí, nebo není kompatibilní) je nejčastější příčinou problémů při přehrávání videa. Zádrhel může nastat i jinde, proto myslím nebude na škodu, když zjednodušeně vysvětlím jak to celé funguje.

.avi není jen jeden formát

Asi nejdůležitější poznatek je následující: videosoubor (jeho nejrozšířenějí příponou je .avi) je ve skutečnosti schránkou - kontejnerem, který v sobě obsahuje více datových proudů (tzv. streamů). V praxi je jeden stream obraz, druhý zvuk, mohou zde být (to už je u .avi méně časté) i titulky nebo kapitoly. Kontejner všechny tyto streamy spojuje do jednoho souboru. Nejrozšířenějším typem kontejneru je:

  • .avi (audio-video interleave),
  • následovaný .mpg, .mpeg, .m2v,
  • microsoftím .wmv,
  • .vob je zase používaný na DVD,
  • nesmí chybět QuickTime .mov od Apple,

...na chvostu se drží menšinové, byť velmi kvalitní kontejnery jako .ogm nebo Matroska.

V případě, že přehrávač "video-kontejner" otevře (zahájíte přehrávání), musí od sebe nejdříve oddělit jednotlivé streamy. K tomu slouží tzv. splitter. Splitter na nejrozšířenější kontejnery je již obsažen ve Windows, pouze některé méně rozšířené formáty (.ogm, .mp4) potřebují splitter doinstalovat. Po rozdělení kontejneru na streamy předává splitter jednotlivé streamy kodekům (viz dále).

Teprve pokud je soubor korektně rozdělen na streamy, a každý stream správně dekódován, máte vyhráno. Dekódovaný stream přebírá renderer, který data odešle na výstupní zařízení, lidsky řečeno vykreslí obraz nebo přehraje zvuk.

multimediální přehrávač (BSplayer) - splitter - kodek - renderer - výstupní zařízení

Máme streamy - ani poté však problémy nekončí...

Jak splitter vlastně pozná, jakou kompresí jednotlivé streamy používají? Jednoduše, každý formát má svůj kód (je to něco jako podpis), jmenuje se FourCC. Novější formáty podporují pokročilejší identifikaci Codec ID, ale pro zpětnou kompatibilitu je FourCC obsažen v každém streamu.

Při instalaci kodeku se k němu přiřadí patřičné FourCC, a pokud je v systému kodeků pro jedno konkrétní FourCC víc kodeků, nastaví se i priorita. Právě zde je problém codec packů, které mohou nainstalovat do systému více různých verzí či dokonce různých kodeků pro jedno FourCC, a pak hledej šmudlo, proč to zase nefunguje?

ffdshow - švýcarský nůž na filmy a zvuk
takhle nějak vypadá FourCC tabulka (výpis ze software GSpot)

Kodeky jsou ke stažení na internetu opravdu všude. Ovšem - jaké zvolit? Zde nastává další kámen úrazu, protože cest k cíli je více. Asi nejlogičtější je stáhnout si jednotlivý kodek pro formát, který právě potřebujete přehrát. Toto sice možné je, nicméně příliš komfortní to není. To pochopili i tvůrci Codec Packů, tedy jakýchsi balíků, ve kterých jsou obsaženy kodeky pro nejběžnější formáty. Tato cesta je již schůdnější (tedy až na licenční problémy u některých packů).

Další možností, například u Windows Media Playerů v nejnovějších verzích, je to, že si dokážou stahovat potřebné kodeky samy z internetu. Osobně nemám takovouto automatiku v lásce, navíc pokud Vaše PC není připojeno k internetu, je vám to stejně na dvě věci.

Na první pohled to vypadá tak, jakoby by bylo nejrozumnější stáhnout co největší codec pack a ten nainstalovat. Bohužel - ne vždy to funguje tak jak předpokládáte. Důvody jsou jednoduché - různé kodeky se mezi sebou rády hádají, navzájem si přepisují jednotlivé priority a parametry, a když něco nefunguje tak často ani nezjistíte proč se tak děje (nebo spíše neděje).

Ještě jedno řešení by tu ale bylo...



 
Komentáře naleznete na konci poslední kapitoly.
790 čtenářů navrhlo autorovi prémii: 387.8Kč Prémie tohoto článku jsou již uzavřené, děkujeme za váš zájem.
Tento web používá k poskytování služeb soubory cookie.