使用WebRTC与TURN服务器时HoloLens 2远程音频重复播放问题
HoloLens 2使用TURN服务器时远程音频重复播放问题的可能原因
问题背景
基于MixedReality-WebRTC开发HoloLens 2端的远程控制类应用,通过信令服务器连接WebApp(采集端)与HoloLens 2(AR显示端)。P2P连接模式下本地运行完全正常,但切换至TURN服务器中转后,HoloLens设备端出现远程音频重复播放的回声效果——表现为同一音频内容以约0.1秒延迟重复播放,但代码层面仅存在一个AudioSource实例和一条远程音频轨道。Unity编辑器中运行同一应用无此异常。
使用环境:Unity 2022.3.7f1、MS-WebRTC 2.0.2、MRTK 2.8.3
可能的排查方向
- TURN服务器的音频转发冗余:TURN服务器在处理音频流转发时,可能因网络协议切换(比如UDP丢包后回退TCP)或路由策略生成了两条存在微小延迟的逻辑流,HoloLens的音频处理栈无法正确合并这类流,而编辑器的音频系统对延迟差异的容错性更强。
- MS-WebRTC 2.0.2的平台适配bug:该版本的WebRTC库在HoloLens平台下处理TURN中转的音频流时,可能存在内部轨道重复注册、音频回调重复触发的问题。编辑器环境的底层音频接口与HoloLens设备端不同,恰好避开了该bug。
- HoloLens内置回声消除(AEC)误触发:切换到TURN后,音频流的端到端延迟发生变化,触发HoloLens系统级AEC的误判——把延迟到达的远程音频当成了本地回声进行二次处理,反而导致重复播放。可尝试禁用HoloLens的系统AEC功能测试。
- MRTK音频模块与WebRTC的冲突:MRTK的音频管理组件在TURN模式下,可能对WebRTC传入的音频流进行了额外的复制或延迟播放处理,而编辑器中MRTK的音频逻辑存在差异,未触发该问题。
- 网络抖动导致的音频帧重传:TURN服务器在网络不稳定时可能会重传音频帧,HoloLens端的WebRTC客户端未正确实现帧去重逻辑,导致同一音频帧被多次解码播放,形成延迟重复的效果。
内容的提问来源于stack exchange,提问作者KarlSupertramp
相关产品推荐
相关产品推荐

