非同期リーダーを使用して 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 ファイル内のデータをシークするには、次の手順を実行します。

  1. IWMReader::QueryInterface を呼び出して、リーダー オブジェクトの IWMReaderAdvanced3 インターフェイスへのポインターを取得します。
  2. IWMReaderAdvanced3::StartAtPosition を呼び出して、開始時刻のコードと期間を設定します。 時間コードでインデックスを作成するビデオ ストリームのストリーム番号を指定する必要があります。 リーダーは、出力の残りの部分を、指定したストリームの指定されたフレームのプレゼンテーション時間に同期し、出力サンプルの配信を開始します。
  3. IWMReaderCallback::OnSample メソッドの実装と同様に、サンプルを処理します。

非同期リーダーを使用したファイルの読み取り

インデックスの使用

SMPTE タイム コードのサポート