DirectShowを用いて、USBカメラから動画キャプチャー(無圧縮AVI)するプログラムを作っています。
メディアタイプ(サブタイプ)がMEDIASUBTYPE_RGB24で作成することはできたのですが、
より長時間のキャプチャーを行いたく、他のメディアタイプ(MEDIASUBTYPE_RGB8など)でキャプチャーを行えるプログラムを作成しようと思ったのですが、よくわかりません・・・。
静止画であれば、ISampleGrabber::SetMediaTypeで可能だと思うのですが、
動画の場合はどうしたらいいのか、どなたかご教授頂ければ幸いです。
> 静止画であれば、ISampleGrabber::SetMediaTypeで可能だと思うのですが、
> 動画の場合はどうしたらいいのか、どなたかご教授頂ければ幸いです。
日本語ヘルプの「ISampleGrabber::SetMediaType」の項に説明がありますが、
メジャー タイプ :MEDIATYPE_Video
サブタイプ :MEDIASUBTYPE_RGB8
フォーマット タイプ :GUID_NULL
と設定すると、SampleGrabberが上流側フィルタと、この設定でネゴシエーションを行ってくれるくれるようです。100%うまくいく保証はありませんが。
USBカメラのメディアタイプを変更したい場合は「IAMStreamConfig インターフェイス」をカメラの出力ピンから取り出してメディアタイプを変更します。
カメラがそのフォーマットをサポートしている必要があります。
遅くなって申し訳ございません。
ボコノン教徒さんありがとうございます!
まだまだ勉強不足点も多いため、ボコノン教徒さんから伺った方法と、サンプルである『amcap』を参考に調べて実行してみたいと思います。
また、何か行き詰ることが合った際、質問させていただくことがあるかもしれませんが、よろしくお願いいたします。
ツイート | ![]() |