USB Camera V4L2 视频录制——ubuntu(1)
来源:互联网 发布:javascript生成随机数 编辑:程序博客网 时间:2024/04/30 12:38
博主QQ:1356438802
本文工作平台:Ubuntu 12.04 + x264-lib-v120
前面研究了大半年的OpenCV开源库,其实也是断断续续的研究哈,本来是要做USB Camera图像识别的。但是公司有个项目要做USB Camera视频录制,所以先看了下OpenCV对于USB Camera录像的支持,在windows平台是可以的《win7_64bits下QT使用openCV库(3)》,在Ubuntu也是可以的《我的Ubuntu安装使用openCV记录(3)——for QT》,在Android上就不行《我的Opencv4Android添加V4L2支持的移植记录(3)》,需要FFMPEG的支持,而前面我已经研究过了FFMPEG,其在Android上的运行效率不乐观。所以我就打消了用OpenCV来做USB Camera录像的念头!
于是我很不情愿的去从基层做起,我真的很不想去重复造轮子,FFMPEG多么好的视频编码库,还内置了V4L2读写,很可惜Android平台太弱了,支撑不起来!那么我就自己用V4L2-API去读取数据帧,自己解码,编码压缩,写入视频文件喽!
下载:http://download.csdn.net/detail/luoyouren/9595096
其中uvc_avilib_3是最终版!下面是我的源码结构
先明确一个知识点:
我的USB Camera支持YUV和MJPEG两种视频格式读取,所以我可以做很多实验:
1. 对于luo_YUYV.avi
a. 可以V4L2数据读取格式设置为V4L2_PIX_FMT_YUYV(422),DQBUF后得到的帧数据可以直接用avilib写入文件,这样也是可以播放的。
b. 也可以V4L2数据读取格式设置为V4L2_PIX_FMT_MJPEG,DQBUF后得到的帧数据,jpeg_decode解码成YUV422格式后,再写入文件。
2. 对于luo_MJPEG.avi,V4L2数据读取格式设置为V4L2_PIX_FMT_MJPEG,DQBUF后得到的帧数据可以直接用avilib写入文件,就可以播放。
3.对于luo_h264.avi
a. 可以V4L2数据读取格式设置为V4L2_PIX_FMT_YUYV(422),DQBUF后得到的帧数据,用compress_frame压缩成h264(实际上里面先把YUV422转换成了YUV420P,这是h264需要的源数据格式),再用avilib写入文件,可以播放。
b. 也可以V4L2数据读取格式设置为V4L2_PIX_FMT_MJPEG,DQBUF后得到的帧数据,jpeg_decode解码成YUV422格式后,继续用compress_frame压缩成h264,最后用avilib写入文件,就可以播放。
我这里的h264编码用的是x264开源库,Ubuntu可以直接apt-get install安装,不过h264encoder.c这个文件我是抄的别人的,暂时来看压缩录制效果没有问题。如果大家用了我的代码在Ubuntu平台压缩录制有问题,请告知我!
PS:
1. 另外几个文件夹的源码是我对某些单独的模块进行调试,比如jpeg_decode / h264encoder / avilib,像这种多模块的程序调试,最好心不要那么大,一点一点往前拱,总能达到目标!
2. 附上YUV播放器和h264文件播放器,调试的时候用的上。
- USB Camera V4L2 视频录制——ubuntu(1)
- USB Camera V4L2 视频录制——Android(1)
- 基于V4L2的视频驱动开发(1)---Camera
- 基于V4L2的视频驱动开发(1)---Camera
- Android Camera 视频循环录制
- Linux下基于V4L2 USB Camera操作
- Adroid音视频录制(1)——Surface录制
- Android视频录制从不入门到入门系列教程(四)————Camera Parameter
- ubuntu 运行 usb camera
- android camera使用ISO值录制视频
- android使用mediarecorder和camera录制视频
- V4L2视频采集与H264编码1—V4L2采集JPEG数据
- Android多媒体——(MidiaRecorder音频录制/视频播放surface/Soundpool提示音/调用系统摄像头camera)
- linaro ubuntu驱动USB camera
- linux下usb camera图像采集(V4l2)
- linux下usb camera图像采集(V4l2)
- Ubuntu录制视频转GIF
- camera-------V4L2
- 设计模式-原型模式
- 从上往下打印二叉树
- 笔试题-设计模式-工厂模式
- java log4j 详细教程
- Session的原理
- USB Camera V4L2 视频录制——ubuntu(1)
- iOS使用HHealthKit读取修改健康步数
- 守护进程
- jenkins+svn+android studio自动化构建(持续集成)
- Git-GitHub搭建远程仓库
- 牛客网 8.2 网易2017校招 Java 第一题 下厨房
- js CORS
- springmvc整合mybatis框架源码
- 【Akka】Akka入门编程实例