SMPTE タイム コードのサポート
[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーとシンク ライターによって置き換えられます。 ソース リーダーとシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーとシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
Windows Media Format SDK では、映画やテレビの標準的なタイム コード形式である SMPTE タイム コードのサポートが制限されています。 SMPTE 時間コード データをデータ ユニット拡張機能としてサンプルと共に含めることができます。 拡張機能のデータ部分は、元の SMPTE タイム スタンプからの情報を含む WMT_TIMECODE_EXTENSION_DATA 構造体です。
ASF ファイルで SMPTE 時間コードを維持するには、パフォーマンスの制限があります。 SMPTE タイム スタンプが関連付けられている各サンプルでは、タイム スタンプ構造の 14 バイトのトランスポートが必要です。 ストリーミング シナリオでは、この帯域幅の要件の増加が致命的になる可能性があります。 その結果、SMPTE 時間コードは、通常はローカル ファイルで行われるビデオ編集プロセス中に ASF ファイルにのみ保持することをお勧めします。 最終的なファイルが作成されたら、データ ユニット拡張機能を削除する必要があります。
SMPTE タイム スタンプは、他のデータ ユニット拡張機能と同様に読み取ることができますが、読み取りオブジェクトは SMPTE タイム コードによる検索を統合的にサポートします。 SMPTE タイム スタンプを検索できるようにするには、まず SMPTE タイム コードでファイルのインデックスを作成する必要があります。 IWMIndexer2::Configure メソッドを使用して、インデクサーを構成して時間コードにインデックスを付けることができます。
非同期リーダーを使用すると、 IWMReaderTimecode インターフェイスのメソッドと IWMReaderAdvanced3::StartAtPosition メソッドを使用して、SMPTE タイム スタンプによってファイル内を移動できます。 同期リーダーでは、 IWMSyncReader2::SetRangeByTimecode を使用します。
関連トピック