Tag

voip编码转换 归档 - 呼叫中心,呼叫中心系统,云通讯平台,asterisk 呼叫中心

asterisk 语音编码转换

By | 其他asterisk相关 | No Comments

asterisk 语音编码转换

asterisk作为VoIP系统,其一大特性是对RTP媒体流的处理能力,由于开源解码器的存在,以及可以运行在价格低廉的X86硬件系统上,经常被用于完成不同系统间的语音编码转换,以取代价格相对昂贵的硬件设备。

常见的编码转换场景例如 局域网内使用ulaw,alaw或者g722编码,外呼时使用g729编码以节省带宽

asterisk 中支持的语音编码

查看 asterisk 支持的编码格式命令为

core show translation

asterisk 语音编码转换图中看到的数字表示两种编码转换所需要的时间,数值越小,则表示转码速度越快,-表示不支持此种编码转换

使用 module load codec_ tab键 可以查看/加载系统支持的语音编码

astercc_us*CLI> module load codec_<tab>
codec_a_mu.so codec_adpcm.so
codec_alaw.so codec_dahdi.so
codec_g722.so codec_g726.so
codec_gsm.so codec_lpc10.so
codec_ulaw.so codec_g729-ast16-icc-glibc-x86_64-pentium4.so

加载和卸载 asterisk 模块的命令分别为  module load .so 以及 module load .so,例如

astercc_us*CLI> module unload codec_g729-ast16-icc-glibc-x86_64-pentium4.so
Unloaded codec_g729-ast16-icc-glibc-x86_64-pentium4.so
== Unregistered translator 'lintog729' from format slin to g729
== Unregistered translator 'g729tolin' from format g729 to slin
astercc_us*CLI> module load codec_g729-ast16-icc-glibc-x86_64-pentium4.so
Loaded codec_g729-ast16-icc-glibc-x86_64-pentium4.so
== Registered translator 'g729tolin' from format g729 to slin, cost 1000
== Registered translator 'lintog729' from format slin to g729, cost 5999
Loaded codec_g729-ast16-icc-glibc-x86_64-pentium4.so => (g729 Coder/Decoder, based on IPP)

http://asterisk.hosting.lv/ 上可以下载针对不同 asterisk 版本和CPU编译的 g729 g723 so文件, cpu类型可以通过以下命令查看

cat /proc/cpuinfo

文件需要下载到相应的 asterisk 库目录, 一般为 /usr/lib/asterisk/modules 或者 /usr/lib64/asterisk/modules

在 asterisk 系统中,当需要连接的两个终端使用的编码没有交集而asterisk又支持这两种编码的转换,这时 asterisk 就会进行编码转换。

使用 sip show peer 名称 命令,可以查看该系统中为该终端设定的编码及顺序

astercc_us*CLI> sip show peer astercc-5000
....
Defaddr->IP : 0.0.0.0 Port 5060
Prim.Transp. : UDP
Allowed.Trsp : UDP
Def. Username:
SIP Options : (none)
Codecs : 0x28010e (gsm|ulaw|alaw|g729|h263|h264)
Codec Order : (ulaw:20,alaw:20,gsm:20,g729:20)
Auto-Framing : No
100 on REG : No
....

修改编码可以通过修改 sip 配置文件实现,例如我们改为仅支持729编码

[astercc-5000]
callerid=5000 <5000>
accountcode=1235430313
secret=temp321
callgroup=1
pickupgroup=1
language=cn
type=friend
qualify=yes
port=5060
nat=yes
host=dynamic
dtmfmode=rfc2833
context=hosted-dialout
directmedia=no
call-limit=1
disallow=all
allow=g729

保存,重载 asterisk sip配置

astercc_us*CLI> sip reload
Reloading SIP
== Parsing '/etc/asterisk/sip.conf': == Found
== Parsing '/etc/asterisk/sip_general_astercc.conf': == Found
== Parsing '/etc/asterisk/sip_hostedpbx_registrations.conf': == Found
== Parsing '/etc/asterisk/sip_custom.conf': == Found
== Parsing '/etc/asterisk/sip_hostedpbx_devices.conf': == Found
== Parsing '/etc/asterisk/sip_hostedpbx_trunks.conf': == Found
== Parsing '/etc/asterisk/users.conf': == Found
== Using SIP TOS bits 96
== Using SIP CoS mark 4
== Parsing '/etc/asterisk/sip_notify.conf': == Found

再次查看 会发现该终端的编码已经改变

astercc_us*CLI> sip show peer astercc-5000
....
Defaddr->IP : 0.0.0.0 Port 5060
Prim.Transp. : UDP
Allowed.Trsp : UDP
Def. Username:
SIP Options : (none)
Codecs : 0x100 (g729)
Codec Order : (g729:20)
Auto-Framing : No
100 on REG : No
....
索克维尔旗下产品 · CXMind AI联络中心 · WCC全渠道联络中心