RTP协议基本分析(RTSP、WebRTC使用)

发布网友 发布时间:2024-10-24 01:56

我来回答

1个回答

热心网友 时间:2024-11-07 23:39

实时流传输协议(RTSP:Real Time Streaming Protocol)是一种网络传输协议,旨在发送低延迟流。该协议由RealNetworks,Netscape和哥伦比亚大学的专家在1996年开发,用于定义应如何打包流中的数据以进行传输。

RTP协议负责对流媒体数据进行封包并实现媒体流的实时传输。它通过按照RTP数据包格式来封装流媒体数据,并利用与它绑定的协议进行数据包的传输。RTP协议可以在UDP和TCP两种方式下传输,虽然两种方式大致相同,但主要基于UDP的分析。

在RTP中,端口号从1025到65535之间的偶数UDP端口用于选择未使用的端口,而同一次会话中的RTCP则使用下一个基数UDP端口号。

在格式方面,同步信源是指产生媒体流的信源,如麦克风、摄像机、RTP混合器等。它通过RTP报头中的一个32位数SSRC标识符来标识,而接收者将根据SSRC标识符来区分不同的信源,进行RTP报文的分组。特约信源是指当混合器接收到一个或多个同步信源的RTP报文后,经过混合处理产生一个新的组合RTP报文,并把混合器作为组合RTP报文的SSRC,而将原来所有的SSRC都作为CSRC传送给接收者,使接收者知道组成组合报文的各个信源。

例如,当有三个信号源各发出一路rtp流时,RTP1携带的SSRC是SSRC1,RTP2携带的SSRC是SSRC2,RTP3携带SSRC3。这三路RTP流到达混合器时,混合器会将这三路流混合成一路流发出去,它会把这三路流的SSRC记录下来,形成一个列表,叫CSRC表,在发送的混合RTP流中,SSRC域填充的字段是混合器本身的SSRC4,而CSRC字段则会根据该包的负载的源来填入。

在RTP打包H264方面,H.264标准协议定义了两种不同的类型:一种是VCL即Video Coding Layer,一种是NAL即Network Abstraction Layer。其中,VCL是编码器吐出来的原始编码数据,而NAL是为了展现H.264的网络亲和性,对VCL输出的slice片数据进行了封装为NALUs(NAL Units),然后再封装为RTP包进行传输。

NALU的基本格式是:NALU Header + NALU Data。其中,NALU头由一个字节组成,用于确定NALU的类型。对于H264的打包方式,一个常见的做法是将一个NALU打包到一个单一的RTP包中,或者对于长度大于1400字节的NALU,采用FU-A的方式进行打包,即将大NALU切分成多个RTP包进行传输。

在RTP打包AAC方面,过程涉及AU-headers-length、AU-header和AU数据段的打包。AU-headers-length表示au-header的长度,单位是bit,一般音频都是单个音频数据流的发送,所以AU-headers-length的值是16。AU-header的高13个bits表示au的实际字节长度。AU数据段则包含音频实际数据。RTSP/SDP中的AAC配置包含streamtype、profile-level-id、config等参数,以及AU-Header数据段的格式。

在RTP协议的使用中,了解这些原理和细节对于音视频的实时传输和流媒体应用至关重要。通过掌握RTP协议的实现,开发者可以有效地构建高性能、低延迟的音视频通信系统。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com