iOS 音视频通话及会议1

2021-08-12  本文已影响0人  属于我的

iOS webRTC + SIP 协议实现点对点音视频通话。

    1、配置,大家需要下载webRTC以及SIP的frameWork,其中webRTC可以使用cocopods pod 'GoogleWebRTC'导入更方便,SIP的frameWork如下图。

1

    2、做SIP信令的话需要大家对C有一定的熟悉程度,需要用C去接收信令,然后处理信息进行下一步操作。

    3、SIP信令中含有webRTC所需要的SDP信息,以及ICE候选者,通过webRTC的RTCPeerConnection通过ICE建立连接,SDP内是一些编码以及需要遵守的内容。

    4、接下来给大家说一下webRTC使用

        首先给大家说一下音视频通话的流程,

        A主叫->B被叫

       1. A获取SDP offer信息,并发送SIP信息 INVITE信息

        2.A发送SIP信息并携带SDP信息

        3.B接收到INVITE邀请通话信息,并回复彩铃或嘟声。

        4.A收到B发送的彩铃或嘟声并开始播放

        5.B接受通话并携带自己的SDP answer信息发送

        6.A接收到B的SDP answer信息,建立连接后双方开始通话

        初始化,通过一下几个方法,初始化并获得一个peerConnection对象

2

        peerConnection对象创建之后,我们需要获取音视频流通过图片3中的方法,我们可以获取到音频流。图片4中的方法,获取到视频流。

3 4

        开始通话时获取SDP offer信息,并调用didCreateSessionDescription方法

5

         在didCreateSessionDescription方法中,我们需要调用peerConnectiong的setLocalDescription方法,设置本地流,然后调用didSetSessionDescriptionWithError方法

6

        通过didSetSessionDescriptionWithError方法我们可以判断获取的SDP信息是否有误,同时如果我们是应答方,就需要在此方法中创建SDP answer.

7

以上是peerConnectiong的初始化以及SDP的创建

然后是添加候选者以及接收到对方SDP信息后的设置,接收到对方的SDP信息之后,我们可以通过peerConnection的setRemoteDescription设置对方的SDP信息,同时设置完成之后仍需调用didSetSessionDescriptionWithError,来检查SDP信息,并且跟山一步相呼应如果我们是应答方,就需要创建SDP answer

8

接下来是ICE候选者的设置,通过SIP消息收到的SDP信息内有携带ICE候选者信息,我们通过筛选后拿到ICE候选者,并通过peerConnectiong的addIceCandidate方法添加候选者。

9

   ICE候选者设置后peerConnectiong就会自动进行检查并连接,通过代理方法didChangeIceConnectionState我们可以查看ICE连接的状态。还有其他的一些代理方法在此就不给大家一一举例,有兴趣的大家可以下来webRTC.frameWork进行查看。

以上就是webRTC+SIP的大致流程,其中SIP不是很熟悉,所以给大家描述的不是太清楚,有什么疑问欢迎私信。

    以下是一些关键代码的提取地址,如有需要请自取:

1、SipManager  OC 语言,用于接收SIP信息。(还有待完善,会及时更新链接)

链接: https://pan.baidu.com/s/1NpdjE56S_XaqIgS31kBjzA 密码: v0hq

2、Cliinterface C 语言,用于直接接收并处理SIP信息。

链接: https://pan.baidu.com/s/1ICUw09XmCMna77ZwjIQgiQ 密码: 9hi6

3、sofiasip.framework 

链接: https://pan.baidu.com/s/1eeT67REjo1NaHsNmYalUTg 密码: j92d

4、WebRTC.framework

链接: https://pan.baidu.com/s/1kE8azhEPpK61l1Vkbfgvnw 密码: 7afg

上一篇 下一篇

猜你喜欢

热点阅读