💡
原文中文,约5100字,阅读约需13分钟。
📝
内容提要
本文分享了WebRTC音视频面试的五个关键点:SFU架构、拥塞控制、QoS机制、安全连接和音画同步。重点讨论了Simulcast与SVC的区别、Google拥塞控制的协同工作、FEC与ARQ的选择策略、DTLS握手过程中的角色确定,以及通过RTCP实现音视频同步。
🎯
关键要点
- WebRTC音视频面试的五个关键点:SFU架构、拥塞控制、QoS机制、安全连接和音画同步。
- SFU架构中Simulcast与SVC的区别:Simulcast发送多路独立流,SVC发送一路包含多个层级的流。
- Google拥塞控制(GCC)的两大引擎:基于延迟的控制器和基于丢包的控制器,协同工作以调整发送码率。
- 在RTT很小的情况下优先选择ARQ,在RTT很大的情况下优先选择FEC,NACK、PLI和FIR的区别在于请求重传的方式。
- DTLS握手过程中,ClientHello和ServerHello通过SDP中的a=setup属性确定角色,确保安全连接。
- 接收端利用RTCP Sender Report将音频流和视频流对齐,实现音画同步,WebRTC默认音频为主。
❓
延伸问答
WebRTC中SFU架构的Simulcast和SVC有什么区别?
Simulcast发送多路独立流,而SVC发送一路包含多个层级的流。Simulcast在弱网时可切换不同质量流,SVC则依赖基础层进行解码。
Google拥塞控制(GCC)是如何工作的?
GCC有两个引擎:基于延迟的控制器监测包到达时间,基于丢包的控制器根据丢包率调整码率,两者协同工作以优化发送码率。
在RTT很小和很大的情况下,FEC和ARQ的选择策略是什么?
RTT很小的情况下优先选择ARQ,因为重传快;RTT很大的情况下优先选择FEC,以避免重传延迟导致的播放问题。
DTLS握手过程中如何确定角色?
DTLS握手通过SDP中的a=setup属性确定角色,Offer端通常设置为actpass,Answer端选择active或passive来决定角色。
WebRTC如何实现音画同步?
接收端通过RTCP Sender Report将音频和视频流的时间戳映射到同一时间轴,调整播放以实现同步。
WebRTC中NACK、PLI和FIR有什么区别?
NACK请求重传丢失的包,PLI请求发送关键帧以恢复画面,FIR也请求关键帧但用于多流切换场景。
➡️