IVMRFilterConfig::SetNumberOfStreams 方法 (strmif.h)

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

方法 SetNumberOfStreams 會設定要混合的數據流數目,並指示 VMR 進入混合模式。

語法

HRESULT SetNumberOfStreams(
  [in] DWORD dwMaxStreams
);

參數

[in] dwMaxStreams

雙字包含混合 VMR 所需的輸入數據流數目上限。 不得大於 MAX_MIXER_STREAMS (16) 。

傳回值

如果方法成功,它會傳回 S_OK。 如果方法失敗,則會傳回錯誤碼。

傳回碼 Description
E_FAIL
混合器已設定。
E_INVALIDARG
嘗試為超過16個輸入數據流設定混音器。
E_OUTOFMEMORY
無法配置用來管理數據流的記憶體。

備註

dwMaxStreams 應該等於所需的輸入針腳數目。 連接 VMR 之後,無法新增或移除針腳。 如果您事先不知道需要多少輸入數據流,請將 dxMaxStreams 設定為可能需要的最大數目。 值為 1 對於 dwMaxStreams 有效。 此值不會造成建立任何額外的針腳,但會強制 VMR 進入「混音器模式」。因此,呼叫此方法之後,您無法呼叫 SetRenderingMode 將模式設定為 VMRMode_Renderless

VMR 會建立指定的輸入針腳數目,而不需要嘗試判斷是否有足夠的視訊記憶體來支持它們。 這是因為目前無法知道媒體類型或矩形維度。 稍後,當上游篩選嘗試連線到針腳時,此時媒體類型已知,且 VMR 會檢查視訊記憶體,並在沒有足夠的時間處理數據流時失敗連線。

注意 雖然 VMR 支援多個數據流,但它們全都會共用單一時鐘,因此您無法獨立搜尋一個數據流。 如果您需要獨立搜尋輸入數據流,則必須使用不同的技術。 如需詳細資訊,請參閱 VMRMulti 範例。
 

規格需求

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

另請參閱

錯誤和成功碼

IVMRFilterConfig 介面

IVMRFilterConfig::GetNumberOfStreams

使用影片混合轉譯器