IMediaDet 介面

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

注意

[已被取代。 此 API 可能會從未來的 Windows 版本中移除。]

 

介面 IMediaDet 會擷取媒體檔案的相關資訊,例如資料流程數目,以及每個資料流程的媒體類型、持續時間和畫面播放速率。 它也包含從視訊串流擷取個別畫面的方法。 Media Detector (MediaDet) 物件會公開這個介面。

若要使用此介面取得檔案的相關資訊,請執行下列步驟:

  1. 呼叫 CoCreateInstance來建立 MediaDet 物件的實例。 類別識別碼CLSID_MediaDet。
  2. 呼叫 IMediaDet::p ut_Filename 以指定來源檔案的名稱。
  3. 呼叫 IMediaDet::get_OutputStreams ,以取得來源中的輸出資料流程數目。
  4. 呼叫 IMediaDet::p ut_CurrentStream 以指定特定的資料流程。
  5. 呼叫下列任一方法:

若要擷取視訊框架,請呼叫 IMediaDet::GetBitmapBitsIMediaDet::WriteBitmapBits。 傳回的框架一律為 24 位 RGB 格式。

注意

請勿對多個檔案使用相同的 MediaDet 物件。 若要從多個檔案取得資訊或視訊畫面,請使用個別的 MediaDet 實例。

 

IMediaDet介面不支援VIDEOINFOHEADER2格式,因此您無法使用此介面來取得交錯欄位或交錯的相關資訊。 此外,如果上游解碼器只支援 VIDEOINFOHEADER2,則無法使用 IMediaDet 。 例如,MPEG-2 解碼器可能會發生這種情況。 此外, IMediaDet 介面會忽略檔案中不是視訊或音訊的任何資料流程。 例如,如果檔案包含音訊資料流程、資料流程和視訊資料流程, 則get_OutputStreams 方法只會報告音訊和視訊) (兩個數據流。

成員

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

方法

IMediaDet介面具有這些方法。

方法 Description
EnterBitmapGrabMode 將媒體偵測器切換為點陣圖抓取模式,並將篩選圖形搜尋至指定的時間。
get_CurrentStream 擷取媒體偵測器目前使用的資料流程編號。
get_Filename 擷取媒體偵測器目前使用的來原始檔案名。
get_Filter 擷取媒體偵測器目前使用之來源篩選的指標。
get_FrameRate 擷取目前資料流程的畫面播放速率。
get_OutputStreams 擷取媒體來源中包含的音訊和視訊資料流程數目。
get_StreamLength 擷取目前資料流程的持續時間。
get_StreamMediaType 擷取目前資料流程的媒體類型。
get_StreamType 擷取目前資料流程媒體類型的全域唯一識別碼 (GUID) 。
get_StreamTypeB 擷取字串,表示目前資料流程之媒體類型的 GUID。
GetBitmapBits 擷取指定媒體時間的視訊畫面。
GetSampleGrabber 擷取 ISampleGrabber 介面的指標。
put_CurrentStream 指定要使用之媒體偵測器的資料流程編號。
put_Filename 指定要使用之媒體偵測器的來原始檔案名。
put_Filter 指定要使用之媒體偵測器的來源篩選。
WriteBitmapBits 擷取指定媒體時間的視訊畫面,並將它寫入檔案。

 

備註

注意

標頭檔 Qedit.h 與 7 版之後的 Direct3D 標頭不相容。

 

注意

若要取得 Qedit.h,請下載適用于 Windows Vista 的 Microsoft Windows SDK Update 和 .NET Framework 3.0。 Windows 7 和 .NET Framework 3.5 Service Pack 1 Microsoft Windows SDK中無法使用 Qedit.h。

 

規格需求

需求
標頭
Qedit.h
程式庫
Strmiids.lib