Android

一、集成指南

适用范围

本集成文档适用于Android ARRtmpc SDK 3.0.0+版本。

准备环境

  • Android Studio 2.1或以上版本

  • Android 版本不低于 4.0.3 且支持音视频的 Android 设备(不支持模拟器)

  • Android 设备已经连接到有效网络

导入SDK

Gradle方式导入 Download

添加Jcenter仓库 Gradle依赖:

dependencies {
   compile 'org.ar:rtmpc_hybrid:3.1.0'
}

或者 Maven

<dependency>
  <groupId>org.ar</groupId>
  <artifactId>rtmpc_hybrid</artifactId>
  <version>3.1.0</version>
  <type>pom</type>
</dependency>

二、开发指南

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

1.1 初始化SDK并配置开发者信息

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

示例代码:

自定义的Application需在AndroidManifest.xml注册

主播端

1.2 获取Hoster配置类并设置相关配置

示例代码:

1.3 实例化Hoster对象

示例代码:

需传入回调接口实现类

1.4 实例化视频显示View

示例代码:

ARVideoView 对象是显示视频,调整视频窗口摆放位置的类,可由开发者自定义,具体可参照Demo

1.5 打开本地摄像头采集

示例代码:

注意安卓动态权限处理,这里需要录音和摄像头权限

1.6 开始推流

示例代码:

rtmp连接结果,状态均会回调,具体查看API文档

1.7 创建RTC连接

示例代码:

创建RTC连接必须放在startPushRtmpStream()后面,创建成功或者失败都会回调onRTCCreateLineResult()

1.8 收到申请/取消连麦请求/接受/拒绝/连麦请求

示例代码:

收到连麦申请会回调onRTCApplyToLine(),在该回调中可调用同意或拒绝连麦方法。游客取消连麦申请会回调onRTCCancelLine()

1.9 挂断连麦

示例代码:

主播调用该方法后,游客端会回调onRTCHangupLine(),主播端会回调onRTCCloseRemoteVideoRender()

2.0 申请连麦游客的视频即将显示

示例代码:

同意连麦后,连麦通道建立,将会回调onRTCOpenRemoteVideoRender()方法,在该回调中应显示连麦者视频图像,参照上述代码,具体可参考demo

2.1 申请连麦游客的视频即将关闭

示例代码:

连麦者挂断或主播自己调用hangupRTCLine()方法挂断后,都会回调onRTCCloseRemoteVideoRender()方法,在该回调中应移除连麦者视频图像,参照上述代码,具体可参考demo

2.2 停止推流销毁主播段

示例代码:

具体可参考demo

游客端

2.3 获取Guest配置类并设置相关配置

示例代码:

2.4 实例化Guest对象

示例代码:

需传入回调接口实现类

2.5 实例化视频显示View

示例代码:

ARVideoView 对象是显示视频,调整视频窗口摆放位置的类,可由开发者自定义,具体可参照Demo

2.6 打开本地摄像头采集

示例代码:

注意安卓动态权限处理,这里需要录音和摄像头权限。 这一步在游客端的使用,应在连麦申请成功之后再打开本地摄像头

2.7 开始拉流

示例代码:

rtmp连接结果,状态均会回调,具体查看API文档

2.8 加入RTC连接

示例代码:

加入RTC连接必须放在startRtmpPlay后面,加入成功或者失败都会回调onRTCJoinLineResult()

2.9 申请/取消申请/挂断连麦

示例代码:

申请连麦成功会回调onRTCApplyLineResult(),code==0的时候意味着连麦成功 此时会回调onRTCOpenRemoteVideoRender(),在此方法中应显示对方视频。 游客端调用hangupRTCLine()挂断或者主播挂断都会走onRTCOpenRemoteVideoRender()回调,此时应移除对方视频 见3.0 3.1

3.0 其他人视频即将显示

示例代码:

同意连麦后,连麦通道建立,将会回调onRTCOpenRemoteVideoRender()方法,在该回调中应显示主播或其他人视频图像,参照上述代码,具体可参考demo。注意:只有在连麦接通后才会走该回调

3.1 其他人视频即将关闭

示例代码:

其他连麦者挂断或主播自己调用hangupRTCLine()方法挂断后,都会回调onRTCCloseRemoteVideoRender()方法,在该回调中应移除连麦者或主播视频图像,参照上述代码,具体可参考demo。注意:只有在连麦接通后才会走该回调

3.2 释放Guest对象

示例代码:

如果在连麦中应先移除本地像,挂断连麦,再释放

3.2 权限说明

使用ARRtmpc SDK需以下权限

3.4 混淆配置

在Proguard混淆文件中增加以下配置:

三、API接口文档

ARRtmpcEngine 类

1. 初始化并配置开发者信息

定义

参数

参数名

类型

描述

context

Context

上下文对象

appId

String

appId

token

String

token

说明

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

2. 配置私有云

定义

参数

参数名

类型

描述

address

String

私有云服务地址

port

int

私有云服务端口

说明

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

3. 获取SDK版本号

定义

返回值

SDK版本号

4. 关闭硬解码(安卓特有)

定义

5. 关闭硬编码(安卓特有)

定义

6. 设置日志显示级别

定义

参数

参数名

类型

描述

logLevel

ARLogLevel

日志显示级别

ARRtmpcHosterOption主播端配置类

1. 获取配置类

定义

2. 设置可配置参数

定义

参数

参数名

类型

描述

isDefaultFrontCamera

boolean

是否默认前置摄像头 true 前置 false 后置 默认true

videoOrientation

ARVideoOrientation

视频方向 默认竖直

videoProfile

ARVideoProfile

视频分辨率 默认360x640

videoFps

ARVideoFrameRate

视频帧率 默认 Fps15

mediaType

ARMediaType

发布媒体类型 Video音视频 Audio 音频 默认音视频

lineLayoutTemplate

ARRtmpcLineLayoutTemplate

连麦合成画面布局样式

说明

可通过上面方法配置,也可单独设置

ARRtmpcHosterKit主播类

1. 实例化ARRtmpcHosterKit对象

定义

参数

参数名

类型

描述

hosterEvent

ARRtmpcHosterEvent

回调实现类

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

定义

参数

参数名

类型

描述

render

long

底层视频渲染对象

返回值

0/1/2:没有相机权限/打开相机成功/打开相机失败

3. 开始推流

定义

参数

参数名

类型

描述

pushUrl

String

推流地址

说明

传入推流地址开始推流

3. 创建RTC连接

定义

参数

参数名

类型

描述

token

String

令牌:客户端向自己服务申请获得,参考企业级安全指南

anyrtcId

String

在开发者业务系统中保持唯一的Id(必填)

userId

String

主播在开发者自己平台的Id

userData

String

播在开发者自己平台的相关信息(昵称,头像等)

返回值

0:调用成功;4:参数非法

说明

该方法须在开始推流(startRtmpPlay)方法后调用

4. 同意游客连麦请求

定义

参数

参数名

类型

描述

peerId

String

RTC服务生成的连麦者标识Id 。(用于标识连麦用户,每次连麦随机生成))

说明

调用此方法即可同意游客的连麦请求。

5.拒绝游客连麦请求

定义

参数

参数名

类型

描述

peerId

String

RTC服务生成的连麦者标识Id 。(用于标识连麦用户,每次连麦随机生成))

说明

调用此方法即可拒绝游客的连麦请求

6.挂断游客连麦

定义

参数

参数名

类型

描述

peerId

String

RTC服务生成的连麦者标识Id 。(用于标识连麦用户,每次连麦随机生成))

说明

调用此方法即可挂断与游客的连麦

7.停止推流

定义

说明

停止推流

8.设置其他人视频窗口

定义

参数

参数名

类型

描述

publishId

String

RTC服务生成是视频通道Id

render

long

SDK底层视频显示对象

说明

该方法用于游客申请连麦接通后,游客视频连麦接通回调中(OnRTCOpenRemoteVideoRender)使用

9. 发送消息

定义

参数

参数名

类型

描述

type

int

消息类型 0 普通消息 1 弹幕消息

userName

String

用户昵称(最大256字节),不能为空,否则发送失败;

headUrl

String

用户头像(最大512字节),可选;

content

String

消息内容(最大1024字节)不能为空,否则发送失败;

返回值

true 发送成功 false 发送失败

10. 关闭RTC连接

定义

说明

一般不调用。主播端如果调用此方法,将会关闭RTC服务,游客端将会收主播已离开onRTCLineLeave回调。

11. 设置合成流连麦视频窗口位置

定义

参数

参数名

类型

描述

eHor

ARRtmpcVideoHorizontal

横向位置

eVer

ARRtmpcVideoVertical

竖向位置

eDir

ARRtmpcVideoDirection

排布方向

ePadhor

int

横向的间距(左右间距:最左边或者最后边的视频离边框的距离)

ePadver

int

竖向的间距(上下间距:最上面或者最下面离边框的距离)

nWLineWidth

int

合成小视频白边宽度(上下间距:最上面或者最下面离边框的距离)

12. 设置合成视频显示模板

定义

参数

参数名

类型

描述

layoutTemplate

ARRtmpcLineLayoutTemplate

布局样式

13. 设置视频的默认背景图片

定义

参数

参数名

类型

描述

filePath

String

图片的路径

返回值

0/1/2:没有读取文件权限/打开设置成功/文件不存在

说明

一定要打开读取权限,仅支持jpg和png的图片格式(仅支持640*640分辨率以内)

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

定义

参数

参数名

类型

描述

enable

boolean

打开或关闭本地音频传输

说明

true为传输音频,false为不传输音频,默认传输

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

定义

参数

参数名

类型

描述

enable

boolean

打开或关闭本地视频传输

说明

true为传输视频,false为不传输视频,默认视频传输

16. 切换前后摄像头

定义

17. 设置录像地址(地址为拉流地址)

定义

参数

参数名

类型

描述

url

String

设置Rtmp录制地址,需放在开始推流方法前.并且必须在平台上开启录像服务

说明

设置录像地址(地址为拉流地址)

18. 设置前置摄像头镜像是否打开

定义

参数

参数名

类型

描述

enable

boolean

true 打开 false 关闭

说明

是否打开镜像模式,默认关闭

19. 设置相机支持范围内的焦距

定义

参数

参数名

类型

描述

distance

int

焦距

说明

设置相机支持范围内的焦距

20. 获取相机最大焦距

定义

返回值

最大焦距

21. 获取相机当前焦距

定义

返回值

当前焦距

22. 判断是否可变焦

定义

返回值

是否支持变焦/平滑变焦

说明 在设置变焦前先用该方法判断是否支持变焦

23. 打开关闭摄像头闪光灯

定义

参数

参数名

类型

描述

open

boolean

是否开启闪光灯

24. 设置音频检测

定义

参数

参数名

类型

描述

open

boolean

是否开启音频检测

说明

默认音频检测打开

25.设置视频横屏模式

定义

26.设置视频竖屏模式

定义

27. 设置左侧logo水印

定义

参数

参数名

类型

描述

path

String

水印图片文件路径

x

int

距左上角X轴距离

y

int

距左上角Y轴距离

说明

仅支持jpg图片,注意安卓动态权限处理

28. 设置右侧logo水印

定义

参数

参数名

类型

描述

path

String

水印图片文件路径

x

int

距右上角X轴距离

y

int

距右上角Y轴距离

说明

仅支持jpg图片,注意安卓动态权限处理

29.销毁主播端

定义

ARRtmpcHosterEvent主播回调类

1. RTMP服务连接成功

定义

2. RTMP 服务重连

定义

参数

参数名

类型

描述

times

int

重连次数

3. RTMP推流状态

定义

参数

参数名

类型

描述

times

int

推流的延迟时间(单位:ms)

netBand

int

当前的上行的带宽(单位:byte)

4. RTMP服务连接失败

定义

参数

参数名

类型

描述

code

int

状态码

5. RTMP服务关闭

定义

6. 创建RTC服务结果

定义

参数

参数名

类型

描述

code

int

状态码

reason

String

原因

说明

code==0 时,连接服务成功 code为其他值时均为失败,具体可查看code对应说明

7. 主播收到游客连麦请求

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

userId

String

游客在自己业务平台的UserId

userData

String

游客加入RTC连接的自定义参数体(可查看游客端加入RTC连接方法)

8. 游客取消连麦申请

定义

参数

参数名

类型

描述

code

int

状态码

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

9. RTC服务关闭

定义

参数

参数名

类型

描述

code

int

状态码

reason

String

说明

10. 连麦者视频即将显示回调

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

publishId

String

RTC服务生成的视频通道Id

userId

String

开发者自己平台的用户Id

userData

String

开发者自己平台的相关信息(昵称,头像等)

说明

主播与游客的连麦接通后视频将要显示时回调此方法

11. 连麦者视频关闭

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

publishId

String

RTC服务生成的视频通道Id

userId

String

开发者自己平台的用户Id

说明

当与连麦的人断开连麦时会回调此方法

12. (语音连麦)连麦接通后

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

publishId

String

RTC服务生成的视频通道Id

userId

String

开发者自己平台的用户Id

userData

String

开发者自己平台的相关信息(昵称,头像等)

说明

语音模式下,主播与游客的连麦接通后回调此方法

13. (语音连麦)连麦断开后

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

publishId

String

RTC服务生成的视频通道Id

userId

String

开发者自己平台的用户Id

说明

语音连麦模式下,当与连麦的人断开连麦时会回调此方法

14. 连麦的人音视频状态回调

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

audio

boolean

true 音频打开 false 音频关闭

video

boolean

true 视频打开 false 视频关闭

15. 本地RTC音频检测

定义

参数

参数名

类型

描述

time

int

音频检测在time毫秒内不会再回调该方法(单位:毫秒)

16. 远程(连麦的人)RTC音频检测

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

time

int

音频检测在time毫秒内不会再回调该方法(单位:毫秒)

17. 收到消息

定义

参数

参数名

类型

描述

type

int

消息类型 0 普通消息 1 弹幕消息

userId

String

发送消息者在自己平台下的Id

userName

String

发送消息者的昵称

headUrl

String

发送者的头像

message

String

消息内容

说明

收到其他人发送的消息,(该参数来源均为发送消息时所带参数)

18. 实时在线人数变化通知

定义

参数

参数名

类型

描述

serverId

String

服务器地址,用于请求人员列表的参数

roomId

String

房间Id,用于请求人员列表的参数

totalMember

int

当前在线人数

说明

serverAddress和roomId参数用于请求人员列表

ARRtmpcGuestOption游客端配置类

1. 获取配置类

定义

2. 设置可配置参数

定义

参数

参数名

类型

描述

isDefaultFrontCamera

boolean

是否默认前置摄像头 true 前置 false 后置 默认true

videoOrientation

ARVideoOrientation

视频方向 默认竖直

mediaType

ARMediaType

发布媒体类型 Video音视频 Audio 音频 默认音视频

说明

可通过上面方法配置,也可单独设置

ARRtmpcGuestKit游客类

1. 实例化ARRtmpcGuestKit对象

定义

参数

参数名

类型

描述

guestEvent

ARRtmpcGuestEvent

回调实现类

2. 开始播放RTMP流

定义

参数

参数名

类型

描述

pullUrl

String

拉流地址

render

long

SDK底层视频显示对象

3. 加入RTC连接

定义

参数

参数名

类型

描述

token

String

令牌:客户端向自己服务申请获得,参考企业级安全指南

anyRTCId

String

主播对应的anyRTCId

userId

String

游客业务平台的用户id

userData

String

游客业务平台自定义数据

返回值

0:调用成功;4:参数非法;

说明

此方法需在startRtmpPlay()之后调用

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

定义

参数

参数名

类型

描述

render

long

底层视频渲染对象

返回值

0/1/2:没有相机权限/打开相机成功/打开相机失败

5.设置其他人视频窗口

定义

参数

参数名

类型

描述

publishId

String

RTC服务生成视频通道ID

render

long

SDK底层视频显示对象

说明

该方法用于(OnRTCOpenRemoteVideoRender)回调中使用

6.申请连麦

定义

返回值

0/1:失败(没有录音权限)/成功

7.挂断连麦

定义

8.关闭RTC连接

定义

说明

用于关闭RTC服务,将无法进行聊天互动,人员上下线等

9.设置视频横屏模式

定义

10.设置视频竖屏模式

定义

11. 发送消息

定义

参数

参数名

类型

描述

type

int

消息类型 0 普通消息 1 弹幕消息

userName

String

用户昵称(最大256字节),不能为空,否则发送失败;

headUrl

String

用户头像(最大512字节),可选;

content

String

消息内容(最大1024字节)不能为空,否则发送失败;

返回值

true 发送成功 false 发送失败

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

定义

参数

参数名

类型

描述

enable

boolean

打开或关闭本地音频传输

说明

true为传输音频,false为不传输音频,默认传输

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

定义

参数

参数名

类型

描述

enable

boolean

打开或关闭本地视频传输

说明

true为传输视频,false为不传输视频,默认视频传输

14. 切换前后摄像头

定义

15. 设置音频检测

定义

参数

参数名

类型

描述

open

boolean

是否开启音频检测

说明

默认音频检测打开

16. 设置前置摄像头镜像是否打开

定义

参数

参数名

类型

描述

enable

boolean

true 打开 false 关闭

说明

是否打开镜像模式,默认关闭

17. 销毁游客端

定义

ARRtmpcGuestEvent主播回调类

1. RTMP连接成功

定义

2. RTMP开始播放

定义

3. RTMP当前播放状态

定义

参数

参数名

类型

描述

cacheTime

int

缓存时间(单位:ms)

bitrate

int

当前码率大小(单位:byte)

说明

在主播处于直播状态时,将会一直回调此方法

4. RTMP播放缓冲进度

定义

参数

参数名

类型

描述

percent

int

缓存百分比,0-100

说明

弱网下rtmp播放出现卡顿时,当前缓冲进度。nPercent为0时,页面可以进行缓冲提示。当为100时,缓冲提示去掉

5.RTMP播放器关闭

定义

参数

参数名

类型

描述

code

int

状态码

说明

主播停止推流将会回调此方法

6.RTC服务连接结果

定义

参数

参数名

类型

描述

code

int

状态码

reason

String

说明

说明

code==0时,连接服务成功 code为其他值时均为失败,具体可查看code对应说明

7.申请连麦结果

定义

参数

参数名

类型

描述

code

int

状态码

说明

code==0时连麦成功 code为其他值时均为失败,具体可查看code对应说明

8.主播挂断游客连麦

定义

说明

主播挂断游客的连麦。 视频直播中此时应移除本地连麦小窗口图像

9.断开RTC服务连接

定义

参数

参数名

类型

描述

code

int

状态码

10. 其他人视频即将显示回调

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

publishId

String

RTC服务生成的视频通道Id

userId

String

开发者自己平台的用户Id

userData

String

开发者自己平台的相关信息(昵称,头像等)

说明

主播与游客的连麦接通后视频将要显示时回调此方法

11. 其他连麦者视频关闭

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

publishId

String

RTC服务生成的视频通道Id

userId

String

开发者自己平台的用户Id

说明

当与连麦的人断开连麦时会回调此方法

12. 其他连麦者(语音连麦)连麦接通后

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

publishId

String

RTC服务生成的视频通道Id

userId

String

开发者自己平台的用户Id

userData

String

开发者自己平台的相关信息(昵称,头像等)

说明

语音模式下,主播与游客的连麦接通后回调此方法

13. 其他连麦者(语音连麦)连麦断开后

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

publishId

String

RTC服务生成的视频通道Id

userId

String

开发者自己平台的用户Id

说明

语音连麦模式下,当与连麦的人断开连麦时会回调此方法

14. 连麦的人音视频状态回调

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

audio

boolean

true 音频打开 false 音频关闭

video

boolean

true 视频打开 false 视频关闭

15. 本地RTC音频检测

定义

参数

参数名

类型

描述

time

int

音频检测在time毫秒内不会再回调该方法(单位:毫秒)

16. 远程(连麦的人)RTC音频检测

定义

参数

参数名

类型

描述

peerId

String

连麦者标识id(用于标识连麦用户,每次连麦随机生成)

time

int

音频检测在time毫秒内不会再回调该方法(单位:毫秒)

17. 收到消息

定义

参数

参数名

类型

描述

type

int

消息类型 0 普通消息 1 弹幕消息

userId

String

发送消息者在自己平台下的Id

userName

String

发送消息者的昵称

headUrl

String

发送者的头像

message

String

消息内容

说明

收到其他人发送的消息,(该参数来源均为发送消息时所带参数)

18. 实时在线人数变化通知

定义

参数

参数名

类型

描述

serverId

String

服务器地址,用于请求人员列表的参数

roomId

String

房间Id,用于请求人员列表的参数

totalMember

int

当前在线人数

说明

serverAddress和roomId参数用于请求人员列表

四、更新日志

Version 3.0.0 (2019-05-15)

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

Version 2.0.0 (2017-09-30)

  • SDK版本升级2.0,梳理、完善SDK

Last updated

Was this helpful?