IAMTimecodeReader 介面 (strmif.h)

[與此頁面相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式代碼盡可能重寫為使用新的 API。

IAMTimecodeReader 介面會從外部裝置讀取SMPTE或MIDI時間碼。 MSDVMSTape 驅動程式支援此介面,以便從外部 DV 或 MPEG-2 攝影機讀取時間碼。

繼承

IAMTimecodeReader 介面繼承自 IUnknown 介面。 IAMTimecodeReader 也有下列類型的成員:

方法

IAMTimecodeReader 介面具有這些方法。

 
IAMTimecodeReader::get_VITCLine

get_VITCLine方法會擷取 timecode 讀取器用來讀取 timecode 的垂直間隔線。
IAMTimecodeReader::GetTCRMode

GetTCRMode 方法會擷取時間碼讀取器的屬性。
IAMTimecodeReader::GetTimecode

GetTimecode 方法會擷取數據流中可用的最近時間代碼、使用者位和旗標值。
IAMTimecodeReader::p ut_VITCLine

put_VITCLine 方法會指定 timecode 讀取器將用來讀取 timecode 的垂直間隔線。
IAMTimecodeReader::SetTCRMode

SetTCRMode 方法會設定時間碼讀取器屬性。

備註

對於 Windows 驅動程式模型 (WDM) 裝置,如果 WDM 驅動程式支援 PROPSETID_TIMECODE_READER 屬性集, WDM 視訊擷取篩選會自動 公開此介面。 如需詳細資訊,請參閱 Windows 驅動程式套件 (WDK) 檔。

SMPTE 時間碼是一種框架尋址系統,可識別視訊和音訊來源、讓自動追蹤同步處理能夠進行,並提供容器來取得與來源材質相關的其他數據。 SMPTE 時間碼的主要用途是提供計算機可讀取的視訊和音訊位址。 它會以 hh:mm:ss:ff (小時、分鐘、秒、畫面格) 格式顯示,並徹底定義在 ANSI/SMPTE 12-1986 中。

應用程式通常會以兩種方式之一節省時間代碼。 它會寫入擷取檔案做為額外的數據流,或是儲存在擴充 AVI 檔案索引中的不連續數據表。 它通常用來觸發擷取或播放,並建立編輯決策清單,描述來源材質如何組織成完成的產品。

如果您想要擷取 timecode,請將它視為具有自己媒體類型的個別數據流。 它可由適當的檔案寫入多任務器篩選來取用。 不過,有時候因為卸除和其他機械磁帶問題而無法讀取磁帶的時間碼時發生錯誤。 在這種情況下,timecode 來源篩選應該只會卸除樣本,並以不連續屬性標記下一個有效的樣本。

如果您想要使用 timecode 來觸發從時間編碼的 (或「等量」) 視訊播放,事件序列如下所示:

  1. 建置擷取圖形、開啟目標 AVI 檔案,並視需要預先配置磁碟空間。 如果擷取的數據會附加至現有的 AVI 檔案,請在寫入之前,先搜尋檔案結尾。 擷取圖形此時已暫停。
  2. 將 VCR 搜尋至擷取起點,並記下 timecode。 您可以手動在程式中輸入此值,或應用程式可以自動讀取此值。 自動讀取需要圖形正在執行,但檔案多任務器輸入針腳上的數據流控制介面會捨棄傳入樣本,有效地控制擷取。
  3. 提示 VCR 預先註冊位置,通常是目標點之前的五秒。
  4. 啟動 VCR 和圖形。 達到觸發點 (或觸發點減去檔案寫入器的預先註冊) 時,串流控制介面會釋放檔案多任務器,並開始將媒體範例串流處理至檔案寫入器。
  5. 您可以手動停止擷取程式,或在數據流控制介面上設定 duration 屬性。
您必須考慮在預先註冊期間和擷取程式期間不連續的時間碼;合理地要求時間碼在預先註冊和擷取起點中持續且單調增加。 這可防止 IMediaSeeking::ConvertTimeFormat 方法對相對數據流時間產生模棱兩可的計算。 此外,timecode 不一定是觸發擷取的唯一訊號。 任何儲存在垂直空白間隔中的時間戳數據,例如 Intercast 或隱藏式輔助字幕資料 (XDS) ,都可以用來開始將視訊和音訊數據串流至磁碟。

硬體需求

如需硬體需求,請參閱 IAMExtTransport 介面。

篩選開發人員

當您想要指定外部裝置應該如何讀取 SMPTE/MIDI 時間碼資訊時,請在外部裝置篩選上實作此介面。 在篩選上公開 IMediaSeeking 介面,讓應用程式可以使用 IMediaSeeking::ConvertTimeFormat 方法,將 timecode 轉換成參考時間。

外部裝置必須能夠讀取 timecode,並透過其控制介面將它傳送給電腦。 如果這不是這種情況,您必須在計算機中有時間碼讀取卡,或者您可以撰寫軟體譯碼器,將 VITC (垂直間隔時間間隔時間碼) 轉換為擷取的視訊畫面或 LTC (線性時間碼,) 擷取為音訊號的 DirectShow 時間碼範例。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 strmif.h (包含 Dshow.h)

另請參閱

介面