ビデオをテキストと画像でオーバーレイできるビデオプレーヤーを作成しようとしています。今、私はビデオをキャプチャし、自分のソフトウェアに表示するために drikshow サンプル グラバー フィルターを使用しています。正常に動作しますが、Atom のようなそれほど強力でないシステムでは非常に遅くなります。他の人が提案したように、EVR Presenter も使用しようとしました。マネージ DirectX 9 グラフィックスとゲーム プログラミングでコード プロジェクト ( Direct3D ビデオ レンダリングを使用した純粋な C# の EVR プレゼンター) のコード例から EVR プレゼンターを使用し、キック スタートでフレームをテクスチャに変換し、変換されたテクスチャを画面に表示します。サンプル コードは次のとおりです。
lock (m_csLock)
{
if (systemSurface == null)
systemSurface = Surface.CreateOffscreenPlain(m_Device, _surface.Description.Width, _surface.Description.Height, _surface.Description.Format, Pool.SystemMemory);
if (texture == null)
texture = new Texture(m_Device, systemSurface.Description.Width, systemSurface.Description.Height, 1, Usage.Dynamic, systemSurface.Description.Format, Pool.Default);
using (Surface texturesurface = texture.GetSurfaceLevel(0))
{
m_Device.GetRenderTargetData(_surface, systemSurface);
m_Device.UpdateSurface(systemSurface, texturesurface);
}
}
しかし、それでもレンダリング速度は非常に遅く、多くの CPU パワーを必要とします。ビデオをキャプチャしたり、ビデオ フレームをテクスチャにコピーしたりする方法があれば教えてください。