共用方式為


ICaptureGraphBuilder2::ControlStream 方法 (strmif.h)

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

方法 ControlStream 會設定一或多個擷取數據的數據流的開始和停止時間。

語法

HRESULT ControlStream(
  [in] const GUID     *pCategory,
  [in] const GUID     *pType,
  [in] IBaseFilter    *pFilter,
  [in] REFERENCE_TIME *pstart,
  [in] REFERENCE_TIME *pstop,
  [in] WORD           wStartCookie,
  [in] WORD           wStopCookie
);

參數

[in] pCategory

GUID 的指標,指定 Pin 屬性集中所列的其中一個針腳類別。 此參數的值不能是 NULL

[in] pType

指定媒體類型或 NULL 的主要類型 GUID 指標。 如果此參數為 NULL,請將 pFilter 參數設定為 NULL 。 否則,您可能會控制錯誤的針腳,並取得無法預測的結果。

[in] pFilter

IBaseFilter 介面的指標,指定要控制的篩選。 若要控制圖形中的所有擷取篩選,請將此參數設定為 NULL

[in] pstart

包含開始時間的變數指標。 如果值為 MAXLONGLONG (0x7FFFFFFFFFFFFFFF) ,此方法會取消先前的開始要求。 如果值為 NULL,則圖執行時會立即啟動針腳。

[in] pstop

包含停止時間之變數的指標。 如果值為 MAXLONGLONG,此方法會取消任何先前的停止要求。 如果值為 NULL,則針腳會立即停止。

[in] wStartCookie

當做 EC_STREAM_CONTROL_STARTED 事件通知的第二個參數傳送的值。 如需詳細資訊,請參閱「備註」。

[in] wStopCookie

當做 EC_STREAM_CONTROL_STOPPED 事件通知的第二個參數傳送的值。 如需詳細資訊,請參閱「備註」。

傳回值

傳回 HRESULT 值。 可能的值如下。

傳回碼 Description
S_FALSE
至少有一個下游轉譯器不會傳送停止通知。
S_OK
成功。
E_FAIL
找不到相符的針腳,或針腳不支援串流控制。
E_POINTER
NULL 指標自變數。

備註

此方法會使用您在方法呼叫中提供的搜尋準則,在擷取篩選上找出輸出釘選。 然後它會在這些針腳上呼叫 IAMStreamControl 方法。 這個方法可讓應用程式控制數據流,而不需要應用程式列舉圖形中的篩選和釘選。

使用此方法進行畫面精確擷取,或用於個別控制擷取和預覽。 例如,您可以停止擷取至磁碟,但讓影片預覽保持執行狀態。

前三個參數會指定要控制的針腳。 擷取圖表可以有多個擷取篩選。 例如,它可能有視訊、音訊和隱藏式輔助字幕數據的篩選。 此外,擷取篩選器可以有多個輸出針腳。 某些擷取篩選有個別的針腳用於預覽和擷取,或視訊專用數據和音頻視訊交錯數據的個別針腳。 例如,若要控制影片預覽,請針對 pCategory 指定PIN_CATEGORY_PREVIEW,併為 pType 指定MEDIATYPE_Video。

注意  

如果針腳類別PIN_CATEGORY_PREVIEW,您無法設定特定的開始和停止時間,因為預覽釘選所傳遞的範例沒有時間戳 (請參閱 時間戳) 。 請改用 NULLMAXLONGLONG 值,在所需的時間啟動和停止針腳。

此外,如果裝置使用視訊埠釘選,則不支援這個方法,因為在此情況下,裝置會直接透過硬體傳遞預覽範例。

 
若要控制針腳,這個方法會呼叫 IAMStreamControl::StartAtIAMStreamControl::StopAt 方法。 每個針腳會在啟動時傳送 EC_STREAM_CONTROL_STARTED 事件通知。 事件通知的第二個參數是 wStartCookie 中指定的值。 當針腳停止時,它會傳送 EC_STREAM_CONTROL_STOPPED 事件通知。 該事件通知的第二個參數是 wStopCookie 中指定的值。

當這個方法找到相符的針腳時,它會在下游搜尋另一個支援 IAMStreamControl 的篩選, (通常是多任務器) 。 如果找到一個,它也會在該篩選上設定開始和停止時間。 這會產生兩組停止通知:一個用於擷取篩選,另一個用於下游篩選。 只有下游篩選的停止通知會使用 wStopCookie 參數。 等候此事件可確保下游篩選條件會收到最後一個範例。

如果沒有下游篩選支援 IAMStreamControl,此方法會傳回S_FALSE。 在此情況下,您可能會在轉譯最後一個範例之前收到停止通知。

MAXLONGLONG 是最大可能 REFERENCE_TIME 值。 在 DirectShow 基類庫中,它也會定義為常 數MAX_TIME

規格需求

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

另請參閱

錯誤和成功碼

ICaptureGraphBuilder2 介面