IPC工训项目总结

来源:互联网 发布:龙应台安德烈现状知乎 编辑:程序博客网 时间:2024/06/11 07:31

工训的时候选了网络摄像头的项目,做一个能够接收实时视频并且能够移动侦测报警的App。因为从买的网络摄像头的官网上下载到了sdk和demo,简直就是完全没有智商的开发,做完就后悔了,感觉好low。。下面我想说一下这个项目。(不同摄像头可能不同,仅作参考)

首先,你要知道网络摄像头的工作原理。我在网上查了好久,都说的比较模糊。你需要三样东西:服务器,能联网的摄像头,能联网的移动设备(或pc)。摄像头连上网线或者wifi后,会向服务器发送消息,包括实时视频流啊,摄像头的设置状态,还有自身参数之类的。手机联网后,不管是查看视频信息或者进行自定义的设置,其实也还是向对应服务器发送请求,服务器把对应摄像头的信息回传,然后就ok了。这样说起来其实也不简单,涉及数据传输等等,我们并没有弄这些比较底层的东西,都是人家封装好的库,我们就只负责加载进来然后调用就行了。

下面说一下我们摄像头的情况。
我们的摄像头是有一个ID,这个id是唯一的(以防多个摄像头联网,同时手机请求服务器时,也可以根据id找到对应摄像头信息),把它传进去就可以获得视频流(当然,得加一下视频渲染类等等,这是后话)。
移动报警需要先理清这里面的逻辑。可以看到sdk开发文档主要有两块:一块是JNI接口调用说明,一块是JNI回调接口说明。第一块的意思很简单,就是人家写好了方法(可能是c,java之类的语言),封装成库,在安卓开发的时候只需要加载进来,写上与说明文档native方法完全相同的接口,你就可以直接调用这些接口方法,真正运行调用的时候,它会自动调用对应库里面的方法。第二块需要你先理解什么是回调。比如:A类需要调用一个方法,可是A没有这样的方法,它就会去调用B对应的方法。这里你可以认为:摄像头服务器或者封装好的动态链接库(我不确定到底是哪一个),它知道什么时候(这里具体指物体移动的时候)调用报警的方法,可是这个报警方法它只是声明了,没有实现(就是调用这个方法具体做什么),ok,你来写这个报警的实现(响铃,震动,跳出报警界面等等),至于什么时候侦测到物体,什么时候调用报警方法,你统统都不用管。(我只能说,这家sdk做的太让人省心了)。这时候你可以注意到,JNI接口方法里面有关键字native(方法已经被实现),而回调中没有(方法需要你来实现)。(另外说一句,移动侦测其实原理很简单,就是检测连续几帧的画面,看是否有变化,具体可以到网上查。)

好了,基本说完,刚定项目的时候,完全不知道从哪里做,还在一直纠结纠结数据怎么传输,怎么存储,在想为什么手机和摄像头哪怕不一个局域网,都可以连上,这些问题都不是问题。看到demo以后,还花了快两个星期研究人家是怎么弄的,其实非常简单。总听人家说调用sdk,调用接口,一直不知道怎么调,现在算是清楚一些。希望对其他做IPC的朋友有帮助。

0 0
原创粉丝点击