本文介绍如何使用 Agora SDK 实现视频 PK 连麦场景的重要功能。

基础流程图

参考下图,在你的项目中实现如下功能:

  • 登录登出

  • 跨频道连麦

集成指引

对照下表,将相应的 SDK 或服务集成到你的项目中。

产品 SDK 下载 集成文档
Agora RTC (Real-time Communication) SDK iOS 视频互动直播 SDK 实现互动直播
Agora RTM (Real-time Messaging) SDK iOS 实时消息 SDK 收发点对点消息和频道消息
第三方美颜 SDK N/A iOS 平台集成开发

核心 API 时序图

下图展示如何调用 Agora 的 API 实现一个视频 PK 连麦场景。你可以参考如下 API 时序图进行相应的实现。

下图中使用的云服务是 Agora 实现的。如果你需要使用相同功能,需要自行部署。
  • 房主加入直播间、发起连麦 PK 请求

  • 观众发送聊天信息和切换直播间

核心 API 参考

  • Agora RTM SDK
API 实现功能
initWithAppId 创建并返回一个 RtmClient 实例。
loginByToken 登录 Agora RTM 系统。登录后你可以使用 RTM 的核心业务逻辑。
createChannelWithId 创建 Agora RTM 频道。一个 RtmClient 可以创建多个频道。
joinWithCompletion 加入 Agora RTM 频道。
sendMessage 发送频道消息。成功发送后,频道内所有用户都能收到。
sendMessage 发送点对点消息,可用于主播向另一个房间的主播发送 PK 连麦邀请。
leaveWithCompletion 离开 RTM 频道。
logoutWithCompletion 登出 Agora RTM 系统。
  • Agora RTC SDK
API 实现功能
sharedEngineWithAppId 初始化 AgoraRtcEngineKit 对象。
setChannelProfile 设置频道场景。本场景中,我们将频道属性设为直播。
setClientRole 设置直播场景下的用户角色。
enableVideo 开启视频。
setupLocalVideo 设置本地视图。主播需要调用该方法,才能在本地看到自己的画面。
joinChannelByToken 加入 RTC 频道。
startChannelMediaRelay 开始跨频道媒体流转发。这是实现跨直播间连麦场景的 API。
setupRemoteVideo 设置远端视图。目标频道主播同意连麦 PK 后,源频道主播需要调用该方法,才能看到连麦主播的视频画面。
stopChannelMediaRelay 停止跨频道媒体流转发。
leaveChannel 离开 RTC 频道。

附加功能

美颜

Agora Live 使用第三方的 SDK 实现美颜功能。你可以参考示例代码里 faceunity 文件中的逻辑进行实现。

网络质量检测

使用 reportRtcStats 回调,在你的项目中实现网络质量检测和报告功能。该回调统计当前通话数据,包括本地的数据发送和接收码率以及丢包率等。在通话或直播过程中每两秒触发一次。

本地禁音、禁视频

调用 muteLocalAudioStreammuteLocalVideoStream 方法,来停止发送本地音频流、视频流。

耳返

调用 enableInEarMonitoring 方法开启主播的耳返功能。

混音及音效

加入频道后,调用 startAudioMixing 方法,可以播放音乐文件,实现播放背景音乐的功能。调用 playEffect 方法,播放音效文件,实现鼓掌、欢呼、尖叫等氛围音效果。

开源示例代码

我们也在 GitHub 上提供了视频 PK 连麦的开源示例项目,你也可以前往下载,或查看其中的源代码。