Asterisk 需要编解码器做什么?

Asterisk 需要编解码器做什么?

我们以一个由一台 Asterisk 服务器和两台 SIP 客户端组成的系统为例。每台客户端都安装了一组相同的编解码器。流量编码和解码在客户端执行。

那么为什么要在 Asterisk 端安装编解码器?它只是一个拨号控制的流量交换机,将编码/解码工作留给客户端,因此 CPU 负载非常低。

什么时候可能需要 Asterisk 端的编解码器?只有当 Asterisk 需要向客户端发送某些信息时才需要:回铃音、忙音、语音平台通知。它们还应该用于通话录音。如果不使用通话录音,这些情况相对罕见且短暂。

在所有其他情况下,流量只能愚蠢地通过 Asterisk 服务器。

我到处都看到 Asterisk PC CPU 负载高度依赖于并发对话数量和所使用的编解码器。这是否意味着 Asterisk 解码来自一个客户端的所有语音数据,然后再次为其他客户端编码?

答案1

如果 SIP 呼叫的两端使用相同的编解码器,则需要格式模块(例如 format_g729.so),但不需要编解码器模块(codec_g729.so)

然而如果你播放某些内容并且录音不是 .g729 格式的话你就需要编解码器。

如果您使用未压缩的流(其他编解码器或 pstn/e1 卡),则需要编解码器。

在某些变体中,还会出现这样的情况:一个流向下使用一个编解码器,而同一流向上使用另一个编解码器(如果双方都支持 2 个编解码器但偏好设置不同)

Asterisk 混合引擎将尽可能避免使用编解码器(尤其是在 11.x 以上的版本中)。然而,由于内部限制,可能会出现两端都支持编解码器的情况,但通话的两端仍然选择了不同的编解码器。

例如如果你在一边

 allow=g729
 allow=g723

在另一边

  allow=g723
  allow=g729

并且两部电话都支持这两种编解码器,Asterisk 将为两者选择顶级编解码器,并且将需要编解码器二进制。在较新的版本中,您可以通过更改 sip.conf 中的选项来控制这一点

  preferred_codec_only=

您还可以将编解码器偏好设置放在变量中

https://wiki.asterisk.org/wiki/display/AST/chan_sip+Channel+Variables

相关内容