Have done a bit of USB related things, recently because the project needs to learn a bit about multimedia knowledge. Then want to know about the UVC and v4l2 knowledge.
First, two concepts are introduced:
UVC:
USB Video class(also known as USB Video device class or UVC) is a USB device class video product that does not require the installation of any driver to plug and Play, Includes cameras, digital cameras, analog video converters, TV cards , and still video cameras .
The latest UVC version for UVC 1.5, defined by Usb-if (USB implementers Forum), includes the basic protocol and payload format [1] [ 2].
This is Wikipedia's explanation.
This link is a description of the UVC support in Linux. http://www.ideasonboard.org/uvc/
V4L2:
Video4linuxorv4lis aVideo Captureand equipment OutputApi, as wellLinuxdriver framework that supports manyUSB Camera,TV Tuner Cardand other devices. Video4linux andLinux kerneltightly integrated, Video4linux's name is inspired byVideo for Windows(sometimes abbreviated as "v4w"), but the two are technically not related[1][2].
The relationship between the two can also be seen from the introduction of both.
Simply speaking, V4L2 is used to manage UVC devices and to provide video-related APIs. So how do these APIs work or can be used by whom? There are a lot of open source software on Linux system that can support V4L2. Common FFmpeg, OpenCV, Skype, MPlayer and so on.
Introduction to Linux under UVC&V4L2 technology