プロジェクト ファイルの読み込み
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
[この API はサポートされていないため、今後変更または使用できない可能性があります。]
プロジェクト ファイルを読み込むには、XML パーサーと空のタイムラインの 2 つのコンポーネントが必要です。 XML パーサーは XML プロジェクト ファイルを読み取り、ファイルで定義されている各オブジェクトを作成します。 次に、オブジェクトをタイムラインに挿入し、既定のフレーム レートなどのタイムライン属性を設定します。 次のコード例では、ファイルを読み込みます。
HRESULT hr;
IAMTimeline *pTL = NULL;
IXml2Dex *pXML = NULL;
hr = CoCreateInstance(CLSID_AMTimeline, NULL, CLSCTX_INPROC_SERVER,
IID_IAMTimeline, (void**)&pTL);
hr = CoCreateInstance(CLSID_Xml2Dex, NULL, CLSCTX_INPROC_SERVER,
IID_IXml2Dex, (void**)&pXML);
BSTR bstrFile = SysAllocStringLen(OLESTR("C:\\example.xtl"), 15);
hr = pXML->ReadXMLFile(pTL, bstrFile);
SysFreeString(bstrFile);
pXML->Release();
パーサーは IXml2Dex インターフェイスを公開します。このインターフェイスには、プロジェクト ファイルを読み込んで保存するためのメソッドが含まれています。 タイムラインは IAMTimeline インターフェイスを公開します。このインターフェイスには、タイムラインを操作し、新しいタイムライン オブジェクトを作成するためのメソッドが含まれています。 次に示すように、 CoCreateInstance 関数を呼び出して各コンポーネントを作成します。 新しいインスタンスを作成することで、インターフェイスの参照カウントをインクリメントすることに注意してください。 メモリ リークを回避するには、インターフェイスを使用している場合は常にインターフェイスを解放します。 この例では、 IXml2Dex へのポインターはそれ以上必要ないため、インターフェイスを解放できます。 タイムラインをプレビューするには、IAMTimeline へのポインターが引き続き必要です。
IXml2Dex::ReadXMLFile メソッドは、指定されたファイルを読み取り、ファイルで定義されているオブジェクトをタイムラインに設定します。 ファイル名は 、BSTR 値を使用して指定します。 この例を短くするために、例のファイル名はリテラル文字列として指定されます。 通常は、[ファイルを開く] ダイアログまたは同様のダイアログから取得します。
ReadXML メソッドが成功すると、成功コードが返されます。 それ以外の場合は、VFW_E_INVALID_FILE_FORMATなどのエラー コードが返されます。 エラー状態を適切に処理するには、常に戻り値をチェックします。 簡潔にするためにも、コード例ではエラーがチェックされません。
関連トピック