多年来,实时 IP 语音呼叫和会议包含了一系列不同的音频编解码器,令人眼花缭乱。不同的呼叫协议和用例往往有自己的一套编解码器,这些编解码器可能与其他用例和协议的领域部分重叠,也可能不重叠。强烈建议任何决定支持哪些音频编解码器的实施者在这样做之前调查他们所针对的领域,以确定当前支持最好的编解码器集,尤其是如果他们目前或将来有任何互操作性计划的话。
下面列出了 6 种在视频会议中得到广泛支持的音频编解码器的关键信息。
1. G.711
G.711 是目前最基本的音频编解码器之一,也是支持程度最高的编解码器之一。但它的质量较差,相当于传统的 PSTN 长途线路,由于没有压缩,因此需要 64Kb/s 才能达到这种质量。不过,它的实施非常简单,对 CPU 的要求也极低,因此实施和部署成本非常低。
它仍被广泛用于从 PSTN 到 IP 的网关(因为 PSTN 的固有质量意味着 G.711 通常就足够了),并在大多数其他产品(甚至是现代产品)中得到支持,因为它是一种通用的 “最小公分母”,虽然并不可取,但有助于实现互操作性。因此,即使 WebRTC(Web Real-Time Communication,用于浏览器中的音频和视频通话)也要求支持 G.711,尽管这一要求在 2016 年才标准化。建议实施包含 G.711 支持,因为它易于实施,对互操作性和调试都很有价值。
请注意,G.711 有两种不同的变体:μ-law(在 ASCII 中表示为 u-law)和 A-law。这两种变体使用的压缩方法略有不同(压缩的早期形式,然后扩展动态范围),μ-law 支持稍大的动态范围,但在处理低音量信号时,听起来比 A-law 稍差。μ-law 最常用于北美和日本,而 A-law 在其他地区更常见。
2. G.729
G.729 是一种较早的编解码器,旨在提供与 G.711 类似的质量水平,但比特率仅为 G.711 的一小部分。请注意,虽然 G.729 与 G.711 具有相同的采样率和更好的比特深度,但其有损压缩意味着其质量实际上比 G.711 稍差,但比特率却低得多。现代编解码器能以类似的比特率达到更高的质量水平,因此 G.729 主要用于旧系统或计算能力非常有限的系统。
基本的 G.729 编解码器已扩展了各种功能,主要是附件 A(较低的计算成本换取较低的质量)和附件 B(静音抑制),因此 G.729 数据流可以是 G.729、G.729A、G.729B 或 G.729AB。不过,附件 A 与原始实现兼容,因此无需协商,而附件 B 则不然–双方必须就是否使用它达成一致。这包括在编解码器的 SDP(会话描述协议)协商中;提供 G.729 的大多数现代实现都支持附件 B。
3. G.722
G.722 是一种较早的宽带编解码器,与 G.729 试图以更高的压缩率提供 G.711 质量的音频一样,G.722 的目标是以与 G.711 相似的比特率提供更高质量的音频。G.722 主要用于追求更高音质保真度的老式系统,但由于更现代的编解码器能以更低的带宽提供更高的音频质量,G.722 主要是考虑到互操作性。
4. iLBC
iLBC(internet Low Bitrate Codec)是一种编解码器,设计用于替代 G.729,具有更现代的功能,可提供更高的质量,但对 CPU 的要求与 G.729相似,比特率也略高。它在设计时还内置了对丢失数据包的支持,正如它的名字一样,它是为在公共互联网上运行而设计的,而不是在企业内部网络上运行,后者往往更可靠。不过,虽然它在网络语音应用中得到了支持,但在该领域之外的应用却很有限。
5. AAC
AAC(Advanced Audio Codec),即高级音频编解码器,主要用于预录音频,是 MP3 的后继者,被大量现代应用程序所使用。AAC 实际上包括多种不同的工具集和运行模式,其中之一是 AAC-LD,LD 代表低延迟。AAC-LD 针对实时使用进行了优化,许多 SIP 和专有视频会议系统都支持这种 AAC 变种,它是一种现代宽带或全带编解码器,可提供高质量音频。需要注意的是,AAC 是一种非常复杂的格式,并受专利权的限制,因此大多数提供 AAC-LD 支持的视频会议软件都是通过 Fraunhoffer 等独立实体授权实施的。
查看AAC(高级音频编码)详细介绍
6. Opus
Opus 是一种现代音频编解码器,被设计为一种 “通用 ”编解码器,可解决从极低带宽到高保真全频段的实时用例,而且它是无专利和开源的。它还包含许多可在编码过程中启用的工具,如用于防止丢失的本地前向纠错(FEC),以及在静音期间大幅降低带宽的模式。
与大多数支持不同带宽和其他功能的编解码器(例如 AAC-LD)不同,Opus 的使用不涉及协商操作点或使用的工具:相反,虽然接收方可以提供“提示”,但发送方可以自由使用他们选择的操作点和工具,而接收方则需要处理它们。因此,Opus 解码器必须实现整个工具集才能符合要求。建议实施者使用开源 libopus 库来编码和解码 Opus。Opus 用于 WebRTC,并在其他现代实时媒体会议解决方案中得到越来越广泛的应用。
各编码器采样率、比特深度、比特率、有效载荷大小 和 MOS 列表:
Codec | Sampling rate | Bit Depth | Bitrate | Payload Size | MOS |
G.711 | 8 kHz | 8-bit | 64kb/s | 20ms | 4.4 |
G.729 | 8 kHz | 16-bit | 8kb/s | 20ms | 4.1 |
G.722 | 16 kHz | 14-bit | 48/56/64kb/s | 20ms | 4.5 |
iLBC | 8 kHz | 16-bit | 13.3/15.2kb/s | 20/30ms | 4.2 |
AAC | 96 kHz | 8-24-bit | 32-96kb/s | 可变 | 4.6 |
Opus | 48 kHz | 8-32-bit | 5-64kb/s | 可变 | 4.6 |
最后,如果您正在开发类似视频会议应用,推荐了解ZEGO即构科技的视频会议解决方案。
原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/1857/