DirectShow (někdy DS nebo DShow ; kódové označení Quartz ) je multimediální rámec a rozhraní pro programování aplikací ( API ) vydané společností Microsoft vývojářům softwaru , které umožňuje aplikacím Windows ovládat širokou škálu audio/video I/O zařízení, včetně DV a webových kamer . , DVD zařízení, TV tunery atd.
Podporuje také různé formáty souborů, od WAV a AVI po Windows Media . Je to náhrada za dřívější technologii Video pro Windows společnosti Microsoft . [1] DirectShow, založený na modelu COM ( Component Object Model ) Microsoft Windows , poskytuje běžné mediální rozhraní podporované většinou programovacích jazyků . DirectShow je navíc rozšiřitelný o podporu zařízení, formátů a komponent zpracování třetích stran. Vývojářské nástroje a dokumentace byly dříve distribuovány jako součást DirectX SDK, ale nyní jsou distribuovány s Platform SDK , která je zase součástí Windows SDK . [2] Microsoft plánuje v budoucnu nahradit DirectShow Media Foundation .
Na začátku 90. let, po vydání Windows 3.1 , vstoupilo na americký trh množství digitálních video zařízení (nyní známých jako webové kamery ) . Obvykle byla tato zařízení připojena přes paralelní port (port tiskárny LPT). Postupem času se tato zařízení stala populárnější a Microsoft se rozhodl pro vývojáře vyvinout technologii pro práci s multimediálními daty. Tato technologie se nazývá Video for Windows (VFW). Od svého zrodu měl ale VFW obrovskou nevýhodu – složitost práce s MPEG videem. [jeden]
Před vydáním Windows 95 Microsoft zahájil nový projekt ActiveMovie [3] (kódové označení Quartz) na podporu MPEG , 32bitové architektury a streamování dat videa/audia. Nový projekt je charakteristický tím, že využívá nový vývoj společnosti Microsoft Corporation, konkrétně Component Object Model (COM). Pouze v Quartzu je zvykem nazývat objekty filtry, které se stejně jako LEGO bloky spojují do grafu filtrů. Díky architektuře COM je samostatný filtr soběstačným objektem, který může vytvořit vývojář třetí strany pro své vlastní potřeby (například: pro zachování funkčnosti svého zařízení).
V roce 1997 Microsoft integroval ActiveMovie do DirectX a změnil jeho název na DirectShow. [4] [5] V roce 1998 přišla DirectShow jako standard s podporou DVD . V roce 2000 byly přidány funkce pro úpravu datového toku a integrace DirectShow do DirectX byla konečně dokončena. Vývojáři nyní mohou promítat zachycené video do svých 3D scén. Ve vydání DirectX 9 přidal DirectShow možnost kombinovat video streamy do jednoho pro mixování videa. [6]
V říjnu 2004 byla DirectShow odstraněna z oficiální distribuce DirectX a přenesena na doplňky DirectX. V dubnu 2005 byla DirectShow zcela odstraněna z oficiálních distribucí DirectX a přesunuta do Windows Server 2003 SP1 verze sady Microsoft Platform SDK. [2] Některé příklady dokumentace však ke kompilaci stále vyžadují sadu DirectX SDK. [7] Ale s vydáním Windows Vista začíná být dokumentace dodávána společně se sadou Windows SDK. [2]
Dobrým příkladem schopností DirectShow je aplikace Windows Movie Maker . Většina aplikací pro úpravu médií třetích stran pro operační systém Windows také používá DirectShow. [6] Protože jsou filtry DirectShow rozděleny do tří typů, lze funkce DirectShow klasifikovat podle toho.
Zachycovací filtry jsou navrženy tak, aby vkládaly multimediální data do programového toku z různých fyzických zařízení. Rolí zařízení mohou být jak různé typy video zařízení (přenosné videokamery, webkamery, TV tunery), tak audio zařízení ( mikrofon , modemová linka ), data lze získávat i ze souboru ( AVI , MPEG , MP3 ). DirectShow umožňuje používat několik zachytávacích filtrů současně, například: pro zachycení videa z webové kamery a zvuku z mikrofonu současně. Počet současně používaných záchytných filtrů je omezen pouze výkonem použitého počítače .
Transformační filtry – určené ke zpracování příchozích dat z programového proudu a následnému odeslání převedených dat zpět do proudu dalšímu typu filtrů. Tento typ filtru může provádět analýzu dat, plně manipulovat s audio a video daty za účelem vytvoření komplexních vizuálních efektů nebo jednoduše sloučit (nebo zrušit sloučení) audio a video kanály. Microsoft ve standardní dodávce spolu s operačním systémem Windows poskytuje malé množství hotových filtrů: kodeky ( MPEG-1 , MP3, WMA , WMV , MIDI ), kontejnery (AVI, ASF , WAV ), několik rozbočovačů ( nebo demultiplexory) a multiplexory . [8] Další oblíbené filtry: kodeky ( MPEG-4 , AAC , H.264 , Vorbis ) a kontejnery ( Ogg , .mov , MP4 ) jsou instalovány s různými programy třetích stran.
Vizualizační ( vykreslovací ) filtry jsou navrženy pro výstup dat z proudu na standardní fyzické výstupní zařízení, například na monitor , zvukovou kartu nebo soubor . Analogicky k zachytávacím filtrům může existovat také několik vizualizačních filtrů, například pro současné zobrazení videa na obrazovce a záznam stejného videa do souboru.
Přehrávání normálního video souboru je poměrně jednoduchý úkol, který lze implementovat pomocí DirectShow. Psaní programu pomocí všech mechanismů DirectShow (například implementace vlastního filtru jakéhokoli typu) je poměrně obtížný úkol a vyžaduje dobré dovednosti. [9] [10] [11]
Vývojáři zřídka vytvářejí filtry DirectShow od začátku, častěji používají základní třídy. Tyto třídy obvykle zjednodušují vývoj tím, že umožňují programátorovi obejít některé úkoly. Proces však může být stále poměrně komplikovaný, protože množství kódu v základních třídách je přibližně poloviční než velikost knihovny MFC . A počet objektů založených na základních třídách ohromuje mnoho vývojářů. Navíc se v některých případech pravidla DirectShow API liší od obvyklých pravidel COM objektů, což je patrné zejména v parametrech metody. K vyřešení těchto složitostí vývojáři často používají vyšší úroveň: Windows Media Player SDK , která je založena na objektu ActiveX a používá normální pravidla COM.
Codec hell (termín inspirovaný DLL hell ) je konflikt, ke kterému dochází mezi různými filtry, které se snaží provést stejný úkol. Faktem je, že nyní velké množství společností vyrábí kodeky ve formě filtrů DirectShow, které často provádějí podobné úkoly se stejným typem mediálních dat. [12] [13]
Nástroje, které mohou pomoci v boji proti peklu kodeků: