参考:http://asterisk.hosting.lv/
- 先确定Asterisk服务器CPU、操作系统信息。
cat /proc/cpuinfo 确定cpu型号类型、64位模式还是32位模式
uname -a 确定操作系统是64位还是32位
- 根据CPU和操作系统信息选择codec_g729二进制包
* http://asterisk.hosting.lv/ 下载之后推荐先检查下 MD5SUM.(什么是MD5SUM)
* 如果运行在64位模式下,请选择 x86_64 。不带 x86_64 就默认是32-bit。即便你的CPU处理器是64位的,但是如果你运行在32位模式下,还是要选择 pentium4/core2/opteron 等二进制文件。
* 怎样判断CPU:对于Pentium D CPU,请选择 Pentium 4。对于VIA C3 和Pentium 4 for VIA C7等CPU,请选择Pentium 3。XEON至强是 Pentium3/Pentium4/Core2的服务器型号。而Celeron赛扬是Pentium3/Pentium4/Core2的小缓存型号。一般来说,软件核心有四种:MMX, SSE, SSE2, SSE3,你可以选择一个最近的匹配类型来试试。
* GCC, GCC4 或者 ICC - 所有的二进制文件都能兼容其它编译器编译的Asterisk,选一个最快的,或者比较好的。
* sse3 只用在最新的支持SSE3的P4 芯片上 (Prescott) ,检查一下 /proc/cpuinfo 里面的PNI标志看是否支持SSE3。
* ICC内核不一定是最快的,在Asterisk命令行下使用 'core show translation recalc 10' 来检查一下,确保检查的时候服务器是空闲的,否则时间不正确。
g723 gsm
g723 - 10
这表明每1秒钟的G.723语音,需要0.01秒(10ms)转换成gsm格式的语音。也就是说数字越小,时间越短,效率越高,CPU占用越低。
命令 'core show translation recalc 10',意思是重新计算不同语音编码转换所需的时间,数字10表示采样时间为10秒。
命令' core show codecs'可以展示当前Asterisk版本支持的媒体编码,包括语音编码、视频编码和图片编码。
* 不支持非x86架构的CPU。IPP在Itanium下面也能用,不过我没有硬件测试。也有支持ARM的IPP,但是我同样也没有ARM硬件。而且,ARM的型号很多,大多数ARM太慢了不能用于 G.729 和 G.723.1,还有浮点运算的问题。
- 安装
* 删除老的codec_g729和codec_g723开头的文件,这些文件在 /usr/lib/asterisk/modules 目录下。没有?没有当然就不用删了^_^
* 把从本站下载的新的 codec_g729和codec_723 开头的文件拷贝到 /usr/lib/asterisk/modules 目录下,一般来说,建议把文件名改为codec_g723.so和codec_g729.so,这样看着很规范。
* 重启 Asterisk 程序。如果不方便重启的话,也可以在Asterisk CLI下面用"module load codec_g723.so"的方法来加载。
* 马上检查相关codec是否正确安装了。可以用这个命令 'core show translation recalc 10' .