2

ここで誰かが私を正しい方向に向けることができるかどうか知りたい.

何らかのエンコーディング (H.264 など) のビデオ ファイルがあり、CUDA のビデオ デコード ライブラリ (https://developer.nvidia.com/nvidia-codec-libraries) を使用してこのビデオをデコードするとします。これが何をするか (私は推測します)、ビデオをデコードして画面上で再生します。ここまでは順調ですね。

ここで、私が本当にやりたいことは、デコード ライブラリを変更して (またはラッパーなどを作成して)、ビデオ フレームに対して後処理を実行することです。

たとえば、ビデオに 1000 フレームがあり、(ユーザーが指定した) フレームの一部にカスタム エフェクトを (リアルタイムで) 追加したいとします(たとえば、3D モデルをレンダリングします。ユーザー---出力をフレーム内のある場所にオーバーレイするなど)。

私の質問は本当に次のとおりだと思います:

  1. これはまったく可能ですか?
  2. これまたは同様のもの(またはチュートリアル、論文、マニュアルなど)を達成できるコードサンプルを知っている人はいますか?

ありがとう!

4

1 に答える 1

1

それは確かに可能です。CUDA ビデオ デコーディング ライブラリは、ビデオ フレームを NV12 形式のマトリックスとして提供します。デコードされたフレームを画面に自動的に表示するものは何もありません。その部分を自分で処理する必要があります。リアルタイムで実行することを検討している場合は、おそらく CUDA <--> OpenGL の相互運用性を調べる必要があります。これは、OpenGL バッファー、テクスチャ、およびレンダーバッファー オブジェクトを CUDA のアドレス空間にマップできるためです。処理されたフレームをマップされたオブジェクトに出力すると、直接表示できます。CUDA サンプル cudaDecodeGL または cudaDecodeD3D9 を参照することをお勧めします (OpenGL ではなく DirectX が好きな場合)。

もちろん、リアルタイムで実行することを提案しているものを取得することは別の問題です...

于 2013-03-02T21:50:35.377 に答える