GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • メインページ
  • コミュニティ・ポータル
  • 最近の出来事
  • 新しいページ
  • 最近の更新
  • おまかせ表示
  • 練習用ページ
  • アップロード (ウィキメディア・コモンズ)
  • 特別ページ
  • ヘルプ
  • 利用案内
  • 井戸端
  • お知らせ
  • バグの報告

This view

  • Original page
  • New address

GeezerVison is showing ja.wikipedia.org — DirectShow - Wikipedia

DirectShow(DSまたはDShowとも略される)は、マイクロソフトによるメディアファイルまたはストリームに対する様々な操作を行うマルチメディアフレームワークとAPIであり、Video for Windowsの後継となっている[1]。コードネームはQuartzであった。COMをベースとしており、多数のプログラミング言語で利用可能な共通のインターフェイスを公開し、拡張性も高いものとなっている。フィルターベースでアプリケーションユーザーまたはソフトウェアプログラマーの要求に応じてメディアの再生・記録などの操作を行えるようになっている。DirectShowの開発ツールや文書は当初DirectX SDKに収録されていたが、現在ではWindows SDK(移管当時Platform SDK)に含まれている[2][3][4]。

DirectShowに対するものとしてAppleのQuickTime、Linux向けにGStreamerやXineなどのマルチメディアフレームワークが存在する。

Windows Vistaからは、Media Foundationを後継とすることが計画されている[5]。

歴史

DirectShowの直接の前身はActiveMovie (コードネームQuartz) であり、当初はWindowsをMPEG-1ファイル再生に対応させるために作られた。そこから、Bフレーム未対応のVideo for Windowsや、完全32ビット化やCOM化されなかったMedia Control Interface (MCI) の後継たるマルチメディアフレームワークとして拡張されることとなった[1]。

ActiveMovieは1996年3月に公表され[6]、同年5月ベータ版のInternet Explorer 3.0で初公開となった[7]。1997年3月、ActiveMovieはDirectX 5の一部となることが公表され[8]、直接的にハードウェアを扱う技術に共通の命名を行う方針を受けて7月にはDirectShowと呼ばれ始めた[9][10]。そして、Windows 98からすべてのWindowsに標準搭載されるようになった[11]。DirectX 8.0から他のDirectX APIと同様に重要なコンポーネントとして扱われるようになっている[12]。

2004年10月、DirectShowはDirectX SDKから外されDirectX SDK Extrasに含まれるようになり、さらには2005年4月、DirectShowはDirectX SDKから完全に取り除かれ、当時Windows Server 2003 SP1版だったPlatform SDKに移管された[2]。ただし、現在でもDirectShowのサンプルプログラムのビルドには依然としてDirectX SDKが必要である[13][14]。

アーキテクチャ

DirectShowは大きなマルチメディアタスク(映像・音声再生など)をフィルターの並びへ小さく分割して取り扱う[15][16]。各々のフィルターはデータ加工の1段階を表す。フィルターには、さらに入出力を意味し他のフィルターとの接点となる「ピン」があり、ピンの接続の仕方によって様々な機能を実現できるようになっている[17]。DirectShowを使用するプログラムでは、フィルターインスタンスの作成と接続を行なってフィルターグラフを構築する[18]。

フィルターは主に3種類ある。

ソースフィルター
ファイルから読み込むなど、データストリームを提供する。
変換フィルター
他のフィルターの出力を受け取り、変換を行う。例えば、非圧縮ビデオにテキストを付加するなど。
レンダーフィルター
レンダリングを行う。サウンドカードに音声を送ったり、画面にビデオを描画したり、ファイルに書き出したりするものなど。

フィルターグラフを視覚的に構築して試すことができるツールとしてGraphEditが存在する[19]。GraphEditでは、レジストリから登録されているフィルターを探し、接続して、実行(再生、一時停止など)を行える。再生にあたって、フィルターグラフは再生(再生1つ取ってもファイルパース、音声と映像の分離、圧縮解除、レンダリングと細分される)・録画・録音・編集・圧縮・変換・ネットワーク転送など幅広く使用されており、それだけでなくDirectShowではDVD操作などインタラクティブな操作も可能となっている。 大半のフィルターはDirectShow基底クラス (Base Classes) と呼ばれるDirectShow SDK収録のC++クラスを使用して作られている[20][21][22]。DirectShow基底クラスは、フィルターの作成・接続や、フィルターグラフがフィルターを自動的に使用できるよう必要なレジストリへの登録を扱ってくれる。自動的に使わせたくないフィルターでは、登録させないことも可能である。 実行中のグラフへの修正は困難である。大抵はグラフを停止させ、新たに作り直すほうが簡単である。これに対処するため、DirectShow 8.0では動的なグラフの作成・再接続、フィルターの連鎖の機能が追加された[23]。しかし、ほとんどのフィルター製作者がこの機能を無視しているため、実行中のグラフの作成が問題なく行えるとは言い難い状況である。

特徴

標準では一般的なメディア形式のフィルターしか導入されない。例えば、コーデックとしてMPEG-1, MP3, Windows Media Audio, Windows Media Video, MIDI、コンテナフォーマットではAVI, ASF, WAV、それ以外には分離・多重化・入力元・出力先(シンク)・静的な画像のフィルターなどである[24]。これらの特許はWindowsにライセンスされており、別途ライセンスを受ける必要はない。現在、評判が良く標準が制定された現代的なMPEG-4 ASP, AAC, H.264, VorbisのコーデックやOgg, MOV, MP4などのコンテナなどが含まれていないことに注意が必要である。使用には、別途コーデックを得る必要がある。

しかし、DirectShowは、市販品やオープンソースのソースフィルターを使って拡張でき、様々なコンテナ形式や音声・映像のコーデックがある。例えば、Ogg Vorbis[25], Musepack[26], AC3[27]などが挙げられる。さらに、VLCのように[28]、他のマルチメディアAPIの機能を提供するブリッジフィルターというものも存在する。

フィルターグラフの構築には、様々な方法が考えられる。もっとも単純なのは、ファイルやURLなどからDirectShowに自動でフィルターグラフを構築させる方法である[29]。それが不可能なら、ソースフィルターなどと必要に応じて既存のカスタムフィルターを手動で追加する方法が考えられる。その場合、接続はDirectShowに任せたり必要に応じて手動で行ったりする。また、適当なフィルターがなければ、カスタムフィルターの作成から行うことになる。

再生時、MoviesTaskを呼び続けないといけないQuickTimeのC APIと違い、DirectShowは透過的に扱う。つまりバックグラウンドスレッドを作って、プログラマーに余計な負担を強いることなくスムーズな再生を実現している。もう1つ、QuickTimeとの違いとして、URLからの読み込みとコンピュータ内のローカルファイルとの読み込みの手順で特に違いが存在しないということが挙げられる。これは、DirectShowのフィルターグラフが差異を吸収するためであり、QuickTime (ActiveXコントロール) でも最近はこの点が改善されている。

DirectShow編集サービス

DirectShow編集サービス (DirectShow Editing Services, DES) は、Windowsムービーメーカーのため[1]、DirectX 8.0 / Windows XPで導入されたDirectShowのアーキテクチャ上で構築された映像編集を行うAPIである。これには、タイムライン、トラック、サイズ変更、クロップ、映像・音声へのエフェクト、トランジション、キーイング、自動フレームレート、サンプリング周波数変換やその他ノンリニア編集で用いられる無数の機能が搭載されている。さらに、高水準の実行時合成、シーク対応、グラフ管理は低水準のDirectShowの機能を使用中でも利用できる。

DirectShow編集サービスはVisual C++向けにインターフェイスが用意されているが、最近ではC#やVB.NETなどといった.NET言語で利用できるようにするサードパーティのライブラリとしてDirectShow Libが存在する[30]。

ほかには、DirectShow編集サービスも含めたDirectShowのAPIをDelphi 5, 6, 7およびC++ Builder 6などで利用可能にするサードパーティのライブラリとしてDSPackが存在する[31]。

ビデオレンダラーフィルター

当初、DirectShowが映像を再生する手段としてビデオレンダラーフィルターが用いられた。これは、まずDirectDraw、それが駄目ならGDIを用いて描画するレンダラーである [32]。ビデオレンダラーでは、ビデオウィンドウへのアクセスが制限される。Video for Windowsでは、映像再生用ウィンドウのハンドルに対して、アプリケーションが適切な扱いをしないことに起因するデッドロックに苦慮したため、初期のDirectShowでは、再生するためのウィンドウへのハンドルがアプリケーションから隠蔽されていたこともあった。そのため、画面の映像上に字幕の文字や絵を描画する確実な方法は当時存在しなかった。

DirectShow 6.0では、DirectX Mediaの一部として、オーバーレイミキサーをリリースした。これは、字幕を付けてのDVDやストリーミング放送の再生のために作られ、DirectDrawをレンダリングに用いる。なお、オーバーレイミキサーの使用の際には、ウィンドウ管理のためフィルター接続の下流に「ビデオレンダラー」フィルターが必要である。オーバーレイミキサーは(PCIを通さず直接ビデオカードへ映像信号を送る)オーバーレイ対応のアナログTVチューナーカードと協調するためのVideo Port Extensions (VPE) もサポートしている。また、DXVA接続にも対応している。

Windows XPではVideo Mixing Renderer 7 (VMR-7、単にVMRと表記されることも) が導入された。この7は、GDIを全く使用せずDirectDrawバージョン7を描画に用いることに由来する。VMR-7の特徴は、複数のストリームやグラフィックスの混合が可能になったことである。例えば、アプリケーションが映像上に文字や絵を乗せることが可能になったのである[33]。また、VMR-7にはウィンドウハンドルの扱いに関する問題を改善した「ウィンドウレスモード」が存在する[34]。公式には、VMR-7はWindows XP以降にしか用意されていない。

DirectX 9ではVMR-9が搭載されている。これはDirectDrawではなく、Direct3D 9を描画に用いる[35]。こちらは、DirectX 9が使用可能なすべてのWindowsで利用可能である。

Windows Vistaでは、Media FoundationとEnhanced Video Renderer (EVR)[36]と呼ばれる新しいレンダラーが用意されている。EVRはDXVA 2.0に対応しているが、Windows Vistaには搭載されていない[37]。

関連項目

  • Microsoft DirectX
  • GraphEdit
  • GraphStudio – オープンソースのGraphEdit相当を制作するプロジェクト
  • DirectX Media Objects
  • Media Foundation
  • DirectXプラグイン
  • DirectX Video Acceleration

参考

この節には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2023年5月)
  • “MSDN DirectShow documentation”. 2007年7月7日閲覧。
  • Pesce, Mark D. (2003). Programming Microsoft DirectShow for Digital Video and Television. Microsoft Press. ISBN 0-7356-1821-6  (Sample Chapter)

脚注

  1. 1 2 3 MSDN Magazine (2002年7月). “Core Media Technology in Windows XP Empowers You to Create Custom Audio/Video Processing Components” (英語). Microsoft PressPass. 2009年6月9日閲覧。
  2. 1 2 DirectShow | Microsoft Docs
  3. ↑ DirectShow - Windows applications | Microsoft Docs
  4. ↑ Windows SDK 8.0以降は、Direct3Dなどの他のDirectX APIもすべてWindows SDKに含まれるようになった。
  5. ↑ Migrating from DirectShow to Media Foundation | Microsoft Docs
  6. ↑ Microsoft (1996年3月5日). “Microsoft Announces ActiveMovie”. Microsoft PressPass. 2006年12月31日閲覧。
  7. ↑ Microsoft (1996年5月29日). “Microsoft Internet Explorer 3.0 Beta Now Available”. Microsoft PressPass. 2006年12月31日閲覧。
  8. ↑ Microsoft (1997年3月31日). “Microsoft Unveils First Unified Multimedia API Strategy”. Microsoft PressPass. 2006年12月31日閲覧。
  9. ↑ Microsoft (1997年7月21日). “Microsoft and Progressive Networks Collaborate on Streaming Media”. Microsoft PressPass. 2006年12月31日閲覧。
  10. ↑ DirectX Then and Now (Part 1)
  11. ↑ Microsoft Releases DirectShow SDK - Universal Playback for DVD, Digital Video and Audio, and the Internet
  12. ↑ Frequently Asked Questions About the DirectShow and Windows Media SDKs | Microsoft Docs
  13. ↑ DirectShow Samples | Microsoft Docs
  14. ↑ DirectShow Samples - Windows applications | Microsoft Docs
  15. ↑ Introduction to DirectShow Application Programming | Microsoft Docs
  16. ↑ DirectShow System Overview | Microsoft Docs
  17. ↑ About DirectShow Filters | Microsoft Docs
  18. ↑ Overview of Graph Building | Microsoft Docs
  19. ↑ Overview of GraphEdit (Windows) | Microsoft Docs
  20. ↑ DirectShow Base Classes | Microsoft Docs
  21. ↑ DirectShow Base Classes - Windows applications | Microsoft Docs
  22. ↑ DirectShow Base ClassesはかつてDirectX SDK/Windows SDKにサンプルのひとつとして収録されていたが、Windows SDK 8.0以降は取り除かれており、代替としてGitHub上で公開されている。Windows-classic-samples/Samples/Win7Samples/multimedia/directshow/baseclasses at master · microsoft/Windows-classic-samples
  23. ↑ Dynamic Graph Building | Microsoft Docs
  24. ↑ “Formats supported by default in DirectShow”. 2005年9月11日閲覧。
  25. ↑ “illiminable Directshow Filters for Ogg Vorbis, Speex, Theora and FLAC”. 2006年3月11日閲覧。
  26. ↑ “Monogram's DirectShow filters for Musepack, AAC and AMR”. 2008年3月8日閲覧。
  27. ↑ AC3Filter
  28. ↑ Dean Anderson, Jim Lamberson (2007年). “Using VideoLan VLC in DirectShow”. An open source bridge from VLC to DirectShow. 2008年2月15日閲覧。
  29. ↑ DirectShow For Media Playback In Windows: Customizing Graphs
  30. ↑ DirectShow.NET
  31. ↑ DSPack
  32. ↑ DirectShow Video Renderer Filter | Microsoft Docs
  33. ↑ “Video Mixing Renderer 7 (VMR-7)”. 2005年9月11日閲覧。
  34. ↑ “VMR Windowless Mode”. 2005年9月11日閲覧。
  35. ↑ “Video Mixing Renderer 9 (VMR-9)”. 2005年9月11日閲覧。
  36. ↑ “Enhanced Video Renderer”. 2007年2月28日閲覧。
  37. ↑ Media Foundation forum

外部リンク

この節には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 適切な位置に脚注を追加して、記事の信頼性向上にご協力ください。(2023年5月)
  • DirectShow - Windows applications | Microsoft Docs – 公式ドキュメント
  • Good Overview of Video Renderer versions
  • Search results - Microsoft Download Center – DirectShow関連の検索結果
  • Radlight Ogg Theora DirectShow filter
  • J. River DirectShow Playback Guide – 'A tutorial on DirectShow focused on J. River's Media Center, but contains good general-purpose information as well.'
マイクロソフトのAPIとフレームワーク
グラフィック
  • Desktop Window Manager
  • Direct2D
  • Direct3D (拡張)
  • GDI / GDI+
  • WPF
  • Silverlight
  • WinUI
  • Windows Color System
  • Windows Image Acquisition
  • Windows Imaging Component
オーディオ
  • DirectMusic
  • DirectSound
  • DirectX plugin
  • XACT
  • Speech API
マルチメディア
  • DirectX (Media Objects
  • Video Acceleration)
  • DirectInput
  • DirectPlay
  • DirectShow
  • Image Mastering API
  • Managed DirectX
  • Media Foundation
  • XNA
  • Windows Media
  • Video for Windows
ウェブ
  • MSHTML
  • EdgeHTML
  • RSS Platform
  • JScript
  • VBScript
  • BHO
  • XDR
  • SideBar Gadgets
データアクセス
  • Data Access Components
  • Extensible Storage Engine
  • ADO.NET
  • ADO.NET Entity Framework
  • Sync Framework
  • Jet Engine
  • MSXML
  • OLE DB
  • OPC
ネットワーク
  • Winsock (LSP)
  • Winsock Kernel
  • Filtering Platform
  • Network Driver Interface Specification
  • Windows Rally
  • BITS
  • P2P API
  • MSMQ
  • MS MPI
コミュニケーション
  • Messaging API
  • Telephony API
  • WCF
管理
  • Win32 console
  • Windows Script Host
  • WMI
  • PowerShell
  • Task Scheduler
  • Offline Files
  • Shadow Copy
  • Windows Installer
  • Error Reporting
  • Event Log
  • Common Log File System
コンポーネントモデル
  • COM
  • COM+
  • ActiveX
  • Distributed Component Object Model
  • .NET Framework
ライブラリ
  • Base Class Library (BCL)
  • Microsoft Foundation Classes (MFC)
  • Active Template Library (ATL)
  • Windows Template Library (WTL)
デバイスドライバ
  • Windows Driver Model
  • Windows Driver Foundation
    • KMDF
    • UMDF
  • WDDM
  • NDIS
  • UAA
  • Broadcast Driver Architecture
  • VxD
セキュリティ
  • Crypto API (CAPICOM)
  • Windows CardSpace
  • Data Protection API
  • Security Support Provider Interface (SSPI)
.NET
  • ASP.NET
  • ADO.NET
  • Base Class Library (BCL)
  • Remoting
  • Silverlight
  • TPL
  • WCF
  • WCS
  • WPF
  • WF
ソフトウェアファクトリー
  • EFx Factory
  • Enterprise Library
  • Composite UI
  • CCF
  • CSF
IPC
  • MSRPC
  • Dynamic Data Exchange (DDE)
  • Remoting
  • WCF
アクセシビリティ
  • Active Accessibility
  • UI Automation
テキストと多言語
サポート
  • DirectWrite
  • Text Services Framework
  • Text Object Model
  • Input method editor
  • Language Interface Pack
  • Multilingual User Interface
  • Uniscribe
人工知能
  • DirectML
  • 一覧
  • カテゴリ:マイクロソフトのAPI
スタブアイコン

この項目は、ソフトウェアに関連した書きかけの項目です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。

  • 表示
  • 編集
「https://ja.wikipedia.org/w/index.php?title=DirectShow&oldid=106570638」から取得
カテゴリ:
  • DirectX
  • マルチメディアソフトウェア
隠しカテゴリ:
  • 外部リンクがリンク切れになっている記事/2019年9月
  • 言葉を濁した記述のある記事 (いつ)/2019年9月-10月
  • 外部リンクがリンク切れになっている記事/2023年5月
  • 参照方法
  • すべてのスタブ記事
  • ソフトウェア関連のスタブ
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.