RTP处理的中间节点,除了普通的终端系统外,RTP还支持可以在会话中对媒体流进行操作的中间设备。RTP定义了两类中间设备:转换器和混音器。
转换器是一种中间设备系统,它在操作RTP数据时保持流的同步源和流媒体时间。例如,可以包含一个媒体编码格式转换,但是不混合这些媒体,在不同传输协议之间架桥的系统、添加或移除加密的系统,或者过滤媒体流的系统。除非RTP终端系统预先知道未转换的媒体,否则转换器对RTP终端协调来说是不可见的。
转换器
转换器有以下几个类别:
- 桥接器,桥接器是一对一的转换器,不改变媒体编码,例如,在不同传输协议之间的网关,如RTP/UDP/IP与RTP/ATM,或RTP/UDP/IPv4与RTP/UDP/IPv6。桥接器是转换器中最简单的类别,通常它们不会对RTP或RTCP数据造成任何改变。
- 转码器,转码器是一对一的转换器,改变媒体编码,例如,解码压缩数据并以不同的有效载荷格式重新编码,以更好地适应输出网络的特性。有效载荷类型通常会改变,填充值也可能改变,但其他RTP头字段通常保持不变。因为它们包含源比特率的计数,这些转换需要维护状态,以便可以调整RTCP发送方报告。
- 分发器,是一对多的转换器,能够接收单个数据包并产生多个数据包。例如,它们接收一个流,该流中的每个RTP包含有多个编解码器输出帧,然后生成每个包只包含单个帧的输出。生成的数据包具有相同的SSRC,但根据转换的需要,其他RTP头字段可能需要更改。这些转换需要维护双向状态:转换器必须调整传出的RTCP发送者报告以及返回的接收者报告以保持双方一致。
- 合并器,是多对一的转换器,它将多个数据包合并为一个。这是分发器的相反处理。
如果我们定义转换器特征的话,其主要特征是每个输入流产生一个单一的输出流,并且这两个流具有相同的SSRC。转换器本身不是RTP会话的参与者,它没有SSRC,也不自行生成RTCP——对其他参与者来说是不可见的。
混音器
混音器也是一种中间系统,它接收来自一组源的RTP数据包,并将它们合并成一个单一输出数据包,因为转发的原因,它可能会改变编码。
例如,包括的系统,在转发结果之前,例如网络对等设备音频混音台或视频画中画设备等。
由于输入流的时序通常不会同步,混音器需要自行调整以同步媒体后再将语音流合并,因此它成为了输出媒体流的同步源。混音器可能会使用每个到达媒体流的playout buffers缓冲区,以帮助保持流之间的时序关系。混音器拥有自己的SSRC,该SSRC被插入到它生成的数据包中。输入数据包中的SSRC标识符被复制到输出包的CSRC列表中。
混音器有一个独特的会话视角:它将所有源媒体视为一个同步的源,其他参与者则将这些数据源视为同步源,另外一些视为分发源。例如,在以下图例中,参与者X从三个同步源-Y、Z和M接收数据,而A和B为M发送的混合包中的分发源。参与者A将B和M视为同步源,而X、Y和Z对M有分发。混音器分别为会话的每一半生成RTCP发送者和接收者报告,并且不会在两每一半的会话之间转发这些报告。它会转发RTCP源描述和BYE包,以便让所有参与者都可以被识别。
使用相同的SSRC不是必须的要求,具体来说。混音器在会话的每个一半部分可以使用不同的SSRC。但它必须为其使用的所有SSRC标识符发送RTCP源描述和BYE数据包到使用的会话中。否则,其他参与者将不知道SSRC在另一半中正在使用,可能会发生冲突。
比较重要的是,跟踪每侧的转换器或混音器上存在哪些源数据是非常重要,可以方便检测到配置错误时产生的回环(例如,如果两个转换器或混音器并行连接,形成回环转发数据包)。如果检测到回环状态,转换器或混音器应马上停止操作,并记录尽可能多的关于回环原因的诊断信息。回环数据包中的源IP地址最有价值的,因为它标识了导致循环的主机地址,这样用户可以针对这个地址进行排查。
参考资料:https://github.com/irtlab/rtptools
作者:james.zhu
来源:SIP实验室
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。