概述
参数和名词
- 速率/比特率/码率,Kbps,即流媒体或音频文件单位时间内包含的数据体积大小,一般越大的音质越高,当然不同压缩算法下对比标准不一样,也有可能码率较低,音质相对也较高,比如中等码率的aac音质比较高码率的mp3更好一些。CD的码率为1411.2kbps,有一些无损压缩可以接近这个值,比如flac。
- 采样率,KHz,即音频采集设备在单位时间内采集音频信号的点数。通常认为同种编码算法、同样码率下采样率越高,音质越高。但不同编码算法之间的对比标准不同。目前移动端设备上较为常用的是44.1KHz和48Khz,即时通讯中采样率较低,可能16KHz或者更低。
- 声道数,一般认为声道数越多,声音更有立体感。实时通信采用单声道即可,网络传输常采用双声道。最少单声道,最多5声道?。
- 音轨,不同乐器/人发出的声音,最多48音轨?
- 压缩比,相比音频源文件,压缩后的体积变化,如1/18,1/12这些。压缩比opus>aac>ogg>mp3(及wma)>ape>flac>wav(同一音源条件下)。192kbps以下wma压缩比高于mp3。
- 音质,有损或者无损,解码后是否能还原成音频源文件。音质比较wav=flac=ape>aac=opus>ogg>mp3~wma
- 频率,Hz,低频或者高频,注意,人耳对低频信号较为敏感,比如mp3的压缩算法中就是把所有高频信号全部去掉了。
- 硬件支持,在采集端和播放端的设备支持,mp3>wma>aac~wav~opus>flac~ ogg>ape。
对比
非常全面的可以参考Comparison of audio coding formats-wikipedia
我们主要对当前工业场景下流行的几种格式进行对比
编码格式 | 版税 | 压缩比 | 采样率 | 码率 | 延迟 | 开源库 | 声道数 | 应用场景 |
---|---|---|---|---|---|---|---|---|
AAC | 收费 | 高 | 8~96kHz | - | FFmpeg,FAAD2,Audiocogs,Fraunhofer FDK AAC | 网络音视频传输,数字设备 | ||
APE | 55%无损压缩 | 无损音乐播放 | ||||||
WAV | 无损压缩 | |||||||
ALAC/ALE | 免费 | 无损压缩 | MacOSforge, FFmpeg, Audiocogs (decoding only) | apple家语音通信和音乐播放,realplayer | ||||
WMA | Windows平台 | 1/18压缩? | FFmpeg (decoding only for Pro, Lossless and Voice) | 网络传输音频文件 | ||||
MP3 | 免费 | 1/10-1/12 | 16~48kHz | LAME (encoding only), FFmpeg (decoding only), libmad (decoding only), Audiocogs (decoding only) | ||||
AMR | 收费 | 1/17? | 8kHz | 4.75~12.2kbps | 20+5? | FFmpeg (decoding only), FFmpeg with OpenCORE libraries,Android | 录音,网络音频传输 | |
AMR-WB | 收费 | 16kHz | 6.6~23.84kbps | 20+5? | FFmpeg (decoding only),FFmpeg with VisualOn libraries, Android (decoding only),opencore-amr for both encoding and decoding | AMR升级版,录音,网络音频传输 | ||
SILK | 免费 | 1/15 | SILK Speech Codec | skype以前使用,网络音频传输,如微信QQ等 | ||||
CELT | 免费 | 超高 | 4~6ms? | libcelt, FFmpeg with libcelt library (decoding) | opus的前身,主导超低延迟,牺牲了音质 only) | |||
Opus | 免费 | 超高 | 8~48kHz | 6~510kbps | 2.5~60ms?5~65.2ms | libopus, FFmpeg | VoIP,低延迟通讯,无线音频传输,录音,skype,webrtc等,自适应码率,支持窄带到全带 | |
Speex | 免费 | 8,16,32kHz | 2~44kbps | 20+10 (NB) 20+14 (WB) | Speex,FFmpeg with libspeex library | Flash player,自适应码率,主要为低带宽场景音频传输使用,支持极低码率 | ||
FLAC | 免费 | 无损压缩 | FLAC,Flake(encoding only), FFmpeg, FLACCL(encoding only), Audiocogs (decoding only) | 多声道 | 无损音乐 | |||
Codec2 | 免费 | c2enc, c2dec | 低带宽低延迟实时通信 |
目前网络实时通信中使用的opus,speex,amr,silk,iLBC等的一些对比。speex可以采用的比特率最低,2kbps;iLBC的比特率和音质之间达到了不错的平衡;opus在码率、采样率、编码性能和音质之间达到了很好的平衡,但放弃了超低码率;
