- 1 名前:デフォルトの名無しさん [2008/06/22(日) 18:38:21 ]
- DirectShowプログラマーのみなさん。
メソッドのデッドロックとか、わけわからん現象多くないすか。 このスレに怒りやテクをぶつけましょう。 関連スレ Win32API質問箱 Build67 pc11.2ch.net/test/read.cgi/tech/1212931246/ くだすれDirectX(超初心者用) part.3 pc11.2ch.net/test/read.cgi/tech/1193605500/ 【C++】 DirectX初心者質問スレ Part17 【C】 pc11.2ch.net/test/read.cgi/tech/1207702556/ DirectX総合スレ (Part8) pc11.2ch.net/test/read.cgi/gamedev/1205306118/ 【PureVideo】DirectX Video Acceleration【AVIVO】 pc11.2ch.net/test/read.cgi/tech/1178285897/
- 552 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 12:34:19 ]
- >550
Dependency Walkerかdumpbinで、依存してるdllを洗い出してみるのが手っ取り早いと思うよ。 というか>549の言ってるように、Visual C++ランタイムが無いだけだと思うんだが… Win32プロジェクトでも純粋にWinAPIだけで組むか、ライブラリをスタティックリンクにしない限り ランタイムが必要になる。(Cの標準関数(printf等)ですらアウト)
- 553 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 18:56:04 ]
- 今気づいたんだがDirectShowのビデオレンダリングってクロマキー合成なのな
1.メディアプレイヤーで動画を再生 2.ペイントでキャンバスをRGB(16,0,16)で塗りつぶす 3.ペイントをメディアプレイヤーの上に重ねると下の動画が透けて見える XPクラシックモード&WMP11で確認
- 554 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 19:19:38 ]
- >>553
ビデオオーバーレイを使ってるときはそうなるかもね。
- 555 名前:547 mailto:age [2009/09/01(火) 19:36:24 ]
- >>551
そうでしたか。 .netFrameworkはインストールを要求するには大掛かりで憚られるので、 避けたいと思っていましたし、よかったです。 ありがとうございます。 >>552 便利なツールを教えてくださってありがとうございます。 これで調査して適切なライブラリを洗い出します。
- 556 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 23:48:43 ]
- >>547
コンパイラはVisualStudioか? 7月28日にATLに当たったセキュリティパッチの影響で、 dllが足りていても更正が正しくないと出ることがあるぞ。 もしそれだったら、最新版の再頒布パッケージ入れないと動かないぞ。 www.microsoft.com/japan/technet/security/bulletin/MS09-035.mspx
- 557 名前:デフォルトの名無しさん mailto:sage [2009/09/04(金) 01:03:29 ]
- VisualStudioのインストーラープロジェクトで依存洗い出してインストーラー作ってくれるけど、
そういうのは使えないのか?
- 558 名前:デフォルトの名無しさん mailto:age [2009/09/04(金) 20:28:26 ]
- 変換フィルタを作っているのですが、720x480を入力し、そのままのメディアタイプでVMR7
に 出力すると、 ttp://kissho.xii.jp/1/src/1jyou90085.png こんなふうにおかしな映像が出力されてしまいます。 しかし、自作変換フィルタ後にAVIデコンプレッサを介してVMR7に接続すると、 正しく映像が出力されました。 AVIデコンプレッサは幅768にアラインしているのでしょうか? その場合、それと同様のことを変換フィルタに組み込むには、 具体的にどこにどう実装すればよいのでしょうか? よろしくお願いします。
- 559 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 14:04:16 ]
- >>558
VMRのメディアタイプのbiWidth見れば分かるが、768とかになってるはず。 >その場合、それと同様のことを変換フィルタに組み込むには、 変換時にアライン分飛ばせばいい。
- 560 名前:558 mailto:age [2009/09/05(土) 16:13:23 ]
- >>559
なるほど! ありがとうございました!
- 561 名前:デフォルトの名無しさん [2009/09/06(日) 14:49:43 ]
- 訳あってdirectshowを学ばなければならなくなった者です
なかなか良い書籍やサイトが見つからないのですが、みなさんはどうやって勉強しているのでしょうか?
- 562 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 15:09:36 ]
- >>561
SDKのサンプルとドキュメント1択。
- 563 名前:デフォルトの名無しさん [2009/09/09(水) 12:44:39 ]
- 例えばデスクトップをキャプチャしてaviで保存するアプリを作ったとする
このとき無圧縮だったり、そのほかのコーデックで圧縮したりするようにするにはどうすればいいんだ? どのフィルタの部分でそのコードを書く?のだね 初心者だから教えてみてみ
- 564 名前:デフォルトの名無しさん mailto:sage [2009/09/09(水) 13:37:02 ]
- >>563
VFW使え。それが一番簡単。
- 565 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 02:21:14 ]
- >564
VFWはファイルサイズ2G以下の壁が… 正直grapheditのが簡単な希ガス。
- 566 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 02:32:51 ]
- vfwはビデオコーデックの機能だけだカス
- 567 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 16:53:30 ]
- DirextShow初心者なのですが、
H264のaviファイルの各コマ画像を連続で取り出すことって 簡単に出来るのでしょうか・・・ 対応コーデック(フィルタ?)を入れれば再生は簡単に出来そうですが、、
- 568 名前:デフォルトの名無しさん [2009/09/10(木) 18:36:40 ]
- directshowでビデオからの映像をグレイスケールにして二値化するにはどうしたらよいのでしょう
- 569 名前:デフォルトの名無しさん mailto:sage [2009/09/10(木) 18:54:40 ]
- >>567
余裕 >>568 フィルタ作れ
- 570 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 22:09:06 ]
- >>568
EZRGB24っていうサンプルが参考になるよ
- 571 名前:デフォルトの名無しさん [2009/09/16(水) 03:11:58 ]
- 二値化フィルターくらい簡単なら作ったげよか?
輝度でばっさり二値化するのでいいのか? 色で判断して二値化するほうがいいの? 閾値はどうする?プロパティページで変更出来るようにしたい? スライス方式って上下限の閾値ってのもあるぞ お好みを指定してくれ。 後、ソースはやらん
- 572 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 02:03:11 ]
- >>571
適応的二値化でお願いします cvAdaptiveThreshold()を呼び出すだけより格段に速いやつを
- 573 名前:デフォルトの名無しさん [2009/09/17(木) 09:11:36 ]
- 周囲の環境から最適に二値化するやつか。
それはまんどくさ
- 574 名前:デフォルトの名無しさん [2009/09/18(金) 22:24:21 ]
- cvAdaptiveThreshold()より改善するのは仕事でないと嫌だが、
まんま使うとかはダメなのか? 仕事として受けるなら設計書とソース提出するよ
- 575 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 17:35:55 ]
- 自力で高速化してみます
ありがとうございました
- 576 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 14:06:10 ]
- Visual C++ 2008 を使用しています。
Microsoft SDKs\Windows\v6.1\Samples\multimedia\directshow\baseclasses にある Streams.h をインクルードしたら IReferenceClockTimerControl が定義されてないと出ました。 これはどういった対処をすれば良いのでしょうか?
- 577 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 14:10:05 ]
- まずはビルドしろよ糞が
- 578 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 16:46:07 ]
- 基本的な事を知らずにDirectShowに手を出すと泣くよ。
俺が昔そうだったから保障するw
- 579 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 23:12:02 ]
- >>576
ヘッダー全部もってこい。 もしくはちゃんとパスを通せばおk
- 580 名前:デフォルトの名無しさん mailto:sage [2009/09/28(月) 21:56:54 ]
- >>576
MicrosoftSDKや、DirectX SDKと、VC++のヘッダファイルで同名のがあるから インクルードの順番も注意しろ。
- 581 名前:デフォルトの名無しさん [2009/10/09(金) 14:15:28 ]
- TChartShapeでchasVertLineにしてマークを表示させてるのですが
マークが上と下(Y1とY0)に2つ表示されてしまいます これを上1つ(Y1)だけ表示されるのにはどうしたらいいですか?
- 582 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 14:16:09 ]
- あ、すんません。
誤爆してしまいました
- 583 名前:デフォルトの名無しさん [2009/10/11(日) 07:36:37 ]
- 同機種のwebカメラを2つ繋げてもグラフエディットでは1つしか表示されない。
調べてみるとPCによってはちゃんと表示されるものもある(カメラのドライバーは同じ物を使用) USBコントローラの数が関係してるのかと思うんだけどわからない。 ここには解説出来るような人いる?
- 584 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 07:47:51 ]
- いません
- 585 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 13:33:39 ]
- やっぱり難しいよね。ごめんなさい
- 586 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 14:14:54 ]
- 態度が気に食わないので教えない
- 587 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 14:30:02 ]
- ttp://img.f.hatena.ne.jp/images/fotolife/T/TamTam/20091004/20091004201621.jpg
- 588 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 21:08:27 ]
- >>586
>>587 態度を改めます。私程度の力ではわからないため お願いします教えてください。 【質問】 同機種のカメラ複数台接続してGrapheditで1個しか表示されない カメラドライバの問題でなく「PC側によって」使えるものと 使えないものがあるが、何が違うのかわかりません。 【現在わかっている事】 ノートPCの一部ではUSBコントローラが複数あり 別々のUSBポートにつないでいれば同機種のWebカメラでも 利用可能。 また、ググると下記の記述があり私が試してみた感じ同じ考えです。 ・同じ型番でもドライバが対応していれば大丈夫 ・同じメーカーでも型番が違えば大丈夫 ・片方のカメラにUSBハブを挟めば大丈夫 ・メーカーが違えば大丈夫 blogs.yahoo.co.jp/honebuto_honebuto/28960469.html よろしくお願いします。
- 589 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 21:17:21 ]
- >>578
よくあるパターンだがDirectShowに限らず初心者はその「基本的なこと」が何なのかすら判らないことが多い で、ググってもそういう事が書いてあるページがなかなか見つからない罠。結果挫折する・・・
- 590 名前:デフォルトの名無しさん [2009/10/17(土) 01:48:31 ]
- キャプチャーカードやカメラの画像サイズの設定で
入力1080と720などの切り替えをしたいのですが、 DirectShow では IAMStreamConfig を使ってできましたが、 WindowMediaEncoderSDK いわゆるWMEncoderLib.dll系を使って できないでしょうか?
- 591 名前:誰か助けて。 [2009/10/18(日) 21:37:48 ]
- ISampleGrabberを利用して画面キャプチャを行っています。
mpeg2をビットマップにすることは出来ましたが、 Webカメラで撮影して保存したファイルでは失敗します。 Webカメラの設定ではYUV2で保存されるようで、そのファイルのプロパティーで見ると MS-YUV(16ビット)と書かれていました。この場合、グラバのSetMediaType()には 一体何を与えればいいのでしょうか? なお、現状で、 media_type.majortype = MEDIATYPE_Video; media_type.subtype = MEDIASUBTYPE_RGB24; media_type.formattype = FORMAT_VideoInfo; を与えています。 これだと、GetCurrentBuffer()で失敗します。 そこまでは全部成功します。戻り値はVFW_E_WRONG_STATEでした。
- 592 名前:誰か助けて。 [2009/10/18(日) 21:40:53 ]
- なお、フレーム読み込み箇所は次の通りにしています。
this->seeking->SetPositions(&ulc,AM_SEEKING_AbsolutePositioning,&ulc, AM_SEEKING_AbsolutePositioning ); // 1フレームレンダリング、完了を待つ while(this->control->StopWhenReady() != S_OK){} // レンダリング完了を待つ(不要か?) OAFilterState fs; this->control->GetState( INFINITE, &fs); // バッファを取得 this->grabber->GetCurrentBuffer( (long*)&this->media_type.lSampleSize, (long*)**this->load_buffer);
- 593 名前:デフォルトの名無しさん mailto:sage [2009/10/18(日) 22:53:11 ]
- >>591〜>>592です。
解決してないけど解決しました。 どうもよくわかりませんが、そのムービーファイルの数フレームだけ、 GetCurrentBuffer()でVFW_E_WRONG_STATEが返ってくるようです。 しょうもないので、GetCurrentBuffer()でエラーが返ってきても無視すると うまく行くようになりました。こんなんでええんだろうか・・・
- 594 名前:デフォルトの名無しさん [2009/10/18(日) 23:13:12 ]
- ピクセルフォーマットやメディアタイプを理解せずに、ISampleGrabberを使える事にびっくりした。
>Webカメラで撮影して保存したファイルでは失敗します。 このファイルがどんなファイルなのか、作っているGraphがどうなっているのか、等が分からないと、答える事は難しい。 よく分からないんだったら、IVMRWindowlessControl::GetCurrentImageあたりを使ったほうが無難だと思う。
|

|