基于Apple Darwin的摄像机客户端推送器的设计与实现.docx
- 文档编号:17972685
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:39
- 大小:600.06KB
基于Apple Darwin的摄像机客户端推送器的设计与实现.docx
《基于Apple Darwin的摄像机客户端推送器的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Apple Darwin的摄像机客户端推送器的设计与实现.docx(39页珍藏版)》请在冰点文库上搜索。
基于AppleDarwin的摄像机客户端推送器的设计与实现
目录
摘要I
关键词I
AbstractI
KeywordsI
1系统的可行性研究概述1
1.1系统研究的意义1
1.2系统研究的目的1
1.3国内外研究现状1
1.4课题研究内容2
2主要技术分析与简介2
2.1DSS分析2
2.1.1DSS概要及主体框架2
2.1.2核心流媒体框架3
2.1.3DSS服务器调用模块的主要流程4
2.2开发平台的软件介绍4
2.3TS流简介5
2.4流媒体系统结构图5
2.5H.264编解码规范6
2.6Darwin支持的两种视频转发模式7
2.6.1先拉后推7
2.6.2先侦听后推送7
2.7流媒体技术概述8
3摄像机推送器的设计与实现8
3.1摄像机主要模块8
3.2摄像机各模块的设计与实现9
3.2.1语音对讲模块的设计与实现9
3.2.2参数配置模块的设计与实现10
3.2.3报警模块的设计与实现11
3.2.4实时数据流模块的设计与实现11
3.2.5云台控制模块的设计与实现12
3.3模块的加载过程13
3.3.1采集模块14
3.3.2推送模块14
3.4推送模块的设计与实现细节15
3.5RTSP请求的处理15
3.6EasyPusher函数15
3.7摄像机配置16
3.8推送音视频数据的缓存设计17
4系统测试18
4.1测试方法18
4.2TS推送测试18
4.3摄像机功能测试20
5总结22
参考文献23
致谢24
摘要
本课题是基于苹果公司的DarwinStreamingServer,这是苹果公司的一个开源项目,对它做一些功能扩展,以满足系统的需求。
首先我们对DSS的源代码进行了分析,然后着手将TS流推送模块添加到这个系统中。
考虑到RTP/RTCP协议相比较与UDP协议对服务器的压力,最后决定使用UDP协议,并且系统支持了H.264TS流。
本课题最后测试的效果表现出画面清晰、无卡顿、无马赛克等优点,并且实现了对MPEG-2和H.264的支持。
并且因为本课题严格的按照了TS流的理想码率进行推送,所以误差非常小,平均在5毫秒下,并且不会随系统工作时间增加而增长。
而且,本课题设计的摄像机客户端推送器是彻底符合ISMA标准的,所以它也使用于所有基于IP网络的环境,接收终端可以是DVB、IP和PC。
所以本系统对DSS进行扩展后,是具有多适应性的。
关键词
达尔文流媒体服务器;TS流;推送器;摄像机;
Abstract
TheprojectisbasedonApple'sDarwinStreamingServer,whichisanopensourceprojectofApple.Wewilldosomefunctionalexpansiontomeettheneedsofthesystem.FirstofallwehavetheDSSsourcecodeanalysis,andthenproceedtoaddTSstreamModuletothissystem.TakingintoaccountthepressuremadebyRTP/RTCPprotocolandtheUDPprotocol,wefinallydecidedtousetheUDPprotocol,andthesystemsupportstheH.264TSstream.
Theresultsofthefinaltestofthissubjectshowtheadvantagesofclearpicture,nostandstill,nomosaicandsoon,andrealizethesupportofMPEG-2andH.264.BecausethesubjectispushinaccordancewiththeTSstreamidealrate,sotheerrorisverysmall,withanaverageof5milliseconds,andwillnotincreasewiththesystemworkinghours.Atthesametime,thecamerasystemdesignofthepushfunctionisfullyinlinewiththeISMAstandard,soitisalsousedinallIP-basednetworkenvironment.ItsreceivingterminalcanbeDVBSTB,IPSTBandPC.SoaftertheexpansionofDSS,thesystemismoreadaptable.
Keywords
DarwinStreamingServer;TSStreaming;Pusher;Camera;
1系统的可行性研究概述
1.1系统研究的意义
随着互联网越来越多的应用于现代人的生活当中,音视频通过网络传输的情况也越来越多,导致传输量也越来越大。
现在很多的互联网公司都希望通过互联网流媒体技术推送给用户来获取更多的用户量。
但是音视频数据的数据量是很大的,如果要下载下来会耗费很大的网络带宽和流量。
目前网络带宽平均情况下还不算很大,在这种情况下,流媒体技术的出现就让这种情况有了很大的改善。
现在网络的带宽虽然越来越大,但是对于日益增加的音视频传输量,显然还需要更为优秀的流媒体技术进行传输。
由于流媒体技术为互联网传统的媒体播放上带来了更多的机会现在网络用户对媒体的需求越来越大,用户也更喜欢在网络上选择自己需要的音视频。
过去,传统媒体更多的是使用“推”式传播,而流媒体技术将其变为“拉”式传播,而受众也不再是只被动的接收广播电视等节目,而是通过网络寻找自己需要的内容,随时随地的就可以播放。
这将在一定程度上提高了用户的选择空间,使他们在各种媒体云集的今天占据着主动,也由于这种变化的产生导致媒体行业积极的改变来迎合用户的需求。
本系统做的就是关于基于AppleDarwin流媒体服务器的一整套服务,而本课题负责的部分就是摄像机客户端推送器。
1.2系统研究的目的
本课题是基于摄像机方案商提供的SDK基础上,在Windows平台上与摄像机的主服务进行交互,功能包括实时视频、语音对讲、云台控制等功能,摄像机客户端推送器一边通过SDK和摄像机的主进程进行交互(获取音视频数据,控制云台,联动报警等交互),一边和Darwin服务器、CMS服务器和RMS服务器进行对接,上传数据、接受指令的控制,形成一整套的音视频摄像机方案,为了能够适用于更多的不同的场景和设备,在本系统中添加了RTSPClient模块,可以设置为通过RTSP协议推送H.264视频流到流媒体服务器。
整个系统可以应用于生活中的方方面面,包括了远程监控、视频直播、网上点播、远程教育等等。
从现在互联网行业的趋势来看,音视频业务以及流媒体服务肯定会越来越重要。
所以本课题的研究不管在生活中,还是在技术层面上,都是很有意义和价值的。
1.3国内外研究现状
目前有一些厂商已经拥有基于IPQAM的VOD业务的解决方案,国内有SiHua和华为,国外有Motorola、挪威泰德、Cisco等。
然而SiHua的产品即便不是基于ISA规范,但是那么昂贵的价格还是国内企业所不能接受的。
VideoSever是VOD系统的核心部分,并且使用UDP协议传送TS流。
为了降低系统的成本,首先应该考虑如何降低VideoSever的开发成本。
因而,本文通过扩展DSS的功能,使其支持TS流推送功能,以满足一些小型运营商的需求。
网络监控系统已经渗透到日常生活中的各个行业:
在商场超市里,视频监控系统可以对顾客以及市场内实时场景进行监控。
通信运营商可以利用网络监控系统对位置偏僻的通信基站进行监控。
城市道路公交系统中,监控系统实时获取路况车流信息,便于交管部门交通流量调度。
此类系统的最新应用模式是,幼儿园里面安装了这一类的系统以后,家长就能够对教师的教育情况和孩子的情况进行随时的了解。
总的来说,在各行各业中网络监控系统都得到了非常广泛的应用。
网络实时视频系统主要是使用网络来把不同地点的,甚至相隔了数千里的一些图像采集点和采集图像的播放终端之间形成一种互联的多对多关系,同时在这样的基础之上提供了一个开发平台,专门用于对视频音频扩展应用进行开发。
而网络实时视频监控系统则属于一种全新的互联网应用型系统,这种系统融合了非常多的新型信息技术,包括了互联网传输应用技术、音视频数据采集和编解码、流媒体应用技术等等。
网络实时视频监控系统的特点主要有三点,第一是网络监控,因为互联网络的连通性,系统监控硬件设备的布设不再受到彼此物理位置的局限。
网络监控打破了原本监控系统对接入设备数量方面的限制和对距离方面的限制,对相关的网络资源进行了最大程度的利用。
第二是数字化信息,目前音视频所采集得到的数据使用的是数字信号,目前已经出现了性能非常高的音视频编解码技术,因此对于数据的传输来说,其效率有了明显的提升,这一技术可以确保那些低带宽的播放终端同样能够得到非常好的采集图像。
第三是支持无线网络,目前无线网技术发展的速度很快,而且无线网相关应用也得到了普及,新一代互联网的发展已经开始转向了移动互联网,这个时候,手机就变成了移动播放终端。
这种移动播放终端的实时性非常好,同时能够支持流媒体视频数据,也就是说其图像播放效果可以和计算机相比,并且能够随时随地对监控区域所采集到的图像进行实时地获取。
1.4课题研究内容
本课题并不是要做摄像机的硬件方案,或者说本课题是与硬件芯片无关的一套对于云平台对接方案,本系统在摄像机方案商提供的功能接口的基础上,通过摄像机提供的SDK,在摄像机ARM系统内部和摄像机的主服务进行交互,包括了摄像机提供的实时音视频、联动报警、云台控制等功能,Darwin开源流媒体解决方案整体采用的是行业通用的RTSP、RTP、RTCP、HTTP、RTMP、RESTful协议和标准,对于开发者和企业来说,通用性和可读性都极强。
能够广泛的用于安防监控、智能家居、教育直播、幼儿园直播等项目,尤其是在安防行业结合移劢互联网方面,Darwin开源流媒体解决方案提供了非常完善的实现方案。
我们在摄像机的内部植入程序,摄像机客户端推送器一边通过SDK和摄像机的主进程进行交互(获取音视频数据,控制云台,联动报警等交互),一边和Darwin服务器、CMS服务器和RMS服务器进行对接,上传数据、接受指令的控制,形成一整套的视频摄像机方案。
2主要技术分析与简介
2.1DSS分析
2.1.1DSS概要及主体框架
DarwinStreamingServer是苹果公司的一个开源实时流媒体服务器程序。
整个系统由C++开发,在设计上它遵循高效的性能、简单的设计、模块化开发等设计原则,要求程序做到高效的同时,可扩充性也要很好。
并且DSS是一个开发源代码的流媒体服务器,可以在Windows,UNIX,MACOSX,Linux,FreeBSD,Solaris等操作系统上运行。
DSS的核心服务器的部分是由一个父进程和一个子进程构成,这个子进程是由父进程fork构成的,该父进程就成为了整合的流媒体服务器。
在运行时,主要由子进程完成,如果在子进程运行期间产生了错误就会退出该进程,并且fork出一个新的子进程。
网络客户和服务器的对接是靠Darwin服务器来直接对接的。
通过RTSPoverRTP来发送或者接受请求。
接收到请求后服务器就通过相应的模块来处理这个请求并且向客户端发送数据流。
核心流媒体服务器是由四种不同类型的线程来处理事务的,每个线程的类型具体如下:
服务器主线程,当服务器处理在关闭检查以及在检查之前需要记录相关状态打印和统计相关信息等任务时,就由这个线程来处理。
事件线程,对接口以及和接口相关的事件都是由这个线程监听的,当有RTSP请求或者RPT数据包请求时,事件线程就会把这些任务就给任务线程来处理。
任务线程,任务线程在事件线程处理事务时会把事件从事件线程中取出来,并把事件传递到需要处理的相应的服务器模块进行处理,在一般情况下,每一个处理器核都会有一个任务线程由核心服务器创建。
空闲任务线程,空闲任务线程,该线程负责对一个周期的任务队列进行管理,主要有两种任务管理,超时任务和Socket任务。
如图2-1服务器架构所示。
图2-1服务器架构
2.1.2核心流媒体框架
如图2-2核心流媒体框架,首先由客户端发起视频请求到接入服务器,服务器处理完毕请求之后发送将请求发送到前端设备,前端设备收到请求后进行响应,接入服务器收到设备响应后向分发服务器发送视频通知,同时前端设备向分发服务器发送数据流推送请求,分发服务器收到前端请求后给前端设备与接入服务器响应,前端设备收到分发服务器的响应后向分发服务器推送RTP数据流,同时接入服务器收到分发服务器的响应后给客户端发送响应信息并进行重定向操作。
分发服务器向客户端发送RTSP视频请求,客户端响应RTSP视频请求,分发服务器向客户端推送实时视频流。
图2-2DSS核心流媒体框架
2.1.3DSS服务器调用模块的主要流程
在DSS中的模块分为两种,一种是动态模块,一种是静态模块。
动态模块在服务器启动伊始就会加载,而静态模块在这之后才会加载。
所以建议将写好的功能模块全部编译为动态模块来替换以及扩展DSS原有的服务器模块,那么我们自己的功能模块就会首先被加载。
Register是每个模块中必须支持的一个角色,服务器会在每个模块被装载后,就调用这些模块的Register角色。
Register角色的主要工作就是初始化,例如对数据结构的初始化和内存分配的初始化等。
它会调用QTSSAddRole来记录这个模块支持的其他角色,之后服务器就会初始化角色并且调用每个拥有这个角色的模块。
在关闭服务器时,Shutdown角色就会被各个模块调用,然后这些模块就会释放内存完成结束工作的处理。
通过这些角色流媒体服务器就可以完成它的任务了。
图2-3服务器启动和关闭的流程显示的是服务器在启动和关闭的时候如何和Register(登记),Initialize(初始化),和Shutdown(关闭)这些角色协同工作的。
图2-3服务器启动和关闭流程
2.2开发平台的软件介绍
DSS是支持多个操作系统的。
其中包括Windows,而且Darwin流媒体服务器源代码完全采用标准的C++语言写成,所以本课题采用的开发平台软件是在Windows平台上的MicrosoftVisualStudio2015。
VisualStudio是一套基于组件的软件开发工具和其他技术,可用于构建功能强大、性能出众的应用程序。
并且它继承了对构建跨设备应用的支持,以及用于跨平台开发的功能。
所以本课题使用它作为开发工具是十分合适的。
由于Darwin采用标准C++语言来完成,所以它的编程风格是十分优秀的,它的每以个C++类都对应一对和类同名的.h和.cpp文件。
但是也因为它大量的采用了面向对象的概念,其中继承,多态等,因此它的代码复杂性还是很高的。
图2-4就是开发环境界面。
图2-4开发环境界面
2.3TS流简介
TS一般我们认为是MPEG-2TS标准,它是一种非常成熟的数据传输技术,它是对音视频数据复用的一种说明,音视频数据经过TS封装之后,再通过网络IP协议栈进行二次封装,然后就可以传输了。
但如果需要进行一些互动性的内容,就需要对它进行扩展。
这种传输方式同样采用了C/S的方式,另外由于应用在IPTV领域,控制层可以使用RTSP协议或者HTTP协议。
在DSS服务器中,为了减少网络抖动更好地控制传输流量,我们对UDP协议数据包又增加了关于RTP协议数据封装。
这样系统就能够有效的减少网络丢包,视频卡顿等影响客户体验的现象。
TSoverIP的传输过程如图2-5所示。
图2-5TSoverIP的传输过程
2.4流媒体系统结构图
Darwin开源流媒体解决方案可分为流媒体数据流、信令控制流两大部分,接入管理接口服务器CMS、流媒体服务器Darwin、存储不回放服务器RMS可直接运行在阿里云主机ECS上,CMS服务器负责进行设备和客户端的接入不管理,Darwin服务器负责进行流媒体音视频的分发和HLS切片,RMS服务器负责对直播流进行实时存储和录像检索,还有其他功能模块。
CMS服务器设备管理与接入服务器,Darwin流媒体服务器,RMS录像存储服务器,都能够分布式、平行部署、无限扩容,云端各个节点的服务单元都将负载信息写到共享的Redis中进行数据共享,CMS将在线设备相关信息写入到Redis,Darwin服务器将负载信息和流媒体直播相关信息写入Redis,这样在多个CMS服务器、Darwin服务器之间就可以进行直播级联,Session共享,Token验证等功能。
本课题负责的Camera摄像机硬件启动后,启动Camera进程。
Camera向CMS服务器发送注册报文,并定期发送报活报文,维持摄像机与CMS服务器的TCP连接。
CMS服务器会对Camera发送注册报文进行权限验证,通过验证后的设备信息写入Redis中,也会将CMS服务器的信息一起写入。
Client向CMS服务器请求直播视频流,CMS服务器会在Redis中查找设备是否在线,第二步会查找该设备是否存在流媒体转发消息。
如果存在,则直接将改直播流信息响应给Client,如果不存在,CMS服务器需要向Camera发送启动直播流推送的命令,CMS服务器再将Camera反馈的结果响应给Client,Client根据收到的结果进行播放。
如图2-6流媒体系统结构图。
图2-6流媒体系统结构图
2.5H.264编解码规范
正是由于标准化的视频压缩技术的出现使得图像技术得到了更为广泛的应用,例如DVD视频和数字电视彻底改变了家庭娱乐以及广播电视的传统模式。
图像视频在互联网中的应用与MPEG标准中的MPEG-4有密不可分的联系,ITU-TH.263标准是当前大多数视频会议使用的视频压缩标准。
MPEG-4视觉标准和H.263标准是在1995年开始制定的,视频编码以及视频压缩技术是这两种标准建立的技术基础,对此类标准进行负责的是电影专家集团以及视频编码专家组。
在这两种标准的开发进行到后期的时候,出现了一套更加优秀的新的标准,也就是H.264高级视频编码标准,这套标准所提供的图像视频压缩效果更加优秀,同时其在保证比特率非常低的同时还保证了高品质。
H.264编解码协议规范可以用四个方面概括其技术特点,第一个方面是关注实用性问题,摒弃了原本这类编解码技术里面的一些存在着缺陷的编码方案,如机遇内容的编码等,以更加简洁的格式,以提升编码效率为目的,从而运用合适的技术。
第二方面则是使用了多种的新算法和新技术,在混合编码的基础上,新增了4*4整数变换技术、基于内容的变长编码技术及多帧预测和帧内预测技术等。
第三方面,对于算法而言,突出了信道的特点。
从分层的角度来看,信道编码和信源编码在形式上采取了分离。
第四方面则是使用了针对IP以及无线网络的相关策略,为了方便那些经过压缩之后的视频在丢包率较高和误码率较高的网络环境之中进行传输,使用了一些用来对差错进行消除的工具。
所具有的主要优点如下:
图像质量非常高。
H.264标准想要实现的是在对图像进行还原的过程之中能够保持较高质量,同时还为此采用了一系列的算法,其目的为实现图像的高质量;为了能够和不同的信道相适应,以及各种应用形式,区分各种图像层次从而采用相应的算法;在熵编码等步骤中,为达到较低比特率的目标从而采用节约码流的算法;系统的健壮性增加,H.264提供了掩盖错误的组件并应用了环路滤波结构。
2.6Darwin支持的两种视频转发模式
Darwin支持两种自动播送的场景:
先拉后推。
为了发起自动播送,RTSP客户会发送标准的RTSP请求来向服务器请求一个流,然后服务器将该流中继到一个或者多个流媒体服务器。
这种场景在“先拉后推”部分中加以描述。
先侦听后推送。
在这个场景中,自动播送在流媒体服务器接收到ANNOUNCE请求时被发起。
这个场景在“先侦听后推送”部分中进行描述。
2.6.1先拉后推
用户可以通过发送标准的DESCRIBE/SETUP/PLAY请求来向远程的源中请求一个流,然后将它中继转发到一个或者多个目的地。
当只希望让外部流的一份拷贝占用其内部连接的带宽时,这个功能可能有用。
中继转发获取一份拷贝进行多份的复制和转发、分发到请求的客户端。
图2-7提供了一个先拉后推(pull-then-push)场景的实例。
图2-7先拉后推场景实例
流媒体服务器A(转发服务器)发送标准的RTSP客户DESCRIBE/SETUP/PLAY请求给远程服务器,即流媒体服务器B。
发起请求的中继“客户端”(流媒体服务器A)开始接受流,然后向该输入流的中继配置中列出的所有目的地发送ANNOUNCE推送请求。
2.6.2先侦听后推送
流媒体服务器可以被配置为将ANNOUNCE请求创建的输入流自动发送到一个或者多个目的地。
这可能可以用于配制自动播送网络。
图2-8提供了一个先侦听后推送的场景的实例。
图2-8先侦听后推送场景实例
先侦听后推送场景的步骤如下:
远程机器(IpCamera等前端设备或者中继服务器)向流媒体服务器A发送一个ANNOUNCE请求。
流媒体服务器可以接受或者否认这个请求。
如果它接受了请求,则流媒体服务器会检查其中继配置,以确定这个流是否应该被中继。
如果该流应该被中继,则流媒体服务器将向自身发送标准的RTSP客户DESCRIBE/SETUP/PLAY请求。
发出请求的中继“客户”(流媒体服务器A)开始接收流,然后向相应的输入流的中继配置中列出的所有目的地发送一个ANNOUCE请求。
2.7流媒体技术概述
随着互联网越来越多的应用于现代人的生活当中,现在很多的互联网公司都希望通过互联网流媒体技术推送给用户来获取更多的用户量。
但是音视频数据的数据量是很大的,如果要下载下来会耗费很大的网络带宽和流量。
目前网络带宽平均情况下还不算很大,在这种情况下,流媒体技术的出现就让这种情况有了很大的改善。
让网络客户通过互联网收看互联网节目能够更加的方便。
流媒体技术的成熟,让PC可以在接收数据的同时马上进行数据解码,而不需要整个音视频文件全部下载,所以客户只需要等待数据初始化完成就可以在线观看了。
当音视频这些数据通过互联网流媒体服务器在PC上播放的同时,数据的剩余部分还会同时继续在服务器上下载。
在互联网上传输音视频数据就好像在日常生活中从水龙头接水一样,以前旧的互联网传输模式必须要等所有的数据下载完成,就像必须等水装满才能使用,而水流的大小直接影响着接满水所需要的时间。
现在流媒体传输方式的出现和完善,包括互联网带宽越来越大,让用户能够在收看的同时也能够继续下载未观看的部分。
目前,流媒体传输技术大致上可以分为两类,一种是流实时传输,另一种是流式的顺序传输。
顺序传输就是说按照数据的顺序进行下载,所以用户可以边下边看,但是服务器的数据推送和用户对数据的接收不是同时的,而是服务器将数据推送后,用户经过一定的网络延时才能接收到并且使用。
所以这种传输方式用户看到的视频
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于Apple Darwin的摄像机客户端推送器的设计与实现 基于 Apple Darwin 摄像机 客户端 推送 设计 实现