把android 主板打造成ip摄像头

好几年没有激活csdn的帐号了,主要是具体技术工作做得少了点, 今天开始抽空增加一些技术文档,要重新回到程序员的怀抱。

项目的目标:把android 打造成为一个ip摄像头。之所以用android,原因是现在速度快点的板子上的都是android系统,既然android是基于linux,理论上用v4l2直接从摄像头取数据然后编码生成rts流即可,但是麻烦的是编码部分,方案厂家一般都不会提供针对linux的硬件编码库,作为ipc,不能用硬件编码那么就只能当玩具玩玩。所以项目要借用android编解码库完成这个工作。如果直接利用全套的android系统,利用网络上开源的android ipc也可以实现功能,不足就是我们的标准ipc对稳定性要求很高,最简单的就是要能够随时断电,android系统如果被频繁断电估计哪次开机小人就会一直向你招手,所以要对android系统进行改造,剔除掉所有不需求的应用,包括zygote,只启动mediaservice这样的基本服务。

项目的意义:虽然是针对ipc 进行设计,实际还是把android很强的运算能力开放给应用,比如利用多核性能去做图像识别领域,像人脸识别、车牌识别、工业中的一些利用图像的定位等。


系统组成:

硬件:android 板子,无显示,带网络,带视频输入(模拟视频/usb摄像头等),带485/232串口,带gpio输入输出口。

软件:andriod系统,屏蔽所有zygote启动的服务,纯c 编写的应用程序去调用andriod的mediaservice 获取摄像头数据进行264编码然后通过rtsp 发送到网络。

思路:android的mediaservice接管包括摄像头、音视频编解码库等所有服务,编写应用程序直接和这个服务进行通信获取数据,实现精简版本的ipc板子。


实现:首先修改init.rc,把zygote服务停止掉------世界顿时安静了,也简单了。

下一步,编写调用mediaservice的程序。

大致框架如下,

把android 主板打造成ip摄像头_第1张图片

多核android的arm板子,android系统只剩下mediaservice几个核心服务,剩下的包括ui等统统停用,单独编写纯c/c++应用程序直接和mediaservice进行交互,从摄像头获取数据并进行编码发给外部客户用于预览,同时提供原始的摄像头数据给图像识别算法进行图像识别。由于识别算法的计算了很大,所有要利用多核处理器的性能来执行,如果多核处理器支持opencl的话那就更有利于提速了。



你可能感兴趣的:(把android 主板打造成ip摄像头)