
然后找到rtsp的文档。上面会有告诉你如何
rtp over tcp
实际上就是在软件的rtp包基础上
+一个'$'一个字节
+一个字节的通道号,区分rtp还是rtcp
+2个字节的包大小
就这么简单。当然这个只是在rtsp中的应用,你自己的协议中可以参考他的。
你也可以自己定义你喜欢的。扩展性更强的。
good luck。
还不错,希望你采纳。
RTP被定义为传输音频、视频、模拟数据等实时数据的传输协议,与传统的注重的高可靠的数据传输的传输层协议相比,它更加侧重的数据传输的实时性,此协议提供的服务包括数据顺序号、时间标记、传输控制等。
RTP一般与传输控制协议RTCP一块工作,RTP只负责实时数据的传输,RTCP负责对RTP的通讯和会话进行带外管理(如流量控制、拥塞控制、会话源管理等)。
RTP使用一个偶数端口号,而相应RTCP流使用下一个(奇数,递增)端口号。
先来看一下rtp和rtcp网络结构图:
RTP的数据包由RTP Header + RTP Playload组成,其中RTP固定头如下图所示,字段如下:
再看一下RTP完整的报文格式:
再来看看RTCP协议,RTCP协议将控制包周期发送给所有连接者,主要功能如下:
RTCP协议包括五种类型,这里只讨论SR和RR包。
SR包(SenderReport):发送者报告,当前活动发送者发送、接收统计;所谓发送端是指发出RTP数据报的应用程序或者终端,发送端同时也可以是接收端。由三部分组成,也可能还有第四个特定设置扩展部分。
第一部分为头:8个字节,如下:
第二部分为发送者信息:20个字节,如下:
第三部分包含接收报告快,大小不固定。每个接收报告块传送单个同步源接收RTP包的统计。发生冲突,当源改变SSRC标识时,接收者并不继续统计。这些统计包括:
RR包(ReceiverReport):接收者报告,非活动发送者接收统计,仅作为接收者(只接收rtp包)发送出去的包;所谓接收者是指仅接收但不发送RTP数据报的应用程序或者终端。包类型包含常数201,并删除发送者信息的20个字节。
各个字段解释如下:
最后通过LSR,DLSR可以计算RTT:
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)