IAMTimecodeReader インターフェイス (strmif.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

IAMTimecodeReader インターフェイスは、外部デバイスから SMPTE または MIDI タイムコードを読み取ります。 MSDV および MSTape ドライバーは、外部 DV または MPEG-2 ビデオカメラからタイムコードを読み取るためのこのインターフェイスをサポートしています。

継承

IAMTimecodeReader インターフェイスは、IUnknown インターフェイスから継承されます。 IAMTimecodeReader には、次の種類のメンバーもあります。

メソッド

IAMTimecodeReader インターフェイスには、次のメソッドがあります。

 
IAMTimecodeReader::get_VITCLine

get_VITCLine メソッドは、タイムコード リーダーがタイムコードの読み取りに使用している垂直間隔線を取得します。
IAMTimecodeReader::GetTCRMode

GetTCRMode メソッドは、タイムコード リーダーのプロパティを取得します。
IAMTimecodeReader::GetTimecode

GetTimecode メソッドは、ストリームで使用できる最新のタイムコード、ユーザービット、フラグの値を取得します。
IAMTimecodeReader::p ut_VITCLine

put_VITCLine メソッドは、タイムコード リーダーがタイムコードの読み取りに使用する垂直間隔行を指定します。
IAMTimecodeReader::SetTCRMode

SetTCRMode メソッドは、タイムコード リーダーのプロパティを設定します。

解説

Windows ドライバー モデル (WDM) デバイスの場合、WDM ドライバーが PROPSETID_TIMECODE_READER プロパティ セットをサポートしている場合、WDM ビデオ キャプチャ フィルター は自動的にこのインターフェイスを公開します。 詳細については、 Windows Driver Kit (WDK) のドキュメントを参照してください。

SMPTE タイムコードは、ビデオソースとオーディオソースを識別し、自動トラック同期を可能にし、ソースマテリアルに関連する追加データ用のコンテナを提供するフレームアドレッシングシステムです。 SMPTE タイムコードのメインの目的は、ビデオとオーディオのマシンが読み取り可能なアドレスを提供することです。 これは hh:mm:ss:ff (時間、分、秒、フレーム) 形式で表示され、ANSI/SMPTE 12-1986 で完全に定義されています。

アプリケーションは通常、2 つの方法のいずれかでタイムコードを節約します。 これは、追加のストリームとして、または拡張 AVI ファイル インデックスに格納されている不連続テーブルとしてキャプチャ ファイルに書き込まれます。 一般に、キャプチャまたは再生をトリガーしたり、ソース マテリアルを完成した製品に編成する方法を説明する編集デシジョン リストを作成したりするために使用されます。

タイムコードをキャプチャする場合は、独自のメディアタイプを持つ別のストリームとして扱います。 適切なファイル書き込みマルチプレクサー フィルタで使用できます。 ただし、ドロップアウトやその他の機械的テープの問題により、テープからタイムコードを読み取る際にエラーが発生することがあります。 このような場合、タイムコード ソース フィルターは単にサンプルをドロップし、次の有効なサンプルを不連続性プロパティでマークする必要があります。

タイムコードを使用して、タイムコードされた (または "ストライプ" ビデオテープからキャプチャまたは再生をトリガーする場合、イベントのシーケンスは次のようになります。

  1. キャプチャ グラフを作成し、ターゲット AVI ファイルを開き、必要に応じてディスク領域を事前に割り当てる。 キャプチャした素材が既存の AVI ファイルに追加される場合は、書き込む前にファイルの末尾にシークします。 キャプチャ グラフは、この時点で一時停止されます。
  2. キャプチャの開始点まで VCR を検索し、タイムコードをメモします。 この値は、プログラムに手動で入力することも、アプリケーションで自動的に読み取ることもできます。 自動読み取りでは、グラフが実行されている必要がありますが、ファイル マルチプレクサーの入力ピン上のストリーム制御インターフェイスによって受信サンプルが破棄され、キャプチャが効果的にゲーティングされます。
  3. VCR をプリロール位置 (通常はターゲット ポイントの 5 秒前) にキューに入れる。
  4. VCR とグラフを起動します。 トリガー ポイントに到達すると (またはトリガー ポイントからファイル ライターのプリロールを引いた場合)、ストリーム コントロール インターフェイスによってファイル マルチプレクサーが解放され、メディア サンプルのファイル ライターへのストリーミングが開始されます。
  5. キャプチャ プロセスは、手動で停止するか、ストリーム コントロール インターフェイスで duration プロパティを設定することで停止できます。
プリロール中とキャプチャ プロセス中の両方で、不連続のタイムコードを考慮する必要があります。タイムコードは、プリロール全体を通じて継続的かつ単調に増加し、開始点をキャプチャするように要求するのは合理的です。 これにより、 IMediaSeeking::ConvertTimeFormat メソッドによる相対ストリーム時間の計算があいまいになる可能性があります。 また、タイムコードは、トリガーされたキャプチャの唯一のゲーティング信号である必要はありません。 Intercast やクローズド キャプション 付きデータ (XDS) など、垂直方向の空白間隔に格納されているタイムスタンプ付きデータを使用して、ビデオデータとオーディオ データのディスクへのストリーミングを開始できます。

ハードウェア要件

ハードウェア要件については、 IAMExtTransport インターフェイスを参照してください。

フィルター開発者

外部デバイスが SMPTE/MIDI タイムコード情報を読み取る方法を指定する場合は、外部デバイス フィルターにこのインターフェイスを実装します。 IMediaSeeking::ConvertTimeFormat メソッドを使用して、アプリケーションがタイムコードを参照時刻に変換できるように、フィルターで IMediaSeeking インターフェイスを公開します。

外部デバイスは、タイムコードを読み取り、コントロール インターフェイス経由でコンピューターに送信できる必要があります。 そうでない場合は、コンピューターにタイムコード リーダーをカードするか、キャプチャしたビデオ フレーム内の VITC (垂直間隔タイムコード) またはオーディオ信号としてキャプチャされた LTC (リニア タイムコード) を DirectShow タイムコード サンプルに変換するソフトウェア デコーダーを記述する必要があります。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー strmif.h (Dshow.h を含む)

関連項目

インターフェイス