[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、IMFMediaEngine和媒體基礎中的音訊/視訊擷取 取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
[此 API 不受支持,未來可能會改變或無法使用。]
本文說明如何使用 媒體偵測器 (MediaDet) 物件,從數位媒體檔案中顯示代表性圖像,這些物件由 DirectShow 編輯服務提供。
媒體偵測器是協助程序物件,可從媒體來源檔案取得格式資訊。 它也可以從來源檔案中的視訊數據流擷取位圖影像。 假設檔案是可搜尋的,您可以從檔案中的任何點取得影像。 傳回的影像一律為24位 RGB 格式。
媒體偵測器不是篩選條件,而且應用程式不需要使用 Filter Graph Manager 或建立篩選圖表。 在內部,媒體偵測器會建立包含 樣本擷取器過濾器的過濾器圖形。 若要取得位圖,媒體偵測器會搜尋並暫停過濾圖,然後從範例擷取器濾鏡擷取位圖。 應用程式會透過 IMediaDet 介面與媒體偵測器通訊。 媒體偵測器是一個很好的範例,可將篩選圖形封裝在協助程序物件內,以保護應用程式免於圖形相關詳細數據。
媒體偵測器會以兩種模式運作。 當您第一次建立時,媒體偵測器會處於「資訊收集」模式。 您可以指定媒體檔案的名稱,並取得檔案中每個數據流的相關信息,例如格式類型、幀速率或持續時間。 如果檔案包含視訊串流,您可以將媒體偵測器切換為「點圖抓取」模式,並從來源擷取位圖。 不過,一旦您這樣做,就無法將媒體偵測器切換回其原始模式;它會永久附加至該視訊串流。 若要使用另一個數據流或其他檔案,您必須建立媒體偵測器的新實例。
注意
本教學課程中的程式代碼範例會使用 ATL CComPtr 類別,以自動管理參考計數。 如果您想要使用原始介面指標,請記得在完成使用後釋放每個介面。 此外,為了簡潔起見,程式代碼範例會省略應用程式應該執行的大部分錯誤檢查。 在運作的程式代碼中,請一律檢查 HRESULT 值。
本教學課程包含下列步驟:
相關主題