C++でDirectShowを使うまでの道のり
実は結構簡単
Visual Studio 2005 のVC++でDirectShowを使うまでの備忘録。
ここは大変勉強になります!
The DirectShow Unraveled, DirectShow アプリケーション制作のために用意するツール
http://www.firefly-vj.net/imagery/?itemid=152
このエントリから同一カテゴリ内のたくさんのエントリが
宝です。お世話になりました!
インストール
インストールする必要のあるSDKは二つ。
順番はどうでもいい。WindowsSDKは
Windows Vista および .NET Framework 3.0 ランタイム コンポーネント用 Microsoft® Windows® Software Development Kit
とか書いてあるけどXPだったりVS2005でも問題ない。
これらのSDKには、ライブラリとかヘッダファイルが入ってる。
ダウンロードの詳細 : Microsoft Windows SDK for Windows Vista
http://www.microsoft.com/downloads/details.aspx?FamilyID=7614fe22-8a64-4dfb-aa0c-db53035f40a0&DisplayLang=ja
Download details: DirectX SDK - (November 2008)
http://www.microsoft.com/downloads/details.aspx?FamilyId=5493F76A-6D37-478D-BA17-28B1CCA4865A&displaylang=en
Momma's Wiki: Windows/VisualC/WindowsSDK - PlatformSDK->WindowsSDKらしい? ダウンロードページ...
http://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/Windows/VisualC/WindowsSDK.html
Momma's Wiki: Windows/VisualC/DirectX/準備 - プログラミングの準備 以下の小細工で行なうファイルの編集は"管理者として実...
http://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/Windows/VisualC/DirectX/%E6%BA%96%E5%82%99.html
インクルードディレクトリ・ライブラリディレクトリの指定
SDKをインストールしたディレクトリを教えてあげないと、
「こんなのしらねぇよ!」ってコンパイラが言い続ける。
自動的に設定するツールもあるらしいが、全くうまくいかなかったので、
手動で指定することをおすすめします。
# VS2005 [ツール] - [オプション] - [プロジェクトおよびソリューション] # [VC++ディレクトリ] の [ディレクトリを表示するプロジェクト] # [実行可能ファイル] C:\Program Files\Microsoft SDKs\Windows\v6.0\bin # [インクルードファイル] C:\Program Files\Microsoft SDKs\Windows\v6.0\Include C:\Program Files\Microsoft DirectX SDK (March 2008)\Include # [ライブラリファイル] C:\Program Files\Microsoft SDKs\Windows\v6.0\lib C:\Program Files\Microsoft DirectX SDK (March 2008)\Lib\x86 あと、登録前に登録されている「PlatformSDK」的なディレクトリ 設定は全て削除。PlatformSDKのバージョンアップ版→WindowsSDK
ここまできたら、動くはず。
サンプルを動かしてみることをおすすめします。
DirectShow でビデオキャプチャ(後編) - 大阪府立大学 総合教育研究機構 第3教室 青木茂樹
http://www.las.osakafu-u.ac.jp/~aoki/cgi-bin/wiki.cgi?page=DirectShow+%A4%C7%A5%D3%A5%C7%A5%AA%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3%28%B8%E5%CA%D4%29
DirectShow でビデオキャプチャ(前編) - 大阪府立大学 総合教育研究機構 第3教室 青木茂樹
http://www.las.osakafu-u.ac.jp/~aoki/cgi-bin/wiki.cgi?page=DirectShow+%A4%C7%A5%D3%A5%C7%A5%AA%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3%28%C1%B0%CA%D4%29
個人的にはまったところ
- [構成プロパティ] - [リンカ] - [入力] から[追加の依存ファイル] で strmiids.lib を追加
- ソースファイルの拡張子はcpp。COMアーキテクチャはオブジェクト指向
- リテラル系はすべて「L」をつける。Lプレフィクスというらしい。文字コード的な問題
- dxtrans.h でコンパイルエラーが起きるので、qedit.hをインクルードする際は下記のようにする
#pragma include_alias( "dxtrans.h", "qedit.h" ) #define __IDxtCompositor_INTERFACE_DEFINED__ #define __IDxtAlphaSetter_INTERFACE_DEFINED__ #define __IDxtJpeg_INTERFACE_DEFINED__ #define __IDxtKey_INTERFACE_DEFINED__ #include
関数 CoCreateInstance() を使用したコードでコンパイルエラーがでる−VC++−水無瀬の部屋
http://katsura-kotonoha.sakura.ne.jp/prog/vc/tip00004.shtml
charとUnicodeとワイド文字をごっちゃにしないために
http://marupeke296.com/CPP_charUnicodeWideChar.html
dxtrans.h missing in Microsoft DirectX SDK (November 2007)...
http://social.msdn.microsoft.com/forums/en-US/windowssdk/thread/ed097d2c-3d68-4f48-8448-277eaaf68252/
DirectShowプログラミングを理解するために
- GraphEditで遊ぶ
# GraphEditのインストール先 C:\Program Files\Microsoft SDKs\Windows\6.1\bin\graphedt.ex
Geekなぺーじ : DirectShow GraphEdit
http://www.geekpage.jp/programming/directshow/graphedit.php
GraphEdit ガイド
http://homepage2.nifty.com/sophia0/freesoft/GraphEdit/
Windows Multimedia Hacks : GraphEdit の使い方 (1) - GraphEdit は Windows SDK に同梱されています。アプリのグラフを GraphEdit で確認しよう。
http://blogs.msdn.com/windows_multimedia_jp/archive/2009/03/24/graphedit-1-graphedit-windows-sdk-graphedit.aspx
- COMについて勉強する
COM総合研究所
http://www5.plala.or.jp/atata/com/
OpenCVらへん
Momma's Wiki: Windows/DirectShow/OpenCVとの組合せ - キャプチャ部分のみDirectShowを使って動画像処理は使い慣れたOpe...
http://www.eml.ele.cst.nihon-u.ac.jp/~momma/wiki/wiki.cgi/Windows/DirectShow/OpenCV%E3%81%A8%E3%81%AE%E7%B5%84%E5%90%88%E3%81%9B.html
OpenCV/DirectShowでキャプチャした画像を表示する - 王様の箱庭 Wiki*
http://wikiwiki.jp/masayashi/?OpenCV%2FDirectShow%A4%C7%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3%A4%B7%A4%BF%B2%E8%C1%FC%A4%F2%C9%BD%BC%A8%A4%B9%A4%EB
OpenCVで学ぶ画像認識:第2回 OpenCVを使ってみよう|gihyo.jp … 技術評論社
http://gihyo.jp/dev/feature/01/opencv/0002
Geekなみなさん
Geekなぺーじ : キャプチャデバイス+SampleGrabber(2)
http://www.geekpage.jp/programming/directshow/capture-samplegrabber-2.php
DirectShow Capture
http://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/directshow.html
黒研HowTo Wiki - (Windows) Directshowでキャプチャ<
http://kurolab.cntl.kyutech.ac.jp/wiki/farm/HowTo/?cmd=view&p=(Windows)+Directshow%A4%C7%A5%AD%A5%E3%A5%D7%A5%C1%A5%E3&key=DirectX
Visual C++ 2008 による DirectShow キャプチャプログラミング | Soaphacker
http://hisoap.jugem.jp/?eid=140
References
DirectShow の使い方
http://msdn.microsoft.com/ja-jp/library/cc371142.aspx
DirectShow サンプル
http://msdn.microsoft.com/ja-jp/library/cc353922.aspx
PC-H:報告No.11(フローチャートが勉強になります)
http://homepage3.nifty.com/tosikazu/pch/pchREP11.html