一、快速开始

集成指南

适用范围

本集成文档适用于iOS RTCPEngine SDK 2.0.0 ~ 3.0.2版本。

准备环境

  • Xcode 9.0+。
  • iOS 8.0+ 真机(iPhone 或 iPad)。
  • 请确保你的项目已设置有效的开发者签名。

导入SDK

CocoaPods导入

  • 通过 Cocoapods 下载地址:
pod 'RTCPEngine'
  • 如果需要安装指定版本则使用以下方式(以 3.0.2 版本为例):
pod 'RTCPEngine', '3.0.2'

手动导入

  • 前往GitHub下载Demo,找到RTCPEngine.framework;

  • 在Xcode中选择“Add files to 'Your project name'...”,将RTCPEngine.framework添加到你的工程目录中 ios_rtcp_01

  • 打开General->Embedded Binaries中添加RTCPEngine.framework

ios_rtcp_02

权限说明

使用RTCPEngine SDK 前,需要对设备进行授权。打开 info.plist ,点击 + 图标开始添加:

  • 添加设备使用「网络」的权限

    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>
    
  • 添加设备使用「相机」的权限

    <key>NSCameraUsageDescription</key>
    <string>XXX请求访问相机用于...</string>
    
  • 添加设备使用「麦克风」的权限

<key>NSMicrophoneUsageDescription</key>
<string>XXX请求访问麦克风用于...</string>

后台模式(Background Modes)

勾选Audio, AirPlay and Picture in Picture

ios_rtcp_03

开发指南

1. 初始化SDK

集成SDK后,还需对SDK进行初始化操作,建议在AppDelegate中完成。

1.1 导入头文件
#import <RTCPEngine/ARRtcpSDK.h>
1.2 配置开发者信息

调用initEngine:token:方法配置开发者信息,开发者信息可在anyRTC管理后台中获得,详见创建anyRTC账号

示例代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
//配置开发者信息
[ARRtcpEngine initEngine:appID token:token];
return YES;
}

2. 实例化实时直播对象

调用initWithDelegate:userId:userData:方法实例化实时直播对象,需实现ARRtcpKitDelegate中的回调方法。

示例代码:

- (void)itializationRTCPKit {
//实例化实时直播对象
self.rtcpKit = [[ARRtcpKit alloc] initWithDelegate:self userId:[NSString stringWithFormat:@"%d",arc4random() % 100000] userData:@""];   
}

3. 发布流

3.1 配置信息

调用ARRtcpOption类中的方法可对视频质量、帧率、码率、方向等进行配置。

示例代码:

//配置信息
ARRtcpOption *option = [ARRtcpOption defaultOption];
ARVideoConfig *config = [[ARVideoConfig alloc] init];
config.videoProfile = ARVideoProfile360x640;
config.cameraOrientation = ARCameraAuto;
option.videoConfig = config;
3.2 发布媒体

调用publishByToken:roomId:mediaType:isLive:方法发布媒体,第一个参数token为令牌,可为空,具体用法可参考安全指南,第二个参数type为发布类型,音视频(ARMediaVideoType)、音频(ARMediaAudioType)。

示例代码:

[self.rtcpKit publishByToken:nil roomId:[self randomAnyRTCString:6] mediaType:0 isLive:YES];
3.3 设置本地视频采集窗口

调用setLocalVideoCapturer方法设置本地视频采集窗口,第一个参数为本地视频显示窗口,第二个参数为配置信息。

示例代码:

[self.rtcpKit setLocalVideoCapturer:self.view option:option];
3.4 取消发布媒体

调用unPublish方法取消发布媒体,再次发布需调用setLocalVideoCapturer方法。

示例代码:

[self.rtcpKit unPublish];

4. 订阅流

4.1 订阅视频

调用subscribeByToken:pubId:方法订阅媒体,第一个参数token为令牌,可为空,具体用法可参考安全指南,第二个参数pubId为通道id。

示例代码:

[self.rtcpKit subscribeByToken:nil pubId:self.pubId];
4.2 设置显示其他人的视频窗口

订阅后视频即将显示的回调中可调用setRemoteVideoRender:pubId:方法用于显示订阅的视频窗口。

示例代码:

- (void)onRTCOpenRemoteVideoRender:(NSString *)pubId {
[self.rtcpKit setRemoteVideoRender:self.view pubId:pubId];
}
4.3 取消订阅

取消已订阅的流可调用unSubscribe方法。

示例代码:

[self.rtcpKit unSubscribe:self.pubId];

5. 离开房间

直播结束或离开房间需调用close方法。

示例代码:

[self.rtcpKit close];

二、API接口文档

ARRtcpEngine 接口类

1. 配置开发者信息

定义

+ (void)initEngine:(NSString *)appId token:(NSString *)token;

参数

参数名 类型 描述
appId NSString appId
token NSString token

说明

该方法为配置开发者信息,上述参数均可在https://www.anyrtc.io/ 应用管理中获得,建议在AppDelegate.m调用。

2. 配置私有云

定义

+ (void)configServerForPriCloud:(NSString *)address port:(int)port;

参数

参数名 类型 描述
address NSString 私有云服务地址
port int 私有云服务端口

说明

配置私有云信息,当使用私有云时才需要进行配置,默认无需配置。

3. 获取SDK版本号

定义

+ (NSString *)getSDKVersion;

返回值

RTCP SDK版本号

4. 设置打印日志级别

定义

+ (void)setLogLevel:(ARLogModel)levelModel;

参数

参数名 类型 描述
levelModel ARLogModel 日志级别

ARRtcpKit 接口类

1. 实例化RTCPKit对象

定义

- (instancetype)initWithDelegate:(id<ARRtcpKitDelegate>)delegate userId:(NSString *)userId userData:(NSString *)userData;

参数

参数名 类型 描述
delegate id RTCP相关回调代理
userId NSString 用户自己平台的Id,确保唯一,不能为空
userData NSString 用户自定义信息

返回

实时直播对象。

2. 监听房间

定义

- (void)listen:(NSString *)roomId;

参数

参数名 类型 描述
roomId NSString 房间号

说明

监听房间号,用户发布取消发布的回调可以监听到,可以监听多个房间。

3. 取消监听房间

定义

- (void)unListen:(NSString *)roomId;

参数

参数名 类型 描述
roomId NSString 房间号

说明

取消监听房间号,用户发布取消发布的回调不在回调。

4. 设置本地视频采集窗口

定义

- (void)setLocalVideoCapturer:(UIView *)render option:(ARRtcpOption *)option;

参数

参数名 类型 描述
render UIView 视频显示对象
option ARRtcpOption 配置信息

5. 设置本地显示模式

定义

- (void)updateLocalVideoRenderModel:(ARVideoRenderMode)videoRenderMode;

参数

参数名 类型 描述
videoRenderMode ARVideoRenderMode 显示模式,默认ARVideoRenderScaleAspectFill,等比例填充视图模式

6. 设置本地音频是否传输

定义

- (void)setLocalAudioEnable:(BOOL)enable;

参数

参数名 类型 描述
enable BOOL YES传输音频,NO不传输音频,默认传输

7. 设置本地视频是否传输

定义

- (void)setLocalVideoEnable:(BOOL)enable;

参数

参数名 类型 描述
enable BOOL YES传输视频,NO为不传输视频,默认视频传输

8. 获取本地音频传输是否打开

定义

- (BOOL)localAudioEnabled;

返回值

音频传输与否

9. 获取本地视频传输是否打开

定义

- (BOOL)localVideoEnabled;

返回值

视频传输与否

10. 设置扬声器开关

定义

- (void)setSpeakerOn:(BOOL)on;

参数

参数名 类型 描述
on BOOL YES打开扬声器,NO关闭扬声器,默认打开扬声器

11. 切换前后摄像头

定义

- (void)switchCamera;

12. 设置本地前置摄像头镜像是否打开

定义

- (BOOL)setFontCameraMirrorEnable:(BOOL)enable;

参数

参数名 类型 描述
enable BOOL YES打开,NO关闭

返回

本地前置摄像头镜像是否成功打开

13. 前置摄像头是否镜像

定义

- (BOOL)fontCameraMirror;

返回值

是否镜像,默认打开。

14. 禁止接收某人视频

定义

- (int)muteRemoteVideoStream:(BOOL)mute pubId:(NSString *)pubId;

参数

参数名 类型 描述
mute BOOL YES禁止,NO接收
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

返回值

操作是否成功

15. 禁止接收某人音频

定义

- (int)muteRemoteAudioStream:(BOOL)mute pubId:(NSString *)pubId;

参数

参数名 类型 描述
mute BOOL YES禁止,NO接收
pubId BOOL RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

返回值

操作是否成功

16. 发布媒体

定义

- (void)publishByToken:(NSString *_Nullable)token roomId:(NSString *)roomId mediaType:(ARMediaType)type isLive:(BOOL)live;

参数

参数名 类型 描述
token NSString 令牌:客户端向自己服务申请获得,参考企业级安全指南
roomId NSString 房间号
type ARMediaType 0为发布音视频,1为只发布音频
live BOOL 服务端不转直播;YES:服务端转直播;(使用该功能需联系客服开通)

17. 取消发布媒体

定义

- (void)unPublish;

说明

取消发布媒体之后,下次再发布的时候,还需要在调用setLocalVideoCapturer

18. 订阅视频

定义

- (void)subscribeByToken:(NSString *_Nullable)token pubId:(NSString *)pubId;

参数

参数名 类型 描述
token NSString 令牌:客户端向自己服务申请获得,参考企业级安全指南
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

19. 取消订阅媒体流

定义

- (void)unSubscribe:(NSString *)pubId;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

20. 设置显示其他人的视频窗口

定义

- (void)setRemoteVideoRender:(UIView *)render pubId:(NSString *)pubId;

参数

参数名 类型 描述
render UIView 对方视频的窗口,本地设置
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

说明

该方法用于订阅成功通后,视频即将显示的回调中(onRTCRemoteOpenVideoRender)使用。

21. 设置其他人显示模式

定义

- (void)updateRTCVideoRenderModel:(ARVideoRenderMode)videoRenderMode;

参数

参数名 类型 描述
videoRenderMode ARVideoRenderMode 显示模式,默认ARVideoRenderScaleAspectFill,等比例填充视图模式

22. 关闭离开

定义

- (void)close;

23. 设置音频检测

定义

- (void)setAudioActiveCheck:(BOOL)on;

参数

参数名 类型 描述
on BOOL 是否开启音频检测,默认打开

24. 获取音频检测是否打开

定义

- (BOOL)audioActiveCheck;

25. 设置视频网络状态是否打开

定义

- (void)setNetworkStatus:(BOOL)enable;

参数

参数名 类型 描述
enable BOOL YES打开,NO关闭,默认关闭

26. 获取当前视频网络状态是否打开

定义

- (BOOL)networkStatusEnabled;

ARRtcpKitDelegate 接口类

1. 发布媒体成功回调

定义

- (void)onRTCPublishOK:(NSString *)pubId liveInfo:(NSString *)liveInfo;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)
liveInfo NSString 直播信息

2. 发布媒体失败回调

定义

- (void)onRTCPublishFailed:(ARRtcpCode)code reason:(NSString *)reason;

参数

参数名 类型 描述
code int 状态码
reason NSString 错误原因,RTC错误或者token错误(错误值自己平台定义)

3. 订阅通道成功的回调

定义

- (void)onRTCSubscribeOK:(NSString *)pubId;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

4. 订阅通道失败的回调

定义

- (void)onRTCSubscribeFailed:(NSString *)pubId code:(ARRtcpCode)code reason:(NSString *)reason;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)
code int 状态码
reason NSString 错误原因,RTC错误或者token错误(错误值自己平台定义)

5. 订阅后音视频即将显示的回调

定义

- (void)onRTCOpenRemoteVideoRender:(NSString *)pubId;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

6. 订阅的音视频离开的回调

定义

- (void)onRTCCloseRemoteVideoRender:(NSString *)pubId;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

7. 订阅音频后成功的回调

定义

- (void)onRTCOpenRemoteAudioTrack:(NSString *)pubId;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

8. 订阅的音频离开的回调

定义

- (void)onRTCCloseRemoteAudioTrack:(NSString *)pubId;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

9. 本地视频第一帧

定义

- (void)onRTCFirstLocalVideoFrame:(CGSize)size;

参数

参数名 类型 描述
size CGSize 视频窗口大小

10. 远程视频第一帧

定义

- (void)onRTCFirstRemoteVideoFrame:(CGSize)size pubId:(NSString *)pubId;

参数

参数名 类型 描述
size CGSize 视频窗口大小
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

11. 本地窗口大小的回调

定义

- (void)onRTCLocalVideoViewChanged:(CGSize)size;

参数

参数名 类型 描述
size CGSize 视频窗口大小

12. 远程窗口大小的回调

定义

- (void)onRTCRemoteVideoViewChanged:(CGSize)size pubId:(NSString *)pubId;

参数

参数名 类型 描述
size CGSize 视频窗口大小
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)

13. 其他发布者的音频检测回调

定义

- (void)onRTCRemoteAudioActive:(NSString *)pubId audioLevel:(int)level showTime:(int)time;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)
level int 音频大小(0~100)
time int 音频检测在nTime毫秒内不会再回调该方法(单位:毫秒)

说明

与会者关闭音频后(setLocalAudioEnable为NO),该回调将不再回调。对方关闭音频检测后(setAudioActiveCheck为NO),该回调也将不再回调。

14. 本地音频检测回调

定义

- (void)onRTCLocalAudioActive:(int)level showTime:(int)time;

参数

参数名 类型 描述
level int 音频大小(0~100)
time int 音频检测在nTime毫秒内不会再回调该方法(单位:毫秒)

说明

本地关闭音频后(setLocalAudioEnable为NO),该回调将不再回调。本地关闭音频检测后(setAudioActiveCheck为NO),该回调也将不再回调。

15. 其他发布者的网络质量回调

定义

- (void)onRTCRemoteNetworkStatus:(NSString *)pubId netSpeed:(int)netSpeed packetLost:(int)packetLost netQuality:(ARNetQuality)netQuality;

参数

参数名 类型 描述
pubId NSString RTCP服务生成的通道Id (用于标识通道,每次发布随机生成)
netSpeed int 网络上行
packetLost int 丢包率
netQuality ARNetQuality 网络质量

16. 本地网络质量回调

定义

- (void)onRTCLocalNetworkStatus:(int)netSpeed packetLost:(int)packetLost netQuality:(ARNetQuality)netQuality;

参数

参数名 类型 描述
netSpeed int 网络上行
packetLost int 丢包率
netQuality ARNetQuality 网络质量

三、更新日志

Version 3.0.2 (2020-02-12)

  • 添加发布、取消发布的监听

Version 3.0.1 (2019-05-24)

  • 修复观看端不操作锁屏问题

Version 3.0.0 (2019-05-15)

  • SDK版本升级3.0,API接口变更

Version 2.0.0 (2017-09-30)

  • SDK版本升级2.0,梳理、完善SDK
© 2016-2019 铂渊信息技术(上海)有限公司 all right reserved,powered by Gitbook该文件修订时间: 2020-07-29 12:20:25

results matching ""

    No results matching ""