ICaptureGraphBuilder2::ControlStream 方法 (strmif.h)
[與此頁面相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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 |
---|---|
|
至少有一個下游轉譯器不會傳送停止通知。 |
|
成功。 |
|
找不到相符的針腳,或針腳不支援串流控制。 |
|
NULL 指標自變數。 |
備註
此方法會使用您在方法呼叫中提供的搜尋準則,在擷取篩選上找出輸出釘選。 然後它會在這些針腳上呼叫 IAMStreamControl 方法。 這個方法可讓應用程式控制數據流,而不需要應用程式列舉圖形中的篩選和釘選。
使用此方法進行畫面精確擷取,或用於個別控制擷取和預覽。 例如,您可以停止擷取至磁碟,但讓影片預覽保持執行狀態。
前三個參數會指定要控制的針腳。 擷取圖表可以有多個擷取篩選。 例如,它可能有視訊、音訊和隱藏式輔助字幕數據的篩選。 此外,擷取篩選器可以有多個輸出針腳。 某些擷取篩選有個別的針腳用於預覽和擷取,或視訊專用數據和音頻視訊交錯數據的個別針腳。 例如,若要控制影片預覽,請針對 pCategory 指定PIN_CATEGORY_PREVIEW,併為 pType 指定MEDIATYPE_Video。
如果針腳類別PIN_CATEGORY_PREVIEW,您無法設定特定的開始和停止時間,因為預覽釘選所傳遞的範例沒有時間戳 (請參閱 時間戳) 。 請改用 NULL 和 MAXLONGLONG 值,在所需的時間啟動和停止針腳。
此外,如果裝置使用視訊埠釘選,則不支援這個方法,因為在此情況下,裝置會直接透過硬體傳遞預覽範例。
當這個方法找到相符的針腳時,它會在下游搜尋另一個支援 IAMStreamControl 的篩選, (通常是多任務器) 。 如果找到一個,它也會在該篩選上設定開始和停止時間。 這會產生兩組停止通知:一個用於擷取篩選,另一個用於下游篩選。 只有下游篩選的停止通知會使用 wStopCookie 參數。 等候此事件可確保下游篩選條件會收到最後一個範例。
如果沒有下游篩選支援 IAMStreamControl,此方法會傳回S_FALSE。 在此情況下,您可能會在轉譯最後一個範例之前收到停止通知。
MAXLONGLONG 是最大可能 REFERENCE_TIME 值。 在 DirectShow 基類庫中,它也會定義為常 數MAX_TIME。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | strmif.h (包含 Dshow.h) |
程式庫 | Strmiids.lib |