默认
发表评论 0
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
从0开始搭建音视频通信系统——iOS篇
阅读(27535) | 评论(0 收藏 淘帖

本文以两个开源技术:WebRTC和Tucodec为例,介绍如何在iOS系统上编译、搭建音视频通讯系统!


Webrtc


从0开始搭建音视频通信系统——iOS篇_图片2.png


webrtc是谷歌在2011年开源的网页实时通信协议,现已成为实时通信行业标准。若想要webrtc搭建一套ios音视频通信,步骤如下:

首先我们需要去官网下载iOS版本的源码,并且对其进行编译,源码大小差不多在6个多G,最终形成的webrtc的.a库大概有300多M。

1安装环境


系统环境:Mac OS
网络环境:准备好稳定的VPN工具

2安装git



3安装depot_tools


创建一个目录专门来存放项目编译工具和项目代码仓库等,确保该目录所在磁盘可用空间至少有8~10G.打开系统的终端工具:

mkdir webrtc_build

在执行下面命令之前,请确保你已经连上VPN已经FQ了,或者你已经给git单独配置了有效的socksFQ代理。开始安装depot_tools,这是一套Google用来编译Chromium或者WebRTC的构建工具,在我们后续的编译过程中也将使用它。
  1. <blockquote>a.  cd webrtc_build
复制代码

4获取WebRTC源码


在我们的编译工作目录webrtc_build下创建一个webrtc子目录来存放代码:

mkdir webrtc
cd webrtc

开始把WebRTC项目的代码仓库下载一份到本地来,由于其仓库之大,大约一共需要下载6G+的东西,所以这一步非常需要有耐心,而且需要有稳定无障碍的互联网:
  1. <blockquote>a.  设置要编译的平台到环境变量中:export GYP_DEFINES="OS=ios"
复制代码

5编译WebRTC


源码下载好后,这些源码可以编译为好几个平台,OS X、Linux、 Windows、Android、iOS等。这里我们只需要编译iOS平台的WebRTC,并制作成一个iOS的开发框架,我们需要在终端命令行环境下去搞定这一切。


5.1设置构建配置,分环境编译
  1. <blockquote>a.  进入WebRTC源码文件:cd src
复制代码

编译后,得到arm64下的WebRTC.framework.

5.2使用脚本,自动编译

在我们下载的源代码中有一个编译脚本,还是以我们下载的M59版本为例,其位置在src/tools_webrtc/ios/build_ios_libs.sh,直接执行这个脚本就能编译出需要的库文件了。编译后目录结构如下图:
从0开始搭建音视频通信系统——iOS篇_图片7.png


图中选中的WebRTC.framework为包含arm64、arm、x64环境的库,如果需要具体环境下的WebRTC.framework,进入相应文件夹选择。

(关于webrtc的编译方法来源简书MFJun,,完整链接为:https://www.jianshu.com/p/64bd7f5b18b1)

说完webrtc,接下来给大家介绍另一套免费的音视频通信系统

Tucodec

从0开始搭建音视频通信系统——iOS篇_图片13.png

tucodec是图鸭科技开发的一套音视频通信系统。其VoIP SDK已免费提供给用户服务器的源代码和客户端网络模块代码也已开源。我也简单介绍一下如何用其搭建iOS音视频通信:

1准备:


首先在图鸭官网:http://tucodec.com 进行注册,获得SDK中所需要的AppKey、AppSecret,注册登录后如下图所示:
从0开始搭建音视频通信系统——iOS篇_1.png

其次到开发者里选择下载iOS中所需SDK。
从0开始搭建音视频通信系统——iOS篇_2.png

最后解压,如下图所示:

从0开始搭建音视频通信系统——iOS篇_3.png

1.1、解压voipDemo.zip,如图4所示:

从0开始搭建音视频通信系统——iOS篇_4.png
把TYVoIPiOSSDK.framework拿出来,该framework即为图鸭音视频SDK,导入到所需的iOS项目中,有时候导入framework工程没有自动添加该SDK的framework路径,检查方法:target—>Build Settings—>Search Path,在Framework Search Path中加入TYVoIPiOSSDK.framework的路径。

由于SDK是与C++混编的,所以只要使用到SDK中文件的 .m 文件都需要改成 .mm 后缀名,如图5所示:

从0开始搭建音视频通信系统——iOS篇_5.png

在使用TYVoIPiOSSDK.framework库的时候,需要导入下面这些框架:

从0开始搭建音视频通信系统——iOS篇_6.png

完成上述操作后,我们的音视频通讯App所需的大体框架已经完成啦。

之后就是码代码,完成系统UI界面绘制和用户之间通讯的逻辑操作。

在图鸭科技提供的SDK中,我们可以看到对外只有两个头文件,可见快速集成音视频通信并不是那么复杂。如图7所示:
从0开始搭建音视频通信系统——iOS篇_7.png

2头文件定义


2.1、TYVoipDarwinManager.h文件,该文件定义了对外提供的类和协议。以下3个是该文件中核心类与协议。

(1) TYVoipDarwinManager : VoIP主要功能以及管理类
(2) TYVoipVideoData : 接收以及发送视频数据模型
(3) TYVoipDelegate : VoIP的代理

2.2、 TYVoipRender.h文件:提供渲染用户视图View

了解上述主要接口文件及其定义后,我们来了解SDK中的通信原理:在SDK中,所有用户都以通讯节点的形式存在,作为节点的用户都拥有自己唯一的表示—— UserID ,整个SDK会根据每个用户的UserID来进行通讯。

例如,甲和乙之间进行通讯,假设甲的UserID为401,乙的UserID为402,甲登录后向乙发送我要和你开视频,乙登录后向甲发送我要和你开视频,甲开始渲染乙的视图,乙开始渲染甲的视图 。完成上述所有操作后,甲乙建立通讯。

3完整的SDK使用步骤简介:

从0开始搭建音视频通信系统——iOS篇_微信图片_20180130143346.png


4部分代码解释:(从用户甲的实现代码来解释)


从0开始搭建音视频通信系统——iOS篇_微信图片_20180130143628.png

从0开始搭建音视频通信系统——iOS篇_微信图片_20180130143815.png

(关于tucodec的编译方法来源简书Tucodec图鸭科技,完整链接为:https://www.jianshu.com/p/5c435b41b7e3)

Tucodec是17年才步入到观众视野的音视频通信系统,相比webrtc,其稳定性相比稍弱,但是延时更低,编译难度也更低。总之,是一款可以直接进行接入测试的音视频通信系统。





即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:视频通信系统的关键技术与挑战下一篇:从0开始搭建音视频系统——Windows端
推荐方案
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部