随着计算机网络的发展和人们对信息多样化需求的不断提高,流媒体技术(Streaming Media Technology)的应用越来越普及,利用流媒体技术实现的交互式VOD(Video On Demand)点播技术也得到不断发展。流媒体技术是为解决中低带宽网络上多媒体信息(以视音频信息为重点)传输问题而提出的。采用流媒体技术,能够有效地突破低比特率接入Internet方式下的带宽“瓶颈”,克服文件下载传输方式的不足,实现多媒体信息在Internet上的流式传输。
1流媒体技术与RTSP协议
1.1流媒体技术
流媒体技术广义上讲是使音频、视频形成稳定和连续的传输流和回放流的一系列技术、方法和协议的总称,狭义上讲仅指区别于传统播放技术的用于在IP网络上发布多媒体数据流的新技术。
流媒体技术与传统播放技术的区别在于,传统的播放技术是由客户端从服务器下载完整的文件,然后进行播放;流媒体技术则采用了流式传输方式,即将整个多媒体文件经过特殊的压缩方式分成一个个压缩包,由视频服务器向用户计算机连续、实时传送,用户无需等待整个文件下载完毕,可以一边解压播放前面传送过来的压缩包,一边下载后续的压缩包,使启动延时大幅度地缩短,而且对系统缓存容量的需求也大大降低。
流媒体是指采用流式传输的方式在Internet播放的媒体格式。流式传输的实现需要合适的传输协议,目前,支持流媒体传输的协议主要有实时传输协议RTP(Realtime Transport Protocol,用于Internet上针对多媒体数据流的一种传输协议)、实时传输控制协议RTCP(Realtime Transport Control Protocol,和RTP一起提供流量控制和拥塞控制服务)、实时流协议RTSP(Realtime Streaming Protocol)、预留资源协议RSVP(Resource Reserve Protocol)。
1.2RTSP协议
实时流协议RTSP是由Real Networks和Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据,通常它本身并不发送连续流。可以这样说,RTSP充当多媒体服务器的网络远程控制,控制实时数据的发送。RTSP是应用级协议,可通过TCP或UDP传输RTSP,在体系结构上RTSP位于RTP和RTCP之上,使用TCP或RTP完成数据传输(RTP通常使用UDP来传送数据),但RTSP操作并不依赖用于携带连续媒体的传输机制。
RTSP在语法和操作上与HTTP/1.1类似,因此HTTP的扩展机制大都可加入RTSP。但是HTTP与RTSP相比,HTTP传送HTML,而RTP传送的是多媒体数据;HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。
在RTSP协议中,每个表示及与之对应的媒体流都由一个RTSP URL(Uniform Resource Locator)标识,整个表示及媒体特性都在一个表示描述文件中定义,该文件可能包括媒体编码方式、RTSP URLs、目标地址、端口号及其他相关参数。用户在向媒体服务器请求某个连续媒体流服务之前,首先必须从媒体服务器获得该媒体流的表示描述文件以得到必需的参数。可采用HTTP或其他方法获取表示描述文件,而且这个文件没有必要保存在媒体服务器上。
RTSP中的所有的操作都是通过服务器和客户方的消息应答来完成的,其消息包括请求和应答两类。请求消息的格式如下:
RTSP message=RequestLine CRLF
CRLF
CRLF
CRLF
其中,表示消息头,表示消息内容,RequestLine是具体的请求命令及相关信息,其格式如下:
RequestLine=Method SP Request-URL SP RTSP-Version
其中,Method是请求命令,Request-URL是媒体表示地址,RTSP-Version是协议版本号。常见的请求消息包括:DESCRIBE、SETUP、GET_PARAMETER、SET_PARAMETER、OPTIONS、REDIRECT、PLAY、PAUSE、TEARDOWN等。
这其中有些命令可以由客户发给服务器,也可以由服务器发给客户机,是双向的,如GET_PARAMETER,OPTIONS等;有些则只能在一个方向上传送,如DESCRIBE只能由客户发往服务器,详细介绍可参考RFC2326。
RTSP应答消息的格式如下:
RTSP message=StatusLine CRLF
CRLF
CRLF
CRLF
其中StatusLine=RTSPVersion SP StatusCode SP ReasonPhrase CRLF,StatusCode是3位状态码,用于回应请求时表示主机状态,ReasonPhrase是与状态码对应的文本解释。
RTSP正是通过服务器和客户方的消息应答来完成媒体流的创建、初始化、VCR控制以及拆线等操作的。
2RTSP在VOD系统中的应用
我们设计实现的一种VOD系统采用主从备份管理以及多服务器负载分担的机制,应用RTSP协议实现网络远程播放管理。
图1显示了该VOD系统的整体结构,其中主服务器A除了担当播放服务器的功能外,还担当WEB服务器,并且负责服务器系统的负载均衡和其他的播放管理功能;从服务器B为主服务器A的备份服务器,在主服务器A正常的时候与播放服务器作用一样,在主服务器A不能工作的情况下迅速代替它,保证整个系统运行的稳定性;播放服务器运行视频服务器程序,向点播客户发送其需要的多媒体数据,这样可以较低的系统成本满足较大的容量,又可保证整个系统的稳定性和可靠性。
图1VOD系统的结构
主服务器A和从服务器B上运行的程序包括WEB服务器程序、视频服务器程序和数据库系统3大块。WEB服务器向点播客户发送多媒体数据的描述文件,视频服务器监听客户的点播要求并作出相应的反应,数据库系统存储视频数据的详细信息,例如文件名、文件大小、文件所在服务器地址等,还存储用户的点播记录和其他所需信息。
图2最简单的点播流程
图2描述了一个正常的最简单的点播流程。客户端(比如机顶盒加上显示器)首先连接到主服务器A,通过HTTP得到所需视频数据的描述文件(description file),按照得到的文件名、地址发送SETUP消息,这时候的地址就是主播放器A的地址。主播放器A得到SETUP消息,在数据库中查询客户需要文件所在的服务器的地址,并在SETUP Response的消息中告诉客户端,具体是用到Location这一项表示用户需要多媒体文件的URL。用户接收到SETUP Response,按照接收到的地址发送PLAY消息,并做好准备接收数据,该地址对应的播放服务器(其实这个地址也可能是主服务器A或从服务器B,因为它们也可以存放有多媒体数据)接收到PLAY消息,发送回复消息PLAY Response,就开始给相应客户端发送数据,数据送完,客户端发TEARDOEN消息,服务器回复,这样一个完整的点播过程结束。
该VOD系统利用了RTSP的灵活性,使客户端最开始都将SETUP命令发送到主服务器A,而实际给客户提供数据的可能是别的服务器,实现了负载均衡,同时使得多媒体数据的管理也方便简单,只需要添加和删除文件的时候对数据库做相应的修改,这可以集成在一个管理系统中,利用数据库还可以开发更多其他的服务,比如点播计费等。
3RTSP文本编解码的设计实现
RTSP是基于文本的协议,采用ISO 10646字符集,使用UTF-8编码方案。协议中,行以CRLF中断,但接收者本身可将CR和LF解释成行终止符。
VOD服务器中的RTSP模块部分的作用:一是需要解释RTSP信令,并作出相应操作,如通知上层、直接回复等;二是按照上层的指令发送RTSP信令,对应的操作就需要对RTSP信令进行解码和编码,解码类似于编译原理里面的“词法分析”,通过对文本的分析,得到需要的信息,编码则相对简单,只需要按照协议规则把相关信息组合起来。
按照RTSP请求消息的结构可以将其分为RequestLine,Message Header和Message Body 3大部分,每一部分又可以分为很多小项,形成图3所示的树状的结构。
图3协议Request Message树状图
为了便于对消息的扩充,定义了Request Message的数据结构为:
typedef struct _rtsprequestMsg
{
int prestkn;//存在标记
RtspRequestLine requestLine;//RequestLine这一部分
RtspMsgHeader msgHeader;//Message Header这部分
RtspMessageBody messageBody;//Message Body这部分
}RtspRequestMsg;
可用prestkn表示解码输出是否正 确,RtspRequestLine,RtspMsgHeader和RtspMessageBody又有类似的结构,它们可以根据需要定义适合的数据结构,只是简单地增加和减少其中的项数,但是最上层的3大部分不需要修改,这样设计实现简单,而且便于维护。
解码的时候,分解需解码的字符串,一般是按照行结束符分解,因为1行就是1项,但可能从1项中得到多个参数。采用有限状态机的原理,搜索到相应的关键字,就可以得到协议中与关键字相关的参数的值。
编码的时候发出的是Status Message,它与Request Message结构极为相近,其数据结构不再详述。编码的时候,把要发出的参数的值填入相应的数据结构中,不存在的项将其prestkn置0,通过判断存在标记prestkn,对应协议规定的规则,根据存在的项的参数值,生成输出的信令字符串。
4结束语
本文介绍了流媒体技术和RTSP协议,提出一种灵活运用RTSP协议的VOD系统解决方案,并结合VOD系统对RTSP文本编解码进行了较深入的讨论,可为基于RTSP协议的各项应用提供参考。
分享到:
相关推荐
对于Java开发者来说,了解和掌握RTSP协议及其Java实现将有助于提升在多媒体服务开发领域的专业技能。通过深入研究和实践这个源代码,可以学习到网络协议的实现细节,以及如何在Java中处理实时流媒体数据,这对于开发...
在视频点播系统中,RTSP协议主要用于在客户端与服务器之间建立会话,支持诸如视频点播、直播回放、精彩回放、断点续播等功能及其之间的转换。 #### 三、RTSP协议的目的与范围 - **目的**:使机顶盒(STB)能够实现...
RTSP协议的设计考虑了与其他协议(如SDP、SIP)的协同工作,以实现更复杂的多媒体应用场景。 学习RFC 2326 RTSP文档对于理解流媒体技术,尤其是实时媒体传输和控制,是非常有益的。这个文档是开发者、系统架构师...
鉴于RTSP协议的广泛应用及其模块化特性,使其更易于扩展以适应不同的流媒体协议,研究聚焦于此,以期实现更广泛的互操作性。 #### RTSP协议简介 RTSP协议定义了一套控制实时媒体会话的标准,包括视频和音频流的...
1. **流媒体协议栈应用模型与实现机制**:处理RTSP、RTP/RTCP等协议,实现流媒体数据的请求、传输与控制。 2. **多节目复用传输流(TS)解析**:识别并分离不同节目的音频、视频和数据包。 3. **音视频媒体数据解码*...
2. **流媒体技术及其在视频点播VOD中的应用**:视频点播(Video On Demand,VOD)是流媒体的一种形式,文件可能介绍VOD系统的工作流程、技术架构以及VOD服务的挑战和解决方案。 3. **视频流媒体的QoS特征分析及质量...
- **基于Web和流媒体的校园网络视频点播系统:**这是一种利用流媒体技术构建的视频点播(VOD)系统,可以在学校内部网络上实现视频资源的在线点播。该系统可以为学生提供灵活的学习方式,教师也可以通过这种方式分享...
UDP(User Datagram Protocol):用户数据报协议,一种无连接的传输协议。UIM(Universal Integrated Circuit Card):通用集成电路卡,手机SIM卡的一种。URI(Uniform Resource Identifier):统一资源标识符,用于...
RTSP是一种应用层协议,用于控制实时流媒体数据的传输。在NGOD系统中,RTSP被用来管理视频点播会话,包括建立、控制和终止流媒体会话。通过RTSP,用户可以进行诸如播放、暂停、快进等操作,同时系统能够监控和管理多...
在描述中提到的"rtsp转rtsm好工具",RTSP(Real Time Streaming Protocol)是一种应用层协议,用于控制实时流的播放,而RTMP(Real Time Messaging Protocol)则常用于将音视频数据从服务器推送到客户端,如Adobe ...
IPTV,即交互式网络电视,是一种利用宽带网络传输电视信号的技术,融合了传统电视、互联网和电话服务。这份"IPTV故障处理方法介绍学习教案"主要涵盖了IPTV系统的架构、业务承载方式以及故障排查和处理的方法。 首先...
IPTV,全称Internet Protocol Television,即交互式网络电视,是一种利用宽带互联网传输协议,将电视内容分发到用户端的服务。这份名为"JLenotte.ppt"的PPT文件,显然为我们揭示了IPTV的工作流程及其详细说明。在...
IPTV是一种通过互联网传输电视内容的技术,它结合了传统电视的特性与互联网的优势。以下是关于IPTV及其相关技术的一些关键知识点: 1. **IPTV的基本概念**:IPTV利用IP网络(Internet Protocol Network)来传输音频...