close

DirectShow

Gå til navigation Gå til søg
Image
Grafredigering – Eksempel på en DirectShow-graf oprettet med GraphEdit. [ henvisning nødvendig ]

DirectShow (også forkortet som DS eller DShow ), oprindeligt Quartz , er en multimedieramme og API skabt af Microsoft til softwareudviklere med henblik på at udføre adskillige operationer på multimediefiler og streams. Det blev skabt for at erstatte den gamle Microsoft Video til Windows- teknologi . [ 1 ] Baseret på Microsoft Windows Component Object Model (COM) frameworket, giver DirectShow en fælles grænseflade til multimediestyring i forskellige programmeringssprog, og det er et framework med arkitektur baseret på filtre , der kan afspille på skærmen og optage videofiler efter behov fra brugeren eller udvikleren. DirectShow-udviklingsværktøjerne og -dokumentationen blev oprindeligt distribueret som en del af DirectX SDK . De distribueres i øjeblikket som en del af Windows SDK (tidligere kendt som Platform SDK ). [ 2 ]

DirectShows rivaler på andre platforme omfatter Apples QuickTime - framework og forskellige Linux-multimedieframeworks såsom GStreamer eller Xine . Microsoft planlægger gradvist helt at erstatte DirectShow med Media Foundation i fremtidige versioner af Windows. [ 3 ] Programmer til Windows Vista og Windows 7 bruger Media Foundation i stedet for DirectShow til nogle multimedie-relaterede opgaver.

Kildekodeeksempel

Følgende eksempel viser, hvordan man opretter et simpelt program, der afspiller en videofil ved at vise den på skærmen:

#include "stdafx.h"
#include <dshow.h>
int _tmain(int argc, _TCHAR* argv[])
{
   IGraphBuilder *pGraph = NULL;
   IMediaControl *pControl = NULL;
   IMediaEvent *pEvent = NULL;
   IMediaSeeking *pSeeking = NULL;

   // Initialiser COM-biblioteket.
   HRESULT hr = CoInitialize(NULL);
   hvis (FAILED(t))
   {
       printf("FEJL - Kunne ikke initialisere COM-bibliotek");
       system("pause");
       retur-1;
   }

   // Opret graf- og filtermanageren og få kontrolgrænsefladerne.
   hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                       IID_IGraphBuilder, (ugyldig **)&pGraph);
   hvis (FAILED(t))
   {
       printf("FEJL - Graf- og filterhåndteringen kunne ikke oprettes.");
       system("pause");
       retur-1;
   }

   hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
   hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
   hr = pGraph->QueryInterface(IID_IMediaSeeking, (void **)&pSeeking);

   // Byg DirectShow-grafen
   hr = pGraph->RenderFile(L"D:\\Videos\\costaColorW.mpg", NULL);
   hvis (SUCCEDED(t))
   {
       // Start grafafspilning
       hr = pControl->Kør();
       hvis (SUCCEDED(t))
       {
           // Valgfrit: Indstil afspilning til at stoppe efter 10 sekunder
           LONGLONG pCurrent = 0, pStop = 100000000;
           hr = pSeeking->SetPositions(&pCurrent, AM_SEEKING_AbsolutePositioning, &pStop, AM_SEEKING_AbsolutePositioning);
           if (FAILED(time)) {
               printf("FEJL - SetPositions mislykkedes.");
           }

           // Vent til afspilningen er færdig.
           lang evCode;
           pEvent->WaitForCompletion(INFINITE, &evCode);
           // Bemærk: Brug ikke INFINITE i et rigtigt program, det kan forårsage
           // den ubestemte lås.
       }
   } andet
       printf("FEJL - Filen findes ikke, eller der er ingen codec til at afspille den.");

   // Udfør 'pause'-kommandoen, når afspilningen er fuldført.
   system("pause");

   pControl->Release();
   pEvent->Release();
   pSeeking->Release();
   pGraph->Release();
   Couninitialize();

   returnere 0;
}

Se også

  • GraphStudio – open source GraphEdit-projekt
  • DirectX medieobjekter
  • DirectX plugins
  • DirectX videoacceleration
  • DirectShowPlayer

Referencer

Noter

  1. Blomé, Michael; Wasson, Mike (juli 2002). "Kernemedieteknologi i Windows XP giver dig mulighed for at skabe brugerdefinerede lyd-/videobehandlingskomponenter" . MSDN Magazine (Microsoft) . Hentet 2. april 2007 . 
  2. ^ "DirectShow dokumentation" . MSDNLibrary . Microsoft. 1. januar 2006 . Hentet 1. januar 2006 . 
  3. ^ "Migrering fra DirectShow til Media Foundation" . MSDNLibrary . Microsoft. juli 2006 . Hentet 17. august 2010 . 

Eksterne links (på engelsk)