USB video class(又稱為USB video device class or UVC)就是USB device class視頻產品在不需要安裝任何的驅動程序下即插即用,包括攝像頭、數字攝影機、模擬視頻轉換器、電視卡及靜態視頻相機。
Linux內核之中,已經集成了對UVCCamre的支持。
內核代碼路徑: \kernel-3.10\drivers\media\usb\uvc
若需要打開UVC CAMERA 需要在內核中配置:
MEDIA_SUPPORT = y
MEDIA_USB_SUPPORT = y
USB_VIDEO_CLASS = y
USB_VIDEO_CLASS_INPUT_EVDEV = y
如何查看當前的Camera是否支持UVC
插入攝像頭,通過lsusb命令,找到當前UVCCamera的PID和VID
reyn@reyn-All-Series:~/reyn/k86m/k86m_debug/kernel-3.10$ lsusb
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 003 Device 002: ID 093a:2510 Pixart Imaging, Inc. Optical Mouse
Bus 003 Device 049: ID 058f:3842 Alcor Micro Corp.
然后執行一下命令lsusb -d 058f:3842 -v | grep "14 Video", 若支持UVC Camera則你會看到如下信息:
reyn@reyn-All-Series:~/reyn/k86m/k86m_debug/kernel-3.10$ lsusb -d 058f:3842 -v | grep "14 Video"
Couldn't open device, some information will be missing
bFunctionClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
bInterfaceClass 14 Video
在UVC Camrera遇到問題時,可以通過以下命令,打開trace
sudo echo 0xffff > /sys/module/uvcvideo/parameters/trace 打開
sudo echo 0 > /sys/module/uvcvideo/parameters/trace 關閉
dmesg | grep uvc -a -a 命令是將起作為一個文本文件設備對待
若當前Camera不支持UVC ,可以通過以下命令,或許當前Camrea的詳細配置描述符:
lsusb -d 058f:3842 -v
下面介紹一下USB協議關於攝像頭的相關知識!
V4L2:
Video4Linux或V4L是一個視頻截取及設備輸出API,以及Linux的驅動程序框架,支持很多USB攝像頭、電視調諧卡以及其他設備。
簡單的講V4L2就是用來管理UVC設備的並且能夠提供視頻相關的一些API。那么這些API怎么使用或者能被誰使用呢。在Linux系統上有很多的開源軟件能夠支持V4L2。常見的又FFmpeg、opencv、Skype、Mplayer等等。
VideoClass設備描述位於USB協議的Interface級,每個設備的Interface分為兩類VideoControlInterface(僅僅只用一個)和VideoStreamingInterface(可以具有多個),而與設備的一個相關的所有的USB Interface被稱作為一個VideoInterface Collection使用IAD(Interface Association Deor)描述符來描述。
目前內核支持的UVC camera的類型有 :
YUV 4:2:2 (YUYV)
YUV 4:2:0 (NV12)
MJPEG
YVU 4:2:0 (YV12)
YUV 4:2:0 (I420)
YUV 4:2:0 (M420)
YUV 4:2:2 (UYVY)
Greyscale 8-bit (Y800)
Greyscale 8-bit (Y8 )
Greyscale 10-bit (Y10 )
Greyscale 16-bit (Y16 )
RGB Bayer
RGB565
H.264
插入攝像頭,如果在設備節點下出現/dev/video0; 則證明你的uvc camera在內核的驅動已經加載了,然后就可以用測試工具開始測試你的uvc攝像頭了。