私はアプリケーションを持っています。私は、コード化されたバイトの大きな配列を受け取る状況があります。私はそれらをデコードしてレンダリングしなければならない。デコードのために、カスタムデコーダクラスを使用しています。デコード後、どのようにしてデコーダからの入力データを受け取るDirectShowグラフを作成できますか?これに関するいくつかの方向性/サンプルを与えてください。DirectShowを使用してソケット/アプリケーションからバイト配列をレンダリングする方法は?
答えて
DirectShow SDKのPushSourceサンプルを見てください。このサンプルはレンダリング可能なソースフィルタを作成する方法を示しています。残りのグラフを表示できるように、フィルタの出力メディアの種類を正しく設定することが重要です。このサンプルでは、メディアサンプルを他のメディアパイプラインにフィードする方法も示しています。あなたのケースでは何をデコードするのですか? PushSourceサンプルはRGB24 IIRCを出力します。
また、バイトを受信したのと同じフィルタでデコードしているようですね。通常、DirectShowでは、ネットワークからバイトを受け取ることができ、エンコードされた形式でサンプルを出力するソースフィルタを作成します。このフィルタをカスタムデコーダフィルタに接続すると、DirectShowで認識されるRGB24または一部のRawメディア形式が出力されます。同様に、オーディオの場合、PCMと出力することもできます。
編集: 私は同じアプローチ(CSource、CSourceStream)を使用しました。つまり、DoBufferProcessingLoopはFillBufferを呼び出します。私の一般的なアプローチは、生産者 - 消費者のパターンを使用することでした。ネットワーキング読み取りスレッドは、キューをサンプルで実装し、オーバーライドされたDoBufferProcessingLoopでは、キューにデータがあるかどうかをチェックし、データがある場合はFillBufferを呼び出します。もちろん、イベント(フレーム可用性)を待つなどの他の方法を試すことができます。私が使用した手法を見るには、http://sourceforge.net/projects/videoprocessing/にサンプルRTSPソースフィルタのソースコードをダウンロードしてください。私が言いたいことは、ちょっと試してみるだけです。
- 1. WebClient.UploadStringAsyncを使用してバイト配列をアップロードする方法?
- 2. ODP.Netを使用してバイト配列の配列を渡す方法は?
- 3. Java、バイト配列からバイトのコレクションを取得する方法
- 4. DirectShowを使用してサーバーからクライアントブラウザにビデオをストリーミングする方法は?
- 5. DirectShow Monogram X264 Encoderを使用してウェブカメラからビデオをキャプチャする方法は?
- 6. java.util.zipを使用してバイト配列を圧縮する方法は?
- 7. バイトの配列からpngをレンダリングするHttpHandler
- 8. RDDでバイト配列をキーとして使用する方法は?
- 9. バイト配列を使用して複数のイメージを返す方法は?
- 10. Windowsでバイト配列[]を使用して画像を投稿する方法
- 11. jsonを使用してバイト配列で画像を印刷する方法
- 12. 2Dの方法でバイトの1D配列を使用する
- 13. インデックス配列を使用してnumpy配列からサブ配列を得る方法をベクトル化するには
- 14. Reactで配列からランダムなオブジェクトをレンダリングする方法は?
- 15. PowerShellを使用してバイト配列からGPS数値を抽出する
- 16. ビットマップを使用してバイト配列からイメージを表示する
- 17. enum tpバイト配列から戻って行く方法は?
- 18. 完全な16進値でバイト配列からバイトを返す方法は?
- 19. バイト境界にないビット位置から開始するバイト配列からバイトを抽出する方法#
- 20. バイト配列からイメージを作成する方法
- 21. Swift - AnyObjectからバイト配列を抽出する方法
- 22. バイト配列CからManaged.Graphics.Direct2D.Bitmapオブジェクトを作成する方法#
- 23. レンダリング関数を使用してdatatableにjson配列を追加する方法
- 24. バイト配列をint配列に変換する方法は?
- 25. DirectShowサンプルフィルタ:使用方法
- 26. DSPackを使用してファイルからDirectShowフィルタをロードする
- 27. インデックスを使用してバイト配列から情報にアクセスする
- 28. オーディオデータを含むバイト配列を渡して使用する正しい方法は何ですか?
- 29. バイト配列を分割する方法
- 30. ファイルをgridfsから配列バイトに読み込む方法は?
私の質問は、受信したH 264でエンコードされたバイト配列を待つアプリケーションの2番目のスレッドに関するものでした。受信したバイト配列をデコードルーチンを使ってYV12/I420とデコードします。このデコーダは、そのようなフィルタではありません。私が計画しているのは、デコードバイト配列がソースフィルタに与えられることです(PushSourceのように、あなたが提案したように作成されます)。このアイデアを検証してください。 –
あなたはもちろんそのようにすることができます。私のコメントは、ソフトウェアのコンポーネント化/モジュール化に役立つ他のアプローチを強調することを意図していました。 E.Gでは複数のシナリオ/アプリケーションでH.264エンコーダ/デコーダを使用し、「ネットワークから受信」と「デコード」という2つの動作を別々のフィルタで実行することで、フィルタを再利用できます。しかし、最終的にはあなたのために働くものは何であるかです。メディアタイプが正しく設定されていれば、グラフをレンダリングすることができます。 – Ralf
こんにちは、 ヒントありがとうございます。私は一度サンプルを通過した後、いくつか質問があります。 これはDLLです。 GraphEdtまたはDirectShowアプリケーションプログラミングコンテキストから使用できるように、これをどのように登録しますか? これの使用例は大歓迎です。 ありがとうございます。 Shiju –