3CX支持的语音编码及编码协商

本篇文章我们将介绍3CX支持的编解码(Codecs)以及如何与SIP中继提供商协商呼入和呼出电话的编解码,以及如何构建SDP和3CX从何处获取信息。

3CX支持的编解码(Codecs)

  • 711a / 8000Hz / payload type 8
  • 711u / 8000Hz / payload type 0
  • 722 / 8000Hz / payload type 9
  • 729a / 8000Hz / payload type 18
  • GSM-FR / 8000Hz / payload type 3
  • iLBC / 8000Hz / payload type 111
  • Speex / 8000Hz / payload type 97
  • opus / 48000Hz / palyload type 112
  • telephone-event 96-127 / 8000Hz

G.729a的特别说明,必须接受媒体属性“annexb = no”。 此外,G.729a不接受VAD(语音激活检测)。

如果上述任何一项不适用,G.729a的协商将失败。

编解码(Codecs)协商

编解码(Codecs)顺序

3CX中的编解码器优先级可以基于每个SIP中继进行配置,并且可以通过SIP中继设置中的“选项”选项卡在“编解码器优先级”部分中完成。

从这里开始,可以删除,添加编解码器并更改其顺序。 建议删除不必要的编解码器以减少传出INVITE消息的MTU /数据包大小。 以下各节将解释编解码器的顺序如何影响编解码器协商。

呼出电话

当通过SIP中继为呼出电话创建INVITE消息时,3CX将按照它们在“编解码优先级”部分中配置的确切顺序将编解码放入SDP。

如果200 OK中的供应商使用一个或多个编解码进行响应,则3CX将使用200 OK中找到的最顶层编解码。

除音频编解码器外,3CX还将把telephone-event 101编解码添加到SDP,以便通过RFC2833传输DTMF音调。 如果200 OK中的SIP中继也不包含此项,则不会通过RFC2833传输DTMF编解码器。

请注意,3CX默认不发送in-band DTMF音,它依赖于注册终端这样做,因此如果终端确实发送in-band DTMF音,则3CX将转达它。

呼入电话

在收到来自SIP中继提供商的INVITE后,3CX将分析INVITE中编解码的顺序,并将使用收到的INVITE中最顶层的编解码,只要它也列在SIP中继设置中的可用编解码中。

这意味着SIP中继设置中的编解码顺序无关紧要。

关于DTMF,3CX接受用于RFC2433的从96到127的所有telephone-event。如果提供商没有发送telephone-event编解码,则3CX将不接受任何RFC2833 DTMF音调,但它仍将接受in-band DTMF音调。

如果来自SIP中继提供商的INVITE不包含3CX支持的任何编解码,或者INVITE中的那些编解码与SIP中继设置中编解码中列出的编解码器间没有公共编解码,那么3CX将以200 OK回复并且不带任何编解码而SDP端口为0。

SDP连接地址和端口

对于SDP连接地址,3CX将决定使用哪个IP,其方式与在REGISTER消息的“Contact”报头中决定IP地址的方式相同。

在INVITE和200 OK消息中,首先3CX将检查是否在“选项”选项卡中,在“在’Contact’和’Connection’字段中选择向我们选择哪个IP”选项中输入了IP地址。 如果是这样,将使用它。

如果此选项设置为“使用默认设置”,则3CX将使用已配置使用的默认公共IP地址。 这在设置→网络→“公共IP”选项卡下设置。

本地RTP端口3CX将在每次呼叫时使用的是9000-10999范围内的随机端口。 这不能改变。 但是,SIP中继提供商媒体服务器使用的端口没有限制。