Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, IMFMediaEnginea Audio/Video Capture v Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]
Tento článek představuje základní terminologii a koncepty, které se používají v DirectShow. Po přečtení této části budete připraveni napsat svou první aplikaci DirectShow.
Filtry a grafy filtrů
Stavební blok DirectShow je softwarová komponenta označovaná jako filtr. Filtr je softwarová komponenta, která provádí určitou operaci s multimediálním streamem. Filtry DirectShow můžou například
- čtení souborů
- získání videa ze zařízení pro zachytávání videa
- dekódování různých formátů datových proudů, jako je video MPEG-1
- předání dat do grafické nebo zvukové karty
Filtry přijímají vstup a vytvářejí výstup. Pokud například filtr dekóduje video MPEG-1, vstup je datový proud s kódováním MPEG a výstupem je řada nekomprimovaných snímků videa.
V Režimu DirectShow aplikace provádí jakoukoli úlohu propojením řetězců filtrů dohromady, aby výstup z jednoho filtru byl vstupem pro jiný. Sada připojených filtrů se nazývá graf filtru . Například následující diagram znázorňuje graf filtru pro přehrávání souboru AVI.
Filtr Zdroj souborů načte soubor AVI z pevného disku. Filtr AVI Splitter analyzuje soubor do dvou datových proudů, komprimovaného video streamu a zvukového streamu. Filtr dekompresoru AVI dekóduje snímky videa. Filtr Video Renderer nakreslí snímky na displej pomocí DirectDraw nebo GDI. Výchozí filtr zařízení DirectSound přehraje zvukový stream pomocí DirectSound.
Aplikace nemusí spravovat všechny tyto toky dat. Místo toho se filtry řídí komponentou vysoké úrovně označovanou jako Správce grafů filtru. Aplikace provádí volání rozhraní API vysoké úrovně, jako je Run (pro přesouvání dat přes graf) nebo Stop (zastavení toku dat). Pokud potřebujete větší kontrolu nad operacemi datového proudu, můžete k filtrům přistupovat přímo prostřednictvím rozhraní modelu COM. Správce grafů filtru také předává aplikaci oznámení událostí.
Správce grafů filtru slouží také k dalšímu účelu: Poskytuje aplikaci metody pro vytvoření grafu filtru propojením filtrů. (DirectShow také poskytuje různé pomocné objekty, které zjednodušují tento proces. Ty jsou podrobně popsány v dokumentaci.)
Vývoj aplikace DirectShow
Obecně platí, že existují tři úlohy, které musí každá aplikace DirectShow provádět. Ty jsou znázorněny v následujícím diagramu.
- Aplikace vytvoří instanci Správce grafů filtrů.
- Aplikace k vytvoření grafu filtru používá Správce grafů filtru. Přesná sada filtrů v grafu bude záviset na aplikaci.
- Aplikace používá Správce grafů filtru k řízení grafu filtru a streamování dat prostřednictvím filtrů. V průběhu tohoto procesu bude aplikace také reagovat na události z Správce grafů filtru.
Po dokončení zpracování aplikace uvolní Správce grafů filtrů a všechny filtry.
DirectShow je založen na COM; Správce grafů filtrů a filtry jsou všechny objekty COM. Před zahájením programování DirectShow byste měli mít obecné znalosti o programování klientů modelu COM. K dispozici je mnoho knih o programování modelu COM.
Pokud chcete začít s DirectShow, přečtěte si článek Jak přehrát soubor, který představuje jednoduchou konzolovou aplikaci pro přehrávání videosouboru. Část o DirectShow podrobněji vysvětluje architekturu DirectShow, zatímco část Použití DirectShow zkoumá hlavní scénáře, které directShow podporují, jako je zachycení, úpravy videa, přehrávání DVD a televize.