2011-06-20 57 views
1

我正在開發使用DirectShow的Visual C++視頻捕獲應用程序。當我檢查了捕獲過濾器的輸出引腳的AM_MEDIA_TYPE結構的媒體子類型,我可以看到在不同的格式,如MEDIASUBTYPE_RGB24,MEDIASUBTYPE_MJPG等有什麼方法可以編輯Capture Pin的屬性嗎?

不同的攝像頭捕獲的數據有什麼辦法,我可以告訴輸出引腳以常用格式輸出數據,如MEDIASUBTYPE_RGB24?我不想包含所有可能的子類型的解密。

請求你讓我知道,如果我有任何解決方法,讓所有的網絡攝像頭捕獲的數據傳遞到編碼器之前,使其通用類型。

回答

0

您將一個接收器附加到引腳,該引腳固定爲您想要接收的格式,然後DirectShow將插入濾波器以將輸入類型轉換爲您想要的類型。

請參閱example

0

一般而言,每臺相機都會以自己特有的格式生成數據,但不能保證其可以在捕獲驅動程序內轉碼爲RGB24或任何其他格式。在所有格式中,YUV的變化是最常見的,因爲這些格式可以直接在屏幕上顯示,也可以輸入到下游壓縮過濾器。

@Christopher指出的例子並沒有真正解決如何控制捕獲格式的問題。視頻捕捉過濾器使用一組獨特的接口來控制無數輸出格式的可能性。

使用IAMStreamConfig.SetFormat()從捕獲設備中選擇輸出流(捕獲和預覽)的幀頻,尺寸,色彩空間和壓縮。

使用IAMStreamConfig.GetStreamCaps()來確定哪些幀率,維度,色彩空間和壓縮格式可用。大多數相機提供了多種不同的格式。

相關問題