DirectshowLib攝像頭拍照的”未找到可用於建立連接的介質篩選器組合“ 解決辦法


最近一個C/S項目需在客戶端調用攝像頭拍攝照片,使用的是DirectshowLib這個庫。

 

大部分機器可以正常運行,但出現了兩個用戶電腦無法識別攝像頭的異常,啟動時直接拋出 "未找到可用於建立連接的介質篩選器組合" 

 

xp系統自帶的攝像程序可以正確識別攝像頭取得圖像。

 

網上搜索這個異常的相關信息,都無所獲,最后看到有人提到把AMMediaType的subType 改成MediaSubType.ARGB32(默認是MediaSubType.RGB24),試了一下,其中一台電腦可以解決了,但拍出來的照片模糊不清,仔細檢測代碼后,還要在生成Bitmap的時候改成PixelFormat.Format32bppArgb(原來是PixelFormat.Format24bppRgb)。也就是說最后取靜態圖片的時候需要把Bitmap的參數與MediaSubType的一致才行。

 

剩下最難搞的一台電腦了,試過重裝系統,換過N個驅動。其中試過換一個驅動后終於出來視頻了,但拍照時竟然藍屏。就是因為一開始是拋出 "未找到可用於建立連接的介質篩選器組合" 這個異常,后來換了個驅動竟然可以出圖像,導致以為是驅動的問題,苦苦在不停尋找驅動。

 

后來無意中發現此電腦比較舊,是usb1.1的,也想過會不會是硬件不兼容的問題。但系統自帶的攝像程序可以打開並看到圖像,所以也沒進一步判斷這個接口問題。但換了幾個攝像頭還是一樣,我們的客戶端就是無法看到畫面。

 

終於有一天拿了另外一個攝像頭測試程序,啟動后還是黑色畫面,但當把分辨率的參數調整成320*240的時候,畫面竟然出來了!默認的是640*480,想起了我們的客戶端里面是用640*480這個分辨率的。

 

 馬上現場把客戶端的這個寬度高度參數修改成320*240更新測試,果然”"未找到可用於建立連接的介質篩選器組合"  這個異常沒了,畫面出來了,能拍到圖像了!

 

希望可以給大家遇到類似情況時參考。

ps:個人覺得有可能是usb1.1的帶寬無法支持640*480這樣大的畫面帶寬


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM