6

私はアプリケーションに取り組んでいますが、解決策が見つからないように見える問題があります。アプリケーションは vc++ で書かれています。私がする必要があるのは、その上にテキストを含む YUV ビデオ フィードを表示することです。

現時点では、GDI を使用して OnPaint メソッドでテキストを描画し、DirectDraw オーバーレイでビデオを描画することで正しく動作します。多くの問題を引き起こすため、オーバーレイを取り除く必要があります。一部のビデオ カード、Vista、7 などでは動作しません。

同じことをより互換性のある方法で完了する方法がわかりません。バック バッファーを使用して DirectDraw を使用してビデオを描画し、それをプライマリ バッファーに問題なくコピーできます。ここでの問題は、ビデオが更新される回数が原因で、GDI で描画されているテキストが点滅することです。うまく機能するので、可能であればテキストをそのまま描画するコードを保持したいと思います。

テキストを DirectDraw バッファまたはメモリ バッファなどに直接描画してから、バック バッファに blt する方法はありますか? 別の方法をまとめて検討する必要がありますか?2 つの重要な OS は XP と 7 です。何かアイデアがあれば教えてください。テストします。ありがとう。

4

2 に答える 2

2

microsoft.com の DirectShow と Ticker サンプルを調べてみてください。

DirectShow ティッカーのサンプル

このサンプルでは、​​Video Mixing Renderer を使用してビデオとテキストをブレンドします。IVMRMixerBitmap9 インターフェイスを使用して、ビデオ ウィンドウの下部にテキストをブレンドします。

DirectShow は、オーディオまたはビデオ ストリームを再生するためのフィルター グラフを構築し、さまざまな効果のためのさまざまなフィルターを追加し、ビデオおよびオーディオ サンプルを操作するためのものです。

于 2010-02-16T05:37:46.960 に答える
1

DirectShow の Video Mixing Renderer を使用する代わりに、ISampleGrabberインターフェイスを使用することもできます。利点は、たとえばビデオを画面に表示せずにネットワーク経由でストリーミングしたり、ファイルにダンプしたりする場合など、他のレンダラーでも使用できるフィルターであることです。

于 2010-02-16T06:26:00.783 に答える