ios视频通话三方_iOS 多人音视频通话 [IM开发文档]

两侧同时换到之前的修订记录

前一修订版

2020/12/11 08:20 victorli [主播申请管理员]2020/12/11 08:19 victorli [观众申请主播]2020/12/11 08:19 victorli [观众申请主播]2020/12/07 04:14 huanxinfudh [9 加入会议]2020/11/20 04:59 victorli [主播申请管理员]2020/11/20 04:59 victorli [主播申请管理员]2020/11/13 03:51 victorli [客户端api]2020/11/06 04:02 victorli [使用cocoapods导入SDK]2020/09/22 03:58 huanxinfudh [音视频无数据回调]2020/09/08 10:05 victorli [变声/自定义音频]2020/09/08 10:03 victorli [通话质量]2020/09/08 10:02 victorli [弱网检测]2020/09/08 09:59 victorli [云端录制(包括自定义录制、音频参数)]2020/09/08 09:47 victorli [客户端api]2020/09/07 08:37 victorli2020/09/07 06:39 victorli [5 创建UI]2020/09/07 03:35 victorli2020/09/04 02:41 victorli [快速集成]2020/09/03 10:50 victorli2020/09/03 08:25 victorli [运行Demo]2020/09/03 08:24 victorli2020/08/27 10:30 victorli [成员A发布音视频流]2020/08/06 10:57 huanxinfudh [管理会议角色]2020/08/06 10:54 huanxinfudh [管理会议角色]2020/07/30 07:27 victorli [多路推流]2020/07/30 06:49 victorli [开启cdn推流]2020/07/30 06:46 victorli [更新布局]2020/07/30 06:44 victorli [停止推流]2020/07/30 06:36 victorli [停止推流]2020/07/30 06:36 victorli [停止推流]2020/07/30 06:35 victorli [开启cdn推流]2020/07/30 04:58 victorli [开启cdn推流]2020/07/30 04:55 victorli [开启cdn推流]2020/07/30 04:52 victorli [会议属性]2020/07/30 04:52 victorli [会议属性]2020/07/30 04:49 victorli [会议属性]2020/07/30 04:46 victorli [会议结束]2020/07/30 04:35 victorli [成员无音视频数据]2020/07/30 03:39 victorli [视频质量统计数据]2020/07/20 10:56 huanxinfudh [管理员销毁会议]2020/07/20 10:09 huanxinfudh [管理员销毁会议]

Go

后一修订版

前一修订版

2020/12/11 08:20 victorli [主播申请管理员]2020/12/11 08:19 victorli [观众申请主播]2020/12/11 08:19 victorli [观众申请主播]2020/12/07 04:14 huanxinfudh [9 加入会议]2020/11/20 04:59 victorli [主播申请管理员]2020/11/20 04:59 victorli [主播申请管理员]2020/11/13 03:51 victorli [客户端api]2020/11/06 04:02 victorli [使用cocoapods导入SDK]2020/09/22 03:58 huanxinfudh [音视频无数据回调]2020/09/08 10:05 victorli [变声/自定义音频]2020/09/08 10:03 victorli [通话质量]2020/09/08 10:02 victorli [弱网检测]2020/09/08 09:59 victorli [云端录制(包括自定义录制、音频参数)]2020/09/08 09:47 victorli [客户端api]2020/09/07 08:37 victorli2020/09/07 06:39 victorli [5 创建UI]2020/09/07 03:35 victorli2020/09/04 02:41 victorli [快速集成]2020/09/03 10:50 victorli2020/09/03 08:25 victorli [运行Demo]2020/09/03 08:24 victorli2020/08/27 10:30 victorli [成员A发布音视频流]2020/08/06 10:57 huanxinfudh [管理会议角色]2020/08/06 10:54 huanxinfudh [管理会议角色]2020/07/30 07:27 victorli [多路推流]2020/07/30 06:49 victorli [开启cdn推流]2020/07/30 06:46 victorli [更新布局]2020/07/30 06:44 victorli [停止推流]2020/07/30 06:36 victorli [停止推流]2020/07/30 06:36 victorli [停止推流]2020/07/30 06:35 victorli [开启cdn推流]2020/07/30 04:58 victorli [开启cdn推流]2020/07/30 04:55 victorli [开启cdn推流]2020/07/30 04:52 victorli [会议属性]2020/07/30 04:52 victorli [会议属性]2020/07/30 04:49 victorli [会议属性]2020/07/30 04:46 victorli [会议结束]2020/07/30 04:35 victorli [成员无音视频数据]2020/07/30 03:39 victorli [视频质量统计数据]2020/07/20 10:56 huanxinfudh [管理员销毁会议]2020/07/20 10:09 huanxinfudh [管理员销毁会议]2020/07/07 11:23 victorli [共享桌面]2020/06/29 09:04 huanxinfudh [基本知识]2020/06/02 09:18 victorli [视频质量统计数据]2020/06/02 09:16 victorli [视频质量统计数据]2020/06/02 09:16 victorli [视频质量统计数据]2020/06/02 09:14 victorli [视频质量统计数据]2020/06/02 09:13 victorli [主播申请管理员]2020/06/02 04:59 victorli [其他方法]2020/05/15 05:02 victorli [多集群代理]2020/05/15 04:58 victorli [多集群代理]

Go

行 110:

行 110:

​code>​​code>​

* 在 Terminal 内运行 pod update 命令更新本地库版本。* 在 Terminal 内运行 pod update 命令更新本地库版本。

-* 运行 pod install 命令安装 ​AgoraSDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 xcworkspace 文件。+* 运行 pod install 命令安装Hyphenate ​SDK。成功安装后,Terminal 中会显示 Pod installation complete!,此时项目文件夹下会生成一个 xcworkspace 文件。

* 打开新生成的 xcworkspace 文件。* 打开新生成的 xcworkspace 文件。

行 162:

行 162:

roomConfig.confrType = EMConferenceTypeCommunication;​roomConfig.confrType = EMConferenceTypeCommunication;​

roomConfig.nickName = @"​昵称";​roomConfig.nickName = @"​昵称";​

-roomConfig.isMerge ​= [EMDemoOption sharedOptions].isMerge;+​//​是否开启服务端录制

-roomConfig.isRecord ​= [EMDemoOption sharedOptions].isRecord;+​roomConfig.isRecord ​= YES;

+//​录制时是否合并数据流

+roomConfig.isMerge ​= YES;

[[[EMClient sharedClient] conferenceManager] joinRoom:​roomName password:​pswd role:role roomConfig:​roomConfig completion:​^(EMCallConference *aCall, EMError *aError) {[[[EMClient sharedClient] conferenceManager] joinRoom:​roomName password:​pswd role:role roomConfig:​roomConfig completion:​^(EMCallConference *aCall, EMError *aError) {

self.conference = aCall;self.conference = aCall;

行 286:

行 288:

====== 进阶功能 ============ 进阶功能 ======

===== 会议管理 ========== 会议管理 =====

+==== 取日志 ====

+SDK会写入日志文件到本地。日志文件路径如下:沙箱Documents/​HyphenateSDK/​easemoblog,以真机为例,获取过程如下:

+* 打开Xcode连接设备,前往Xcode --> Window --> Devices and Simulators

+* 进入Devices选项卡,在左侧选择目标设备,界面如下:

+

+{{:​rtc:​one2one:​fetchlogfile.png?​400|}}

+

+日志文件easemob.log文件在下载包内容的AppData/​Library/​Application Support/​HyphenateSDK/​easemobLog目录下

==== 创建会议并加入 ======== 创建会议并加入 ====

除根据房间名和房间密码加入会议的api外,SDK还提供了直接创建并加入会议的api,接口如下:除根据房间名和房间密码加入会议的api外,SDK还提供了直接创建并加入会议的api,接口如下:

行 660:

行 670:

completion:​(void(^)(EMError *aError))aCompletionBlock;​completion:​(void(^)(EMError *aError))aCompletionBlock;​

​code>​​code>​

-==== 云端录制(包括自定义录制、音频参数) ​====+==== 云端录制 ====

多人音视频会议支持云端录制功能,包括服务器默认录制以及自定义布局录制两种多人音视频会议支持云端录制功能,包括服务器默认录制以及自定义布局录制两种

== 服务器默认录制 ==== 服务器默认录制 ==

行 716:

行 726:

[EMClient sharedClient].options.isUseRtcConfig = YES;[EMClient sharedClient].options.isUseRtcConfig = YES;

​code>​​code>​

-==== 取日志 ====

-SDK会写入日志文件到本地。日志文件路径如下:沙箱Documents/​HyphenateSDK/​easemoblog,以真机为例,获取过程如下:

-* 打开Xcode连接设备,前往Xcode --> Window --> Devices and Simulators

-* 进入Devices选项卡,在左侧选择目标设备,界面如下:

-{{:​rtc:​one2one:​fetchlogfile.png?​400|}}

-

-日志文件easemob.log文件在下载包内容的AppData/​Library/​Application Support/​HyphenateSDK/​easemobLog目录下

==== 私有部署 ======== 私有部署 ====

私有部署设置方法参见[[http://​docs-im.easemob.com/​im/​ios/​other/​privatecloud#​%E7%A7%81%E6%9C%89%E4%BA%91sdk%E9%9B%86%E6%88%90%E9%85%8D%E7%BD%AE|私有云sdk集成配置]]私有部署设置方法参见[[http://​docs-im.easemob.com/​im/​ios/​other/​privatecloud#​%E7%A7%81%E6%9C%89%E4%BA%91sdk%E9%9B%86%E6%88%90%E9%85%8D%E7%BD%AE|私有云sdk集成配置]]

行 862:

行 865:

​code>​​code>​

-该功能需要会议中开启质量统计+该功能需要会议中开启质量统计(必须在创建或者加入会议成功之后,在调用此方法)

​​

行 869:

行 872:

==== 弱网检测 ======== 弱网检测 ====

-SDK提供多人音视频会议的网络连接状态检测,当本地网络断开、重连、质量差时收到以下回调+SDK提供多人音视频会议的网络连接状态检测,当本地网络断开、重连、质量差时收到以下回调。该功能需要会议中开启质量统计

​​

- (void)conferenceNetworkDidChange:​(EMCallConference *)aSession- (void)conferenceNetworkDidChange:​(EMCallConference *)aSession

行 889:

行 892:

- (void)conferenceDidUpdate:​(EMCallConference*)aConference streamId:​(NSString*)streamId statReport:​(EMRTCStatsReport *)aReport;- (void)conferenceDidUpdate:​(EMCallConference*)aConference streamId:​(NSString*)streamId statReport:​(EMRTCStatsReport *)aReport;

​code>​​code>​

-EMRTCStatsReport的详细信息参见apiDoc+EMRTCStatsReport的详细信息参见http://​sdkdocs.easemob.com/​apidoc/​ios/​chat3.0/​interface_e_m_r_t_c_stats_report.html

==== 监听谁在说话 ======== 监听谁在说话 ====

多人音视频会议可以实时监听谁在说话,该功能需要开启,启动/​停止控制如下:多人音视频会议可以实时监听谁在说话,该功能需要开启,启动/​停止控制如下:

行 947:

行 950:

== 输入音频数据 ==== 输入音频数据 ==

-音频数据采集可参考Demo中的AudioRecord类实现,​音频数据的输入必须在加入会议成功的回调后开始,否则会导致网络阻塞,影响通话质量。+音频数据采集可参考1v1音视频通话Demo中的AudioRecord类实现,​音频数据的输入必须在加入会议成功的回调后开始,否则会导致网络阻塞,影响通话质量。

[[[EMClient sharedClient] conferenceManager] joinRoom:​roomName password:​pswd role:role roomConfig:​roomConfig completion:​^(EMCallConference *aCall, EMError *aError) {[[[EMClient sharedClient] conferenceManager] joinRoom:​roomName password:​pswd role:role roomConfig:​roomConfig completion:​^(EMCallConference *aCall, EMError *aError) {

行 1113:

行 1116:

===== 角色管理 ========== 角色管理 =====

==== 观众申请主播 ======== 观众申请主播 ====

-会议中的观众角色可以向管理员发申请成为主播,管理员可以选择同意或者拒绝。观众申请主持人的接口需要管理员的memId,先通过获取会议属性接口获取到管理员的memName,然后根据memName以及成员加入的回调中获取到的EMCallMember,获取到memId。接口如下+会议中的观众角色可以向管理员发申请成为主播,管理员可以选择同意或者拒绝。观众申请主播的接口需要管理员的memId,先通过获取会议属性接口获取到管理员的memName,然后根据memName以及成员加入的回调中获取到的EMCallMember,获取到memId。接口如下

/*!/*!

行 1156:

行 1159:

==== 主播申请管理员 ======== 主播申请管理员 ====

-会议中的主播角色可以向管理员发申请成为管理员,管理员可以选择同意或者拒绝,成为管理员后,各管理员之间的权限是相同的。主播申请主持人的接口需要管理员的memId,先通过获取会议属性接口获取到管理员的memName,然后根据memName以及成员加入的回调中获取到的EMCallMember,获取到管理员memId,调用接口changeMemberRoleWithConfId授权,然后回复申请人,接口如下:+会议中的主播角色可以向管理员发申请成为管理员,管理员可以选择同意或者拒绝,成为管理员后,各管理员之间的权限是相同的。主播申请管理员的接口需要管理员的memId,先通过获取会议属性接口获取到管理员的memName,然后根据memName以及成员加入的回调中获取到的EMCallMember,获取到管理员memId,调用接口changeMemberRoleWithConfId授权,然后回复申请人,接口如下:

/*!/*!

行 1197:

行 1200:

aMemberName​ 是appkey拼接环信id,例如:easemob-demo#​chatdemoui_lulu1aMemberName​ 是appkey拼接环信id,例如:easemob-demo#​chatdemoui_lulu1

+

+**管理员/​主播也可以直接使用该接口对自己进行降级**

/*!/*!

行 1204:

行 1209:

* 当角色升级时,​用户需要给管理员发送申请,​管理通过该接口改变用户接口.* 当角色升级时,​用户需要给管理员发送申请,​管理通过该接口改变用户接口.

* 当角色降级时,​用户直接调用该接口即可.* 当角色降级时,​用户直接调用该接口即可.

-* 注意: 暂时不支持Admin降级自己

**

*  @param aConfId ​          ​会议ID(EMCallConference.confId)*  @param aConfId ​          ​会议ID(EMCallConference.confId)

行 1330:

行 1334:

* EMCallOption 多人音视频通话配置类* EMCallOption 多人音视频通话配置类

* EMConferenceManager 是多人音视频通话的主要管理类,提供了加入会议、退出、发流、订阅等接口* EMConferenceManager 是多人音视频通话的主要管理类,提供了加入会议、退出、发流、订阅等接口

-* EMConferenceManagerDelegate 是多人音视频通话的监听回调类,实时语音通话相关的回调+* EMConferenceManagerDelegate 是多人音视频通话的监听回调类,多人音视频通话相关的回调

* EMCallConference 多人音视频通话的会议实例接口* EMCallConference 多人音视频通话的会议实例接口

行 1428:

行 1432:

|[[http://​sdkdocs.easemob.com/​apidoc/​ios/​chat3.0/​protocol_e_m_conference_manager_delegate-p.html#​a8940c01890169f6c5a68f8d6787264e9|onferenceDidUpdate:​streamId:​statReport:​]] ​   | 当前会议的媒体流质量报告回调 ||[[http://​sdkdocs.easemob.com/​apidoc/​ios/​chat3.0/​protocol_e_m_conference_manager_delegate-p.html#​a8940c01890169f6c5a68f8d6787264e9|onferenceDidUpdate:​streamId:​statReport:​]] ​   | 当前会议的媒体流质量报告回调 |

+== EMCallConference ==

+参见http://​sdkdocs.easemob.com/​apidoc/​ios/​chat3.0/​interface_e_m_call_conference.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值