xjs.xjtu

LearningWebRTC: Opus

WebRTC M59使用Opus作为默认的音频编解码器,这里只简答介绍,太深的暂时也不懂。

Opus Overview

Opus的目标应用场景为“Interactive audio over the Internet”,第一版在2012年发布。

从官网的介绍来看,压缩效率和延迟比AAC在内的绝大多数音频编解码器都要优秀。

opus_compress_rate

opus_delay

Opus internal modules

Opus是一个混合编码器,由SILK和CELT两种编码器混合而成,SILK主要负责wideband(8khz)以下的语音编码,CELT主要负责高频编码,如音乐等。

opus_modules1 opus_modules2

SILK由Skype Speex改良而来,像通常的语音编解码器一样,使用LPC(Linear Predictive Coding)在时域完成压缩。

CELT则像通常的音频编解码器一样,使用MDCT在频域完成压缩。

为了尽量减小延迟,SILK帧长最小为10ms,最大60ms;而CELT帧长则在2.5ms~20ms。

Opus anti packet loss

Opus FEC只用在低频部分,用更低的码率编码出码流(redundant bitstream),然后与原始码流(primary bitstream)在同一个RTP session里发送。

opus_fec

参考


xjs.xjtu@gmail.com

2017-07-08