现在很多岗位都需要有WebRTC,进行音视频的开发,所以最近在看WebRTC资料,B站有很多讲课都已经落后了,很多API都废弃了,而且还遇到的很多坑,所以做一下记录和进行深入的理解
优势:
1.不需要插件,支持跨平台兼容
2.基于UDP协议和RTP/RTCP技术,低延迟和实时性高
3.采用了SRTP加密传输和TLS身份验证,防止了窃听和篡改
4.支持P2P直连,降低服务器压力
缺点:
1.弱网环境容易丢包
2.兼容性不太好
3.多人场景扩展性不足
理解:
1.客户端(A)向信令服务器发送指令连接其他客户端(B)
2.B如果接收,信令服务器向A通知,
3.A获取本地媒体流,通过实例RTCPeerConnection,创建offer且发送到B建立点对点的连接(setLocalDescription)
4.B接收到A的媒体流,通过实例RTCPeerConnection,B获取本地媒体流,创建answer且发送到B建立点对点的连接(setLocalDescription)
5.实例后的RTCPeerConnection有onicecandidate和ontrack(addStrem已经废弃)
6.监听的onicecandidate监听到数据后,进行相对应处理candidate,且通过addIceCandidate进行连接,
7.关闭连接直接将实例的RTCPeerConnection给close
坑:
1.因为是流,所以需要让数据缓存完整才能播放
2.由于浏览器限制不能自动播放,所以需要加载完成才能播放视频