Share via


同期リーダーを使用して SMPTE タイム コードでシークするには

[このページに関連付けられている機能である Windows Media Format 11 SDK は、従来の機能です。 ソース リーダーシンク ライターに置き換わりました。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 Microsoft では、可能であれば、新しいコードで Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

同期リーダー オブジェクトは、ビデオ ストリームに関連付けられている SMPTE タイム コードに基づいて、ファイル内のポイントをシークできます。 タイム コード データは、ビデオ サンプルにデータ ユニット拡張機能としてアタッチされる WMT_TIMECODE_EXTENSION_DATA 構造にカプセル化されます。

SMPTE 時間コードは、その範囲内の範囲と時刻コードによって定義されます。 範囲は、連続する一連のタイム コードです。 各時間コードは、時間、分、秒、フレームによって定義されます。

同期リーダーを使用して SMPTE タイム コードによって ASF ファイル内のデータをシークするには、次の手順を実行します。

  1. IWMSyncReader::SetRangeByFrame を呼び出して、サンプル配信の開始時刻コードと終了時刻コードを設定します。 タイム コードでインデックス付けされたビデオ ストリームのストリーム番号を指定する必要があります。 同期リーダーは、出力の残りの部分を、指定したストリームの指定されたフレームのプレゼンテーション時間に同期します。
  2. IWMSyncReader::GetNextSample の呼び出しでサンプルの取得を開始します。 通常どおり同期リーダーを使用して続行します。

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

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

インデックスの使用