流媒体传输协议之 RTP (上篇) (2)

此外,有些与会者可能处于应用级防火墙的后面,无法仅通过 IP 组播访问。这种情况下 Mixer 就没有什么意义了,他们需要另一类 RTP 级别的中继(Translator)。我们需要两个 Translator,安装在防火墙的两面,外面的 Translator 将收到的所有组播报文,通过一个安全连接传输给防火墙里面的 Translator。然后,防火墙里的 Translator 再将这些报文分发给内网的与会者。

层编码

多媒体应用可以根据接收者的能力或者网络拥堵的情况调整传输速率。许多实现将码率控制的责任放在了发送端。这和组播模式不太兼容,因为各个不同的数据接收者会有不同的带宽情况,这就会产生木桶效应,即带宽最差的接收者会拖垮整个会议的通讯质量。

因此,带宽自适应的工作应该放到接收者这里,发送者需要拆分出面向不同带宽与会者的媒体流(500K,2M,5M),它们分别对应了不同的组播地址,数据的接收者根据自己的带宽情况,选择加入适合的组播。

定义

RTP payload:RTP 包中传输的数据,比如音频采样数据或者压缩过的视频数据。

RTP packet:由定长 RTP 头部,数据来源者的列表,RTP payload 组成的数据包。一些下层协议可能会自己定义 RTP 的封装格式。一般来说,一个下层协议包只包含一个 RTP 包,但是也有可能多个 RTP 包被合并到一起。

RTCP packet:RTP 控制报文,由定长的 RTC 头部开始,之后会跟着一些结构化的元素,它们在 RTCP 发挥不同功能时,会有不同的结构。通常多个 RTCP 包会被合在一起,通过一个下层协议包一起发送。

Port:传输层协议中用来区分某一主机下不同应用的抽象。RTP 协议依赖更底层网络提供端口机制,继而提供多播的 RTP 和 RTCP 报文。

Transport address:网络地址和端口的组合,用来定位传输层的节点。

RTC media type:一个 RTP Session 中所用到的所有 payload 类型的合集。

Multimedia Session:视频会议组中同时工作的一组 RTP Session。例如,视频会议中的 Audio Session 和 Video Session。

RTP Session:一组参与者利用 RTP 来通讯的组合。一个参与者可以同时加入到多个 RTP Session 中。在 Multimedia Session 中,除非特意将多媒体编码进同一数据流,否则,每个数据流会通过不同的 RTP Session 传输。与会者通过 Transport address 来区分不同的 RTP Session。同一 RTP Session 的不同与会者会共享同一个 Transport address,也可能每个与会者都有自己的 Transport address。在单播的情况时,一个与会者可能用同一对端口(RTP&RTCP)来接收所有其他与会者的数据,也可能对不同的与会者采用不同的端口对(RTP&RTCP)。

Synchronization source (SSRC):RTP 报文流的一个 Source,由 RTP 头中定义的 32-bit 的 SSRC identifier 来标识,这样做是为了不依赖网络地址。同一个 SSRC 中发送的所有包都具有同一时序和序列号间隔,因此接收者可以通过 SSRC 将收到的数据包分组并排序。一个信号源(麦克风,摄像头,Mixer)的报文流会有由一个 SSRC 的发送器发送。一个 SSRC 可能会随着时间的变化,改变其数据格式,例如音频编码。SSRC 的身份识别码都是随机生成的,但是必须保证整个 RTP Session 中该身份识别码不会重复,这些工作是通过 RTCP 来完成的。如果一个与会者在一个 RTP Session 中发送不同的媒体数据流,那么每个流的 SSRC 必须不同。

Contributing source (CSRC):RTP Mixer 所混合的所有数据对应的 SSRC 的列表。Mixer 会将一个 SSRC 列表写入 RTP 头中,该列表包含了这个混合报文中包含的所有来源 SSRC。

End system:一个生成 RTP payload 和消费收到的 RTP payload 的应用。一个 End system 可以扮演一个或者多个 SSRC 角色,但是通常是一个。

Mixer:一个中介系统,它接收一个或多个 Source 的数据,随后它可能会改变这些数据的格式,并将它们合并为一个新的 RTP packet。因为,多个输入源的时序通常来说都不一致,所以 Mixer 通常会同步不同源的时间,并生成一个自己的时序来处理合并数据流。所有从 Mixer 输出的数据包都会标记上该 Mixer 的 SSRC。

Translator:一个中介系统,它会转发 RTP packet 但是不改变其原本的 SSRC。

Monitor:一个在 RTP Session 中接收 RTCP 报文的应用,它会总结数据被接收的报告,并为当前分发系统评估 QOS,诊断错误,长期统计。Monitor 可以集成进会议应用中,也可以是独立的第三方应用,只接收 RTCP 报文,但是什么都不发送。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygwjz.html