美文网首页
iOS 音视频通话及会议2

iOS 音视频通话及会议2

作者: 属于我的 | 来源:发表于2021-08-13 15:08 被阅读0次

    iOS webRTC + webSocket 实现音视频会议

        webRTC在上一篇,已经给大家对webRTC做了一下简单的介绍,以及简单的使用流程,接下来给大家讲一下我们的音视频会议实现流程。

        只是简单的实现,优化仍需努力,仅供参考。

    1

        以上这几个类,相信大家能看出来,它们的作用分别是什么,LH_CallAudioMannager是管理音频播放的,可以切换音频播放渠道,比如蓝牙,听筒以及扬声器。LH_CallCaptureManager管理视频输入,摄像头切换功能,LH_CallManager核心类,对webRTC进行二次封装使用。LH_CoordinateManager所有类的管理类,所有的动作通过它进行统一处理。LH_VideoChatSocketNetWork与服务器的通信。

          webRTC的主要实现对象是RTCPeerConnection,不管是设置流还是添加候选者,都是调用peerConnection的方法进行设置。在会议室内每增加一个人,就要新创建一个peerConnection对象,每个对象代表一个人,当然我们自己也是一个peerConnectiong。

        RTCPeerConnectiong有两个设置流的方法分别是setLocalDescription、setRemoteDescription,setLocal方法是当我们拿到自己的offer SDP时需要调用的,此方法可让我们在本地看到自己的视频流。setRemote方法是将我们自己的answer SDP添加给peerConnectiong,这样对方就可以接收到我们的音视频流。注意:仅对属于本客户端的peerConnectiong这样设置。

    1 2 3

        我们的会议室内增加一个人,我们就要新建一个peerConnection,当此人开始推流时,服务端会通过webSocket将对方的answer SDP发送过了,这是我们就需要将接收到的answer SDP通过setRemote方法添加给此人相对应的peerConnection,还有ICE候选者,SDP,peerConnection,ICE候选者,这三个一定要对应上,才可以成功。

    4

        当我们本机peerConnection开始接收远端流时会通过didStartReceivingOnTransceiver方法,我们需要在此方法内做接收并展示

    5

        有展示就得有移除didChangeIceConnectionState这个代理方法会通知此时peerConnectio的连接状态,当连接关闭时我们就需要对peerConnectiong进行处理,和移除接收此peerConnection视频流的视图。

    6

        本地视频展示需要用到RTCCameraPreviewView来接收摄像头收集到的流,远端视频流展示需要用到RTCVideoRenderer。

    7

        接下来是切换音频输出,音频管理类需要用到两个框架<AudioToolbox/AudioToolbox.h>和<AVFoundation/AVFoundation.h>

    8

           摄像头切换

    9 10 11

    以上是webRTC➕webSocket音视频会议的简单实现,仅适用于初入音视频小白。

    如有任何疑问欢迎私信,正在努力码Demo,稍后奉上。

    相关文章

      网友评论

          本文标题:iOS 音视频通话及会议2

          本文链接:https://www.haomeiwen.com/subject/vdmdbltx.html