前言

YUY2和MJPG是现在通用的两种不同的视频输出格式;V4L2 是专门为 linux 设备设计的一套视频框架,其主体框架在 linux 内核,可以理解为是整个 linux 系统上面的视频源捕获驱动框架;UVC全称usbvideo class即:USB视频类,是一种专门为USB视频捕获设备(比如USB摄像头)定义的协议标准。
先讲UVC :

UVC

UVC 全称为 USB Video Class,直接翻译过来的意思就是:USB 视频类,它是一种专门为 USB 视频捕获设备定义的协议标准。
这个标准是 Microsoft 与另外几家设备厂商联合推出的为 USB 视频捕获设备定义的协议标准,已经成为 USB org 标准之一。
如今的主流操作系统(如Windows ,Linux, MacOS)都已提供UVC设备驱动,因此符合UVC规格的硬件设备在不需要安装任何的驱动程序下即可在主机中正常使用。使用UVC技术的包括摄像头、数码相机、类比影像转换器、电视棒及静态影像相机等设备。
如下图就是一个USB摄像头,支持UVC协议(其实现在大部分能买到的一般摄像头都支持UVC协议)。
在这里插入图片描述
图源网络,侵删。

YUY2和MJPG

在绝大多数摄像头所采用的是免驱摄像头(如上所述),一般有这几种传输格式,YUY2和MJPG和RGB,YUY2是无压缩图像格式的视频,系统资源占用少(因为不用解码),不需要解码器,缺点是帧率稍慢(受限于USB分配的带宽),MJPG是相当于JPEG图像压缩格式,优点是帧率高(视频开启快,曝光快),缺点是影像有马赛克,并且需要解码器,会占用PC系统资源。
可以用potplayer软件查看并更改自己手上的摄像头的属性。如下图输入格式为MJPG表明,摄像头传进电脑的视频格式是MJPG格式,需要经过FFmepg编码器解码后才能正常播放。而RGB格式是我们经常听到的一种。
在这里插入图片描述
下图中可以看到该摄像头支持的编码格式可以手动修改。
在这里插入图片描述

V4L2

V4L2是Video for linux2的简称,为linux中关于视频设备的内核驱动。V4L2 是专门为 linux 设备设计的一套视频框架,其主体框架在 linux 内核,可以理解为是整个 linux 系统上面的视频源捕获驱动框架.
众所周知,Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件。视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video*下,如果只有一个视频设备,通常为/dev/video0。V4L2就是针对uvc免驱usb设备的编程框架。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐