一、前言
从本篇开始,打算利用空闲的碎片时间,记录下平时学习的东西,好记性不如烂笔头。俗话说纸上得来终觉浅,就从一个小项目着手学习吧。目前手头上有个UVC摄像头,就做一个视频远程播放的小玩意吧,对于中间用到的技术进行学习探究。

如上图所示,系列 文章计划从UVC视频采集开始,一路经过采集、编码、rtmp推流等,向外发送,在远程设备上可以通过VLC等拉流工具播放UVC采集到的实时录像。
二、 V4L2(Video For Linux Two)
Video4Linux或V4L是一个视频截取及设备输出API,以及Linux的驱动程序框架,支持很多USB摄像头、电视调谐卡以及其他设备。Video4Linux与Linux内核紧密集成,Video4Linux取名的灵感来自Video for Windows(有时候会缩写为“V4W”),但两者在技术上并没有任何关系。V4L2是V4L的第二个版本。--来自WIKI。
简而言之,通过V4L2提供的API,可以方便的获取UVC摄像头采集到的视频画面,下面来学习下V4L2 API的具体使用方法。如下链接提供了V4L2相关的sample。
https://web.archive.org/web/20110707012738/http://alumnos.elo.utfsm.cl/~yanez/video-for-linux-2-sample-programs/
- 下载了V4l2_samples-0.4.1.tar.gz,放在Cenos7系统中,解压。

- make,发现有报错,根据网址说明,需要安装xlibs-dev,但是我们这边用的Cenos7,google下,需要安装libXext-devel
安装方法:1、sudo yum install wget -y
2、wget http://mirror.centos.org/centos/7/os/x86_64/Packages/libXext-devel-1.3.3-3.el7.x86_64.rpm
3、yum install libXext-devel-1.3.3-3.el7.x86_64.rpm -y

- 安装后,编译成功。绿色三目标为编译产物。

运行测试指令./capturer_mmap -D /dev/video -w 640*480 -p 0 | ./viewer -w 640*480 -p 0;可以看到有画面播放(这边环境是在windows通过xshell登录cenos7,运行该指令后,xshell启动了Xmanager(需要单独安装)进行了视频拉流播放。)

如下图所示,使用的YUV420格式进行了采集播放,画面色彩有些异常,应该是UVC输出的非YUV420格式导致的,后面分析代码改下。

浙公网安备 33010602011771号