c#を使用してアナログTVストリームにニュースマーキーを配置したいのですが、DirectShowを使用してアナログTVをストリーミングできますが、回転するテキストと混合する方法がわかりません。フィルターを作成する必要がありますか?または、DirectShow以外のテクノロジーを使用する必要がありますか?
2 に答える
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#ではスクロールテキストのオーバーレイは問題ありません。
実際には、ビデオにテキストを描画するためにフィルターを作成する必要はありません。非圧縮ビデオがサンプルグラバー(標準のDirectShowフィルターの1つ)を通過するグラフを作成し、サンプルグラバーのコールバックを設定するだけで、コールバック内のビデオデータを変更できます。DirectShow.NETを使用すると、C#でそれを行うのは非常に簡単ですが、マーシャリングのために最適ではありません。最初にGraphEditPlusでこのようなグラフを作成できます。次に、このグラフを作成してサンプルグラバーを使用する方法のソースコードをC#またはC++で表示します。