問題タブ [directshow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4617 参照

visual-c++ - マイクからの DirectShow を使用したファイルへのオーディオ キャプチャ (「AudioRecorder WAV Dest」の代替手段)

参照: http www codeproject com/KB/audio-video/cacsave.aspx?msg=3094764#xx3094764xx

「AudioRecorder WAV Dest」のようなものが見つかりません。私のPCのgraphEditがこれらを示しているように、これに代わるものはありますか:(パート1 n関連はうまく機能しました。)

また、Wave ファイルを保存するためにほとんどすべての Windows PC に存在する一般的な名前はどれですか。今のところ WinXPSP2+ 用です。

-ラフル

0 投票する
3 に答える
1741 参照

c# - C# コンパクト フレームワークの Directshow: Filtergraph の IMediaEvent のトリガー処理の問題

C# dll に directshow 機能を実装する作業を行っています。Microsoft が Windows Mobile 6 SDK で提供する C++ ベースの「CameraCapture」の例に基づいて作業を行っています。(このサイトの以前のヘルプのおかげで) 順調に進んでいましたが、C# ランドで directshow イベントをリッスンしようとしているときに、ちょっとした障害に遭遇しました。

dshow イベントをリッスンするためにループするスレッドがあります。ここで定義される手動リセット イベントに基づいて待機します (これは、グラフの初期化の最後に定義されます。グラフが構築され、renderstream が呼び出され、制御ストリームが既にデータフローをブロックしています)。

私がこれで経験している2つの関連する問題があります:

  1. 私の dshow イベント ハンドラー ループが0 のタイムアウトを使用してIMediaEvent.GetEvent()経由でイベントをプルすると、3 回目の反復で「タイムアウトを超えました」という hresult (-2147467260) が返されます。その 3 番目のイベント トリガー (およびその後のエラー) は、C++ の例では発生しません。
  2. 上記のタイムアウトのケースを無視すると、常に 73 イベントでトリガーされます。ループは基本的に一時停止しないため、これによりプロセッサが強制終了されます。

C++ の例でグラフをプレビュー モードで実行すると、2 つの IMediaEvents が取得されます。最初は 13、次に 73 です。その後、実際のキャプチャが開始されるまでトリガーを停止します。私のC#バージョンは13、次に73、次に73をプルしますが、タイムアウトエラーがあります。

つまり、実際に「取得」する dshowevent がないため、タイムアウトが発生するため、DshowRequestMan の 3 回目のトリガーは発生しないようです。

何が間違っているのかわかりません-繰り返しごとに「FreeEventParams()」を呼び出しています...ハンドルプロパティに何かを割り当てているだけなので、ManualResetEventオブジェクトが間違って使用されているのではないかと疑っていますが、同じピンボークされた「WaitForSingleObject」を使用して DshowEventHandle をリッスンすると、問題が発生します... この時点で混乱しています。

どんなアイデアでも大歓迎です。前もって感謝します!

0 投票する
3 に答える
160 参照

windows - 再生中のムービーを検出する (Windows)

映画を見ることは、まったく異なるユーザー アクティビティです。

ユーザーはマウスにもキーボードにも触れません。それでも、彼はコンピューターを「積極的に」使用しています。したがって、スクリーンセーバーは実行されるべきではなく、インデックス作成は注意して実行する必要があります。

一方、ビデオを再生するには、ビデオ メモリへの直接書き込み、DirectShow、またはその他の API を使用する必要があります。これが答えの鍵かもしれません。

ビデオが再生されているかどうかを判断する簡単な方法は何ですか?

0 投票する
3 に答える
4924 参照

visual-c++ - ビットマップ (640x480) を AVI ファイルにプッシュする Visual C++ AVI ライター関数?

SDK for Visual C++ を備えたビデオ キャプチャ カードを持っています。SDK からのコールバックで、カラー フレーム (640 x 480) を 30 fps で使用できるようになりました。現在、イメージ シーケンス全体を個別の bmp ファイルとして一度に 1 つずつ別のスレッドに書き込んでいます。これは 1 時間に 108,000 ファイル、つまり 1 時間あたり約 100 GB であり、管理できません。オプションの圧縮を使用して、これらの着信フレームを 1 つの AVI ファイルにプッシュしたいと考えています。どこから始めればいいですか?これまでのところ、MSDN DirectShow のドキュメントをざっと見ていて混乱してきました。もっと良い例はありますか?OpenCVは答えですか?いくつかの例を見てきましたが、OpenCV がカードをキャプチャ デバイスとして認識するかどうかもわかりませんし、そもそもキャプチャ デバイスをどのように認識するかもわかりません。また、私はすでにフレームを取得しています、プロデューサースレッドをバックアップしないコンシューマースレッドでAVIに出力する必要があります。助けてくれてありがとう。

0 投票する
1 に答える
2159 参照

directshow - DirectShow変換フィルターを作成する方法を示す例はありますか?

現在のフレームとその前のフレームをキャプチャして分析を行い、表示する新しいフレームを作成したいと思います。変換DirectShowフィルターを作成する必要があるということですか?しかし、私はDirectShowの初心者です。私はMSDNのたくさんのドキュメントに混乱しました。それで、それを行う方法を示す簡単な例があるかどうか疑問に思います。

ありがとう。料理

0 投票する
1 に答える
5673 参照

c# - DirectShowを使用して複数のモニターで複数のビデオを同期して再生するにはどうすればよいですか?

私は、c#のdirectshowlibを使用して、複数のストリームを持つ単一のビデオウィンドウを使用して、最大8つのビデオを同期して再生することに成功しました。問題は、ビデオウィンドウが単一の画面でしか再生されないことです。多くの画面にまたがって表示しようとすると、機能しません。アプリウィンドウは正しく表示されますが、ビデオは1つの画面でしか再生されません。何か案は?

よろしくお願いします。

0 投票する
2 に答える
1495 参照

windows - 出力 IMediaSample のバッファ サイズが入力のバッファ サイズよりも小さいのはなぜですか?

DirectShow SDK にある ezrgb24 サンプル プロジェクトを正常にビルドしました。しかし、デバッグ中に混乱した問題が発生しました。

次の Copy メソッドは、Transform メソッドによって呼び出されました。

assert ステートメントが失敗しました。Grapheditで、フィルターの入力メディアタイプがRGB24で、出力もRGB24であることを確認しました。出力のバッファ サイズが入力の実際のデータ サイズよりも小さくなる理由がわかりません。誰が私を助けることができます?

ありがとう。

-------------------------------------------------- 2009/8/20 編集

おお、実際の入力メディア サブタイプは RGB32 ですが、出力のサブタイプは RGB24 であることがわかりました。しかし、CEZrgb24::CheckInputType メソッドと CEZrgb24::CheckTransform の両方でタイプを RGB32 にできる理由は、RGB24 に対してのみ OK を返すことです。

-------------------------------------------------- 2009/8/21 編集

私は自分で問題にぶつかりました。回答として投稿します。