使用媒體偵測器
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
[此 API 不受支援,未來可能會變更或無法使用。]
媒體偵測器是協助程式物件,可擷取檔案的相關資訊,例如資料流程數目、其類型和持續時間。 它也包含從影片串流擷取海報畫面的方法。 它會公開 IMediaDet 介面。
媒體偵測器會以兩種模式之一運作。 當您建立媒體偵測器的實例時,它不會附加至特定來源檔案。 在此模式中,您可以從多個來源檔案擷取串流資訊。 不過,一旦您使用媒體偵測器來取得海報框架,就會切換到 點陣圖抓取模式。 在點陣圖擷取模式中,媒體偵測器會附加至特定的視訊串流,而串流資訊方法將無法再運作。 此外,無法將媒體偵測器切換回其啟動模式。 因此,取得擷取海報畫面之前所需的任何串流資訊,或為每個資料流程建立媒體偵測器的新實例。
若要取得資料流程資訊,請執行下列動作:
- 使用原始程式檔的名稱 呼叫 IMediaDet::p ut_Filename 。
- 呼叫 IMediaDet::get_OutputStreams 以取得來源中的資料流程數目。
- 使用 IMediaDet::p ut_CurrentStream指定資料流程編號。 然後呼叫下列一或多個方法:
- IMediaDet::get_StreamType:擷取資料流程的媒體類型。
- IMediaDet::get_StreamLength:擷取資料流程的持續時間。
- IMediaDet::get_FrameRate:擷取視訊串流的畫面播放速率。
若要取得海報框架,請指定資料流程編號,如上一個步驟所示。 然後呼叫 IMediaDet::GetBitmapBits,將海報框架複製到緩衝區,或將海報框架儲存至檔案的 IMediaDet::WriteBitmapBits。
相關主題