
什么是编解码器切换?
编解码器切换是指设备或系统在使用过程中,从一种音频或视频编解码方式切换到另一种。这种切换的目的是为了在网络速度发生变化时,确保通话、视频和流媒体能够正常运行。简单来说,这就像是在后台切换媒体使用的“语言”,以确保声音和画面不中断。
当发生音频编解码器切换时,系统可能会从高质量的音频编解码器切换到压缩程度更高的编解码器。因此,如果网络开始出现延迟,一旦连接状况改善,编解码器就会切换回更优质的编解码器。这有助于减少延迟、降低通话中断率,并在网络条件不佳的情况下保持声音清晰可辨。
编解码器切换的工作原理
为了理解其实际价值,我们需要分析实现自适应功能的编解码器切换机制:
1、通话开始时协商支持的编解码器
当实时通话开始时,双方会发送消息,列出各自支持的所有编解码器(包括 Opus)。此外,呼叫建立协议(SIP 配合 SDP)会比较这些列表,并从中选择双方都支持的编解码器。这一点至关重要,因为编解码器切换只能在双方已达成共识的编解码器之间进行。
2、监控网络与通话质量
通话进行期间,应用程序或媒体服务器会持续测量可用带宽、往返时延等网络统计数据。同时,它还会追踪设备端数据(如 CPU 负载和电池电量),因为高负载编解码器可能导致手机运行变慢。此外,设置变更(如开启视频)也会被视为当前编解码器可能不适用的信号。
3、决定何时及切换何种编解码器
编解码器选择算法利用这些测量数据来决定是继续使用当前编解码器还是进行切换。如果带宽突然下降且丢包率增加,算法可能会选择一种比特率较低但性能更优的编解码器。不过,该算法必须避免过于频繁地切换,因此应设置阈值以防止在不同编解码器之间频繁切换。
4、通话中的编解码器重新协商
若需切换音频编解码器,系统会在通话过程中发送控制消息,从列表中提出双方已商定的编解码器选项。但对方会检查当前环境下是否支持该编解码器,从而决定接受或拒绝变更。只有在双方确认后,系统才会安排确切的切换时间,从而避免过早接受或拒绝。
5、媒体路径中的平滑切换
重新协商完成后,每个终端都会更新其编码器和解码器以使用新编解码器。此外,存储着使用旧编解码器编码的旧数据包的缓冲区将被播放或安全丢弃。因此,如果一切顺利,用户可能只会注意到音质的一点变化,而不会感觉到通话中断。
为什么编解码器切换对实时通信至关重要
能够根据上述所有原因策略性地切换视频编解码器至关重要,包括传输适应性和保持媒体质量:
- 节省带宽和网络成本:编解码器切换允许系统在网络繁忙时切换到压缩率更高的编解码器。此外,它还有助于服务提供商和公司在同一网络上支持更多用户,并降低总体带宽成本。
- 避免设备和编解码器不匹配:不同的手机、笔记本电脑和座机可能支持不同的编解码器,固定选择可能会导致兼容性问题。因此,系统可以防止这些不匹配,并在通话过程中切换编解码器时保持连接。
- 提升手机电池续航:长时间通话时,某些编解码器会比其他编解码器占用更多 CPU 资源,这会迅速耗尽智能手机的电池电量。当设备负载较高时,系统可以使用占用资源较少的编解码器来延长通话时间。
- 提升整体用户体验质量 (QoE):研究表明,根据延迟和丢包情况在通话过程中切换编解码器,可以提升用户的感知质量。这意味着更少的通话中断,以及双方更流畅、更自然的对话体验。
- 有助于适应不同的媒体类型:此外,通话过程中可能会传输各种媒体,包括普通语音,因此编解码器切换至关重要。在某些情况下,实时系统可以切换到更适合处理音调或舒适噪声的编解码器。
RTC 和流媒体中常用的编解码器类型
在视频编解码器切换任务中,RTC(实时通信) 和流媒体架构集成了多种先进的编解码器类型。因此,请仔细了解下文讨论的编解码器,以确保在画质、延迟和带宽优化之间取得最佳平衡:
1. RTC 音频编解码器
- Opus:由于其在低带宽连接下仍能提供优质音效,因此是 WebRTC 通话和实时应用中主要使用的音频编解码器。
- G.711:一种电话级编解码器,传输未压缩音频,虽然需要更多带宽,但易于使用且与电话系统兼容。
- G.722:这是一种宽带“高清语音”编解码器,覆盖的音频频率范围比 G.711 更广,能呈现更清晰的音质。
2. RTC 视频编解码器
- VP8:在 WebRTC 视频通话中,浏览器常采用这种免版税的视频编解码器,它具有低延迟和良好的画质。
- H.264 (AVC):H.264 是几乎所有多媒体行业最常用的编解码器。与 VP8 相比,谷歌这款更现代的开源编解码器在更低的码率下提供更好的压缩效果和同等画质。
- VP9:谷歌最新推出的开源编解码器,其压缩效率优于 VP8,可在更低的码率下提供相似的画质。
3. 流媒体中常用编解码器
- AAC:另一种常见的 HTTP 流媒体和点播视频音频编解码器,在相同比特率下提供比 MP3 更佳的音质。
- H.265 (HEVC):这是一种视频编解码器,压缩效率约为 H.264 的两倍,广泛应用于 4K 和 HDR 电影。
- AV1:在视觉质量相当的情况下,这种专为在线流媒体设计的开源视频编解码器,其压缩率比 HEVC 高出约 30%。
编解码器切换的常见应用场景
在不同的通信环境中考察音频编解码器切换,其实际意义就显得尤为突出:
- 网络电话 (VoIP):当网络信号弱时,编解码器切换功能允许系统在网络电话通话中切换到更轻量的编解码器。
- 视频会议和群组会议:由于在线会议期间不同的用户和设备可能不支持相同的编解码器,因此该平台会切换编解码器。
- 通话转为传真或调制解调器:要使通话从普通语音通话过渡到传真或调制解调器音调,需要更透明的编解码器。
- 移动和无线网络:在移动数据或 Wi-Fi 中,当用户移动时,网络质量会发生变化,因此应用程序会根据当前带宽切换编解码器。
- 流媒体和自适应服务:现代流媒体系统,特别是研究平台,使用编解码器切换来为给定内容选择最有效的编解码器。
实时系统中编解码器切换的挑战
尽管编解码器切换具有诸多优势,但在实时系统中实现编解码器切换可能会引入相当大的复杂性。从同步问题到延迟管理,请审视以下挑战,以确保通信性能的无缝衔接:
| 挑战 | 为什么实时传输中会出现问题 |
|---|---|
| 切换期间的额外延迟 | 哪怕是轻微的延迟也会让实时通话感觉卡顿。 |
| 通话故障或掉线的风险 | 实时通话过程中任何不匹配都可能导致音频或视频中断。 |
| 信令与控制复杂度增加 | 增加了协议的复杂性,也增加了出现漏洞的可能性。 |
| 互操作性限制 | 当某一方无法处理切换时,视频功能将失效。 |
| CPU 和资源开销 | 在繁忙的服务器上,这可能会降低负载期间的可扩展性或质量。 |
| 质量调优难度增加 | 糟糕的切换逻辑会导致质量不稳定,频繁变化。 |
编解码器切换如何提升弱网络性能
编解码器切换通过允许 SDK 在连接不佳时降低音视频码率,从而改善弱网络环境。在此背景下,即构科技(ZEGO)的实时引擎会自动结合自适应码率、智能路由和抖动缓冲技术,在 Wi-Fi 信号不佳时自动降码。其 SDK 和全球网络经过优化,即使在高丢包率下也能保持流畅,彰显了其强大的逻辑处理能力。它还集成了错误处理和音频处理功能,使弱网络环境下的体验不再中断。
此外,包丢恢复、抖动缓冲和网络优化等功能通过减少抖动和丢包,确保音频清晰。对开发者而言,主要优势在于无需自行开发网络自适应和编解码器切换功能。只需集成 ZEGO 的实时音视频SDK或超低延迟直播SDK,即可获得针对弱网环境的内置支持,还可实现跨多设备和地区的可扩展质量控制。
实施编解码器切换的最佳实践
请注意,在实施音频编解码器切换时,应考虑以下方法以确保降低延迟波动:
- 初期明确约定编解码器集:除少数不常用的选项外,应选择一套经过验证的通用编解码器集,并要求双方都声明其支持的所有编解码器。
- 使用明确、稳定的切换触发条件:基于测得的网络特性(如丢包率和带宽)来判断是否进行编解码器切换,而非仅依据单次瞬态峰值。
- 在更换编解码器前考虑调整码率或模式:与其完全切换到不同的编解码器家族,不如尝试调整码率或编解码器模式。
- 谨慎协调通话中重新协商:使用适当的通话中信令(SIP re-INVITE),并在双方就新编解码器达成一致前不要进行切换。
- 确保媒体切换平滑:先排空使用旧编解码器编码的旧数据包,仅对已达成一致的数据包开始使用新编解码器进行解码。
结论
编解码器切换是一种简单的机制,能够根据网络状况和设备能力在不同编解码器之间进行自适应切换。因此,这种自适应性使其成为在各类设备和不可预测的环境中提供稳定、流畅的媒体体验的关键。通过集成 ZEGO 的实时音视频 SDK,即使在不稳定的网络条件下,媒体也能得到优化。
常见问题
问:更换编解码器会影响视频质量吗?
是的,更换编解码器会影响视频质量、文件大小和处理性能。有些编解码器注重保留更高的图像细节,而另一些则优先考虑更小的文件大小和更快的传输速度。选择合适的编解码器取决于你的工作流程、存储需求和扫描精度要求。
问:编解码器是什么意思?
编解码器是一种用于编码和解码数字媒体文件(例如音频和视频)的技术。它有助于压缩数据以便存储或传输,并在播放或处理时解压缩数据。不同的编解码器在质量、速度和文件大小之间提供不同的平衡。
问:我可以使用VLC播放器更改编解码器吗?
是的,VLC 媒体播放器允许用户转换媒体文件并更改编解码器。你可以使用 VLC 的“转换/保存”功能在导出文件时选择不同的视频或音频编解码器。但是,与专业的编码软件相比,其高级编解码器配置选项可能较为有限。
原创文章,作者:ZEGO即构科技,如若转载,请注明出处:https://market-blogs.zego.im/reports-baike/3494/