1

c#を使用してアナログTVストリームにニュースマーキーを配置したいのですが、DirectShowを使用してアナログTVをストリーミングできますが、回転するテキストと混合する方法がわかりません。フィルターを作成する必要がありますか?または、DirectShow以外のテクノロジーを使用する必要がありますか?

4

2 に答える 2

3

DirectShowはこれを行う最も簡単な方法ですが、特にC#からの学習曲線が少しあります。ウィキペディアのページには、DirectShowの基本的な概要が記載されています。

DirectShowツールは、最新のWindowsSDKで利用できます。DirectShowプログラミングにC++を使用する方が簡単ですが、COM相互運用機能またはDirectShow.net(まだ試していません)を介してDirectShowをかなり簡単に使用できます。COM相互運用機能を使用する場合は、次の記事が役立ちます。

http://blogs.msdn.com/b/ericgu/archive/2004/09/20/232027.aspx

アニメーションのパフォーマンスが十分にスムーズであれば、VMRオーバーレイフィルターを使用できる場合があります。次の記事を参照してください

http://www.codeproject.com/KB/audio-video/VideoPicture.aspx
http://www.codeproject.com/KB/audio-video/Ticker.aspx
http://msdn.microsoft.com/en- us / library / dd407344(v = vs.85).aspx

または、ビデオフレームのタイムスタンプと同期して位置を調整する各フレームのテキストをレンダリングする独自のフィルターを作成する必要があります。独自のアプリケーション内でのみこれを行う必要がある場合は、次のアプローチが最も簡単な場合があります

http://www.sichbo.ca/Free_Code/100_C_Sharp_directshow_filters

Microsoftは、パフォーマンス上の理由からDirectShowフィルターをC ++で作成することを公式に推奨していますが、慎重にプログラムすると、ボトルネックはテキストのオーバーレイに使用されるAPIになるため、C#ではスクロールテキストのオーバーレイは問題ありません。

于 2011-04-13T08:57:57.957 に答える
0

実際には、ビデオにテキストを描画するためにフィルターを作成する必要はありません。非圧縮ビデオがサンプルグラバー(標準のDirectShowフィルターの1つ)を通過するグラフを作成し、サンプルグラバーのコールバックを設定するだけで、コールバック内のビデオデータを変更できます。DirectShow.NETを使用すると、C#でそれを行うのは非常に簡単ですが、マーシャリングのために最適ではありません。最初にGraphEditPlusでこのようなグラフを作成できます。次に、このグラフを作成してサンプルグラバーを使用する方法のソースコードをC#またはC++で表示します。

于 2011-04-19T10:33:01.223 に答える