当前位置:文档之家› VC+6+RTP流媒体传输协议编程实例(jrtplib)

VC+6+RTP流媒体传输协议编程实例(jrtplib)

资源下载:

http://biz.doczj.com/doc/769567518.html,/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://http://biz.doczj.com/doc/769567518.html,: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://biz.doczj.com/doc/769567518.html,/zouzheng/archive/2008/01/04/38449.html

下面的例子参考jrtplib的example1,加了解析负载的部分。

// RTPClient.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "rtpsession.h"

#include "rtppacket.h"

#include "rtpudpv4transmitter.h"

#include "rtpipv4address.h"

#include "rtpsessionparams.h"

#include "rtperrors.h"

#include

#include

#include

#include "windows.h"

#include

#include

using namespace std;

#pragma comment(lib,"jrtplib.lib")

#pragma comment(lib,"jthread.lib")

#pragma comment(lib,"WS2_32.lib")

void checkerror(int rtperr)

...{

if (rtperr < 0)

...{

std::cout << "ERROR: " << RTPGetErrorString(rtperr) << std::endl;

exit(-1);

}

}

int main(int argc, char* argv[])

...{

#ifdef WIN32

WSADATA dat;

WSAStartup(MAKEWORD(2,2),&dat);

#endif // WIN32

RTPSession sess;

uint16_t portbase,destport;

uint32_t destip;

std::string ipstr;

int status,i,num;

BYTE *pBuffer;

BYTE *pfBuffer;

//输入一些必要信息

std::cout << "Enter local portbase:" << std::endl;

std::cin >> portbase;

std::cout << std::endl;

std::cout << "Enter the destination IP address" << std::endl;

std::cin >> ipstr;

destip = inet_addr(ipstr.c_str());

if (destip == INADDR_NONE)

...{

std::cerr << "Bad IP address specified" << std::endl;

return -1;

}

destip = ntohl(destip);

std::cout << "Enter the destination port" << std::endl;

std::cin >> destport;

std::cout << std::endl;

std::cout << "Number of packets you wish to be sent:" << std::endl;

std::cin >> num;

// 创建RTP session

RTPUDPv4TransmissionParams transparams;

RTPSessionParams sessparams;

// IMPORTANT: The local timestamp unit MUST be set, otherwise // RTCP Sender Report info will be calculated wrong

// In this case, we'll be sending 10 samples each second, so we'll // put the timestamp unit to (1.0/10.0)

sessparams.SetOwnTimestampUnit(1.0/10.0);

sessparams.SetAcceptOwnPackets(true);

transparams.SetPortbase(portbase);

status = sess.Create(sessparams,&transparams);

checkerror(status);

RTPIPv4Address addr(destip,destport);

status = sess.AddDestination(addr);

checkerror(status);

for (i = 1 ; i <= num ; i++)

...{

printf(" Sending packet %d/%d ",i,num);

// 发送数据“1234567890”

status = sess.SendPacket((void *)"1234567890",10,0,false,10);

checkerror(status);

sess.BeginDataAccess();

// check incoming packets

if (sess.GotoFirstSourceWithData())

...{

do

...{

RTPPacket *pack;

while ((pack = sess.GetNextPacket()) != NULL)

...{

// You can examine the data here

printf("Got packet ! ");

std::cout << "Got packet with "

<< "extended sequence number "

<< pack->GetExtendedSequenceNumber()

<< " from SSRC " << pack->GetSSRC()

<< std::endl;

int dataLength = pack->GetPayloadLength();

pfBuffer =(unsigned char*)pack->GetPayloadData();

pBuffer = new BYTE[dataLength + 1];

memcpy(pBuffer, pfBuffer, dataLength);

pBuffer[dataLength] = 0;

std::cout << pBuffer << std::endl;

// we don't longer need the packet, so

// we'll delete it

sess.DeletePacket(pack);

}

} while (sess.GotoNextSourceWithData());

}

sess.EndDataAccess();

#ifndef RTP_SUPPORT_THREAD

status = sess.Poll();

checkerror(status);

#endif // RTP_SUPPORT_THREAD

RTPTime::Wait(RTPTime(1,0));

}

sess.BYEDestroy(RTPTime(10,0),0,0);

#ifdef WIN32

WSACleanup();

#endif // WIN32

return 0;

}编译注意修改每个Source File的code generation下的Use run-time library为Debug Multithreaded DLL。如图

关于jrtplib的环境,可以参考网上很多的资料,也可以从我的资源里下载,我已经编译好了相关lib,只要加的VC环境里就可以了。

执行测试程序的效果如下:

Enter local portbase:

8000

Enter the destination IP address

127.0.0.1

Enter the destination port

8000

Number of packets you wish to be sent:

5

Sending packet 1/5

Got packet !

Got packet with extended sequence number 59262 from SSRC 3029241192

1234567890

Sending packet 2/5

Got packet !

Got packet with extended sequence number 59263 from SSRC 3029241192

1234567890

Sending packet 3/5

Sending packet 4/5

Got packet !

Got packet with extended sequence number 59264 from SSRC 3029241192

1234567890

Got packet !

Got packet with extended sequence number 59265 from SSRC 3029241192

1234567890

Sending packet 5/5

上面执行的意思是程序自己开了8000端口,然后往自己的8000发送,所以不仅发送出去,还收到并解析出了内容。如果要往另外机器上发,另一个机器上也运行这个程序就可以了。当然可以专门再写一个接收端。

RTSP(实时流媒体协议)

rtsp简介(ZT) Real Time Streaming Protocol或者RTSP(实时流媒体协议),是由Real network 和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一种可扩展的框架,使能够提供能控制的,按需传输实时数据,比如音频和视频文件。源数据可以包括现场数据的反馈和存贮的文件。rtsp对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,rtsp作用相当于流媒体服务器的远程控制。传输数据可以通过传输层的tcp,udp协议,rtsp也提供了基于rtp传输机制的一些有效的方法。RTSP消息格式: RTSP的消息有两大类,一是请求消息(request),一是回应消息(response),两种 消息的格式不同. 请求消息: 方法URI RTSP版本CR LF 消息头CR LF CR LF 消息体CR LF 其中方法包括OPTION回应中所有的命令,URI是接受方的地址,例如 :rtsp://192.168.20.136 RTSP版本一般都是RTSP/1.0.每行后面的CR LF表示回车换行,需要接受端有相应的解析,最后一个消息头需要有两个CR LF 回应消息: RTSP版本状态码解释CR LF 消息头CR LF CR LF 消息体CR LF 其中RTSP版本一般都是RTSP/1.0,状态码是一个数值,200表示成功,解释是与状态码对应的文本解释. 简单的rtsp交互过程: C表示rtsp客户端,S表示rtsp服务端 1.C->S:OPTION request //询问S有哪些方法可用 1.S->C:OPTION response //S回应信息中包括提供的所有可用方法 2.C->S:DESCRIBE request //要求得到S提供的媒体初始化描述信息 2.S->C:DESCRIBE response //S回应媒体初始化描述信息,主要是sdp 3.C->S:SETUP request //设置会话的属性,以及传输模式,提醒S建立会 话 3.S->C:SETUP response //S建立会话,返回会话标识符,以及会话相关信息 4.C->S:PLAY request //C请求播放 4.S->C:PLAY response //S回应该请求的信息 S->C:发送流媒体数据 5.C->S:TEARDOWN request //C请求关闭会话 5.S->C:TEARDOWN response //S回应该请求

(完整)流媒体传输协议及音视频编解码技术

1.1音视频编解码技术 1.1.1 MPEG4 MPEG全称是Moving Pictures Experts Group,它是“动态图象专家组”的英文缩写,该专家组成立于1988年,致力于运动图像及其伴音的压缩编码标准化工作,原先他们打算开发MPEG1、MPEG2、MPEG3和MPEG4四个版本,以适用于不同带宽和数字影像质量的要求。 目前,MPEG1技术被广泛的应用于VCD,而MPEG2标准则用于广播电视和DVD等。MPEG3最初是为HDTV开发的编码和压缩标准,但由于MPEG2的出色性能表现,MPEG3只能是死于襁褓了。MPEG4于1999年初正式成为国际标准。它是一个适用于低传输速率应用的方案。与MPEG1和MPEG2相比,MPEG4更加注重多媒体系统的交互性和灵活性MPEG1、MPEG2技术当初制定时,它们定位的标准均为高层媒体表示与结构,但随着计算机软件及网络技术的快速发展,MPEG1、MPEG2技术的弊端就显示出来了:交互性及灵活性较低,压缩的多媒体文件体积过于庞大,难以实现网络的实时传播。而MPEG4技术的标准是对运动图像中的内容进行编码,其具体的编码对象就是图像中的音频和视频,术语称为“AV对象”,而连续的AV对象组合在一起又可以形成AV场景。因此,MPEG4标准就是围绕着AV对象的编码、存储、传输和组合而制定的,高效率地编码、组织、存储、传输AV 对象是MPEG4标准的基本内容。 在视频编码方面,MPEG4支持对自然和合成的视觉对象的编码。(合成的视觉对象包括2D、3D动画和人面部表情动画等)。在音频编码上,MPEG4可以在一组编码工具支持下,对语音、音乐等自然声音对象和具有回响、空间方位感的合成声音对象进行音频编码。 由于MPEG4只处理图像帧与帧之间有差异的元素,而舍弃相同的元素,因此大大减少了合成多媒体文件的体积。应用MPEG4技术的影音文件最显著特点就是压缩率高且成像清晰,一般来说,一小时的影像可以被压缩为350M左右的数据,而一部高清晰度的DVD电影, 可以压缩成两张甚至一张650M CD光碟来存储。对广大的“平民”计算机用户来说,这就意味着, 您不需要购置DVD-ROM就可以欣赏近似DVD质量的高品质影像。而且采用MPEG4编码技术的影片,对机器硬件配置的要求非常之低,300MHZ 以上CPU,64M的内存和一个8M显存的显卡就可以流畅的播放。在播放软件方面,它要求也非常宽松,你只需要安装一个500K左右的MPEG4 编码驱动后,用WINDOWS 自带的媒体播放器就可以流畅的播放了 AV对象(AVO,Audio Visual Object)是MPEG-4为支持基于内容编码而提出的重要概念。对象是指在一个场景中能够访问和操纵的实体,对象的划分可根据其独特的纹理、运动、形状、模型和高层语义为依据。在MPEG-4中所见的音视频已不再是过去MPEG-1、MPEG-2中图像帧的概念,而是一个个视听场景(AV场景),这些不同的AV场景由不同的AV对象组成。AV对象是听觉、视觉、或者视听内容的表示单元,其基本单位是原始AV对象,它可以是自然的或合成的声音、图像。原始AV对象具有高效编码、高效存储与传输以及可交互性的特性,它又可进一步组成复合AV对象。因此MPEG-4标准的基本内容就是对AV对象进行高效编码、组织、存储与传输。AV对象的提出,使多媒体通信具有高度交互及高效编码的能力,AV对象编码就是MPEG-4的核心编码技术。 MPEG-4不仅可提供高压缩率,同时也可实现更好的多媒体内容互动性及全方位的存取性,它采用开放的编码系统,可随时加入新的编码算法模块,同时也可根据不同应用需求现场配置解码器,以支持多种多媒体应用 1.1.2 H264 H.264是由ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)联合组建的联合视频组(JVT:joint video team)提出的一个新的数字视频编码标准,

rtmp流媒体协议

H5视频直播扫盲 1 H5到底能不能做视频直播 当然可以, H5火了这么久,涵盖了各个方面的技术。 对于视频录制,可以使用强大的webRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的技术,缺点是只在PC的chrome上支持较好,移动端支持不太理想。 对于视频播放,可以使用HLS(HTTP Live Streaming)协议播放直播流,ios和android都天然支持这种协议,配置简单,直接使用video标签即可。 webRTC兼容性: video标签播放hls协议视频:

1 2 3 4

Your browser does not support HTML5 video. 2 到底什么是HLS协议 简单讲就是把整个流分成一个个小的,基于HTTP的文件来下载,每次只下载一些,前面提到了用于H5播放直播视频时引入的一个.m3u8的文件,这个文件就是基于HLS协议,存放视频流元数据的文件。 每一个.m3u8文件,分别对应若干个ts文件,这些ts文件才是真正存放视频的数据,m3u8文件只是存放了一些ts文件的配置信息和相关路径,当视频播放时,.m3u8是动态改变的,video标签会解析这个文件,并找到对应的ts文件来播放,所以一般为了加快速度,.m3u8放在web服务器上,ts文件放在cdn上。 .m3u8文件,其实就是以UTF-8编码的m3u文件,这个文件本身不能播放,只是存放了播放信息的文本文件: 1 2 3 4 5#EXTM3U m3u文件头 #EXT-X-MEDIA-SEQUENCE 第一个TS分片的序列号#EXT-X-TARGETDURATION 每个分片TS的最大的时长#EXT-X-ALLOW-CACHE是否允许cache #EXT-X-ENDLISTm3u8文件结束符

RTSP协议学习笔记(学习流媒体的时候自己总结的)

RTSP协议学习笔记 目录 RTSP协议学习笔记 (1) 第一部分:RTSP协议 (2) 一、RTSP协议概述 (2) 二、RTSP协议与HTTP协议区别 (2) 三、RTSP重要术语 (3) 1.集合控制(Aggregate control ): (3) 2.实体(Entity): (3) 3.容器文件(Container file): (3) 4.RTSP会话(RTSP session ): (3) 四、RTSP请求消息 (3) 1.消息格式: (3) 五、RTSP回应消息 (4) 1.消息格式: (4) 六、RTSP 重要方法 (4) 1. OPTIONS: (4) 2. DESCRIBE: (5) 3. SETUP: (6) 4. PLAY: (7) 5. PAUSE: (8) 6. TEARDOWN: (8) 七、RTSP重要头字段参数 (9) 1.Accept: (9) 2.Bandwidth: (9) 3. CSeq: (9) 4. Rang: (9) 5.Session: (9) 6.Transport: (9) 八、简单的RTSP消息交互过程 (10) 1.第一步:查询服务器端可用方法 (10) 2.第二步:得到媒体描述信息 (10) 3.第三步:建立RTSP会话 (10) 4.第四步:请求开始传送数据 (10) 5.第五步:数据传送播放中 (10) 6.第六步:关闭会话,退出 (10) 第二部分:SDP协议 (11) 一、SDP协议概述 (11) 二、SDP格式 (11) 三、SDP示例 (12) 第三部分:MMS协议 (13) 一、MMS协议概述 (13)

流媒体传输协议及音视频编解码技术

1.1 音视频编解码技术 1.1.1 MPEG4 MPEG全称是Moving Pictures Experts Group,它是“动态图象专家组”的英文缩写,该专家组成立于1988年,致力于运动图像及其伴音的压缩编码标准化工作,原先他们打算开发MPEG1、MPEG2、MPEG3和MPEG4四个版本,以适用于不同带宽和数字影像质量的要求。 目前,MPEG1技术被广泛的应用于VCD,而MPEG2标准则用于广播电视和DVD 等。MPEG3最初是为HDTV开发的编码和压缩标准,但由于MPEG2的出色性能表现, MPEG3只能是死于襁褓了。MPEG4于1999年初正式成为国际标准。它是一个适用于低传输速率应用的方案。与MPEG1和MPEG2相比,MPEG4更加注重多媒体系统的交互性和灵活性 MPEG1、MPEG2技术当初制定时,它们定位的标准均为高层媒体表示与结构,但随着计算机软件及网络技术的快速发展,MPEG1、MPEG2技术的弊端就显示出来了:交互性及灵活性较低,压缩的多媒体文件体积过于庞大,难以实现网络的实时传播。而MPEG4技术的标准是对运动图像中的内容进行编码,其具体的编码对象就是图像中的音频和视频,术语称为“AV对象”,而连续的AV对象组合在一起又可以形成AV场景。因此,MPEG4标准就是围绕着AV对象的编码、存储、传输和组合而制定的,高效率地编码、组织、存储、传输AV对象是MPEG4标准的基本内容。 在视频编码方面,MPEG4支持对自然和合成的视觉对象的编码。(合成的视觉对象包括2D、3D动画和人面部表情动画等)。在音频编码上,MPEG4可以在一组编码工具支持下,对语音、音乐等自然声音对象和具有回响、空间方位感的合成声音对象进行音频编码。 由于MPEG4只处理图像帧与帧之间有差异的元素,而舍弃相同的元素,因此大大减少了合成多媒体文件的体积。应用MPEG4技术的影音文件最显著特点就是压缩率高且成像清晰,一般来说,一小时的影像可以被压缩为350M左右的数据,而一部高

视频编解码和流媒体协议.

RTP 参考文档 RFC3550/RFC3551 Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的。 RTP 本身并没有提供按时发送机制或其它服务质量(QoS)保证,它依赖于低层服务去实现这一过程。 RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性。 RTP 实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。 RTP 由两个紧密链接部分组成: RTP ―传送具有实时属性的数据;RTP 控制协议(RTCP)―监控服务质量并传送正在进行的会话参与者的相关信息。 RTCP 实时传输控制协议(Real-time Transport Control Protocol或RTP Control Protocol或简写RTCP)是实时传输协议(RTP)的一个姐妹协议。RTCP为RTP媒体流提供信道外(out-of-band)控制。RTCP本身并不传输数据,但和RTP一起协作将多媒体数据打包和发送。RTCP定期在流多媒体会话参加者之间传输控制数据。RTCP的主要功能是为RTP 所提供的服务质量(Quality of Service)提供反馈。 RTCP收集相关媒体连接的统计信息,例如:传输字节数,传输分组数,丢失分组数,jitter,单向和双向网络延迟等等。网络应用程序可以利用RTCP所提供的信息试图提高服务质量,比如限制信息流量或改用压缩比较小的编解码器。RTCP本身不提供数据加密或身份认证。SRTCP可以用于此类用途。 SRTP & SRTCP 参考文档 RFC3711 安全实时传输协议(Secure Real-time Transport Protocol或SRTP)是在实时传输协议(Real-time Transport Protocol或RTP)基础上所定义的一个协议,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。它是由David Oran(思科)和Rolf Blom(爱立信)开发的,并最早由IETF于2004年3 月作为RFC3711发布。

RTSP中文版(实时流媒体协议)

E-mail:bryanj@http://biz.doczj.com/doc/769567518.html, 译者:Bryan.Wong(王晶,宁夏固原) 译文版本:alpha 0.80 译文发布时间:2007-7-25 版权:本中文翻译文档之版权归王晶所有。可于非商业用途前提下自由转载,但必须保留此翻译及版权信息。 http://biz.doczj.com/doc/769567518.html,/filedownload?user=bryanj&id=611206 网络工作组 H. Schulzrinne 请求注释: 2326 哥伦比亚大学. 类别: 标准跟踪 A. Rao Netscape R. Lanphier RealNetworks 1998年4月 实时流协议(RTSP) 本备忘录状态 本文为Internet社区描述了一种Internet标准跟踪协议,还需要讨论和建议以便进行改善。请查看最新版本的"Internet正式协议标准"(STD 1)了解本协议的标准化进程和状态。本备忘录的传播不受限制。 版权声明: 版权为The Internet Society 所有。所有权利保留。 摘要: 实时流协议(RTSP)是应用层协议,控制实时数据的传送。RTSP提供了一个可扩展框架,使受控、按需传输实时数据(如音频与视频)成为可能。数据源包括现场数据与存储在剪辑中的数据。本协议旨在于控制多个数据发送会话,提供了一种选择传送途径(如UDP、组播UDP与TCP)的方法,并提供了一种选择基于RTP (RFC1889)的传送机制的方法。

目录: 1 介绍 1.1 目的 1.2 要求 1.3 术语 1.4 协议特性 1.5 RTSP扩展 1.6 整体运作 1.7 RTSP状态 1.8 与其他协议的关系 2 符号协定 3 协议参数 3.1 RTSP版本 3.2 RTSP URL 3.3 会议标识 3.4 会话标识 3.5 SMPTE 相对时间戳 3.6正常播放时间 3.7 绝对时间 3.8 选项标签 3.8.1 用IANA注册新的选项标签*4 RTSP消息 4.1 消息类型 4.2 消息头

VC+6+RTP流媒体传输协议编程实例(jrtplib)

资源下载: http://biz.doczj.com/doc/769567518.html,/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://http://biz.doczj.com/doc/769567518.html,: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://biz.doczj.com/doc/769567518.html,/zouzheng/archive/2008/01/04/38449.html 下面的例子参考jrtplib的example1,加了解析负载的部分。 // RTPClient.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "rtpsession.h"

http视频流传输协议

竭诚为您提供优质文档/双击可除 http视频流传输协议 篇一:流媒体传输技术 流媒体科技名词定义中文名称:流媒体英文名称:streamingmedia定义:采用流式传输的方式在因特网与内联网播放的媒体格式。应用学科:通信科技(一级学科);服 务与应用(二级学科)以上内容由全国科学技术名词审定委员会审定公布求助编辑百科名片所谓流媒体是指采用流式 传输的方式在internet播放的媒体格式。流媒体又叫流式 媒体,它是指商家用一个视频传送服务器把节目当成数据包发出,传送到网络上。用户通过解压设备对这些数据进行解压后,节目就会像发送前那样显示出来。目录 a/V服务器建立联系,是为了能够把服务器的输出重定 向到一个不同于运行a/Vhelper程序所在客户机的目的地址。实现流式传输一般都需要专用服务器和播放器,其基本原理如图所示。 智能流技术(surestream) 今天,28.8kbps调制解调器是internet连接的基本速率,cablemodem、adsl、dss、isdn等发展快,内容提供商

不得不要么限制发布媒体质量,要么限制连接人数。根据Realnetwork站点统计,对28.8kbps调制解调器,实际流量为10bps到26kbps,呈钟形分布,高峰在20kbps。这意味着若内容提供商选择20kbps固定速率,将有大量用户得不到好质量信号,并可能停止媒体流而引起客户端再次缓冲,直到接收足够数据。一种解决方法是服务器减少发送给客户端的数据而阻止再缓冲,在Realsystem5.0中,这种方法称为“视频流瘦化”。这种方法的限制是RealVideo文件为一种数据速率设计,结果可通过抽取内部帧扩展到更低速率,导致质量较低。离原始数据速率越远,质量越差。另一种解决方法是根据不同连接速率创建多个文件,根据用户连接,服务器发送相应文件,这种方法带来制作和管理上的困难,而且,用户连接是动态变化的,服务器也无法实时协调。智能流技术通过两种途径克服带宽协调和流瘦化。首先,确立一个编码框架,允许不同速率的多个流同时编码,合并到同一个文件中;第二,采用一种复杂客户/服务器机制探测带宽变化。 针对软件、设备和数据传输速度上的差别,用户以不同带宽浏览音视频内容。为满足客户要求,progressivenetworks公司编码、记录不同速率下媒体数据,并保存在单一文件中,此文件称为智能流文件,即创建可扩展流式文件。当客户端发出请求,它将其带宽容量传给服务

视频编解码和流媒体协议

RTP 参考文档RFC3550/RFC3551 Real-time Tran sport Protocol)是用于In ternet 上针对多媒体数据流的一 种传输层协议。RTP协议详细说明了在互联网上传递音频和视频的标准数据包格式。RTP协议常用于流媒体系统(配合RTCP协议),视频会议和一键通(Push to Talk )系统(配合 H.323或SIP),使它成为IP电话产业的技术基础。RTP协议和RTP控制协议RTCP一起使用,而且它是建立在UDP协议上的。 RTP本身并没有提供按时发送机制或其它服务质量(QoS保证,它依赖于低层服务去实现这一过程。RTP并不保证传送或防止无序传送,也不确定底层网络的可靠 性。RTP实行有序传送,RTP中的序列号允许接收方重组发送方的包序列,同时序列号也 能用于决定适当的包位置,例如:在视频解码中,就不需要顺序解码。 RTP由两个紧密链接部分组成:RTP —传送具有实时属性的数据;RTP控制协议(RTCP —监控服务质量并传送正在进行的会话参与者的相关信息。 RTCP 实时传输控制协议(Real-time Tran sport Control Protocol 或RTP Co ntrol Protocol或简写RTCP是实时传输协议(RTR的一个姐妹协议。RTCP为RTP媒体流提供信道外(out-of-band )控制。RTCP本身并不传输数据,但和RTP一起协作将多媒体数据打 包和发送。RTCP定期在流多媒体会话参加者之间传输控制数据。RTCP的主要功能是为RTP 所提供的服务质量(Quality of Service )提供反馈。 RTCP收集相关媒体连接的统计信息,例如:传输字节数,传输分组数,丢失 分组数,jitter ,单向和双向网络延迟等等。网络应用程序可以利用RTCP所提供的信息试 图提高服务质量,比如限制信息流量或改用压缩比较小的编解码器。RTCP本身不提供数据 加密或身份认证。SRTCP可以用于此类用途。 SRTP & SRTCP 参考文档RFC3711 安全实时传输协议(Secure Real-time Tran sport Protocol 或SRTP 是在实时传输协议(Real-time Tran sport Protocol或RTF)基础上所定义的一个协议,旨在为单播和多播应用程序中的实时传输协议的数据提供加密、消息认证、完整性保证和重放保护。

流媒体传输协议

流媒体传输协议 在基于IP的网络中,用于多媒体数据实时传输的协议通常有四种,即资源预留协议(Resource Reservation Protocol , RSVP)、实时流协议(Real-TimeStreaming Protocol, RTSP)和实时传输协议(Real-Time Transport Protocol, RTP)及实时控制协议(Real-Time Control Protocol, RTCP) 。 RSVP被主机用来为特定应用流向网络请求一定的服务质量(QoS)[5],它也被路由器用来在节点间传送这种服务质量请求,从而建立能提供特定服务质量的状态,并维护这种状态。资源预留协议最终将在数据流的路径上预留相应的资源(主要包括内存资源和CPU资源)。 实时流协议RTSP是由Real Networks和Netscape共同提出的,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。与HTTP相比,HTTP传送HTML,而RTP传送的是多媒体数据。HTTP请求由客户机发出,服务器响应请求;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。 RTP被定义为在一对一或一对多传输的情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,它本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。RTCP和RTP一起提供流量控制和拥塞控制服务,它们配合使用,能够以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。 流媒体协议栈如下图所示: 图1流媒体协议栈‘” Fig. 1 Streaming video protocol stack 在发送方的数据面,压缩且经过ASF编码的视频数据被读出并在RTP/RTCP/RTSP层上打包,提供定时和同步信息以及包的序列号。然后把这些打包的RTP数据流发送到UDP/TCP 层和IP层,得到的IP包在网络上传输。在接收方则按照相反的方向处理。在控制面,RTCP 包和RTSP包在UDP/TCP层上复用,并且被送到IP层,以便通过网络传输[4] 1. 1、RTP协议

RTSP中文版(实时流媒体协议)资料

实时流协议(RTSP) 本文为Internet社区描述了一种Internet标准跟踪协议,还需要讨论和建议以便进行改善。请查看最新版本的"Internet正式协议标准"(STD 1)了解本协议的标准化进程和状态。本备忘录的传播不受限制。 版权声明: 摘要: 实时流协议(RTSP)是应用层协议,控制实时数据的传送。RTSP提供了一个可扩展框架,使受控、按需传输实时数据(如音频与视频)成为可能。数据源包括现场数据与存储在剪辑中的数据。本协议旨在于控制多个数据发送会话,提供了一种选择传送途径(如UDP、组播UDP与TCP)的方法,并提供了一种选择基于RTP (RFC1889)的传送机制的方法。 目录: 1 介绍 1.1 目的 1.2 要求 1.3 术语 1.4 协议特性 1.5 RTSP扩展 1.6 整体运作 1.7 RTSP状态 1.8 与其他协议的关系 2 符号协定 3 协议参数 3.1 RTSP版本 3.2 RTSP URL 3.3 会议标识 3.4 会话标识 3.5 SMPTE 相对时间戳 3.6正常播放时间 3.7 绝对时间

3.8 选项标签 3.8.1 用IANA注册新的选项标签*4 RTSP消息 4.1 消息类型 4.2 消息头 4.3 消息主体 4.4 消息长度 *5 普通头部段 *6 请求 6.1 请求行 6.2 请求消息头段 *7 响应 7.1 状态行 7.1.1 状态码和原因短语 7.1.2 响应头部段 *8 实体 8.1 实体头部域 8.2 实体主体24 *9 连接 9.1 流水线化25 9.2 可靠性及确认25 *10 方法定义25 10.1 可选项26 10.2 描述26 10.3 通知26 10.4 建立26 10.5 播放27 10.6 暂停27 10.7 断开27 10.8 获取参数28

相关主题