close

DirectShow

Přejít na navigaci Přejít na hledání
Image
Graph Edit – Příklad grafu DirectShow vytvořeného pomocí GraphEdit. [ nutná citace ]

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

Poznámky

  1. 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 . 
  2. ^ "Dokumentace DirectShow" . MSDNLibrary . Microsoft. 1. ledna 2006 . Získáno 1. ledna 2006 . 
  3. ^ „Migrace z DirectShow do Media Foundation“ . MSDNLibrary . Microsoft. července 2006 . Staženo 17. srpna 2010 . 

Externí odkazy (v angličtině)