资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,*,编解码及RTP协议,回顾,SIP协议概述,SIP消息,OSIP库的使用,本章目标,音频编解码,RTP协议概述,对RTP协议进行封装,流媒体简介,随着Internet 的日益普及,在网络上传输的数据已,经不再局限于文字和图形,而是逐渐向声音和视频,等多媒体格式过渡。目前在网络上传输音频/视频,(Audio/Video,简称A/V)等多媒体文件时,基本,上只有下载和流式传输两种选择。,流,流(Streaming)是近年在Internet上出现的新概,念,其定义非常广泛,主要是指通过网络传输多媒,体数据的技术总称。流媒体包含广义和狭义两种内,涵:广义上的流媒体指的是使音频和视频形成稳定,和连续的传输流和回放流的一系列技术、方法和协,议的总称,即流媒体技术;狭义上的流媒体是相对,于传统的下载-回放方式而言的,指的是一种从,Internet上获取音频和视频等多媒体数据的新方,法,它能够支持多媒体数据流的实时传输和实时播,放。,流媒体传输实现,实现流媒体传输主要有两种方法:,顺序流(progressive streaming)传输,实时流(realtime streaming)传输,顺序流传输,顺序流传输采用顺序下载的方式进行传输,在下载,的同时用户可以在线回放多媒体数据,但给定时刻,只能观看已经下载的部分,不能跳到尚未下载的部,分,也不能在传输期间根据网络状况对下载速度进,行调整。由于标准的HTTP服务器就可以发送这种形,式的流媒体,而不需要其他特殊协议的支持,因此,也常常被称作 HTTP流式传输。顺序流式传输比较,适合于高质量的多媒体片段,如片头、片尾或者广,告等。,实时流传输,实时流式传输保证媒体信号带宽能够与当前网络状,况相匹配,从而使得流媒体数据总是被实时地传,送,因此特别适合于现场事件。实时流传输支持随,机访问,即用户可以通过快进或者后退操作来观看,前面或者后面的内容。从理论上讲,实时流媒体一,经播放就不会停顿,但事实上仍有可能发生周期性,的暂停现象,尤其是在网络状况恶化时更是如此。,与顺序流传输不同的是,实时流传输需要用到特定,的流媒体服务器,而且还需要特定网络协议的支持。,流媒体传输协议,实时传输协议RTP和TRCP:RTP是用于Internet/Intranet针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多传输的情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,但RTP也可以在TCP或ATM等其他协议上工作。,整个RTP协议由两个密切相关的部分组成:RTP数据协议和RTP控制协议,实时流协议RTSP,实时流协议RTSP是由RealNetWorks和Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。,RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输,资源预定协议RSVP,由于音频和视频数据流比传统数据对网络的延时更敏感,要在网络中传输高质量的音频、视频信息,除带宽要求之外,还需要其他更多的条件。,RTP协议,RTP是一种提供端对端传输服务的实时传输协议,用来支持在单目标广播和多目标广播网络服务中传输实时数据,RTP是传输层上的协议,RTP可以看成是传输层的子层。由多媒体应用程序生成的声音和电视数据块被封装在RTP信息包中,每个RTP信息包被封装在UDP消息段中,然后再封装在IP数据包中,RTP和UDP之间的接口,从应用开发人员的角度来看,可把RTP执行程序看成是应用程序的一部分,因为开发人员必需把RTP集成到应用程序中。,在发送端,开发人员必需把执行RTP协议的程序写入到创建RTP信息包的应用程序中,然后应用程序把RTP信息包发送到UDP的套接接口,RTP头,RTP头域(21),名称,说明,版本(v),2位,标识RTP版本,填充标识(P),1位,如设置填充位,在包尾将包含附加填充字,它不属于有效载荷,扩展(X),1位,如设置扩展位,固定头后跟一个扩展头,CSRC计数(CC),4位,CSRC计数包括紧接在固定头后CSRC标识符个数,标识(M),1位,标识解释由设置定义,目的在于允许重要事件在包流中标识出来,,载荷类型(PT),7位,记录后面资料使用哪种codec,接收端找出相应的decoder解码出来,RTP头域(22),名称,说明,系列号,16位,系列号随每个RTP数据包而增加1,由接收者用来探测包损失,系列号初值是随机的,使对加密的文本攻击更难,时标,32位,时标反映RTP数据包中第一个八进制数的采样时刻,采样时刻必须从单调、线性增加的时钟导出,以允许同步与抖动计算,SSRC,32位,标识同步源,此标识不是随机选择的,目的在于使同一RTP包连接中没有两个同步源有相同的SSRC标识,CSRC列表,0到15项,每项32位。CSRC列表表示包内的对载荷起作用的源。标识数量由CC段给出。如超出15个作用源,也仅标识15个,CSRC记数(CC),表示CSRC标识的数目。CSRC标识紧跟在RTP固,定头部之后,用来表示RTP数据报的来源,RTP协,议允许在同一个会话中存在多个数据源,它们可以,通过RTP混合器合并为一个数据源。例如,可以产,生一个CSRC列表来表示一个电话会议,该会议通,过一个 RTP混合器将所有讲话者的语音数据组合为,一个RTP数据源。,负载类型,标明RTP负载的格式,包括所采用的编码算法、采,样频率、承载通道等。例如,类型2表明该RTP数据,包中承载的是用ITU G.721算法编码的语音数据,采,样频率为8000Hz,并且采用单声道,序列号,用来为接收方提供探测数据丢失的方法,但如何处,理丢失的数据则是应用程序自己的事情,RTP协议,本身并不负责数据的重传。,时间戳,记录了负载中第一个字节的采样时间,接收方根据,时间戳能够确定数据的到达是否受到了延迟抖动的,影响,但具体如何来补偿延迟抖动则是应用程序自,己的事情。,音频编解码类型,G7231编解码,G729编解码,G7231编解码用法,编码初始化,Init_Coder(),编码函数,Coder(short*,char*),解码初始化,Init_Decod(),解码函数,Decod(short*,char*,short),G729编解码,编码初始化,va_g729a_init_encoder();,编码函数,va_g729a_encoder(short*,(unsigned char*),解码初始化,va_g729a_init_decoder(),解码函数,va_g729a_decoder(unsigned char*,short*,int),网际通信的前提,通,信,一,方,通,信,一,方,协议,A机,B机,通信双方的约定即协议:包括数据格式、传送速度、步骤、控制字符定义等,通信双方,双方约定即协议,协议,为进行网络中的数据交换(通信),而建立的规则、标准或约定。,(=语义+语法+规则),通信中常见的协议,IP,协议,/ICMP,协议,TCP/UDP,协议,FTP,协议,SMTP/POP3,协议,HTTP,协议,Telnet,协议,ARP,协议,统称为“TCP/IP协议”,INTERNET网络基础,自定义协议,按照具体业务需要,按照一定标准定义的,协议,多方聊天室协议概述,名称,协议描述,USER_LOGIN_REQ,用户登录入聊天室请求,使用用户名,无需密码,USER_LOGIN_RES,用户登录聊天室响应,如果用户名已存在,则要求用户用其他用户名登录,USER_PRIVATE_TEXT,用户发言请求,私聊,USER_BROAD_TEXT,用户发言,广播给所有用户,USER_LOGOFF,用户离开聊天室,SRV_USER_LIST,服务器端发送当前用户列表,SRV_PRIVAT_TEXT,服务器端转发的私聊内容,SRV_BROAD_TEXT,服务器端广播某个用户的文本消息,SRV_BROAD_USR_LOGIN,服务器端广播某个用户上线,SRV_BROAD_USR_LOGOFF,服务器端广播某个用户离线,多方聊天室协议具体描述,名称,协议描述,USER_LOGIN_REQ,用户名称:16 字节,USER_LOGIN_RES,登录结果:1字节,0 x00:表示登录成功,0 x01:登录失败,USER_PRIVATE_TEXT,私聊对象用户名:16字节,私聊内容:1024字节以下,USER_BROAD_TEXT,发言内容:1024字节以下,USER_LOGOFF,用户名称:16字节,SRV_USER_LIST,成员个数:4字节,成员名称:16字节(有多少个成员,就有多少个该单元),SRV_BROAD_TEXT,文本内容:1024字节以下,SRV_PRIVAT_TEXT,发起方用户名:16字节,文本内容:1024字节以下,SRV_BROAD_USR_LOGIN,用户名:16字节,SRV_BROAD_USR_LOGOFF,用户名:16字节,多方聊天室服务器端模块,多方聊天室客户端模块划分,用户登录消息流程,用户私聊消息流程,用户公聊消息流程,用户下线消息流程,多方聊天室服务器端类图,多人聊天室客户端类图,总结,音频编解码,RTP协议概述,对RTP协议进行封装,
展开阅读全文