编码

8/10/2019 音频编码视频编码

# 编码

# 1、音频编码

  • G729

G.729协议是由ITU-T的第15研究小组提出的,并在1996年3月通过的8Kbps的语音编码协议。

G.729采用的是共轭结构的代数码激励线性预测算法(Conjugate Structure Algebraic Code Excited Linear Prediction,CS-ACELP),这是一种基于CELP编码模型的算法。
由于G.729编码器能够实现很高的语音质量(MOS分4.1)和很低的算法延时,被广泛地应用于数据通信的各个领域,如IP Phone和H.323系统等。
G.729是对8KHz采样16bit量化的线性PCM语音信号进行编码,压缩后数据速率为8Kbps,具备16:1的高压缩率。

8KHz采样率 X  16bit量化 = 128Kbps , 16:1压缩后为8Kbps

G.729有两大特点:

1- 占用带宽小
    使用普通编码的语音通讯需要占用64Kbps的带宽,而G.729仅仅需要8Kbps。
2- 占用CPU时间多
    使用G.729时CPU的使用时间大约为G.711的4倍,所以使用G.729时需要注意服务器是否有足够的处理能力。

私人研究试验时使用G.729是不用付费的,但是只要应用于商业用途,不论是使用于硬件或软件,都需要付费购买许可证(License)

  • G711

G.711是一种由国际电信联盟(ITU-T)制定的音频编码方式,又称为ITU-T G.711

也称为PCM(脉冲编码调制),是国际电信联盟订定出来的一套语音压缩标准,主要用于电话。它主要用脉冲编码调制对音频采样,采样率为8k每秒。
它利用一个 64Kbps 未压缩通道传输语音讯号。 起压缩率为1:2, 即把16位数据压缩成8位。G.711是主流的波形声音编解码器

G.711 标准下主要有两种压缩算法。一种是µ-law algorithm (又称often u-law, ulaw, mu-law),主要运用于北美和日本;
另一种是A-law algorithm,主要运用于欧洲和世界其他地区。其中,后者是特别设计用来方便计算机处理的。这两种算法都使用一个采样率为8kHz的输入来创建64Kbps的数字输出。
G.711采用一种称为分组丢失隐藏(PLC)的技术来减少丢包带来的实际影响。有效的信号带宽在静默期间通过语音活动检测(VAD)这一过程被减小。

G711A(alaw、PCMA)

G711U(ulaw、PCMU)

8KHz采样率 X  16bit量化 = 128Kbps , 2:1压缩后为64Kbps

G723

GSM

SPEEX

iLBC

# 语音编码带宽占用问题

  • 计算公式

带宽

=包长度×每秒包数
=包长度×(1/打包周期)
=(Ethernet头+IP头+UDP头+RTP头+有效载荷)×(1/打包周期)
=(208bit +160bit+64bit+96bit +有效载荷)×(1/打包周期)
=(528bit+(打包周期(秒)×每秒的比特数))×(1/打包周期)
=( 528 / 打包周期 ) + 每秒比特数      
  • 占用带宽比较

G711:20ms打包,带宽为 ( 528/20 + 64) Kbit/s=90.4 Kbit/s
G729:20ms打包,带宽为 ( 528/20 + 8 ) Kbit/s= 34.4 Kbit/s

G711 实际占用带宽 每线90.4kbit/s 100线并发占用 9Mbps
G729 实际占用带宽 每线34.4kbit/s 100线并发占用 3.4Mbps

1M带宽 上下行对等
G729 34.4Kbps ==> 30.11路 近似是30路
G711 90.4Kpbs ==> 11路

# 2、按键编码(Dual-Tone Multi-Frequency)

Dual-Tone Multi-Frequency双音多频,由高频群和低频群组成,高低频群各包含4个频率。
一个高频信号和一个低频信号叠加组成一个组合信号,代表一个数字。DTMF信号有16个编码。利用DTMF信令可选择呼叫相应的对讲机。
  • RFC2833

为带内检测方式,通过RTP传输,由特殊的rtpPayloadType即TeleponeEvent来标示RFC2833数据包。 同一个DTMF按键通常会对应多个RTP包,这些RTP数据包的时间戳均相同,此可以作为识别同一个按键的判断依据,最后一包RTP数据包的end标志置1表示DTMF数据结束。 另外,很多SIP UA 包括IAD都提供TeleponeEvent的设置功能如3CX PhoneBillion-IADZTE-IAD等默认的TeleponeEvent都为101, 但可以人为修改,这时要求在进行RFC2833 DTMF检测之前需事先获取SDP协商的TeleponeEvent参数。

  • SIP INFO

为带外检测方式,通过SIP信令通道传输DTMF数据。没有统一的实现标准,目前以Cisco SIPINFO为标准,通过SIPINFO包中的signal字段识别DTMF按键。 注意当DTMF为“*”时不同的标准实现对应的signal=*signal=10。SIPINFO的好处就是不影响RTP数据包的传输,但可能会造成不同步。

  • INBAND

为带内检测方式,而且与普通的RTP语音包混在一起传送。在进行INBAND DTMF检测时唯一的办法就是提取RTP数据包进行频谱分析,经过频谱分析得到高频和低频的频率, 然后查表得到对应的按键,进行频谱分析的算法一般为Goertzel,这种算法的实现也很简单,网上有很多可以下到,但建议采用定点算法,浮点算法效率很低。 在选择压缩比很高码率很低的codec,比如G.723.1G.729A等,建议不要使用INBAND模式,因为INBAND DTMF数据在进行复杂编解码后会产生失真,造成DTMF检测发生偏差或失败。 另外,还特别需要注意的一点就是很多SIP UA中INBAND都是伴随着RFC2833SIPINFO同时发生的,这时需要区别对待,最好选择RFC2833SIPINFO

# 3、视频编码

H.264

VP8


收录时间: 2019-08-10

最后更新时间: 10/11/2021, 3:53:50 PM