DirectShow
DirectShow (také zkráceně DS nebo DShow ), původně Quartz , je multimediální framework a API vytvořené společností Microsoft pro vývojáře softwaru za účelem provádění četných operací s multimediálními soubory a proudy. Byl vytvořen, aby nahradil starou technologii Microsoft Video for Windows . [ 1 ] DirectShow, založený na rámci Microsoft Windows Component Object Model (COM), poskytuje společné rozhraní pro správu multimédií v různých programovacích jazycích a je to rámec s architekturou založenou na filtrech , která dokáže zobrazovat a nahrávat video soubory. video na vyžádání uživatele nebo vývojáře. Vývojové nástroje a dokumentace DirectShow byly původně distribuovány jako součást DirectX SDK . V současné době jsou distribuovány jako součást Windows SDK (dříve známé jako Platform SDK ). [ 2 ]
Mezi rivaly DirectShow na jiných platformách patří framework QuickTime od Applu a různé linuxové multimediální frameworky jako GStreamer nebo Xine . Microsoft plánuje v budoucích verzích Windows postupně zcela nahradit DirectShow Media Foundation . [ 3 ] Aplikace pro Windows Vista a Windows 7 používají Media Foundation místo DirectShow pro některé úlohy související s multimédii.
Příklad zdrojového kódu
Následující příklad ukazuje, jak vytvořit jednoduchou aplikaci, která přehrává video soubor zobrazením na obrazovce:
#include "stdafx.h"
#include <dshow.h>
int _tmain(int argc, _TCHAR* argv[])
{
IGraphBuilder *pGraph = NULL;
IMediaControl *pControl = NULL;
IMediaEvent *pEvent = NULL;
IMediaSeeking *pSeeking = NULL;
// Inicializace knihovny COM.
HRESULT hr = CoInitialize(NULL);
if (FAILED(hr))
{
printf("CHYBA - Inicializace knihovny COM se nezdařila");
system("pauza");
návrat-1;
}
// Vytvořte správce grafů a filtrů a získejte ovládací rozhraní.
hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (neplatné **)&pGraph);
if (FAILED(hr))
{
printf("CHYBA - Nelze vytvořit správce grafů a filtrů.");
system("pauza");
návrat-1;
}
hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
hr = pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pSeeking);
// Vytvořte graf DirectShow
hr = pGraph->RenderFile(L"D:\\Videos\\costaColorW.mpg", NULL);
pokud (USPĚLO(h))
{
// Spuštění přehrávání grafu
hr = pControl->Run();
pokud (USPĚLO(h))
{
// Volitelné: Nastavení zastavení přehrávání po 10 sekundách
LONGLONG pProud = 0, pStop = 100000000;
hr = pSeeking->SetPositions(&pCurrent, AM_SEEKING_AbsolutePositioning, &pStop, AM_SEEKING_AbsolutePositioning);
if (FAILED(hr)) {
printf("CHYBA - SetPositions se nezdařilo.");
}
// Počkejte na dokončení přehrávání.
dlouhý evCode;
pEvent->WaitForCompletion(INFINITE, &evCode);
// Poznámka: Nepoužívejte INFINITE ve skutečné aplikaci, může to způsobit
// neurčitý zámek.
}
} jinak
printf("CHYBA - Soubor neexistuje nebo neexistuje žádný kodek pro jeho přehrání.");
// Po dokončení přehrávání spusťte příkaz 'pause'.
system("pauza");
pControl->Release();
pEvent->Release();
pSeeking->Release();
pGraph->Release();
CoUniinitialize();
návrat 0;
}
Viz také
- GraphStudio – open source projekt GraphEdit
- Objekty médií DirectX
- pluginy DirectX
- DirectX Video Acceleration
- DirectShowPlayer
Reference
- Dokumentace MSDN DirectShow . Získáno 7. července 2007 .
- Pesce, Mark D. (2003). Programování Microsoft DirectShow pro digitální video a televizi . MicrosoftPress. ISBN 0-7356-1821-6 . ( ukázková kapitola )
Poznámky
- ↑ Blomé, Michael; Wasson, Mike (červenec 2002). „Základní technologie médií ve Windows XP vám umožňuje vytvářet vlastní komponenty pro zpracování zvuku/videa“ . MSDN Magazine (Microsoft) . Staženo 2. dubna 2007 .
- ^ "Dokumentace DirectShow" . MSDNLibrary . Microsoft. 1. ledna 2006 . Získáno 1. ledna 2006 .
- ^ „Migrace z DirectShow do Media Foundation“ . MSDNLibrary . Microsoft. července 2006 . Staženo 17. srpna 2010 .
Externí odkazy (v angličtině)
- DirectShow na MSDN (oficiální dokumentace)
- Průvodce přehráváním DirectShow J. River (výukový program DirectShow s obecnými informacemi)
- VideoLab ( knihovna pro zpracování videa s podporou DirectShow (zdarma pro nekomerční účely))