版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络化全数字远程视频监控系统的设计与实现
网络化全数字远程视频监控系统的设计与
实现
赵静*
作者简介:赵静,(1986-),女,研究生,主要研究方向:通信软件.E-mail:
并发访问时,可始终保持摄像头和流媒体服务器间只有一个图像带宽,减少对监控现场网络
的冲击;同时,流媒体服务器处在高速网上,并且服务器的处理能力远远高于摄像头,可实现
最大限度的高速视频流的转发,保证图像质量。
451关键技术
1.1流媒体技术
它能够按照特定的顺序将文件发送出去,播放程序无需等待整个媒体文件下载完成就可
以一边接收数据一边播放[4],这大大减少了用户的等待时间。为了使播放更加稳定连贯,通
常客户端会通过为接收数据开辟缓存区的方法来解决网路拥塞的问题,只需要在数据缓存区
50充满前等待几秒钟就可以开始欣赏了。相比于将整个文件下载保存至硬盘,这也节省了播放
文件所需的空间。这种在Internet/Intranet中使用流式传输技术的连续时基媒体就称为流媒
体。流媒体实现的关键技术就是流式传输[5]。实时流式传输保证媒体信号带宽与网络连接匹
配,使媒体可被实时观看到。实时流式传输需要专用的流媒体服务器和传输协议。实时流式
传输总是实时传送,特别适合现场事件[6]。
551.2多线程技术
线程是操作系统分配CPU时间的基本实体.每个应用程序至少有一个线程,也可以有
多个线程.线程是程序中的代码流.多个线程可以同时运行,并能共享资源.在网络传输中
采用多线程技术,能够提高CPU的利用率,提高发送和接收的速度,有效地减少画面的延
迟。
60一个服务器做的好坏,并发性和稳定性是很重要的衡量标准。因此,在整个服务系统中,
视频服务器到目录服务器的报道注册、保活、报警、以及与流媒体服务器之间建立中继等过
程均使用多线程技术。同时,采用多线程缓冲池和socket套接字技术实现了流媒体数据的控
制和转发,从底层保证了系统的稳定性和适应性。目前本系统在经过实际应用表明,多线程
技术与socket通信的处理得当,大大提高了系统的并发性、提高各服务器的处理效率,因而
65提高了流媒体服务系统的整体性能。
2相关协议
流媒体转发技术[7]采用的是通用的RTSP协议和RTP/RTCP协议,以及SDP协议。
2.1RTSP协议
实时流协议RTSP(RealTimeStreamingProtocol)定义了一对多应用程序如何有效地通
70过IP网络传送多媒体数据,是TCP/IP协议体系中的一个应用层协议。该协议用于在客户端
和服务器端建立和协商实时流会话,用户可利用该会话控制客户端与服务器间的多媒体串
流,这使音频与视频的受控、点播成为可能。RTSP允许多个串流在一个会话内被控制。RTSP
是文本协议并且类似HTTP,其主要不同之处在于RTSP是标准的流媒体协议,并通常利用
独立传输协议(通常是RTP)来传输媒体数据,并且RTSP是双向的,客户端与服务器端都
75可发出请求。
2.2RTP协议
RTP是IP网络支持实时媒体数据的传输控制协议.能够在兼容现有的网络基本体系结
构的基础上来增强因特网对音频、视频和交互。通过对流媒体数据进行封装以实现媒体流的
实时传输与控制.提供实时数据(如交互式的音频和视频)的端到端传输服务。RTP是由两个
80紧密相连的部分组成:RTP(实时传输协议)和RTCP(RTP控制协议)。其中RTP用于运载具
有实时属性的数据。包括传输媒体类型、格式、序列号、时间戳以及是否有附加数据等信息:
RTCP则是用来监控RTP的服务质量并传送处于运行任务中的参与者的信息.包括包丢失
率、包延时以及参与者的状态信息等。
2.3SDP协议
85会话描述协议SDP(SessionDescriptionProtocol)用于描述以会话邀请,会话通知,以
及其他形式的多媒体会话初始化为目的的多媒体会话。由服务器端生成描述媒体的SDP文
件,其中包括媒体的编码信息以及所在的服务器的链接等信息,客户端通过它来配置播放软
件的设置。
3系统架构
90该流媒体服务系统由摄像头、视频服务器、目录服务器、流媒体服务器以及用户终端通
过网络等互连组成。摄像头通过视频服务器能够穿透私网,自动报道注册到目录服务器上;
目录服务器控制视频服务器和流媒体服务器建立中继,并处理告警信息以及云台控制信息,
为用户提供视频观看的访问接口,以及对多台视频服务器并发时的状态维护等工作。流媒体
服务器为自主研发,转发视频服务器的音视频数据信息,多路多看,即同时处理多个视频服
95务器的视频媒体流源,且每路视频源可有多个用户(播放器)同时观看。目前,支持流媒体
格式的播放软件都可以作为用户终端进行监控视频的播放。该系统的网络拓扑图如图1所
示。
图1流媒体服务系统网络拓扑图
100
4系统设计与实现
4.1视频服务器的报道机制
所有的摄像头首次连接到系统并开机后,可将相关信息,如IP地址,MAC地址,RTSP
端口号等自动注册到系统中;当摄像头信息有所变更时,系统会对相关记录进行自动更新;
105若摄像头与服务器连接正常并处于开机状态,系统会将摄像头维持在在线状态,若摄像头关
机或与服务器的网络连接中断后,系统会将摄像头置为离线状态,由此提示用户该摄像头当
前不可观看并提示管理人员对其进行检查维护。被动摄像头也可实现与主动摄像头一样的功
能,无须管理员再对其信息进行手动管理。
具体实现流程如下:
110目录服务器CamListener类开通10146端口的TCP连接,监听视频服务器的报道请求。
在接受视频服务器的请求后,立即调度一个线程SocketListener,以处理目录服务器与视频
服务器之间的交互信息(包括注册消息,保活消息,报警消息,主动媒体流PLAY命令以
及云台控制命令消息等),而CamListener主程序则返回继续监听等待下一个视频服务器的
连接请求。
115视频服务器注册成功后,会向目录服务器每分钟发送一次心跳(保活)信息,用以实时
确认摄像头在线状态,如果断电、断网或者改报到地址,则目录服务器将不会受到保活消息,
这里使用一个策略,就是如果三分钟内目录服务器没收到任何该视频服务器发送的信息,则
将其置为离线状态。所以需要在对每个视频服务器线程处理过程中,开启一个TIMER定时
器,时限3分钟。如果三分钟内没有收到任何信息,则实例化CamMaintain类,将摄像头置
120为离线;否则重启定时器。
视频服务器一旦遇到传感器输入报警或者移动侦测报警,将形成报警信号,该报警信号
会发送给目录服务器。目录服务器解析出来对应哪个摄像头<MAC>,报警类型是传感器输
入报警还是移动侦测报警<TYPE>,并且是哪个端口报警<DI_Port>,该端口对应那种警报。
调用AlarmHandler类,提取该摄像头被分配到的组或者用户的手机号码集以及对报警对应
125内容转成手机上能显示的UNICODE码。本系统对于发短信程序是用C语言写的一个串口
操作GSMMODEM程序,开通TCP30000的服务器,所以在目录服务器上开通TCP30000
的客户端,然后将转码和手机号码集一并发送给短信猫程序,然后用户就可以收到告警短信。
总之,关于视频服务器到目录服务器完整的报道机制流程图,如图2所示。
130图2报道机制流程图
4.2媒体流上传中继管理
被动媒体流与主动媒体流的区分标志是报道信息中的UPLOAD属性,即保存在数据库
camera表中UPLOAD属性为0(兼容autotools视频服务器)即为被动媒体流。
主动媒体流开通关闭命令是通过TCP(10146)发送的,发送完毕即可以达到发送中继
135命令到流媒体服务器效果,并未启用新线程。而为被动媒体流建立中继和删除中继,让视频
音频信息透过流媒体服务器的转发,达到用户实时播放的目的。在这过程中,多线程和
SOCKET通信的巧妙结合,值得向大家推荐。
对被动媒体流,建立中继命令格式:s21utlchn–i
camera.getMac()mountPoint.sdp,rtsp://camera.getExIp():camera.getRtspPort()/mountPoint
140删除中继命令格式:s21utlchn–dmountPoint
从目录服务器页面传递视频服务器开通/关闭命令到正确建立起视频服务器与流媒体服
务器传递数据的中继过程如图3所示。
图3被动媒体流中继管理
1454.3音视频媒体流转发步骤
1本服务系统开始运行时,初始启动RTSPServer线程,此线程开通TCP554端口服务
器端,监听来自视频服务器或者播放器的RTSP交互请求。
2.一旦监听到请求,就立即开启新的线程(RTSPListener)来处理此次请求。而主线程
RTSPServer则继续监听下一个请求。
1503.RTSPListener的处理步骤:读取请求,解析请求头。如果是ANNOUNCE则是视频
服务器的请求,pType设置为“push”;如果是DESCRIBE则是播放器的观看请求,pType设
置为“pull”;
push过程走完,则开启UDPSelector线程类来与对于该摄像头的播放请求进行对接。UDP
连接转发解析,即在中继建立过程中开通的各个UDP通道相互对接,并对媒体流进行转发
155过程如图4所示。
图4UDP连接转发解析图
下面给出此部分关键代码:
1601.设置RTP/RTCP通道映射,建立UDP传输模式,并将通道加入通道映射Selector容器
中
dataBuffer=ByteBuffer.allocateDirect(maxbuffersize);
InetAddresssourceAddress=scktServer.getInetAddress();
tempStreams.getRTPchannel().configureBlocking(false);
InetSocketAddress165RTPin0=new
InetSocketAddress(sourceAddress,tempStreams.getRemoteRTPPort());
tempStreams.getRTPchannel().connect(RTPin0);
tempStreams.getRTPchannel().register(select,SelectionKey.OP_READ);
2.UDPSelector线程源通道与目的通道对接,使RTP/RTCP数据能顺利的从视频源走
170到播放器。首先遍历Selector容器中每一个通道,read通道里的数据,判断该数据来自哪个
视频源的哪个通道,人为控制将该通道数据write到目的通道。此过程中设置了缓冲区读取
数据。
SelectorselectorCopy=selector;
selectorCopy.select();
175Iterator<SelectionKey>keys=selectorCopy.selectedKeys().iterator();
while(keys.hasNext()){
tempkey=keys.next();
tempChannel=(DatagramChannel)tempkey.channel();
keys.remove();
180dataBuffer.clear();
tempChannel.read(dataBuffer);
dataBuffer.flip();
//判断tempChannel如果是视频源与流媒体服务器之间的通道之一,则转发给播放
//器通道中相应的通道中去。对播放器的RTCP反馈信息数据做类似处理。
185......
}
5效果图
1.报道机制结果图如图5所示
190图5视频服务器报道注册
2.视频观看界面图如图6所示
图6用户观看界面
195
6结论
以上介绍了一个基于RTP、RTSP等通信协议的流媒体服务系统,采用多线程技术,实
现了端到端的多媒体网络传输。多线程机制有效地提高了传输效率。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026社会矛盾面试题目及答案
- 建房补钱协商协议书
- 双方自愿给钱协议书
- 喝酒死亡赔偿协议书
- 解除合伙人协议合同
- 2026泰山小学面试题及答案
- 2026土木类考研面试题及答案
- 2026威海发展面试题库及答案
- 2026文献考核面试题及答案
- 自愿抚养协议书
- 16.3.2 完全平方公式(第1课时 完全平方公式)(教学课件)
- DB31T 310020-2024自动驾驶道路测试安全风险评估技术规范
- 精神科护理常规操作培训
- 2025年电力交易员题库及答案
- 中国通信建设北京工程局笔试
- 供暖维修技能培训
- 国开电大专科《人文英语1》一平台综合测试在线形考试题及答案2025秋期珍藏版
- 师范生选岗考试题及答案
- 2025贵州观山湖区第四十三幼儿园招聘笔试备考试题及答案解析
- 军事目标识别课件
- 广东省汕头市澄海区2024-2025学年七年级下学期7月期末考试英语试题(含答案)
评论
0/150
提交评论