LoginSignup
5
5

More than 3 years have passed since last update.

[C#]DirectShowLibのサンプルを動かしてみる in 2020年

Last updated at Posted at 2020-03-11

もくじ
https://qiita.com/tera1707/items/4fda73d86eded283ec4f

やりたいこと

仕事で、PCについているカメラから画像を取ってきて表示する部分に「DirectShow」というものを使っているものが出てきた。どういうものかよくわかってないので、調べたい。

もともとC++のライブラリっぽいが、C#でラップしたライブラリ(DirectShowLib)があるようなので、それを使ってとりあえず動かして感覚をつかみたい。

30秒で調べたところによると、動画や静止画を扱うWindowsのライブラリはどんどん移り変わっていっているようで、

  • Video for Windows
  • Media Control Interface(MCI)
  • DirectShow
  • MediaFoundation
  • など...

という感じでいろいろある様子。(間違えてるかも)
DirectShowについては調べてると2010年より前の情報しか出てこない感じなので、調べづらいし、今勉強する意味あるかな?と思ってしまうが、とりあえず仕事で困らない程度に慣れておくことにする。

DirectShowLibのサンプルを動かして、画面の写真を撮るまでの流れ in 2020年3月

〇サンプルをダウンロード

下記のページの2010-Februaryフォルダの中のDirectShowSamples-2010-February.zipをダウンロードする。
https://sourceforge.net/projects/directshownet/files/DirectShowSamples/

image.png

〇ソリューションを開く

解凍してできたフォルダの中のいろいろあるサンプルから、Samples\Capture\DxSnapを開く
→VSのソリューションDxSnap-2005.slnを開く。

※slnファイルの形式が古いのでバージョンUPしますか?とVisualStudioに聞かれるので、バージョンUPする。

〇NugetでDirectShowLibをとる

DxSnap-2008プロジェクトのNugetで「DirectShowLib」のv1.0.0を追加する。
image.png

※サンプルには、元から「DirectSHowLib-2005」というライブラリが参照に入っているが、これが2020年時点ではNugetで手に入らないようなので、代わりにv1.0.0を追加する。

〇ターゲットフレームワークの設定

サンプルDxSnap-2005.slnのターゲットフレームワークが.Net Framework 4になっているが、これを.Net Framework 4.5にする。
※NugetしたDirectShowLib v1.0.0が4.5でないと動かないため、そうする。

〇実行

ビルドして、実行する。
image.png

おわり

メモ

同じサンプルの中に、DxPlay-2005というソリューションがあり、そこで、カメラから画像をintで受けて、それをSystem.Drawing.Bitmapに直している部分があった。

→サンプルグラバーというやつの
GetCurrentBuffer()で、画像のデータがとれてるっぽい。その辺をみれば、参考になりそう。

参考(DirectShowを調べようと思って通り過ぎたもの)

〇DirectShowサンプル(C++)
https://github.com/Microsoft/Windows-classic-samples/tree/master/Samples/Win7Samples/multimedia/directshow

〇良さげ?なページ(C++)
https://vision.kuee.kyoto-u.ac.jp/~hiroaki/firewire/directshow.html

〇画像を取って、保存するまで(ビルドしようとしたら、Win SDKの古いのがいるとかでビルドできなかった)(C++)
https://www.geekpage.jp/programming/directshow/samplegrabber.php

→最終的に、C++あきらめてC#のライブラリに行った。

〇C#のDirectShowラッパーのページ
top
http://directshownet.sourceforge.net/

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5