Androdi平台camera的相关知识总结
2017-09-18 11:09
204 查看
想总结下camera整个数据流及中间的数据转换到显示,先大概梳理下整体思路,以后具体分析下。
1、UVC的对于android来说,必须把底层的v4l2打开,然后添加jni层,上层才能调用;
2、高通、MTK等平台camera,amera是mipi或者其他接口协议的数据,这是我要分析的重点!!!
3、关于camera ISP(image single processor)的概念,平台不带isp的,camera模组本身一定要带;
4、单个摄像头如何做到capture video 不漏秒?两种流程应该需要分开来处理。
要解决这个问题,必须非常熟悉这两个流程。usb camera就是要把v4l2玩好。
网上总结的基本流程,非常清晰:
1.打开设备文件。 int fd=open(”/dev/video0″,O_RDWR);
2.取得设备的capability,看看设备具有什么功能,比如是否具有视频输入,或者音频输入输出等。VIDIOC_QUERYCAP,struct v4l2_capability;
3.设置视频的制式和帧格式,制式包括PAL,NTSC,帧的格式包括宽度和高度等。VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format;
4.向驱动申请帧缓冲,一般不超过5个。struct v4l2_requestbuffers;
5.将申请到的帧缓冲映射到用户空间,这样就可以直接操作采集到的帧了,而不必去复制。mmap;
6.将申请到的帧缓冲全部入队列,以便存放采集到的数据.VIDIOC_QBUF,struct v4l2_buffer;
7.开始视频的采集。VIDIOC_STREAMON;
8.出队列以取得已采集数据的帧缓冲,取得原始采集数据。VIDIOC_DQBUF;
9.将缓冲重新入队列尾,这样可以循环采集。VIDIOC_QBUF;
10.停止视频的采集。VIDIOC_STREAMOFF;
11.关闭视频设备。close(fd);
重点从入队列和出队列来找突破点。
5、两个摄像头同时开启录像,会不会有其他的什么问题?例如传输带宽等。
涉及到的知识点:数据格式,压缩方式
好像H264和mpeg比较通用。
搞清软解码和硬解码的区别:cpu解就是软解,显卡就是硬解。如果是双路摄像头同时录像的,最好能分开,一个软解,一个硬解。平台自带的camera调用的是gpu,属于硬解(MediaRecorder \ MediaCodec)。usb camera则需要自己利用开源h.264来编译.so来进行软解。
6、后台录像。这个简单,启用一个service就行。
1、UVC的对于android来说,必须把底层的v4l2打开,然后添加jni层,上层才能调用;
2、高通、MTK等平台camera,amera是mipi或者其他接口协议的数据,这是我要分析的重点!!!
3、关于camera ISP(image single processor)的概念,平台不带isp的,camera模组本身一定要带;
4、单个摄像头如何做到capture video 不漏秒?两种流程应该需要分开来处理。
要解决这个问题,必须非常熟悉这两个流程。usb camera就是要把v4l2玩好。
网上总结的基本流程,非常清晰:
1.打开设备文件。 int fd=open(”/dev/video0″,O_RDWR);
2.取得设备的capability,看看设备具有什么功能,比如是否具有视频输入,或者音频输入输出等。VIDIOC_QUERYCAP,struct v4l2_capability;
3.设置视频的制式和帧格式,制式包括PAL,NTSC,帧的格式包括宽度和高度等。VIDIOC_S_STD,VIDIOC_S_FMT,struct v4l2_std_id,struct v4l2_format;
4.向驱动申请帧缓冲,一般不超过5个。struct v4l2_requestbuffers;
5.将申请到的帧缓冲映射到用户空间,这样就可以直接操作采集到的帧了,而不必去复制。mmap;
6.将申请到的帧缓冲全部入队列,以便存放采集到的数据.VIDIOC_QBUF,struct v4l2_buffer;
7.开始视频的采集。VIDIOC_STREAMON;
8.出队列以取得已采集数据的帧缓冲,取得原始采集数据。VIDIOC_DQBUF;
9.将缓冲重新入队列尾,这样可以循环采集。VIDIOC_QBUF;
10.停止视频的采集。VIDIOC_STREAMOFF;
11.关闭视频设备。close(fd);
重点从入队列和出队列来找突破点。
5、两个摄像头同时开启录像,会不会有其他的什么问题?例如传输带宽等。
涉及到的知识点:数据格式,压缩方式
好像H264和mpeg比较通用。
搞清软解码和硬解码的区别:cpu解就是软解,显卡就是硬解。如果是双路摄像头同时录像的,最好能分开,一个软解,一个硬解。平台自带的camera调用的是gpu,属于硬解(MediaRecorder \ MediaCodec)。usb camera则需要自己利用开源h.264来编译.so来进行软解。
6、后台录像。这个简单,启用一个service就行。
相关文章推荐
- 变量相关知识总结
- Android——RatingBar(评价条)相关知识总结贴
- Hadoop2.7.0 以及相关linux知识(自己总结经验)
- Android——TabHost(标签容器)相关知识总结贴
- MTK平台相关总结#########[FAQ18279]开机时间慢分析 android 系统重启关机流程分析
- C++ 与 CDC相关的知识,点滴总结
- Lucene3.5自学4--建索引相关知识总结
- 音视频相关知识总结
- IOS -- ViewController的LoadView和ViewDidLoad方法相关知识总结
- 掉期相关知识总结
- 数据分析相关知识梳理总结
- 数据库相关知识以及经验总结
- 域名相关知识总结
- jquery相关校验以及jquery其他知识总结
- 关于IHttpModule的相关知识总结
- Thrift相关知识总结
- 总结了一下ADO.NET数据库连接的相关知识
- Linux相关知识总结
- Java 访问数据库 --java与DataBase相关知识总结(一)
- camera相关知识