RTP报文头中的SSRC和CSRC
以下内容转载自http://www.360doc.com/content/11/1009/15/496343_154624612.shtml
和https://www.cnblogs.com/yoyotl/p/5650101.html
同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。
·特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。
这里的同步信源是指产生媒体流的信源,例如麦克风、摄像机、RTP混合器等;它通过RTP报头中的一个32位数字SSRC标识符来标识,而不依赖于网络地址,接收者将根据SSRC标识符来区分不同的信源,进行RTP报文的分组。
特约信源是指当混合器接收到一个或多个同步信源的RTP报文后,经过混合处理产生一个新的组合RTP报文,并把混合器作为组合RTP报文的 SSRC,而将原来所有的SSRC都作为CSRC传送给接收者,使接收者知道组成组合报文的各个SSRC。
若一个RTP包流的源,对由RTP混频器生成的组合流起了作用,则它就是一个作用源。对特定包的生成起作用的源,其SSRC标识符组成的列表,被混频器插入到包的RTP报头中。这个列表叫做CSRC表。
用图表示大概是这样:
例如,有三个信号源各发出一路rtp流,RTP1携带的SSRC是SSRC1,RTP2携带的SSRC是SSRC2,RTP3携带SSRC3,这三路RTP流到达混合器时,混合器会将这三路流混合成一路流发出去,它会把这三路流的SSRC记录下来,形成一个列表,叫CSRC表,在发送的混合RTP流中,SSRC域填充的字段是混合器本身的SSRC4,而CSRC字段则会根据该包的负载的源来填入。
例如当前的RTP包的负载是来自SSRC1的,那么在当前RTP包的CSRC字段填入SSRC1。
这样接收者就可以根据CSRC来区分不同的信源;
一般的,混合的RTP流中,每隔一段时间,就会有一个RTP报文包含了完整的CSRC表。例如在发送混合流时的第一个RTP包,它的CSRC域把CSRC表都填入,此时该包的负载可能是无意义或者并不是媒体流;此后的RTP报文中则根据负载的来源来填入CSRC域。