0

私は Directshow と C++ が初めてです。ソースからビデオをキャプチャし、これを VP8 でエンコードしようとしています。これを達成するために、https:
//code.google.com/p/webm/downloads/list の DirectShow-Filters を使用しています。私のフィルターグラフは機能しており、次の 4 つのフィルターで構成されています。

recorder -> WebM VP8 Encoder Filter -> WebM Muxer Filter -> FileWriter

問題は、VP8 Encoder Filter からプロパティを変更する必要があることです。GraphEdit を使用すると、たとえばターゲット ビットレートを変更できますが、C++ でプログラムによってこれを行う方法がわかりません (PropertyPage を使用したくありません)。また、ソース コードをダウンロードし、vp8encoder\vp8encoderfilter.hpp ファイルを見つけて含めました。これにより、vp8encoderidl.h ファイルを含める必要があるという問題が発生しました。最初は soure フォルダにこのファイルが見つからなかったので、インターネットのどこかからダウンロードしました。後で、vp8encoder.idl ファイルを含む IDL フォルダーを確認しました。このファイルをプロジェクトに追加し、コンパイルして、結果の vp8encoder_h.h ファイルを含めました。どちらの場合も (インターネットまたはヘッダー ファイルのコードを使用)、プロジェクトをコンパイルしてビデオを録画できます。

//Instanziate Encoder-Filter
hr = CoCreateInstance(__uuidof(IVP8Encoder), NULL, CLSCTX_INPROC_SERVER, IID_IBaseFilter, (void**)&pVideoEncoder);

//Get Interface
IVP8Encoder *iEncoder = NULL;
hr = pVideoEncoder->QueryInterface(__uuidof(IVP8Encoder), (void**)&iEncoder);

QueryInterface() メソッドは E_NOINTERFACE を返します。したがって、おそらく最初のパラメーターは正しくないと思いますが、代わりにどのパラメーターが必要かわかりません。

ご協力いただきありがとうございます。

4

1 に答える 1