技术文档
SIP 音频编解码器详解
了解 VoIP 中使用的音频编解码器,它们如何影响通话质量和带宽,以及如何在 SipLine 中进行配置以获得最佳效果。
阅读需要 10 分钟
1
什么是编解码器?
编解码器 (codec,即编码器-解码器) 用于压缩和解压缩音频,以便通过网络传输。在 VoIP 中,编解码器决定了通话质量、带宽占用和处理能力之间的权衡。当您进行 SIP 通话时,双方会通过 SIP 信令中 SDP (会话描述协议) 部分定义的过程协商使用哪种编解码器。
“codec”一词源自 coder(编码器)和 decoder(解码器)。每种编解码器都使用不同的算法来对您的声音进行数字化和压缩。
2
G.711 — 通用标准
G.711 是电话领域支持最广泛的编解码器。它有两个变体:主要在欧洲使用的
PCMA (G.711a, A-law),以及在北美和日本使用的 PCMU (G.711u, mu-law)。G.711 每个方向使用 64 kbps,并提供电信级通话质量(8 kHz 采样率,窄带)。加上 IP 开销,一个 G.711 通话每个方向大约消耗 87 kbps。如有疑问,请使用
G.711a (PCMA)。世界上几乎所有的 VoIP 运营商和 SIP 设备都支持它。它是实现互操作性最安全的选择。3
Opus — 现代之选
Opus 是一种专为互联网音频设计的现代开源编解码器。它是自适应的,这意味着它会根据网络状况动态调整比特率 — 从低至 6 kbps 到高至 510 kbps。Opus 支持宽带和超宽带音频(最高 48 kHz),提供比 G.711 丰富得多的音质。它通过内置的前向纠错功能优雅地处理丢包。
Opus 非常适合两个 SipLine 用户之间的通话,或与支持该格式的运营商通话。它能以 G.711 带宽的一小部分提供接近高清 (HD) 的语音质量。
4
选择合适的编解码器
您的选择取决于使用场景。为了与任何运营商获得最大的兼容性,请使用 G.711a。为了在良好连接下获得最佳音频质量,请使用 Opus。对于低带宽场景(如移动热点),低比特率的 Opus 是最佳选择。您可以在 SipLine 中启用多个编解码器,让 SDP 协商自动选择最佳的一个。
在 SipLine 中,拖动编解码器按优先级重新排序。列表中的第一个编解码器将在协商期间首先提供。将您首选的编解码器放在最顶端。
5
SIP (SDP) 中的编解码器协商
发起 SIP 通话时,主叫方会发送一条包含 SDP 正文的 INVITE 消息,其中列出了支持的编解码器(由负载类型编号标识)。被叫方回应自己的 SDP,选择一个或多个匹配的编解码器。如果没有找到共同的编解码器,通话将失败并显示
488 Not Acceptable Here 错误。这种协商是自动发生的 — 您只需要确保启用了兼容的编解码器。如果通话立即失败且没有声音,请检查 SipLine 中是否至少启用了一个您的运营商也支持的编解码器。编解码器不匹配是通话失败的常见原因。
6
在 SipLine 中配置编解码器
前往 设置 > SIP 账户 > [您的账户] > 编解码器。您将看到可用编解码器列表,带有用于启用或禁用的复选框。拖动编解码器以设置其优先级顺序。对于大多数用户,建议的配置为:首先
G.711a (PCMA),其次 G.711u (PCMU),最后 Opus。这确保了最大的兼容性,同时在可用时利用 Opus。禁用您永远不会使用的编解码器。SDP 邀约中的编解码器越少,通话建立速度就越快,协商出现问题的可能性也越小。
常见问题
G.711 对比 Opus — 我该使用哪一个?
G.711 是安全的选择:通用支持、质量可预测、无授权问题。Opus 在音频质量和带宽效率方面更为优越,但并非所有运营商都已支持。对于拨打传统电话线路 (PSTN) 的通话,几乎总是使用 G.711。对于软电话之间或现代 VoIP 平台之间的通话,Opus 提供的质量明显更好。
每种编解码器消耗多少带宽?
包括 IP/UDP/RTP 开销:
G.711 每个方向使用约 87 kbps。Opus 在其默认 VoIP 设置下每个方向使用约 30–40 kbps,尽管根据配置它可以低至 10 kbps 或高至 128 kbps。Opus 编解码器特别高效,因为它能实时适应可用带宽。我可以同时使用多个编解码器吗?
您可以启用多个编解码器,但每次通话仅使用一个。在 SDP 协商期间,双方就单个编解码器达成一致。启用多个编解码器可以增加与对方匹配的机会。SipLine 将按照您设置的优先级顺序尝试编解码器。
关于 G.729?
G.729 是一种低带宽编解码器 (8 kbps),历史上因节省带宽而流行。然而,它曾受专利保护(专利已于 2017 年过期),许多现代系统已转向 Opus,后者在相似或更低的比特率下提供更好的质量。SipLine 支持 G.729 以实现向后兼容,但对于需要低带宽的新部署,建议使用 Opus。
为什么我的通话因 488 错误而失败?
488 Not Acceptable Here 响应意味着远程方无法在您的 SipLine 配置中找到共同的编解码器。请启用 G.711a (PCMA) — 它是支持最广泛的编解码器。如果您只启用了 Opus 而运营商不支持它,通话将失败并显示此错误。编解码器会影响延迟吗?
是的,有轻微影响。G.711 的处理延迟非常低,因为它执行的压缩极少。Opus 引入了较小的编码延迟(通常为 20–40 ms),但通过更好的丢包恢复能力进行了补偿。实际上,与网络延迟相比,编解码器对总延迟的影响很小。G.711 和 Opus 都在实时对话的可接受范围内。