




已阅读5页,还剩23页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科毕业论文题 目基于Apple Darwin的流媒体录像服务器的设计与实现Design and Implementation of The Streaming Media Video Server Based on Apple Darwin姓 名学 号专 业计算机科学与技术指导教师职称/学位讲师/硕士中国武汉二一七年五月华中农业大学楚天学院本科毕业论文(设计)分类号 密级华中农业大学楚天学院本科毕业论文基于Apple Darwin的流媒体录像服务器的设计与实现Design and Implementation of The Streaming Media Video Server Based on Apple Darwin学生姓名: 学生学号:学生专业:计算机科学与技术指导教师: 华中农业大学楚天学院二一七年五月1华中农业大学楚天学院本科毕业论文(设计)目 录摘要I关键词IAbstractIKey wordsI1 系统的可行性研究概述11.1 国内外研究现状11.2 系统研究的意义11.3 系统研究的目标12 系统相关技术与协议22.1 Darwin核心框架22.2 流媒体技术32.3 TS流简介42.4 编解码规范与相关协议43 流媒体录像服务器设计73.1 流媒体录像服务器架构73.2 录像功能模块设计73.2.1 录像模块设计73.2.2 本地存储过程83.2.3 RMS编解码设计93.3 网络接口模块设计123.3.1 RMS协议设计123.3.2 RMS网络接口设计143.4 录像回看模块设计153.4.1 录像回看模块分析153.4.2 RMS录像回看设计164 系统测试174.1 服务器启动测试174.2 启动与停止录像测试184.3 录像检索测试205 系统优化225.1 数据存储优化方案225.2 负载均衡优化方案236 总结23参考文献24致谢24华中农业大学楚天学院本科毕业论文(设计)摘 要针对当前多平台多用户对于采集图像信息存储的需求,本文提出了一种将采集图像的信息进行存储并提供查询的流媒体录像服务器的解决方案。通过对录像服务器的工作过程及工作原理进行分析,将流媒体录像服务器的功能设计为录像模块、存储模块、查询模块三个主要功能模块。本文对三个功能模块进行设计与实现。录像管理服务器可以对外部设备传输到服务器的视频信息进行录制并可以控制录制的开始与结束并根据设备号来对视频信息进行本地存储。流媒体录像服务器还可以根据时间来对存储的录像进行检索和回看。流媒体录像服务器是为满足部分用户的需求而进行设计的,流媒体服务器这一技术的应用,将会推动安防软件产业的进一步发展。关键词流媒体;录像服务器;本地存储;AbstractAiming at the demands of multi-user and multi-platform video storage requirements,pre-sents a solution for streaming video server to store videos and provide queries.By analyzing the working process and working principle of the video server,the function of the streaming video server is designed as three main functional modules:video module,storage module and query module.The design and implementation of three functional modules are presented in this thesis. The video management server can record video information transmitted to the server by an external device and control the beginning and end of the recording,and locally store the video information according to the device number.The streaming video server can also retrieve and view the stored video according to the time.The Streaming Media Server is designed for satis fying part of users in requirement,it will force the development of security management software trade along with the application of the Streaming Media Server.Key wordsStreaming Media; Video Server; Local Storage; I1 系统的可行性研究概述1.1 国内外研究现状网络监控系统已经渗透到日常生活中的各个行业:在商场超市里,视频监控系统可以对顾客以及市场内实时场景进行监控;通信运营商可以利用网络监控系统对位置偏僻的通信基站进行监控;城市道路公交系统中,监控系统实时获取路况车流信息,便于交管部门交通流量调度。此类系统的最新应用模式是,幼儿园里面安装了这一类的系统以后,家长就能够对教师的教育情况和孩子的情况进行随时的了解。总的来说,在各行各业中网络监控系统都得到了非常广泛的应用。网络实时视频监控系统的特点主要有三点,第一是网络监控,因为互联网络的连通性,系统监控硬件设备的布设不再受到彼此物理位置的局限。网络监控打破了原本监控系统对接入设备数量方面的限制和对距离方面的限制,对相关的网络资源进行了最大程度的利用。第二是数字化信息,目前音视频所采集得到的数据使用的是数字信号,目前已经出现了性能非常高的音视频编解码技术,因此对于数据的传输来说,其效率有了明显的提升,这一技术可以确保那些低带宽的播放终端同样能够得到非常好的采集图像。第三是支持无线网络,目前无线网技术发展的速度很快,而且无线网相关应用也得到了普及,新一代互联网的发展已经开始转向了移动互联网,这个时候,手机就变成了移动播放终端。这种移动播放终端的实时性非常好,同时能够支持流媒体视频数据,也就是说其图像播放效果可以和计算机相比,并且能够随时随地对监控区域所采集到的图像进行实时地获取。1.2 系统研究的意义在进行实际应用的时候,这种平台的用户非常需要对采集到的图像进行存储,因此对采集到的图像进行存储的功能有着较大的实际意义。例如视频服务器对于采集到的那些实时图像信息只支持用户进行实时观看的话,那么对于一些没有播放的关键性图像,这些重要的图像资料就会出现错失,从而让系统的正常功能受到影响,即便是观看到了那些关键性的图像,但是没有对相关的图像资料进行保存,那么同样也不能够很好的让应用的作用完全的发挥出来,这就相当于视频图像依据丢失了。所以,根据这些问题,设计并实现流媒体录像服务器有着十分重要的实际应用意义。1.3 系统研究的目标本课题的主要目的是在一个已经实现好网络实时视频监控系统里面新拓展一个流媒体录像服务器。新拓展的这个流媒体录像服务器能够基于原本系统所具有的流媒体信息转发功能,增加对流媒体图像进行录像的功能和流化回看录像的功能。首先是对流媒体数据进行保存,在保证网络实时视频监控系统之中原本所具有的采集图像中继转发这种基础功能的基础之上,把系统里面所传输的图像信号保存在服务器里面。对于图像数据的存储来说,这个功能能够对存储操纵的结束以及开始进行控制。其次是存储录像的文件播放,采集图像数据的文件播放是指存储录像作为一个完整视频文件,可在存放存储录像文件的计算机上通过运行播放器软件播放观看。此功能允许用户将位于流媒体录像服务器中的存储录像文件通过下载或者是直接进行文件拷贝等操作后,在其他设备上对其进行观看。最后是对于保存录像的流化回看,这里提到的流化回看功能指的是用来进行播放的终端是位于和存储录像不同的计算机上面的,播放终端采用的是和网络实时视频监控系统中视频服务器对图像进行采集并送到播放终端的这种流媒体的传输类似的方法。防止复杂的文件拷贝或下载等转移操作。2 系统相关技术与协议2.1 Darwin核心框架Darwin流媒体服务器架构大体上由客户端、核心服务器、服务器模块组成。核心服务器充当网络客户端和服务器模块之间的接口作用,网络客户端使用RTP/RTCP和RTSP协议向服务器模块发送请求和接收响应,而核心服务器则负责通过服务器模块处理请求和向客户端发送数据包。图2-1总结了客户端,核心服务器和服务器模块三者之间的关系。图2-1 Darwin流媒体服务器架构核心服务器通过创建主线程(Main Thread)、任务线程(Task Thread)、事件线程(Event Thread)和空闲任务线程(Idle Task Thread)这四种类型的线程来协调完成流媒体服务器的工作,它们的具体功能如下:Darwin流媒体服务器主线程负责检查Darwin流媒体服务器是否需要关闭,记录Darwin流媒体服务器的状态信息,或者打印统计信息。空闲任务线程负责管理一个周期性的任务队列,在该任务队列中有两种类型的任务,分别是超时任务和套接口任务。事件线程负责监听来自套接口的事件,比如接收来自客户端的RTSP请求和RTP数据包,然后把该事件传递给相应的任务线程。任务线程负责从事件线程中接收RTSP和RTP请求,然后把该请求传递到相应的服务器模块进行处理,再把处理的结果发送给客户端。在默认情况下,核心服务器会为每一个处理器创建一个任务线程。由于服务器很大程度上是异步的,所以在不同的事件之间需要提供一个通讯机制。如当某个用于RTSP连接的套接口得到了数据时,这时需要通知某类相关组件,数据才能被服务器模块处理。任务对象就是执行这种通讯的机制。每一个任务对象都有包含两个主要的方法,分别是Signal方法和Run方法。服务器通过调用Signal方法来把一个事件发送给相应的任务对象,而Run方法则用来为任务对象指定处理事件的时机。用小的非阻塞时间片来实现Darwin流媒体服务器的功能,这是每个任务对象的目标。任务对象中的Run函数是一个纯虚函数,当任务对象有事件需要处理时才被调用。在Run函数里面,任务对象可以通过调用GetEvents函数来接收已经用信号通知过的事件,并自动使该事件退出任务队列。实际上任务对象的Run函数会被反复调用,直到该对象的所有事件全部被GetEvents函数清除掉为止。这种事件触发任务的核心概念被集成到每一个Dawin流媒体服务器子系统,比如一个任务对象可能和一个套接口对象相关联。当套接口对象得到一个事件时,则相应的任务对象也会得到信号通知,Run函数的相应代码会处理套接口对象接受到的事件。任务对象使得Darwin流媒体服务器通过使用单独一个线程来运行所有连接。2.2 流媒体技术流媒体技术属于一种综合性的交叉技术,这种技术融合了视频、音频以及网络技术。音视频的流式数据是流媒体在传输过程中的对象,如果要对视频、音频以及一些常见的媒体文件进行传输就一定要对其进行处理,使之转换成可以通过网络进行传输的流式数据。对于文件的处理,通常来说首先会采用一些效率较高的音视频数据压缩算法来进行压缩处理,接下来再把一些媒体流的信息添加到文件里面,这个时候相关的文件数据才能够以流媒体的形式在网络上进行传输,到达播放终端以后通过播放器软件来对其进行播放。使用TCP/IP协议请求下载文件时,服务器以一个特定的顺序将请求下载的文件划分成几个相对独立的数据单元,然后向请求客户端依次发送传输出去。客户端程序将这些数据包重新组合起来,形成和服务器上的源文件一样的完整的文件,到此时便可以对客户端的文件进行相应的操作。在流媒体技术里面,服务器能够根据特定的一些顺序把文件发送到客户端,客户端的播放程序能够直接实现数据的接收和播放的两种操作的同步进行,并不会等待完成全部媒体文件数据包的下载以后再将其进行组合,这样就能够让网络传输需要进行等待的用时得到了极大的减少。流媒体的传输路径就是从服务器一直到客户端的整个网络传输路径,所以对于实现流媒体技术来说,流式传输就是其中的关键性技术。这里提到的流式传输所包含的具体意义是把声音以及图像等类型的数据进行数字化处理然后对其进行压缩,接下来通过互联网络的方式把这些数据向客户终端进行传输,也就是通过网络来对音频以及视频进行传输的技术的总和。图2-2 流式传输基本原理流式传输的过程一般是当用户选择某一流媒体服务后,Web浏览器与Web服务器之间使用HTTP/TCP交换控制信息,以便把需要传输的实时数据从原始信息中检索出来,然后客户机上的Web浏览器启动A/VHelper程序,使用HTTP从Web服务器检索相关参数对Helper程序初始化。这些参数可能包括目录信息、A/V数据的编码类型或与A/V检索相关的服务器地址。A/VHelper程序及A/V服务器运行实时流控制协议(RTSP),以交换A/V传输所需的控制信息。与CD播放机或VCRs所提供的功能相似,RTSP提供了操纵播放、快进、快倒、暂停及录制等命令的方法。A/V服务器使用RTP/UDP协议将A/V数据传输给A/V客户程序(一般可认为客户程序等同于Helper程序),一旦A/V数据抵达客户端,A/V客户程序即可播放输出。需要说明的是,在流式传输中,使用RTP/UDP和RTSP/TCP两种不同的通信协议与A/V服务器建立联系,是为了能够把服务器的输出重定向到一个不同于运行A/VHelper程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器,其基本原理如图2-2所示。2.3 TS流简介图2-3 TS流生成流程如图2-3所示视频ES和音频ES通过打包器和共同或独立的系统时间基准形成一个个PES,通过TS复用器复用形成的传输流。图2-4 TS over IP的传输过程TS一般我们认为是MPEG-2 TS标准,它是一种非常成熟的数据传输技术,它是对音视频数据复用的一种说明,音视频数据经过TS封装之后,再通过网络IP协议栈进行二次封装,然后就可以传输了。但如果需要进行一些互动性的内容,就需要对它进行扩展。TS over IP 的传输过程如图2-4TS over IP的传输过程所示。这种传输方式同样采用了C/S的方式,另外由于应用在IPTV领域,控制层可以使用RTSP协议或者HTTP协议。在DSS服务器中,为了减少网络抖动更好地控制传输流量,我们对UDP协议数据包又增加了关于RTP协议数据封装。这样系统就能够有效的减少网络丢包,视频卡顿等影响客户体验的现象。2.4 编解码规范与相关协议(1)H.264编解码规范在2001年,国际标准化组织中的运动图像专家组(MPEG)逐步认知到H.26L标准潜在的优点,于是联合了视频编码专家组以及动态图像专家组共同成立了一个联合视频组(JVT),并对H.26L的优化以及未来的发展进行深入的研究。H.264编解码协议规范可以用四个方面概括其技术特点,第一个方面是关注实用性问题,摒弃了原本这类编解码技术里面的一些存在着缺陷的编码方案,如机遇内容的编码等,以更加简洁的格式,以提升编码效率为目的,从而运用合适的技术。第二方面则是使用了多种的新算法和新技术,在混合编码的基础上,新增了4*4整数变换技术、基于内容的变长编码技术及多帧预测和帧内预测技术等。第三方面,对于算法而言,突出了信道的特点。从分层的角度来看,信道编码和信源编码在形式上采取了分离。第四方面则是使用了针对IP以及无线网络的相关策略,为了方便那些经过压缩之后的视频在丢包率较高和误码率较高的网络环境之中进行传输,使用了一些用来对差错进行消除的工具。H.264的主要优势在于四个方面。一是图像质量非常高,H.264标准想要实现的是在对图像进行还原的过程之中能够保持较高质量,同时还为此采用了一系列的算法,其目的为实现图像的高质量。二是为了能够和不同的信道相适应,以及各种应用形式,区分各种图像层次从而采用相应的算法。三是在熵编码等步骤中,为达到较低比特率的目标从而采用节约码流的算法。四是系统的健壮性增加,H.264提供了掩盖错误的组件并应用了环路滤波结构。(2)RTSP协议Realtime Transport Control Protocol,即RTSP实时传输控制协议,它的主要作用是对目前流式数据通过RTP协议来进行传输的过程中的这些实时传输流的状态进行反馈,从而传输流数据的两放能够及时进行针对性的调整。在利用RTP协议进行流式数据交互的时候,传输的两方会周期性发送RTCP数据包,RTCP数据包里面所包含的实时传输流状态信息主要包含了RTP数据包丢包的数量和已完成收发的RTP数据包的数量等。进行传输的两方按照RTCP数据包所提供的相关信息进行相应的调节,例如发送RTP数据包的一方对其传输媒体流数据的速率进行改变。RTSP协议方法的详细说明如表2-1所示。表2-1 RTSP协议的方法交互方法交互方向方法作用OPTIONS客户端、服务器端均可发送方法请求端查询方法响应端所支持的方法列表DESCRIBE客户端发送服务器方法请求端请求方法中URL参数所指定的媒体描述信息内容ANNOUNCE客户端、服务器端均可发送当从RTSP客户端发往RTSP服务器端,方法请求端将URL参数所指定的媒体描述信息发送到方法响应器端。当RTSP服务器端将媒体描述信息发送到RTSP客户端,方法请求端将会更新会话的描述信息。GET_PARAMETER客户端、服务器端均可发送方法请求端请求检查URL参数指定媒体的参数值SER_PARAMETER客户端、服务器端均可发送方法请求端声明设置URL指定流的参数值PAUSE客户端发送服务器方法请求端请求临时终端URL指定媒体的传输REDIRECT服务器发送客户端重定向请求,方法请求端通知方法响应端连接到另一服务器地址SETUP客户端发送服务器方法请求端指定方法中URL参数所标志的媒体的传输机制PLAY客户端发送服务器方法请求端请求方法响应端将媒体以SETUP所指定的传输机制进行发送TEARDOWN客户端发送服务器方法请求端请求停止URL指定的流发送,释放相关资源RTSP(Real Time Streaming Protocol)实时流媒体协议是用于在协议客户端和协议服务器端之间创建实时流回话的一个协商过程,该协议是TCP/IP协议栈体系里面的一种应用层的传输协议。协议客户端能够利用实时流媒体协议来对协议客户端以及协议服务器之间存在的多条流媒体串流进行控制,这样就能够实现对于音视频流数据信息的点播以及传输控制等操作。当我们需要创建并且对一个或多个时间的同步且连续的音视频的媒体数据流控制的时候,我们需要用到RTSP协议,实际上就是实时流协议。为了能够实现实时音视频数据的按需分配流和受控(快进,暂停),这套协议之中给我们提供了能够进行实现的框架。这样的实时流控制协议可以用在对多个数据发送的会话,通过UDP或者TCP方式,以及基于RTP发送方式来实现。RTSP协议在交互过程中的步骤如下:请求服务端将相关的服务请求发给服务提供端,当服务提供端受到了相关的清求之后对其进行处理,然后把回复消息发送到请求服务端,请求服务端对回复进行接收然后对其进行处理。请求服务端既能是客户端又能为服务器,同样的,服务提供端既可以是客户端又能为服务器。在进行交互的过程中,发送的请求信息中主要包括请求的执行方法和所需操作的参数。(3)HLS协议HLS协议即HTTP Live Streaming。一个可实现流媒体的直播和点播的基于HTTP的流媒体传输协议。HLS点播与分段HTTP点播十分相似,其差异就在于HLS点播的分段很小。HLS协议与其他流媒体协议差异最大的地方就是在流媒体数据传输时,客户端获取到的,并非完整的数据流。HLS协议实现直播的原理是服务器将流媒体数据进行切片,一段流媒体数据被分为多个连续,短时长的TS文件,客户端连续下载播放TS文件,服务器无时无刻都在进行TS切片操作,新生成的流媒体数据马上就被服务器切片,客户端只需要按顺序播放TS文件即可实现直播。综上所述,我们可以理解为HLS实现直播的方式是通过点播的形式。而HLS的不足在于采用了切片技术不可避免直播时的延迟会比其他流媒体直播协议高。(4)SDP协议会话描述协议SDP(Session Deseription Protocol),SDP协议本身属于一种文本性质的协议,该协议比较简单,且其语法能够进行扩展。SDP文件就是SDP协议的文件形态,服务器在提供音视频流数据的同时还会产生对音视频媒体属性进行描述的SDP文件,这些音视频媒体的属性包含了音视频在对数据进行传输的时候所采用的编码协议规范,音视频媒体流的数量,协议版本号信息,流式数据服务器的具体地址等。客户端请求到了音视频流数据之后,能够通过对SDP协议描述的媒体属性信息进行解析,从而实现配置客户端播放器软件。(5)RTP与RTCP协议Real-Time Transport Protocol即RTP实时传输协议,是在因特网上面对多媒体流数据进行处理的一种应用层网络协议,通过RTP协议能够实现对流媒体数据的实时传输操作。RTP一般都采用UDP的方式来传输多媒体数据,不过假如有其他的需要的话也可以采用TCP或者ATM等一些别的协议,整个RTP协议组成部分包括了RTP控制协议以及RTP数据协议。3 流媒体录像服务器设计3.1 流媒体录像服务器架构图3-1 流媒体系统结构图流媒体录像服务器主要是实现录像存储功能的一个服务器,它提供的这种功能对于网络实时视频监控系统来说是一种升级功能。流媒体录像服务器采集到图像数据以后,对会录制这些图像数据,然后采用本地文件的格式将其保存在服务器计算机之中。当远程播放终端想要利用流式方法来对录像存储文件进行直接观看的时候,首先要和流媒体录像服务器之间进行RTSP协商交互,完成RTSP交互后,接收到流媒体求像服务器发送来的RTP格式封装的数据包。图3-1流媒体系统结构图分为流媒体数据流与信令流两个方向。录像服务器需要开始或暂停录像时,录像管理服务器给中心管理服务器发送一条指令,中心管理服务器处理完这条指令后给Darwin服务器发送一条执行指令,录像管理服务器RMS以拉模式拉取Camera推送到Darwin服务器的数据流然后进行录像并存储。当客户端需要查看录像会给中心管理服务器CMS发送一条指令,中心管理服务器处理完该指令后会给录像管理服务器RMS与Darwin服务器各发送一条执行指令,录像管理服务器将根据参数查询对应的录像然后推送到Darwin服务器,Darwin服务器再将数据推送到客户端即可实现录像的查看。3.2 录像功能模块设计3.2.1 录像模块设计流媒体录像服务器中的录像模块的主要功能是录像存储,录像模块为其录像存储功能提供了功能开关接口,网络实时视频监控系统中其他服务器可以通过调用录像模块提供的开关接口控制录像操作的开始与结束有了开关接口。流媒体录像服务器便在具有独立性的同时具有可集成性,除了网络实时视频监控系统,其他需要用到流媒体视烦录像的应用场景均可方便集成流媒体录像服务器进入相应系统中。录像模块的录像存储功能是将H.264编解码规范的RTP封装数据包保存为H.264格式的可播放视频文件和自定义的用以流化回看的TS流数据文件。图3-2 启动录像时序图图3-2启动录像时序图中当录像管理服务器RMS需要启动录像时,录像管理服务器向中心管理服务器CMS发送视频播放请求,中心管理服务器CMS处理完毕后向RMS进行响应,RMS接收响应后向CMS发送启动录像指令,CMS接收指令处理完毕后向前端设备Camera发送推送数据流命令,Camera接收到指令后向Darwin推送数据流,并向中心管理服务器发送响应信息,中心管理服务器收到响应信息后向录像管理服务器RMS发送指令,录像管理服务器接收到指令后向Darwin服务器拉取数据流到本地进行存储,存储文件夹以当前系统时间为依据。3.2.2 本地存储过程图3-3 本地存储流程图图3-3本地存储流程图中当RMS从Darwin服务器拉取到数据流后进行切片操作,将数据流切割为许多TS流文件和m3u8文件,m3u8文件并非流媒体文件,而是生成的TS流文件的索引文件,m3u8中包含了TS流文件的索引信息,当打开m3u8文件时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的地址进行播放。在切片完成后服务器会读取xml配置文件中的存储目录信息,系统会在存储目录中以日期为命名生成一个文件夹,此次录像的信息全部存储在此目录下。3.2.3 RMS编解码设计RMS采用H.264编码规范,视频文件并非网络抽象层单元简单的依据顺序一前后联接而成,如果网络抽象层单元直接前后联接,会出现一个问题,无法区分独立网络抽象层单元的起始。因此,RMS在编码处理上采取插入单元边界的方法,即在RMS网络抽象层单元前部插入0x00 00 00 01四个标示字节,转换为视频文件数据单元,然后将视频文件单元依据顺序前后联接。当播放软件处理到Ox00 00 00 01时,表明当前RMS网络抽象层单元读入结束,准备进入下一个视频文件数据单元。图3-4 RMS网络抽象层单元录像处理流程RMS网络抽象层定义了网络抽象层单元,即被封装的视频编码层生成的片。RMS网络抽象层单元是由一个字节的单元头以及载荷字节串构成,载荷字节串内即为视频编码层生成的片。所以对片的封装即为在片头加上一个字节的单元头,单元头每个比特均有特定的含义。RMS录像管理服务器采用RTP格式封装,将数据封装为流式传输的数据包。表3-1 RMS网络抽象层单元头字节字段01234567FNRINRITypeTypeTypeTypeType表3-1是RMS网络抽象层单元的单元头字节格式。根据编解码规范中的定义,各个字段可简要描述为:F:1bit,forbidden_zero_bit。编码规范中定义如果F字段为1,则表明语法出错。NRI:2bits,nal_ref_idc。当NRI字段为00时,表明RMS网络抽象层单元不作为帧间预测的重构参考图像,这个网络抽象层单元可以被丢弃。当NRI字段的值不为00时,表明该网络抽象层单元的解码对于维护参考图像的完整性的要求程度。Type:5bits,nal_unit_type。Type字段表明RMS网络抽象层单元载荷类型。RMS网络抽象层单元作为RTP载荷部分,RTP格式封装数据包的接收方可以识别RTP载荷的第一个字节即网络抽象层单元的单元头字节,该字节是结构化的网络抽象层单元头。RTP数据包对RMS网络抽象层单元的载荷方式有三种基本的载荷结构:表3-2 RMS网络抽象层单元类型定义TypePacketType Name0undefined1-23NAL unitSingle NAL unit packet per H.26424STAP-ASingle-time aggregation packet25STAP-BSingle-time aggregation packet26MTAP16Multi-time aggregation packet27MTAP24Multi -time aggregation packet28FU-AFragmentation unit29FU-BFragmentation unit30-31undefined单个网络抽象层单元数据包,RTP载荷中只装载一个RMS网络抽象层单元。RMS网络抽象层的类型域等于原始网络抽象层单元类型,即值域为1-23。单个网络抽象层单元数据包,其载荷部分只包含一个网络抽象层单元。这表明聚合数据包以及分片单元数据包均不能用单个网络抽象层单元数据包。由单个网络抽象层单元数据包组成的网络抽象层单元传输流,其RTP数据包顺序要与RMS解码顺序一致。在格式上,网络抽象层单元的第一个字节即单元头与RTP载荷第一个字节重合。如果RMS的第一个分片用的是交错打包模式,那么RMS则采用FU-B网络抽象层单元类型,而FU-B类型不可以用于其他模式。具体情况为,在交错打包模式下,一个分片的网络抽象层单元,如果FU-B作为其第一个分片,则其后的分片是一个或者多个的FU-A分片。图3-5 RMS分片单元指示字节格式RMS分片单元指示字节的Type字段值为28,29时表示FU-A类型和FU-B类型。F字段和NRI字段的含义与网络抽象层单元的单元头字节格式定义相同。RMS分片单元的头字节的格式如下:图3-6 RMS分片单元头字节格式S:1bit,开始位。当此字段为1时,表示该分片单元是一个被分片的RMS的起始分片单元,随后的同一个RMS分片单元,此开始位设置为0。E:1bit,结束位。当此字段为1时,表示该分片单元是一个被分片的RMS的最后一个分片。在一个分片单元头字节中,开始位与结束位不可同时设置为1。R:lbit,保留位。必须设置为0。Type:5bits。RMS网络抽象层单元类型字段。RMS分片单元的载荷由被分片的网络抽象层单元的载荷的所有分片组成,因此,如果连续的RMS分片单元的分片载荷是被顺序的分割,则分片了的网络抽象层单元的载荷能够被重新组合。如果一个RMS分片单元发生丢包,则接收方应该丢弃该传输流中后续的所有对应与相同被分片的RMS分片单元。表3-3 单个RMS数据包NAL unit headerNAL unit payload01234567FNRINRITypeTypeTypeTypeType01-231-231-231-231-23表3-4 第一个分片的RMS分片单元数据包FU indicatorFU headerFU payload0123456701234567FNRITypeSERType0281001-23表3-5 最后一个分片的RMS分片单元数据包FU indicatorFU headerFU payload0123456701234567FNRITypeSERType0280011-23表3-6 中间分片的RMS分片单元数据包FU indicatorFU headerFU payload0123456701234567FNRITypeSERType0280001-233.3 网络接口模块设计3.3.1 RMS协议设计图3-7 RMS交互协议处理流程图如图3-7RMS交互协议处理流程图所示,当RMS收到一个网络请求就会创建一个请求对象,该对象会被加入到任务队列中。接着RMS会根据预先定义好的顺序,调用各个模块的相关角色来处理任务队列中的请求。这个调用过程如图3-7所示。当在处理网络请求的时候,过滤器角色是RMS调用的第一个角色。它会调用所有注册了过滤角色的模块,并将请求对象作为参数传递给这些注册了过滤器角色的模块。每个过滤器角色都可以通过改变qtssReqFullRequest属性的值,来改变满足请求的文件夹,如一个Filter角色可以把/foo/foo.mov改为/bar/bar.mov。当有某个注册了Fllter角色的模块进行了响应,会导致RMS跳过其它注册了Filter角色的模块的处理,然后立即调用该模块的PostProcessor角色。如果没有模块进行响应,当RMS对请求解析完成之后,RMS会以Route角色调用所有注册了该角色的模块,每个Route角色都可以使用对象中的属性值来确定是否要改变qtssReqRootDir属性的值,进而改变用于处理当前请求的目录。当某个注册了Route角色的模块进行了响应,同样会导致RMS跳过其它注册了Route角色的模块的处理,然后调用该模块的Postprocessor角色。图3-8 RMS传输协议处理流程图如图3-8RMS传输协议处理流程图所示,若没有模块对客户端进行响应,RMS就会调用每个注册Preproeessor角色的模块。Preprocessor角色通过qtssReqAbsoluteURL属性值来确定当前请求和模块处理的请求的类型是否相匹配。如果请求的类型匹配,则Preproeessor角色就调用函数QTSS_Write或者QTSS_WriteV来向请求端发送相应的流媒体数据包。同样任何一个注册了Preprocessor角色的模块对客户端进行了响应,都会导致服务器跳过注册了Preprocessor角色的所有模块,然后调用该模块的Postprocessor角色。如果注册了Preprocessor角色的模块没有对请求进行响应,则RMS就调用成功注册了Request角色的模块。Request角色负责响应所有没有被Preprocessor角色或者注册了该角色模块处理的请求。在Request角色对请求进行处理完成之后,RMS就调用注册了Postprocessor角色的模块。Postprocessor角色通常执行一些统计任务,比如记录各种统计信息。处理Preprocessor或者Request角色的模块可能需要为有些请求生成一些流媒体数据包。通过调用模块的QTSS_Play函数来实现,这个函数会使模块的RTP Send Packets角色被调用。3.3.2 RMS网络接口设计图3-9 RMS的PULL过程当远程播放终端请求RMS的录像时,流媒体录像服务器会创建一个PULL(拉)会话处理线程。每个会话属性包括了当前会话ID,当前流媒体描述的SDP,请求序列号,RTP/RTCP流数据传输端口号等信息。交互协议协商的PULL(拉)会话,即RMS向前端设备Camera拉(PULL)取视频录像的流数据,PULL(拉)会话中,作为交互协议服务器端的流媒体录像服务器与作为交互协议客户端(Client)的远端播放终端的交互通信过程如图3-9所示。远程播放终端作为交互协议客户端首先向作为协议服务器端的流媒体录像服务器发送DESCRIBE请求,DESCRIBE请求中包含了远程播放终端对请求录像的媒体描述信息文件。在交互协议PULL(拉)交互协商过程中,交互协议客户端会对DESCRIBE请求的响应消息中的媒体描述信息内容进行解析。在流媒体录像服务器中,交互协议PULL(拉)交互会话的媒体描述信息文件采用的是SDP(session deseriptionprotocol)会话表述协议。SDP协议信息中一般包含的媒体流为视频流和音频流,交互协议客户端会针对SDP协议信息中包含的媒体流分别发送SETUP请求,发送的SETUP清求中,会显示通报交互协议客户端中申请的流数据传输模式以及在特定传输模式下为RTP/RTCP流数据传输而打开的端口号。在整个系统中,因为RMS的录像仅针对视频流,因此,在系统中播放终端与流媒体录像服务器的SETUP请求只为视频流,即一个SETUP请求。交互协议服务器端的流媒体录像服务器在接收到SETUP清求消息后,会根据SETUP消息中的传输模式进行相应的回应。对于通报了流数据传输端口号的SETUP请求,流媒体录像服务器在记录了交互协议PULL(拉)交互的客户端的端口号后,回应SETUP请求,在SETUP消息的回应中流媒体录像服务器同样通报流媒体录像服务器为流数据传输而打开的端口号。远程播放终端在SETUP请求交互完成后,向交互协议服务器端的流媒体录像服务器发送RECORD请求消息,请求流数据录制开始,流媒体录像服务器则开始将RTP格式封装数据包发送存储在本地相应目录下。至此,远程播放终端对录像的PULL(拉)交互协商过程完成。图3-10 RMS录像回看接口流程RMS网络接口模块在流媒体转发服务器中是传输协议交互处理器,是数据包的发送器。在整个系统中,RMS交互的对像是播放终端端点。交互协议服务器端的流媒体求像服务器接收DESCRIBE请求后,根据DESCRIBE请求中的媒体描述信息文件,在本地媒体描述信息文件中,进行搜索,如果有DESCRIBE请求中指定的媒体描述信息文件,则向远程播放终端回复200_ok,并在回复中添加入DESCRIBE请求中指定的媒体描述文件的内容。如果未能在本地媒体描述信息文件夹中搜索到DESCRIBE请求中指定的媒体描述文件,则返回“未找到”信息,并结束此次RTSP协议交互会话。如图3-10RMS录像回看接口协议流程图所示,RMS启动后,网络接口模块打开SOCKET的TCP端口等候。当有播放终端通过TCP端口接入后,RMS开启一个新线程处理双方信息交互。播放终端发送DESCRIBE请求后,RMS的网络接口模块根据DESCRIBE请求中提供的录像存储文件的文件名在本地查询是否有流数据文件,如果没有DESCRIBE请求中指定文件名的流数据文件,则网络接口模块中止此次交互线程;如果有DESCRIBE请求中指定文件名的流数据文件,则网络接口模块与请求播放终端继续信息交互。在信息交互的SETUP回合中,RMS的网络接口模块与播放终端相互声明己方打开的RTP端口号和RTCP端口号。在信息交互的PLAY请求后,RMS的网络接口模块调用RMS的录像回看模块,录像回看模块完成对流数据文件的封装后,由RMS网络接口模块根据之前交互的SETUP回合中声明的RTP端口以及RTCP端口完成数据包的发送。3.4 录像回看模块设计3.4.1 录像回看模块分析当网络接口模块完成与请求端录像观看请求的交互协商后,便会调用RMS的录像回看模块,由录像回看模块对流数据文件进行封装,网络接口模块将录像回看模块封装好的数据包发送至播放终端。封装操作是录像回看模块功能实现的核心。RMS采用RTP协议对数据进行封装,通过RTP协议可以在一对一模式(Unicast,单播)或者一对多模式(Multicast,多播)实现流媒体数据实时传输。每一个录像数据包头部1-12个字节是固定含义的,而负载则可以是音频数据或者视频数据。图3-11 录像数据包头部格式CSRC记数(CC):表示CSRC标识的数目。CSRC标识紧跟在固定头部之后,用来表示数据报的来源,传输协议允许在同一个会话中存在多个数据源,它们可以通过混合器合并为一个数据源。例如,可以产生一个CSRC列表来表示一个电话会议,该会议通过一个混合器将所有讲话者的语音数据组合为一个数据源。负载类型(PT):标明数据包负载的格式,包括所采用的编码算法、采样频率、承载通道等。例如,类型2表明该数据包中承载的是用ITU-G.721算法编码的语音数据,采样频率为8000Hz,并且采用单声道。时间戳:记录了负载中第一个字节的采样时间,接收方根据时间戳能够确定数据的到达是否受到了延迟抖动的影响,但具体如何来补偿延迟抖动则是应用程序自己的事情。序列号:用来为接收方提供探测数据丢失的方法,但如何处理丢失的数据则是应用程序自己的事情,传输协议本身并不负责数据的重传。从数据报的格式不难看出,它包含了传输媒体的类型、格式、序列号、时间戳以及是否有附加数据等信息,这些都为实时的流媒体传输提供了相应的基础。RMS目的是提供实时数据(如交互式的音频和视频)的端到端传输服务,因此在RMS中没有连接的概念,它可以建立在底层的面向连接或面向非连接的传输协议之上;RMS也不依赖于特别的网络地址格式,而仅仅只需要底层传输协议支持组帧(Framing)和分段(Segmentation)就足够了。传输协议本身还不提供任何可靠性机制,这些都要由应用程序自己来保证。3.4.2 RMS录像回看设计图3-12 RMS检索录像流程图图3-12检索录像流程图,根据用户输入的开始与结束参数,RMS调用RESTful接口,根据参数到存储目录进行查询。由于存储时根据录像开始时间生成的存储目录,所以查询时只要将大于查询开始时间小雨查询结束时间的所有m3u8文件集合返回即可。查询结果会以URL的形式显示在WEB浏览器。图3-13 RMS回看录像流程图如图3-13RMS回看录像流程图所示,当远程端需要对检索的录像进行回放时,RMS首先会根据检索结果读取相应的m3u8文件,m3u8文件包含了TS流文件的索引信息。接下来RMS服务器需要对m3u8文件对应的TS流文件进行解析,当RMS读取到TS文件时首先读取其PID的值。当PID为0时,RMS解析PAT获得PMT的PID,然后根据PMT的PID解析出PMT对应的音视频的PID,最后根据音视频的PID解析出音视频信息然后进行播放,直至TS流文件全部解析完毕整个过程便结束。4 系统测试流媒体录像管理服务器RMS主要提供录像与回放服务,能够直接对接摄像机、Darwin流媒体服务器、其他标准RTSP服
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏海晟控股集团有限公司下属子公司招聘高级管理人员人员模拟试卷及答案详解(考点梳理)
- 2025福建福州长乐机场海关驾驶员招聘1人模拟试卷附答案详解(黄金题型)
- 2025辽宁沈阳市政府国资委市属国有企业外部董事人才库拟入库人员模拟试卷附答案详解(黄金题型)
- 2025版的铝合金窗户安装合同书
- 2025北方工业大学社区卫生服务站招聘1人模拟试卷附答案详解(突破训练)
- 2025北京市规划和自然资源委员会事业单位招聘工作人员55人模拟试卷附答案详解
- 四川省内江市五校2026届高三上学期9月月考试题 英语 含答案
- 酒厂包装考试题库及答案
- 高级电工调试考试题库及答案
- 餐饮考试题库及答案搜索
- 《国庆假期安全教育》课件
- 2025年辅警招聘考试试题库及完整答案(历年真题)
- 2025湖北宜昌市不动产交易和登记中心招聘编外聘用人员17人考试参考题库及答案解析
- 2025下半年四川内江市隆昌诚信农业产业化融资担保有限责任公司招聘4人考试参考题库及答案解析
- 疼痛介入治疗的护理
- DB44-T 2542-2024 自然教育基地建设规范
- 《拒绝努力羞耻症》学习动力主题班会课件
- 2025AICon全球人工智能开发与应用大会-上海站:昇腾推理技术的优化实践
- 《春江花月夜》课件+2025-2026学年统编版高二语文选择性必修上册
- 广州中侨置业投资控股集团有限公司债权资产评估报告
- 第2课 信息技术伴成长教学设计-2025-2026学年小学信息技术(信息科技)第八册(2019)电子工业版(安徽)
评论
0/150
提交评论