基于Android移动终端的视频监控系统转让专利

申请号 : CN201110451704.7

文献号 : CN102547239B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐志江宋秀兰孟利民戴而正竺伟

申请人 : 浙江工业大学杭州普诺科技有限公司

摘要 :

一种基于Android移动终端的视频监控,由设备端、服务器端和Android移动终端组成,它们之间用Internet相连接,其中Android移动终端通过3G网络接入Internet,设备端负责采集视频数据、H.264图像压缩和RTP(Real Time Protocol)分片打包;服务器端包括SIP(Session Initiation Protocol)信令服务器和视频转发服务器,SIP信令服务器主要通过SIP协议对用户与设备进行管理、操控,视频转发服务器是在用户邀请视频时与设备端和Android终端同时建立起RTP连接,负责将视频数据从设备端转发至Android移动终端;在Android移动终端上为用户提供最直观的视频监控界面。本发明通过移动通信网络,使用Android移动终端来进行实时视频监控。

权利要求 :

1.一种基于Android移动终端的视频监控系统,其特征在于:所述视频监控系统由设备端、服务器端和Android移动终端组成,它们之间通过Internet相连接,其中Android移动终端通过3G网络接入Internet,其中设备端负责采集视频数据、H.264图像压缩和RTP分片打包;服务器端包括SIP信令服务器和视频转发服务器,SIP信令服务器主要通过SIP协议对用户与设备进行管理、操控,视频转发服务器是在用户邀请视频时与设备端和Android终端同时建立起RTP连接,负责将视频数据从设备端转发至Android移动终端;

在Android移动终端上为用户提供视频监控界面,所述Android移动终端上实现如下操作:

(1)Android移动客户端与SIP信令服务器之间采用SIP协议进行交互,用户发起会话请求后,使用用户名与密码进行注册登录,登录成功后用户可进行设备列表请求、视频邀请操作;(2)Android移动客户端与视频转发服务器采用RTP协议传输视频数据,客户端在接收到RTP数据包时并不马上处理,而是采用了缓存机制;(3)Android移动客户端同步了读写两个线程,分别进行NAL的组包与解码;采用SIP协议作为控制信令:采用MjSip库来实现RFC3261协议中定义的标准的SIP协议栈架构,SIP会话由用户发起注册登录开始,SIP服务器成功认证SHA1加密的用户密码后,根据用户请求设备的SIP消息头中的用户ID回复相应权限下的设备列表;移动客户端与设备端只进行间接交互,用户可通过服务器向在线设备发送视频请求,设备端接受请求后回复给用户建立媒体流所需的信息。在用户登录期间,移动客户端需定时发送SIP心跳包进行会话保活。

2.根据权利要求1所述的基于Android移动终端的视频监控系统,其特征在于:所述缓存机制中,采用RTP协议传输视频数据:设备端采集的视频数据通过视频服务器转发至移动客户端,针对3G网络中的RTP包乱序与丢包现象,客户端对收到的RTP先进行缓存排序,缓存队列采用java链表形式,每个RTP包根据SequenceNumber从小到大插入到缓存队列中。

3.根据权利要求2所述的基于Android移动终端的视频监控系统,其特征在于:读写线程同步进行NAL的组包与解码:开辟了一定大小的NAL缓存区,写线程从RTP缓存中依次提取数据进行NAL组帧,并将完整的NAL放入可写的NAL缓存单元中,并为此缓存单元加上只读锁;读线程依次从可读的NAL缓存单元中读取数据送入解码器中进行解码,解码完成后,为该缓存单元加上只写锁。读写线程对NAL缓存进行循环操作,线程间通过上述的锁机制与synchronized实现同步。

说明书 :

基于Android移动终端的视频监控系统

技术领域

[0001] 本发明涉及移动视频监控领域,是一种在3G网络下基于Android移动终端的远程视频监控系统。

背景技术

[0002] 视频监控业务具有悠久的历史,在传统上广泛应用于安防、交通事故处理等行业应用领域。随着人们对信息技术的深入研究,图像处理、视频压缩等技术得到了迅速发展,视频编码压缩逐渐向高压缩率、高质量、低传输率发展,例如MPEG-4、JVT、H.264等,以这些技术为基础的视频监控技术不断成熟。2009年中国工信部发放3G牌照,中国移动网络正式进入3G时代。这引起了传统互联网应用向移动互联网应用的转变,原有移动网络的局限性对移动视频监控发展的束缚逐渐减弱。同时,随着手机功能的增强、性能的提升,由视频监控技术和移动网络技术融合而来的移动视频监控正逐渐成为视频监控的新趋势。
[0003] 近年来,由Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统Android在移动终端市场上迅速扩张,其中HTC、三星等主流移动终端生产商都相继采用Android系统作为新一代智能手机的操作系统。如今,Android手机已经占据了市场半壁江山,各种应用程序也层出不穷,因此开发基于Android系统的视频监控应用程序十分有利于移动视频监控的推广与普及,有着非常宽广的市场前景。
[0004] 经对现有专利进行检索,与移动视频监控相关的专利或产品已经有出现,但在已公布的专利文献和产品中尚未有涉及在基于Android系统的移动终端上的视频监控实现。

发明内容

[0005] 为了克服现有视频监控系统无法适用于Android系统的不足,本发明提供一种在基于Android系统的移动终端上实现视频监控系统,以达到通过移动通信网络,使用Android移动终端来进行实时视频监控。
[0006] 为解决上述技术问题,本发明所采用的技术方案是:
[0007] 一种基于Android移动终端的视频监控,由设备端、服务器端和Android移动终端组成,它们之间用3G网络相连接,其中设备端负责采集视频数据、H.264图像压缩和RTP(Real Time Protocol)分片打包;服务器端包括SIP(Session Initiation Protocol)信令服务器和视频转发服务器,SIP信令服务器主要通过SIP协议对用户与设备进行管理、操控,视频转发服务器是在用户邀请视频时与设备端和Android终端同时建立起RTP连接,负责将视频数据从设备端转发至Android移动终端;在Android移动终端上为用户提供最直观的视频监控界面,(1)Android移动客户端与SIP信令服务器之间采用SIP协议进行交互,用户发起会话请求后,使用用户名与密码进行注册登录,登录成功后用户可进行设备列表请求、视频邀请操作;(2)Android移动客户端与视频转发服务器采用RTP协议传输视频数据,鉴于3G网络可能会出现数据包丢包和乱序而导致画面丢帧的现象,客户端在接收到RTP数据包时并不马上处理,而是采用了缓存机制;(3)Android移动客户端同步了读写两个线程,分别进行NAL(Network Abstraction Layer)的组包与解码。
[0008] 进一步,采用SIP协议作为控制信令:采用MjSip库来实现RFC3261协议中定义的标准的SIP协议栈架构,SIP会话由用户发起注册登录开始,SIP服务器成功认证SHA1加密的用户密码后,根据用户请求设备的SIP消息头中的用户ID回复相应权限下的设备列表;移动客户端与设备端只进行间接交互,用户可通过服务器向在线设备发送视频请求,设备端接受请求后回复给用户建立媒体流所需的信息。在用户登录期间,移动客户端需定时发送SIP心跳包进行会话保活。
[0009] 再进一步,所述缓存机制中,采用RTP协议传输视频数据:设备端采集的视频数据通过视频服务器转发至移动客户端,针对3G网络中的RTP包乱序与丢包现象,客户端对收到的RTP先进行缓存排序,缓存队列采用java链表形式,每个RTP包根据SequenceNumber从小到大插入到缓存队列中。
[0010] 更进一步,读写线程同步进行NAL的组包与解码:开辟了一定大小的NAL缓存区,写线程从RTP缓存中依次提取数据进行NAL组帧,并将完整的NAL放入可写的NAL缓存单元中,并为此缓存单元加上只读锁;读线程依次从可读的NAL缓存单元中读取数据送入解码器中进行解码,解码完成后,为该缓存单元加上只写锁。读写线程对NAL缓存进行循环操作,线程间通过上述的锁机制与synchronized实现同步。
[0011] 本发明的有益效果为:通过移动通信网络,使用Android移动终端来进行实时视频监控。

附图说明

[0012] 图1为本发明的视频监控系统框架图。
[0013] 图2为本发明的SIP会话流程图。
[0014] 图3为本发明的用户登录SIP交互示意图。
[0015] 图4为本发明的请求设备列表SIP交互示意图。
[0016] 图5为本发明的请求视频SIP交互示意图。
[0017] 图6为本发明的缓存以及读写线程示意图。
[0018] 图7为本发明的NAL组包流程图。

具体实施方式

[0019] 下面结合附图对本发明做进一步描述。
[0020] 参照图1~与7,一种基于Android移动终端的视频监控,由设备端、服务器端和Android移动终端组成,它们之间通过Internet相连接,其中Android移动终端通过3G网络接入Internet。设备端负责采集视频数据、H.264图像压缩和RTP(Real Time Protocol)分片打包;服务器端包括SIP(Session Initiation Protocol)信令服务器和视频转发服务器,SIP信令服务器主要通过SIP协议对用户与设备进行管理、操控,视频转发服务器是在用户邀请视频时与设备端和Android终端同时建立起RTP连接,负责将视频数据从设备端转发至Android移动终端;在Android移动终端上为用户提供最直观的视频监控界面,(1)Android移动客户端与SIP信令服务器之间采用SIP协议进行交互,用户发起会话请求后,使用用户名与密码进行注册登录,登录成功后用户可进行设备列表请求、视频邀请操作;(2)Android移动客户端与视频转发服务器采用RTP协议传输视频数据,鉴于3G网络可能会出现数据包丢包和乱序而导致画面丢帧的现象,客户端在接收到RTP数据包时并不马上处理,而是采用了缓存机制;(3)Android移动客户端同步了读写两个线程,分别进行NAL(Network Abstraction Layer)的组包与解码。
[0021] 整个视频监控系统的框架如附图1所示,系统中主要存在两种数据流:媒体流和控制信息流(信令)。控制信息流采用SIP协议,用户和设备端必须向SIP服务器注册登录,它们之间的信令交互需要经过SIP信令服务器转发,主要解决私网的穿透问题。媒体流由设备端向视频服务器发送,经视频转发服务器转发后到达Android移动客户端,主要解决一个设备多个用户同时观看的问题。
[0022] SIP是类似于HTTP的基于文本的应用层协议,本发明采用MjSip库来实现Android移动客户端上的SIP协议,MjSip是采用Java语言的协议栈,它实现了RFC3261协议中定义的标准的层次化的协议栈架构。整个SIP会话流程如附图2所示,SIP信令交互主要产生在这几次用户动作:
[0023] (a)注册登录。如附图3所示,用户登录协商时,REGISTER消息中的From头域先采用公共ID发起第一步注册,在SIP信令服务器回复对应用户名的ID号和加密用的种子SEED后,程序采用SHA1(Secure Hash Algorithm)算法进行处理:SHA1(SEED+SHA1(用户名密码)),并将得到的消息摘要作为PASSWORD发回SIP信令服务器进行第二步注册,服务器若验证通过则登录成功;
[0024] (b)设备列表请求。如附图4所示,每个用户权限下有一定数量的网络摄像机设备,用户在登录成功后,客户端会发送SUBSCRIBE消息请求设备列表,SIP信令服务器接收到请求后回复200OK以及包含设备列表的NOTIFY消息;
[0025] (c)请求视频。如附图5所示,用户点击在线设备时,客户端即向SIP信令服务器发送INVITE消息邀请视频,服务器再将此消息转发至设备端,设备端回复200OK消息,消息内容包含了视频转发服务器的IP与端口号以及魔数magic值,回调函数提取magic值并处理后得到视频激活包的内容;用户若停止观看视频,客户端则会向设备端发送BYE消息,通知设备端结束视频数据传输。
[0026] MjSip库中的Provider package是SIP协议栈传输层相关的类包,其中SipProvider类实现了SIP的传输层,用于发送和接收SIP消息。我们新建了SipProvider类的一个派生类,并在此派生类中构建了SIP消息生成函数CreateMessage(),并重写了TransportListener接口类中的processReceivedMessage()函数。当终端需要向SIP服务器发送SIP消息时,程序先调用CreateMessage()函数,函数根据传入的消息类型等参数生成相应的SIP消息,再调用SipProvider类中的SendMessage()函数进行发送。当收到SIP消息时,程序回调processReceivedMessage()函数来处理SIP消息的内容,Android移动客户端与SIP信令服务器交互的消息体是采用XML格式,鉴于移动终端的内存资源比较有限,解析时我们使用基于事件驱动的SAX方式来获取所需的XML节点内容。
[0027] Android移动客户端与视频转发服务器之间的视频传输基于RTP协议。为了纠正RTP包的乱序,本发明在接收时设立了缓存机制,另外,为保证视频监控拥有良好的实时性,开辟了读写两个线程同时进行NAL组包与解码,如附图6所示:
[0028] (1)本发明中的RTP包缓存队列采用Java链表形式,根据SequenceNumber将收到的RTP包不断插入到缓存队列中,使RTP缓存队列中的RTP包都按照SequenceNumber从小到大排序,纠正了网络中的乱序。本发明中创建了StreamBuf和StreamBufNode两个类:StreamBufNode类定义了RTP缓存链表节点的数据结构和操作方法;StreamBuf类定义了RTP缓存链表的数据结构和操作方法,并实现了按SequenceNumber从小到大插入链表节点的方法AddToBufBySeq()。
[0029] (2)由于网络存在丢包,为了防止出现NAL缺损造成解码出错的现象,写线程在对从RTP缓存中提取出来的NAL数据进行重新组帧时,采取了一定的规则,如附图7所示,如果发现有丢包现象则进行如下处理:如果丢失的为I帧的RTP包,则丢弃该帧以及该帧之后的所有帧,直到下一个I帧出现为止;如果丢失的为B帧或P帧的RTP包,则直接丢弃该帧。本发明中创建了Nalbuffer类,该类定义了NAL缓存单位的数据结构和操作方法,其数据结构中包含了读写标志变量,读写方法加入synchronized关键字来声明为同步方法,一旦一个线程进入一个实例的任何同步方法,其他线程将不能进入同一实例的任何其他同步方法,由此保证了读写线程不会发生冲突。另外,读写线程对NAL缓存进行循环操作,通过wait()与notify()方法实现两线程间的通信。写线程从RTP缓存中依次提取数据进行NAL组帧,并检测下一NAL缓存单位是否可写:若不可写,则调用wait()函数进入睡眠状态,等待读线程完成解码后调用notify()函数来唤醒;若可写,则将完整的NAL放入该NAL缓存单元中,并将此缓存单元置为只读状态;同样,读线程依次从NAL缓存单元进行操作时也需检测缓存单元是否可读:若不可读,则调用wait()函数进入睡眠状态,等待写线程完成组帧后调用notify()函数来唤醒;若可读,则读取其中数据送入解码器中进行解码,并将该缓存单元置为只写状态。
[0030] 本发明在Android移动终端上很好地实现了私网对私网的视频传输和一对多的视频监控。平台控制信令采用SIP协议,达到了良好的用户管理和设备操控机制;媒体视频流采用RTP协议,并建立了缓存机制,同时开辟读写线程进行NAL组包与解码,在一定程度上保证了视频画面的流畅度与实时性。