G.723语音编码是商业编码,需要授权使用的。因此Asterisk等软件默认是不含G.723语音编码so文件。如何增加G.723呢?我们先来了解下Asterisk支持的语音编码。
Asterisk语音编码
随着语音通信技术的发展,压缩语音信号的传输带宽,降低信道的传输速率,一直是人们追求的目标。语音编码能够使表达语音信号的比特数目最小,在实现这一目标的过程中担当重要的角色。
在Asteirsk CLI命令模式下运行 core show codecs
,可以看到Asterisk支持的语音编码/视频编码格式:
INT BINARY HEX TYPE NAME DESC 1 (1 << 0) (0x1) audio g723 (G.723.1) 2 (1 << 1) (0x2) audio gsm (GSM) 4 (1 << 2) (0x4) audio ulaw (G.711 u-law) 8 (1 << 3) (0x8) audio alaw (G.711 A-law) 16 (1 << 4) (0x10) audio g726aal2 (G.726 AAL2) 32 (1 << 5) (0x20) audio adpcm (ADPCM) 64 (1 << 6) (0x40) audio slin (16 bit Signed Linear PCM) 128 (1 << 7) (0x80) audio lpc10 (LPC10) 256 (1 << 8) (0x100) audio g729 (G.729A) 512 (1 << 9) (0x200) audio speex (SpeeX) 1024 (1 << 10) (0x400) audio ilbc (iLBC) 2048 (1 << 11) (0x800) audio g726 (G.726 RFC3551) 4096 (1 << 12) (0x1000) audio g722 (G722) 65536 (1 << 16) (0x10000) image jpeg (JPEG image) 131072 (1 << 17) (0x20000) image png (PNG image) 262144 (1 << 18) (0x40000) video h261 (H.261 Video) 524288 (1 << 19) (0x80000) video h263 (H.263 Video) 1048576 (1 << 20) (0x100000) video h263p (H.263+ Video) 2097152 (1 << 21) (0x200000) video h264 (H.264 Video)
G.723,G.729,G.711,gsm就是语音编码中较常见的几种。其中G.711 ulaw主要用在美国,日本,加拿大等国家,中国等其他国家一般都用G.711 alaw。 采用G729等码率较小的编码可以减少IP带宽占用,当然,音质损耗也比较大。随着网络带宽的不断扩展,
安装G.723和G.729语音编码
在本文的开头,有下载源代码的链接。如果你已经编译好了上面的源代码,下面我们开始安装和设置了。如果不想自己编译的话,也可直接下载编译好的二进制文件。
安装步骤如下:
-
- 删除老的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
"的方法来加载。如果无法正确加载,可能是选错了so文件。
- 重启 Asterisk 程序。如果不方便重启的话,也可以在Asterisk CLI下面用"
Asterisk语音编码的相关设置
设置:安装完成之后,开始设置咯,需要修改几个配置文件,设定步骤如下:
设置G.723的发送码率
G.723.1 发送码率(send rate)是在Asterisk codecs.conf 文件里更改:
[g723]
; 6.3Kbps stream, default
sendrate=63
; 5.3Kbps
;sendrate=53
这个选项主要是外呼语音用。不会影响呼入的媒体流,呼入会自动识别编码的。codec.conf文件放在/etc/asterisk目录下。
指定启用的语音编码
在/etc/asterisk/下面的 sip.conf 和 iax.conf 里指定需要启用的编码,可以使用全局定义,也可以对指定的端设定,格式如下:
disallow=all
allow=g729
allow=g723
重启 Asterisk 程序。如果不方便重启的话,也可以在Asterisk CLI下面用"sip reload
"和"iax2 reload
"。
声明: 本文介绍程序和代码仅供教育和学习使用。商业用途需要向G.729/723.1 专利持有人支付授权费用。