非同期リーダーを使用して SMPTE タイム コードでシークするには
[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーとシンク ライターによって置き換えられます。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
リーダー オブジェクトは、ビデオ ストリームに関連付けられている SMPTE 時間コードに基づいて、ファイル内のポイントをシークできます。 時間コード データは、データ ユニット拡張機能としてビデオ サンプルにアタッチされる WMT_TIMECODE_EXTENSION_DATA 構造にカプセル化されます。
SMPTE 時間コードは、その範囲内の範囲と時刻コードによって定義されます。 範囲は、連続する一連のタイム コードです。 各時間コードは、時間、分、秒、フレームによって定義されます。
非同期リーダーを使用して SMPTE タイム コードによって ASF ファイル内のデータをシークするには、次の手順を実行します。
- IWMReader::QueryInterface を呼び出して、リーダー オブジェクトの IWMReaderAdvanced3 インターフェイスへのポインターを取得します。
- IWMReaderAdvanced3::StartAtPosition を呼び出して、開始時刻のコードと期間を設定します。 時間コードでインデックスを作成するビデオ ストリームのストリーム番号を指定する必要があります。 リーダーは、出力の残りの部分を、指定したストリームの指定されたフレームのプレゼンテーション時間に同期し、出力サンプルの配信を開始します。
- IWMReaderCallback::OnSample メソッドの実装と同様に、サンプルを処理します。
関連トピック