Red5视频实时采集存储及点播系统设计(4)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

Red5视频实时采集存储及点播系统设计(4)

图2。2 Spring Framework框架图

2。1。2 Mina Server服务器

Mina是用于开发基于网络应用的高性能、高可用性的基础框架。因为底层的处理工作和进程线程的并发不需要过多地去考虑,所以程序开发人员就可以集中开发精力在其他方面,可以大大地提高开发效率。图2。3是Mina Server服务器的框架图。

图2。3 Mina Server 服务器框架图

上图中,IoService作为程序的入口,它可以添加多个的IoFliter对象,这些对象由IoProcessor负责使用时的调度。IoHandler是Mina Server服务器的业务处理模块。

2。1。3 Jetty Web Server服务器

在基于Red5流媒体服务器的应用开发过程中,Jetty Web Server服务器作为应用开发过程中的开发配置服务器,它实现了RTMP协议和HTTP协议的链接。Jetty是JAVA的Web的内容,它提供的容器是开源的Servlet。图2。4是一个Jetty Web Server服务器的整体框架图:

图2。4 Jetty Web Server 服务器整体框架图

Handler的作用是处理链接请求并返回响应;Connector负责接收RTMP和HTTP协议之间的链接;ThreadPool的作用是提供线程支持;Connector和Handler共同构成了Jetty Web Server服务器的管道线。

2。2 RTMP协议简介

2。2。1 RTMP协议的基本概念

RTMP协议作为TCP/IP五层体系结构中的应用层协议,是被设计用于进行实时数据通信的网络协议,主要应用于在支持RTMP协议的流媒体/交互服务器和Flash/AIR平台之间进行视/音频和数据通信。Adobe Media Server/red5/Ultrant Media Server等软件都支持该协议。RTSP和RTP协议组合能提供相似的流媒体服务,但在与RTMP协议提供的方式上有所不同,RTMP本身既能够传输多媒体数据也能够控制多媒体播放。RTMP协议的传输层的网络协议是TCP协议,它可以提供可靠地交付协议,并且是面向连接的,因而在互联网上传输时基本不会出现丢包的情况。这一点提高了用户的体验效果(QoE)。但这样的效果是要承担一定的代价的,因为TCP协议是提供可靠交付,所以这也会相应地增加额外的开销,占用一些带宽和处理机资源。

但是随着科学技术的发展、用户需求的增加、网络带宽水平的提高和计算机硬件的快速发展,这些额外的开销开始逐渐变得微不足道,所以,RTMP在未来还是有着不错的发展前景。

2。2。2 RTMP协议的基本格式

消息(Message)作为RTMP协议中的基本的数据单元。当RTMP协议在互联网上传输数据时,便会将消息分割成更小的单元,称作消息块(Chunk)。

1 消息

消息是RTMP协议中最基本的数据单元。种类不同的消息有着不同的Message Type ID,分别对应着不同的功能。在RTMP协议中总共规定着十几种有着不同的功能的消息类型。例如,消息的Message Type ID为15-20表示是用于发送AMF编码命令的,负责用户与服务器之间的交互,例如播放或暂停视/音频等等。消息的Message Type ID为1-7则表示是用于协议控制的,一般情况下都是RTMP协议自身管理所要应用的消息,一般情况下用户不用去修改其中的数据。消息的Message Type ID为8,9分别代表应用于传输音频和视频数据。消息首部(Message Header)分别包含四个部分:标志消息类型(Message Type),标志消息长度(Payload Length), 标识时间戳(Time stamp), 标识消息所属媒体流(Stream ID)。消息的基本报文结构如图2。5所示:

图2。5 RTMP协议中消息的报文结构图

2 消息块 

在互联网上传输数据的时,消息会被拆分成为几块较小的数据块,因为这样处理之后,在相对应的网络环境上才更适合进行传输。RTMP协议中有明确规定,消息在互联网上传输时应被拆分为消息块(Chunk)。消息块首部(Chunk Header)包含三个部分: 标识本块(Chunk Basic Header), 标识本块负载所属消息(Chunk Message Header),还有当时间戳溢出时才会出现的扩展时间戳(Extended Time stamp)。消息块的基本报文结构如图2。6所示: (责任编辑:qin)