Directshow

DirectShow (uneori DS sau DShow ; cu numele de cod Quartz ) este un cadru multimedia și o interfață de programare a aplicațiilor ( API ) lansat de Microsoft pentru dezvoltatorii de software, care permite aplicațiilor Windows să controleze o gamă largă de dispozitive I/O audio/video, inclusiv DV și camere web . , dispozitive DVD , tunere TV etc.

De asemenea, acceptă diverse formate de fișiere, de la WAV și AVI până la Windows Media . Este un înlocuitor pentru tehnologia anterioară Video pentru Windows de la Microsoft . [1] Bazat pe Microsoft Windows Component Object Model (COM), DirectShow oferă o interfață media comună acceptată de majoritatea limbajelor de programare . În plus, DirectShow este extensibil pentru a accepta dispozitive terțe, formate și componente de procesare. Instrumentele și documentația pentru dezvoltatori au fost distribuite anterior ca parte a DirectX SDK, dar acum sunt distribuite cu Platform SDK , care este, la rândul său, inclus cu Windows SDK . [2] Microsoft intenționează să înlocuiască DirectShow cu Media Foundation în viitor .

Istorie

La începutul anilor 1990, după lansarea Windows 3.1 , un număr de dispozitive video digitale (cunoscute acum ca camere web ) au intrat pe piața din SUA . De obicei, aceste dispozitive erau conectate printr-un port paralel (port de imprimantă LPT). De-a lungul timpului, aceste dispozitive au devenit mai populare, iar Microsoft a decis să dezvolte o tehnologie de lucru cu date multimedia pentru dezvoltatori. Această tehnologie se numește Video pentru Windows (VFW). Dar de la naștere, VFW a avut un dezavantaj imens - complexitatea lucrului cu video MPEG . [unu]

Înainte de lansarea Windows 95, Microsoft a început un nou proiect ActiveMovie [3] (denumit de cod Quartz) pentru a suporta MPEG , arhitectură pe 32 de biți și streaming de date video/audio. Noul proiect se caracterizează prin faptul că a folosit noile dezvoltări ale Microsoft Corporation, și anume Component Object Model (COM). Numai în Quartz se obișnuiește să se numească filtre de obiecte, care, ca și blocurile LEGO , sunt combinate într-un grafic de filtru. Datorită arhitecturii COM, un filtru separat este un obiect autosuficient care poate fi creat de un dezvoltator terță parte pentru propriile nevoi (de exemplu: pentru a menține funcționalitatea dispozitivului său).

În 1997, Microsoft a integrat ActiveMovie în DirectX și și-a schimbat numele în DirectShow. [4] [5] În 1998, DirectShow a venit standard cu suport DVD . În 2000, sunt adăugate funcții de editare a fluxului de date și integrarea DirectShow în DirectX este în sfârșit finalizată. Dezvoltatorii pot acum proiecta videoclipurile capturate în scenele lor 3D . În lansarea DirectX 9, DirectShow a adăugat capacitatea de a combina fluxurile video într-unul singur pentru mixarea video. [6]

În octombrie 2004, DirectShow este eliminat din distribuția oficială DirectX și portat la suplimente DirectX. În aprilie 2005, DirectShow este complet eliminat din distribuțiile oficiale DirectX și mutat în versiunea Windows Server 2003 SP1 a Microsoft Platform SDK. [2] Cu toate acestea, unele exemple de documentație necesită încă compilarea SDK-ului DirectX. [7] Dar odată cu lansarea Windows Vista , documentația începe să fie livrată împreună cu Windows SDK. [2]

Caracteristici

Un bun exemplu de capabilități ale DirectShow este aplicația Windows Movie Maker . Majoritatea aplicațiilor de editare media terță parte pentru sistemul de operare Windows folosesc, de asemenea, DirectShow. [6] Deoarece filtrele DirectShow sunt împărțite în trei tipuri, caracteristicile DirectShow pot fi clasificate în consecință.

Filtrele de captură  sunt concepute pentru a introduce date multimedia în fluxul de programe de la diferite dispozitive fizice. Rolul unui dispozitiv poate fi atât diverse tipuri de dispozitive video (camere video portabile, camere web, tuner TV), cât și dispozitive audio ( microfon , linie modem ), iar datele pot fi obținute și dintr-un fișier ( AVI , MPEG , MP3 ). DirectShow vă permite să utilizați mai multe filtre de captură în același timp, de exemplu: pentru a captura video de la o cameră web și sunet de la un microfon în același timp. Numărul de filtre de captare utilizate simultan este limitat doar de puterea computerului utilizat .

Filtre de transformare  - concepute pentru a procesa datele primite din fluxul de program și apoi trimite datele convertite înapoi în flux la următorul tip de filtre. Acest tip de filtru poate efectua analize de date, poate manipula complet datele audio și video pentru a crea efecte vizuale complexe sau pur și simplu îmbina (sau dezintegra) canalele audio și video. În livrarea standard, împreună cu sistemul de operare Windows, Microsoft oferă un număr mic de filtre gata făcute: codecuri ( MPEG-1 , MP3, WMA , WMV , MIDI ), containere (AVI, ASF , WAV ), mai multe splittere ( sau demultiplexoare) și multiplexoare . [8] Alte filtre populare: codecurile ( MPEG-4 , AAC , H.264 , Vorbis ) și containerele ( Ogg , .mov , MP4 ) sunt instalate cu diverse programe terțe.

Filtrele de vizualizare ( redare ) sunt concepute pentru a scoate date dintr-un flux către un dispozitiv fizic standard de ieșire, de exemplu, către un monitor , o placă de sunet sau un fișier . Prin analogie cu filtrele de captură, pot exista și mai multe filtre de vizualizare, de exemplu, pentru afișarea simultană a videoclipurilor pe ecran și înregistrarea aceluiași videoclip într-un fișier.

Diagrama structurală

Critica

Dificultate

Redarea unui fișier video normal este o sarcină destul de simplă de implementat cu DirectShow. Scrierea unui program folosind toate mecanismele DirectShow (de exemplu, implementarea propriului filtru de orice tip) este o sarcină destul de dificilă și necesită abilități bune. [9] [10] [11]

Dezvoltatorii creează rareori filtre DirectShow de la zero, mai des folosesc clase de bază. Aceste clase simplifică de obicei dezvoltarea permițând programatorului să ocolească unele sarcini. Cu toate acestea, procesul poate fi încă destul de complicat, deoarece cantitatea de cod din clasele de bază este de aproximativ jumătate din dimensiunea bibliotecii MFC . Iar numărul de obiecte bazat pe clase de bază îi șochează pe mulți dezvoltatori. Mai mult, în unele cazuri regulile DirectShow API diferă de regulile obișnuite ale obiectelor COM, acest lucru se observă mai ales în parametrii metodei. Pentru a rezolva aceste complexități, dezvoltatorii folosesc adesea un nivel superior: Windows Media Player SDK , care se bazează pe un obiect ActiveX și utilizează reguli COM normale.

codec iad

Codec hell (un termen inspirat de DLL hell ) este un conflict care apare între diferite filtre care încearcă să îndeplinească aceeași sarcină. Cert este că, în prezent, un număr mare de companii produc codecuri sub formă de filtre DirectShow, care îndeplinesc adesea sarcini similare cu același tip de date media. [12] [13]

Instrumente care pot ajuta în lupta împotriva Codec Hell:

Vezi și

Note

  1. 1 2 Core Media Technology în Windows XP vă permite să creați componente personalizate de procesare audio/video (link mort) . Revista MSDN . Microsoft (iulie 2002). Data accesului: 28 mai 2008. Arhivat din original la 13 martie 2012. 
  2. 1 2 3 Documentația DirectShow (link descendent) . MSDN . Microsoft. Data accesului: 28 mai 2008. Arhivat din original la 13 martie 2012. 
  3. Microsoft anunță ActiveMovie (link descendent) . Microsoft (5 martie 1996). Data accesului: 28 mai 2008. Arhivat din original la 13 martie 2012. 
  4. Microsoft dezvăluie prima strategie API multimedia unificată (link nu este disponibil) . Microsoft (31 martie 1997). Data accesului: 28 mai 2008. Arhivat din original la 13 martie 2012. 
  5. Microsoft și Progressive Networks colaborează la streaming media (link nu este disponibil) . Microsoft (21 iulie 1997). Data accesului: 28 mai 2008. Arhivat din original la 13 martie 2012. 
  6. 12 Mark D. Pesce . Exemplu de capitol // Programarea Microsoft DirectShow pentru video și televiziune digitală . - Microsoft Press, 2003. - ISBN 0-7356-1821-6 .
  7. Întrebări frecvente DirectShow (downlink) . MSDN . Microsoft. Data accesului: 28 mai 2008. Arhivat din original la 13 martie 2012. 
  8. Formate acceptate implicit în DirectShow (downlink) . MSDN . Microsoft. Consultat la 30 mai 2008. Arhivat din original la 13 martie 2012. 
  9. Utilizarea DirectShow cu Media Center Edition (downlink) (5 ianuarie 2006). Consultat la 22 ianuarie 2012. Arhivat din original pe 13 martie 2012. 
  10. Noțiunile de bază pentru utilizarea DirectShow (downlink) (13 martie 2001). Consultat la 22 ianuarie 2012. Arhivat din original pe 13 martie 2012. 
  11. LEAD Technologies: DirectShow definit (link nu este disponibil) . Consultat la 22 ianuarie 2012. Arhivat din original pe 13 martie 2012. 
  12. Blogul Codec Hell: Home Video 101 (link în jos) . ??? (???). Consultat la 16 iunie 2008. Arhivat din original la 13 martie 2012. 
  13. Codec-uri = New Age DLL Hell? Hell Yes - Blogul lui Chris Lanier (link nu este disponibil) . ??? (???). Consultat la 16 iunie 2008. Arhivat din original la 13 martie 2012. 
  14. Dispozitivul GSpot Codec Information Appliance (link descendent) . Consultat la 22 ianuarie 2012. Arhivat din original pe 13 martie 2012. 

Link -uri