問題タブ [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.
c++ - DirectShow DVD 再生
通常のメディア ファイルの再生に適したカスタム アロケーター/プレゼンターを作成しました。ただし、次のコードを使用して DVD を再生しようとすると、スタック オーバーフロー例外で失敗します。
スタック オーバーフローは、control->Run() の呼び出しの直後に発生します。本当に単純なことを忘れているだけだと確信しているので、それは私を狂わせています。
ありがとう。
directshow - 周波数を入れるアナログチューニング用のDirectShow API?
周波数のみをプッシュできる DirectShow のインターフェイスを探しています。インターフェイスではIAMTVTuner
可能ですがput_channel
、これにはカードの事前調整が必要です。チューニングする周波数を指定したいだけです。これはアナログチューニングで可能ですか?(ただし、デジタル ストリームのインターフェイスを使用すると簡単に実行できます)。
c# - VOB(DVD)ファイルからフレームを抽出
ビデオ ファイルからサムネイルを生成する必要があります。IMediaDet を使用してビデオからフレームを取得します。(*.vob) ファイル DVD では機能しません。C# で DVD からサムネイルを取得するにはどうすればよいですか ..
c# - DirectShow メモリ消費の最小化
そのため、ローカル エリア接続を介して 2 つのビデオ ソースをストリーミングするアプリケーションがあります。各ビデオには独自のフィルター グラフがあり、ビデオをデコード フィルターと Infinite Pin Tee フィルターにかけます。次に、GMFBridge フィルターがあり、WM ASF フィルターを使用して記録のオン/オフを切り替えるために使用されます。ティー フィルターの別の出力から実行されるビデオ レンダラーもあります。
現在、これはすべて問題なく動作しますが、アプリケーション全体のメモリ消費量は 80 MB をはるかに超えており、記録をオンにすると 100 MB を超える可能性があります。
DirectShow のメモリ消費を最小限に抑えるためのヒントはありますか?
DirectShowLib 相互運用ライブラリを介して、C# (.NET 2.0) から DirectShow を使用しています。
乾杯
c++ - カスタム WM プロファイル - コーデックの問題
カスタム WM エンコーダー プロファイルを作成します。カスタムの非標準 WM プロファイルが必要な理由は、ビデオ解像度が入力ビデオ ストリームと同じでなければならないからです。以下のプロファイルを作成しましたが、それを使用してビデオとオーディオをエンコードした後、読み込み中に WMP で WMV1 コーデックが見つからないと表示され、WM エンコーダ コーデックをダウンロードするように求められます。それらをインストールした後、問題はまだ存在します。
c# - C# で生の非圧縮バイト ソースからライブ ビデオを表示する: WPF と Win フォームの比較
生の非圧縮バイト ストリーム (ピクセルあたり 2 バイト、2^18 ピクセル/フレーム、32 フレーム/秒) としてメモリ内のリング バッファーを介してプッシュされるライブ 16 ビット グレースケール ビデオ ストリームがあります。(これは、PCI フレームグラバーを介して、科学グレードのカメラから来ています)。ビデオで簡単な処理 (ダイナミック レンジのクリップ、色付け、オーバーレイの追加) を行い、C# を使用してウィンドウに表示したいと思います。
これは、Windows フォームと GDI を使用して動作しています (フレームごとに Bitmap オブジェクトを作成し、後処理手順に基づいて生の 32 ビット RGB ピクセル値を書き込み、Graphics クラスを使用してフレームを描画します)。しかし、これは私が他のことに使用したい CPU のかなりの部分を使用します。そのため、GPU で高速化されたビデオ表示に WPF を使用することに興味があります。(データ バインディングとレイアウト機能のために WPF の使用も開始したいと思います。)
しかし、これまで WPF を使用したことがないため、これにアプローチする方法がわかりません。ビデオと WPF についてオンラインで見つけたもののほとんどは、圧縮されたビデオ ファイルをディスク (WMV など) から読み取るか、Windows が既に認識しているドライバー レイヤーを使用してコンシューマー グレードのカメラからストリームを取得することに関するものです。したがって、ここでは適用されないようです (ただし、これについて間違っている場合は修正してください)。
だから、私の質問:
メモリ内の生の圧縮されていないバイトからビデオを再生するための簡単な WPF ベースの方法はありますか (8 ビット グレースケールまたは 24 ビット RGB であっても)。
GPU で後処理を行うには、DirectShow フィルター (またはその他の DirectShow/Media Foundation っぽいもの) を作成する必要がありますか?
また、これらのタスクに適したドキュメント、例、ブログなどに関する一般的なアドバイスや提案をいただければ幸いです。ありがとう!
フォローアップ:いくつかの実験の後、私WriteableBitmap
は自分のニーズに対して十分に高速であり、正しく使用するのが非常に簡単であることがわかりました.単に呼び出すだけでWritePixels()
、それにImage
バインドされたコントロールは自動的に更新されます. InteropBitmap
メモリ マップト セクションを使用すると著しく高速になりますが、.NET 3.5 で使用するには、p/invokes を kernel32.dll に書き込む必要がありました。
windows-7 - TrustedInstallerは、HKCR \ DirectShow \ MediaObjects\Categoriesへのレジストリ書き込みを防止しています
書き込みが必要なDMOをインストールしようとしていますがHKCR\DirectShow\MediaObjects\Categories\57f2db8b-e6bb-4513-9d43-dcd2a6593125
、このレジストリパスはTrustedInstallerによって保護されており、この保護はWindows 7では新しいようです(以前のプラットフォームで機能します)。
DMOをインストールするにはどうすればよいですか?
このレジストリキーの所有権を取得することを提案する場所はたくさんありますが、これは正しくないと感じています。
ところで、レジストリ値を書き込むためにボイラープレートWix3を使用していました。
directx - カスタムアロケータでビデオのアクティブウィンドウを表示する
カスタムアロケータサンプルを使用してパネル上にビデオを表示しています。一部のファイルでは、アクティブなウィンドウでビデオを再生し、これは個別に表示されます。この不要なウィンドウが開かないようにするにはどうすればよいですか。
video - カスタムファイル形式とコーデック?
私は何日もコーデックの問題に悩まされていましたが、まだ全体像を見ることができませんでした. オーディオ/ビデオ形式とコーデックを扱うのは初めてです。だから私は本当にそれについていくつかの助けが必要です. 作品はこちら。
カスタマイズされた mpeg ファイルのエンコードとデコードを担当するいくつかのコンポーネントを作成しています。標準の解凍/圧縮プロセス (オーディオとビデオの両方) に加えて、カスタムの解凍/暗号化を実装します。このためのコーデックとソフトウェア ライブラリの両方を作成します。わからないことを列挙します。
- WMP の場合、コーデックの検索ポリシーは何ですか。
- たとえば、カスタム ファイル形式を mpeg-3 形式と区別するにはどうすればよいですか。このための標準とプログラミング構造は何ですか。(私がめちゃくちゃになっている本当の部分は、コンテナ形式、ビデオ形式、fourccコードなどで、私を死に至らしめます)
- Windows でのこの作業のために、コーデック (DMO またはフィルター) を作成するためにどのような方法をお勧めしますか?
私はあなたの助けによってリストされた問題に対処したいと思っています。情報といくつかの有用なリンクをいただければ幸いです。MSDNを除いて:)私が探しているものが見つからなかったからです。
directshow - 縦横比を維持しないようにレンダー フィルターを作成するにはどうすればよいですか?
ビデオデコーダーとビデオレンダーフィルターの間に挿入されるDirectShowビデオ変換フィルターを作成しました。入力画像の周りにフォトフレームが追加されます。そのため、出力画像のサイズと縦横比は入力画像とは異なります。
残念ながら、ビデオ レンダリングでは元の縦横比が維持されるため、フォト フレームを含む画像が引き伸ばされて表示されることがわかりました。GraphEdit で、「縦横比を維持する」という名前のチェック ボックスがあるビデオ レンダー フィルターを見つけました。チェックを外すとアウト画像は引き伸ばされません。それが私が欲しいものです。しかし、私のコードでそれを行う方法がわかりません。インターフェイス IVideoWindow にクエリを実行しましたが、アスペクト比を設定できないことがわかりました。そこで、ここで助けを求めます。
ありがとう。
ありがとう、ジェレマイア・モリル。はい、IVMRAspectRatioControl7/9 が必要です。しかし、インターフェイスを取得するには、最初にフィルター Video Mixing Renderer Filter 7/9 を取得する必要があるようです。「Video Mixing Renderer Filter 9」ではなく、「Video Renderer」フィルタで縦横比を設定したい。
フォーマットを動的に変更する必要はありません。私のフィルターグラフは
Decoder 出力の解像度に関係なく、MyFilter の出力解像度は常にデスクトップ画面と同じです。インテリジェンス接続を使用すると、説明した問題が発生することがわかりました。しかし、MyFilter を VideoRenderer に手動で接続すると、ビデオの解像度は正しく、つまり画面と同じになります。