资源下载:
http://download.csdn.net/source/444512
实时流协议 RTSP(RealTimeStreamingProtocol)是由 RealNetworks 和 Netscape 共同提出的,该协议定
义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。RTSP 在体系结构上位于 RTP(实时传输)
和 RTCP(实时控制)之上,它使用 TCP 或 RTP 完成数据传输。 HTTP 与 RTSP 相比,HTTP 传送
HTML,而 RTP 传送的是多媒体数据。HTTP 请求由客户机发出,服务器作出响应;使用 RTSP 时,客户
机和服务器都可以发出请求,即 RTSP 可以是双向的。
实时流协议(RTSP)是应用级协议,控制实时数据的发送。RTSP 提供了一个可扩展框架,使实时数据,
如音频与视频,的受控、点播成为可能。
RTSP 是应用级的协议,完成多媒体服务器的远程控制,控制信息的传输可以使用 TCP,控制指令包括如:
Setup、Play、Record、Pause、Teardwon 等等。
对于流媒体应用,用户和服务器都可以发出请求,请求包括几种连接方法:持久、每个请求 /响应传输一
个连接、无连接。
常见的 URL 流媒体地址如:
rtsp://media.example.com:554
RTP 数据报组成:Header + Payload
RTCP:应用程序启动 RTP 会话时将同时占用两个端口,供 RTP 和 RTCP 使用。
如果有必要,RTP 使用时可以有两个伴随文档:1)配置文档,定义负载的编码类型和格式。2)负载格
式的规范文档。
在流传输过程中,有两类服务完成对流的转发处理:
1)译流服务器 Translator,进入的流在流出时发生变化,作用之一是更好地穿越防火墙。
2)混流服务器 Mixer,多个流进入,合并后变成一个流流出。
由于进入的流可能有多个源,比如视频会议,会有多个话筒和视频头等等情况,对于 RTP 来说,就有一
个同步化源的问题,因此,RTP 协议中用 SSRC(Synchronization Source)字段来供 Mixer 实现同步功
能。
Translator 的一个作用是多播变成多个单播。
为了提供播放和回放功能,RTP 提供时间标签+序列号,在流动的概念中,时间标签是最重要的信息。
RTP 报文不提供长度和报文边界的描述。
RTP 虽然是传输层协议,但没有在 OSI 体系中作为单独的层来使用。
RTP 是目前解决流媒体实时传输问题的最好办法,如果要开发,可以选择 JRTPLIB 库。JRTPLIB 是一个
面向对象的 RTP 库,它完全遵循 RFC 1889 设计。JRTPLIB 是一个用 C++语言实现的 RTP 库,目前已经
可以运行在 Windows、Linux、FreeBSD、Solaris、Unix 和 VxWorks 等多种操作系统上。
了解更多 RTP 参考:
http://www.cnitblog.com/zouzheng/archive/2008/01/04/38449.html
下面的例子参考 jrtplib 的 example1,加了解析负载的部分。
// RTPClient.cpp : Defines the entry point for the console application.
//
- 1
- 2
前往页