Webrtc 信令交换过程

开发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

扫描二维码关注公众号,回复: 14387670 查看本文章

服务器将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↓↓↓↓↓↓见下面↓↓文章底部↓↓ 

猜你喜欢

转载自blog.csdn.net/m0_60259116/article/details/125936731