-
UVC是一種usb視頻設備驅動。用來支持usb視頻設備,凡是usb接口的攝像頭都能夠支持
-
V4L2是Linux下的視頻采集框架。用來統一接口,向應用層提供API
UVC:
USB video class(又稱為USB video device class or UVC)就是USB device class視頻產品在不需要安裝任何的驅動程序下即插即用,包括攝像頭、數字攝影機、模擬視頻轉換器、電視卡及靜態視頻相機。
最新的UVC版本為UVC 1.5,由USB-IF(USB Implementers Forum)定義包括基本協議及負載格式 [1] [2].
這是wikipedia的解釋。
這個鏈接是Linux中對UVC支持的相關描述。http://www.ideasonboard.org/uvc/
V4L2:
Video4Linux或V4L是一個視頻截取及設備輸出API,以及Linux的驅動程序框架,支持很多USB攝像頭、電視調諧卡以及其他設備。Video4Linux與Linux內核緊密集成,Video4Linux取名的靈感來自Video for Windows(有時候會縮寫為“V4W”),但兩者在技術上並沒有任何關系[1][2]。
從兩個的介紹也能看出來這兩者之間的關系。
簡單的講V4L2就是用來管理UVC設備的並且能夠提供視頻相關的一些API。那么這些API怎么使用或者能被誰使用呢。在Linux系統上有很多的開源軟件能夠支持V4L2。常見的又FFmpeg、opencv、Skype、Mplayer等等。
這樣一個UVC能夠進行視頻顯示的話應該滿足三個條件:
1 UVC的camera硬件支持
2 UVC驅動支持,包括USB設備驅動以及v4l2的支持
3 上層的應用程序支持
linux UVC驅動是為了全面的支持UVC設備。它包括V4L2內核驅動程序和用戶空間工具補丁。這個視頻設備或者USB視頻類的USB設備類的定義定義了在USB上的視頻流的功能。UVC類型的外設只需要一個通用的驅動支持就能夠正常工作,就像USB 大容量存儲設備一樣。
UVC的linux kernel驅動程序和支持的硬件設備都在這里有相關的描述:http://www.ideasonboard.org/uvc/。
判斷一個攝像頭是否屬於UVC規范可以使用如下方法:
1 使用lsusb命令或其他硬件信息查看工具,找出攝像頭的設備號(Vendor ID)和產品號(Product ID)。
2 查找是否有視頻類借口信息
lsusb -d VID:PID -v | grep "14 Video"
如果兼容UVC,則會輸出類似信息
bFunctionClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
如果沒有以上信息,則是non-UVC設備。