开发Webrtc程序,首先需要知道其连接的建立过程,现记录如下:
假设有两个终端 A 与 终端 B,并假设 A先发起连接,A准备与B通信。
1、A调用peerConnection.createOffer()方法创建一个offer信令,内含SDP;
2、offer信令创建成功后会调用SdpObserver监听中的onCreateSuccess()响应函数
在此处A通过peerConnection.setLocalDescription()方法将SDP赋予自己的PeerConnection对象,同时将offer信令发送给服务器,请求服务器将其转发给B,
服务器将offer信令转发给B端
3、B收到offer信令后,调用peerConnection.setRemoteDescription()方法将A发过来的SDP赋予自己的PeerConnection对象,并调用peerConnection.createAnswer()方法创建一个answer信令,内含SDP
answer信令创建成功后同样会调用SdpObserver监听中的onCreateSuccess()响应函数
在此处B同样通过peerConnection.setLocalDescription方法将SDP赋予自己的PeerConnection对象,同时将answer信令发送给服务器并由服务器转发给A

服务器将answer信令转发给A端
4、A收到B的answer信令后,利用peerConnection.setRemoteDescription()方法将B发过来的SDP赋予自己的PeerConnection对象
以上4个步骤是交换 SDP信令的过程,同时进行的还有交换 Candidate 信令,步骤如下:
5、获取Candidate信息(A与B端同时进行,获取的是P2P的NAT地址信息)
A端与B端的PeerConnection.Observer监听会调用onIceCandidate()响应函数并提供IceCandidate对象。然后将IceCandidate对象组成candidate信令发送给服务器转发给另一端
服务器将candidate信令转发给连接上服务器的其他端
6、各端收到对方的candidate信令后调用peerConnection.addIceCandidate()将IceCandidate赋予自己的PeerConnection对象
以上过程跑完以后连接就基本建立了。
原文链接:Webrtc 信令交换过程 - 资料 - 我爱音视频网 - 构建全国最权威的音视频技术交流分享论坛
本文福利, C++音视频学习资料包、技术视频,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)↓↓↓↓↓↓见下面↓↓文章底部↓↓