- 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/
- 522 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 07:27:54 ]
- BMDSDKだとキャプチャフィルタは削除せずにグラフ変更やっているみたいだから
それに沿ったら?
- 523 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 19:39:32 ]
- avi(音声あり)とwavファイルを多重化してaviに保存したいのですが、
directshowの既存のフィルタでプログラムできますか? aviの音声そのままでwavの音声も重ねたいのですが・・・
- 524 名前:デフォルトの名無しさん mailto:sage [2009/08/02(日) 21:26:39 ]
- GraphEditで作れるか試せばいいだろ
- 525 名前:510 mailto:sage [2009/08/03(月) 07:37:49 ]
- >>521
ありがとうございます! 確かに怖いですねw >実行時間が同じくらいなら安定した方法で手抜き実装。 DirectShowって、フィルタ開発とかを除けば、基本的に時間を気にしないといけないところは 少ないですし、おっしゃる通り、遠回りでも、じじぐさくても、安定するように組むのがセオリーのようですね。 >>522 ありがとうございます! その方法でやってみました。 はじめは、それでもOS毎落ちる事態は発生していましたが、どうもセットで生成されるスマートティー を削除するのがよくないようで、これも残すようにし、再接続の際はスマートティー(在れば)から 接続してグラフを構築するようにしたところ・・・ついにブルースクリーンが出ないようになりました!! 何度も再接続を繰り返し、それまでであればほとんど落ちていたような回数でもぜんぜん落ちる 気配がありません。 みなさん、良いご助言を下さり、ありがとうござました!!
- 526 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 16:14:48 ]
- 自分はCanonのHV10っていうDVカメラしか持ってないんですが
IVideoWindow::SetWindowPosition で、ソース画像の1/2以下の Windowエリアに割り当てると描画しなくなります(SetWindowPosition はS_OKを返します) その後 SetWindowPosition で再設定しても描画されず、グラフを再作成するしかないようです。 他のDVカメラでも画像の1/2以下に割り当てると同じようなことが起きますか? Windowリサイズ時に(ソース画像の1/2+1)ピクセル以上に割り当てるようにしていますが この1/2で他のDVカメラに通用するのかが知りたいです。
- 527 名前:デフォルトの名無しさん mailto:sage [2009/08/07(金) 21:26:16 ]
- サンプルグラバについて、
SetOneShot( true ) でワンショットモードにしてから再生しているのですが、 いつまでたってもグラフが停止しません。 (キャプチャデバイスからのライブソースです) ワンショットモードでは、サンプルを1枚受け取ると、グラフを停止するとmsdnにも書いています。 WaitForCompletion( INFINITE, &evCode ); を挿入し、この関数から返ってくるのを待っても、一向に返ってこず、再生が続いたままになります。 とりあえず、Sleep( 100 )として対応していますが、 このようなことをせず、ちゃんとサンプルの受信が完了したのを確認してから サンプルを取得できるようにするにはどうすればよいでしょうか??
- 528 名前:デフォルトの名無しさん mailto:sage [2009/08/08(土) 03:19:27 ]
- Intensityをお持ちの方にお聞きしたいのですが、
入力設定を「HD 1080 PsF 24」にして、グラフ構築ができるでしょうか? GraphEditを使ったのですが、自分の場合、どのフィルタも繋がらりません・・・ 「接続に必要な中間フィルタの組み合わせが見つかりませんでした。」 のエラーメッセージが出てしまいます。 構築ができる方や、実際にPS3などからの24p出力を取り込められている方が おられましたら、フィルタグラフの構成を教えてください。 よろしくお願いします。
- 529 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 00:56:04 ]
- プログラムを終了する際は、すべてのフィルタをグラフから削除(RemoveFilter)すべきでしょうか?
また、そのときは、インテリジェント接続で自動的に生成されたフィルタについても、 アプリ側で検索して削除すべきでしょうか? 削除しなくても問題は(一見)起こっていませんが、行儀よく終わる方法を知りたいと思いました。
- 530 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 01:10:00 ]
- >>528
メディアサブタイプがHDYCのはずだから、Blackmagic Designe DecoderDMO挟んでみるとか >>529 自分で追加したフィルタと、グラフを解放するだけで問題ない、はず。
- 531 名前:デフォルトの名無しさん mailto:sage [2009/08/10(月) 11:31:03 ]
- >>529
後片付けのためにRemoveFilterを使う必要はない
- 532 名前:529 mailto:sage [2009/08/10(月) 12:26:12 ]
- >>530
>>531 ありがとうございます! 安心しました。
- 533 名前:528 mailto:sage [2009/08/11(火) 07:26:53 ]
- >>530
ありがとうございます。 しかし、24fps設定ではBlackmagic Design Decoder (DMO)すら繋がりませんでした(汗)
- 534 名前:デフォルトの名無しさん [2009/08/14(金) 23:40:51 ]
- 有識者の皆様にご教授願いたいことがあります。
カメラとマイクそれぞれのキャプチャピンから別々にデータを拾って保管しておき、 あとでそれらをプッシュソースフィルタからAVIMUXフィルターで合体させ、AVIファイルを作ろうと思っています。 キャプチャピンから拾うデータはIMediaSampleのデータ(GetPointer)と開始時間と終了時間(GetTime(Start,Stop))です。 問題は、20秒くらいのAVIデータを作成すると、2秒くらい画像が縮んでいることです。 取得時に実時間を画像に描画していますので、それを見ていると、18秒くらいで20秒目の画像まで来てしまいます。 音声は割りと正確に入っていまして、画像が停止した状態から+2秒できっちり20秒ぶん出来ています。 かなりの時間を割いて調べましたが、良い資料にめぐり合いません。 ちなみに、カメラから取ったデータを仮に(AvgTimePerFrame=)10fpsとすると、GetTimeで取得したStartとStopの間は0.1秒ぶん(1000000)ですが、 データとデータの間が必ずしも連続ではありません。1つ目のデータのstopが100000として、次のデータのstartが102000とかだったりします。(本当は100000が理想ですよね) ですので、10フレーム分のデータの最初のstartから最後のstopまでが1秒以上になっているようです。(カメラがコマ落ちしているようです。) (長くなりましたので分割いたしました。次のレスに続きます。)
- 535 名前:デフォルトの名無しさん [2009/08/14(金) 23:43:08 ]
- データなどを10個おきに確認したところ、1秒間に10個データを必要とするならば、ちょうど、コマ落ちの遅延分が画像の短縮と同じ割合のような感じでした。
音声のデータは、0.5秒おきに正しく取得できているので、問題がないようです。Stopから次のStartとの間が連続しています。 同じカメラとマイクを直接AVIMUXフィルタに繋げてAVIファイルを作成すると、きちんとしたAVIが出来上がりますので、コマ落ちなどはIMediaSample.SetTimeでちゃんとフレーム補間されるものと思っていましたが、 違うのでしょうか? 直接つなげた場合と、いったんデータを横取りした場合と、何が違うのでしょうか? ただし、かといって、MediaSample.SetTimeをでたらめな数値にするとだめなことから、一応SampleTimeは参考にされているようですね。 一応、今回はコマ落ち分のフレームを直前のフレームで代用して、サンプルタイムを調整して姑息的に対応しようと思っています。しかし、これが正しい方法でしょうか?きちんとした使い方を知っておきたいのです。 AVIMUXの正しい使い方、同期の取り方等を教えていただける方を待望しております。 八方ふさがりで、このスレに期待しております。 よろしくお願いします。
- 536 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 02:00:15 ]
- 試しに自分でサンプルに時間設定してみれば?または取得時間とサンプルの時間差を計測するとか。
オーディオのタイマーとビデオで使われるタイマーが別なのはよくあること。 本来ずれないものだが、ずれる環境もある。
- 537 名前:デフォルトの名無しさん [2009/08/15(土) 10:26:39 ]
- >>536
早速のアドバイスありがとうございます。 サンプルの取得時の時間は、カメラやマイクが起動してからの時間なので、 AVIMUXにかけるときには、各々の頭のタイミングが0になるように各サンプルの時間を差し引いています。 具体的には、画像の取得開始が50000なら、取得したデータの各サンプルの時間を50000減じてからAVIMUXに送っています。 音声データも同じです。ただ、起動時間にずれがあるので、開始が60000とかになります。 しかし今回の問題は、開始時間がずれているのではなく、徐々にずれていくのです。 ビデオでたとえますと、音はそのまま、画像は早送り(0.05倍速くらいの微妙)です。 タイマーは同じPCにマイクとカメラを接続してますので、同じだと思います。 >>534-535で疑っているのは、 カメラでリアルタイムに取得した画像は、10fpsとしても、1秒に10枚取れるときもあれば、8枚や9枚しか取れないときもあります。 10秒で100枚ほしいところ、結局90枚しか取れなかったということが普通にあります。 それをAVIMUXに入れたときにはきっちり10fpsでレンダリングされて9秒しか動画が得られない。 取得時間はきちんとしていますが、AVIMUXであいまいに処理されているんじゃないかと、 疑っています。
- 538 名前:デフォルトの名無しさん [2009/08/15(土) 11:13:17 ]
- ちなみにAVIMUXのインターリーブのモードはINTERLEAVE_NONEでした。
これをINTERLEAVE_CAPTUREやINTERLEAVE_FULLにしましたら、固まりました。 このモードはソースがプッシュだとだめでしょうか? カメラやマイクなどのキャプチャフィルタはプッシュだと思うんですが。 私のAVIMUXに対する期待は、AVIMUXに1秒間に何枚送ろうが、サンプルに付けたタイムを元に、 適当に表示時間を調整してくれることです。 これが過大な期待なのかどうか、機能の正確なところが知りたいです。 よろしくおねがいします。
- 539 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 03:36:37 ]
- GraphEdit のフィルタ挿入選択ダイアログボックスの様に、フィルタの登録情報を取得する方法を探しています。
具体的には、その中でもPIN情報を取得する方法です。条件としてフィルタの生成は行いません。 何か情報がありましたらお知らせください。
- 540 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 17:39:59 ]
- directshowって動画をフレーム単位で表示したり総フレーム数や現在の表示フレームナンバーとかで再生制御できる?
- 541 名前:デフォルトの名無しさん mailto:age [2009/08/22(土) 18:37:12 ]
- トランスフォームフィルタのCheckTransformについて質問です。
CheckTransform( const CMediaType *mtIn, const CMediaType *mtOut ) この mtIn と mtOut ですが、 [ UpstreamFilter ][ Out ] -> [ A:In ][ TransformFilter ][ B:Out ] -> [ C:In ][ DownstreamFilter ][ Out ] 上図でいえば、それぞれはA〜Cのどれに対応するのでしょうか? mtOutはBに違いないと思います。 mtInに関しては、MSDNの例を見ている限りはAを指していそうに思うのですが、 他の個人Webサイトの例などを見ていると、C(ダウンストリーム側が提示)と取れるような記述もありました。 よろしくお願いします。 m(_ _)m
- 542 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 20:07:31 ]
- ソース読めよ
- 543 名前:541 mailto:age [2009/08/24(月) 22:04:59 ]
- >>542
ありがとうございました。 m(_ _)m
- 544 名前:デフォルトの名無しさん [2009/08/24(月) 23:26:02 ]
- SampleGrabberを使ってAviUtlのDirect Show File Readerっぽいもの(Aviutl用ではありませんが)
を作りたいんですが、うまくいきません。 なるべく速度が低下しないように、 ・動画の1フレーム目を読み出した後、2フレーム目の読み出しが要求されたときは IMediaControlのRunを呼び出して再生を再開→すぐ一時停止 ・1フレーム→10フレームのように読み出すときだけシークする ようにしたいんですが、一回Runを呼び出すと、SetOneShotをtrueにしても、サンプルグラバのコールバックで IMediaControl→Pauseを呼び出してもちゃんと止まっていないようなのです。 ポーズした後もBufferCBが呼び出されてるし、 映像だけをデフォルトレンダラに変更してウィンドウを動かすと勝手に映像が進みます。 どうすればいいでしょうか? *.flv→FLV Splitter→MP3のデコーダー→SampleGrabber(Audio)→NullRenderer FLV Splitter→ffdshow Video Decoder→SampleGrabber(Video)→NullRenderer
- 545 名前:デフォルトの名無しさん [2009/08/27(木) 01:13:50 ]
- >>543
Aだろ 説明ではアップストリームを基準にトランスフォームフィルタの説明してるんじゃないかな
- 546 名前:541 mailto:age [2009/08/27(木) 07:50:01 ]
- >>545
やはりそうですよね。 ありがとうございました。 m(_ _)m
- 547 名前:デフォルトの名無しさん mailto:age [2009/08/29(土) 20:45:44 ]
- Directshowでプログラムを組んだのですが、開発したPC(Microsoft SDKが入っている)以外のPCだと、
.netFrameworkをインストールしないと「構成が正しくない」というようなエラーが出て立ち上がりませんでした。 Directshowプログラムを動かすには.netFrameworkのインストールが必須なのでしょうか? それとも、Directshowとは関係ないAPIによるものでしょうか? Ole系関数やatlcomcli.hの関数が怪しいかと思うのですが・・・
- 548 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 21:00:17 ]
- 要るわけない。
- 549 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 21:21:29 ]
- >>547
まさかCLRプロジェクトにしていないよな? そうでなければ、本当に必要なのは.NET FrameworkではなくVisual C++ランタイムだと思う。 2005 www.microsoft.com/downloads/details.aspx?familyid=766a6af7-ec73-40ff-b072-9112bab119c2&displaylang=ja 2008 www.microsoft.com/downloads/details.aspx?familyid=2051a0c1-c9b5-4b0a-a8f5-770a549fd78c&displaylang=ja
- 550 名前:547 mailto:age [2009/08/30(日) 09:39:39 ]
- >>548
やはりそうでしたか(汗) >>549 >まさかCLRプロジェクトにしていないよな? いえ、Win32プロジェクトで作成していますし、プロジェクトのプロパティでも 「共通言語ランタイムサポートを使用しない」にしています。 .netテクノロジーは噛んでいないはずですよね。 >そうでなければ、本当に必要なのは.NET FrameworkではなくVisual C++ランタイムだと思う。 URLを教えてくださってありがとうございます。 今はソフトを作り直していて、余計なAPIなどが関わっていないか注意しているので、 これが完成したら、配布テストとしてVisual C++ランタイムでちゃんと動作するか試したいと思います。 どうもありがとうございました。
- 551 名前:名無しさん@そうだ選挙に行こう [2009/08/30(日) 11:53:25 ]
- フレームワークはいらないよ。インストール必要なライブラリーを仕事で洗い出したから間違いないよ
- 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あたりを使ったほうが無難だと思う。
|

|