DirectShow 編集サービスを使った Windows Media の使い方
ここでは、DirectShow 編集サービス (DES) アプリケーションでの Windows Media ベースのコンテンツの使い方について説明する。以下に示すように、主に 2 とおりのシナリオがある。
- ソース クリップ。DES プロジェクトには、Windows Media ファイルからのオーディオ クリップおよびビデオ クリップを含めることができる。
- ターゲット フォーマット。Windows Media は、ビデオ編集プロジェクトの最終出力として理想的なフォーマットである。
Windows Media ファイルを操作するためには、アプリケーションはソフトウェア証明書 (キーとも呼ばれる) を提供しなければならない。提供するには、キー プロバイダ オブジェクトを実装する。キー プロバイダは、IServiceProvider インターフェイスを公開する COM オブジェクトである。キー プロバイダの実装方法については、「Windows Media Format SDK のロック解除」を参照すること。
Windows Media ファイルと共に DES を使うには、以下の DES オブジェクトにソフトウェア キーが必要である。
- プレビューまたはファイルの書き込み用のレンダリング エンジン。
- ASF ファイルからビデオ フレームまたはメディア タイプを取得するための MediaDet オブジェクト。
重要 : スマート レンダリング エンジンは、Windows Media ファイルの読み取りや書き込みに使ってはならない。常に基本レンダリング エンジン (CLSID_RenderEngine) を使うこと。
オブジェクトにソフトウェア キーを与えるには、そのオブジェクトに、IObjectWithSite インターフェイスについて問い合わせ、キー プロバイダへのポインタを指定して IObjectWithSite::SetSite を呼び出す。たとえば、以下のコードでは、レンダリング エンジンにソフトウェア キーを与える。
// アプリケーション定義関数を使ってキー プロバイダを作成する。
IServiceProvider *pKey;
hr = MyCreateKeyProviderFunction(&pKey);
// IObjectWithSite についてレンダリング エンジンに問い合わせる。
IObjectWithSite *pOWS;
hr = pRenderEngine->QueryInterface(__uuidof(IObjectWithSite),
reinterpret_cast<void**>(&pOWS));
if (SUCCEEDED(hr))
{
// キー プロバイダを与える。
hr = pOWS->SetSite(pKey);
pOWS->Release();
}
pKey->Release();
DES プロジェクトで Windows Media ソース クリップを使うには、キー プロバイダへのポインタを指定して、レンダリング エンジンの IObjectWithSite::SetSite を呼び出すだけである。
Windows Media ファイルを書き込む方法については、「DES における Windows Media ファイルの書き込み」を参照すること。