一、集成指南
适用范围
本集成文档适用于Android ARRtmpc SDK 3.0.0+版本。
准备环境
- Android Studio 2.1或以上版本
- Android 版本不低于 4.0.3 且支持音视频的 Android 设备(不支持模拟器)
- Android 设备已经连接到有效网络
导入SDK
添加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账号
示例代码:
public class ARApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ARRtmpcEngine.Inst().initEngine(getApplicationContext(), "AppId", "AppToken");
}
}
自定义的Application需在AndroidManifest.xml注册
主播端
1.2 获取Hoster配置类并设置相关配置
示例代码:
//获取配置类
ARRtmpcHosterOption hosterOption = ARRtmpcEngine.Inst().getHosterOption();
//设置视频分辨率
hosterOption.setVideoProfile(ARVideoCommon.ARVideoProfile.ARVideoProfile480x640);
//更多参考API文档
1.3 实例化Hoster对象
示例代码:
ARRtmpcHosterKit mHosterKit = new ARRtmpcHosterKit(ARRtmpcHosterEvent hosterEvent);
需传入回调接口实现类
1.4 实例化视频显示View
示例代码:
ARVideoView videoView = new ARVideoView(rl_video, ARRtmpcEngine.Inst().Egl(),this,false);
videoView.setVideoViewLayout(true,Gravity.CENTER, LinearLayout.VERTICAL);
ARVideoView 对象是显示视频,调整视频窗口摆放位置的类,可由开发者自定义,具体可参照Demo
1.5 打开本地摄像头采集
示例代码:
mHosterKit.setLocalVideoCapturer(videoView.openLocalVideoRender().GetRenderPointer());
注意安卓动态权限处理,这里需要录音和摄像头权限
1.6 开始推流
示例代码:
mHosterKit.startPushRtmpStream("pushUrl");
rtmp连接结果,状态均会回调,具体查看API文档
1.7 创建RTC连接
示例代码:
mHosterKit.createRTCLine();
创建RTC连接必须放在startPushRtmpStream()后面,创建成功或者失败都会回调onRTCCreateLineResult()
1.8 收到申请/取消连麦请求/接受/拒绝/连麦请求
示例代码:
//接受连麦
mHosterKit.acceptRTCLine();
//拒绝连麦
mHosterKit.rejectRTCLine();
收到连麦申请会回调onRTCApplyToLine(),在该回调中可调用同意或拒绝连麦方法。游客取消连麦申请会回调onRTCCancelLine()。
1.9 挂断连麦
示例代码:
//挂断与游客的连麦
mHosterKit.hangupRTCLine();
主播调用该方法后,游客端会回调onRTCHangupLine(),主播端会回调onRTCCloseRemoteVideoRender()
2.0 申请连麦游客的视频即将显示
示例代码:
//显示对方视频
final VideoRenderer render = mVideoView.openRemoteVideoRender(publishId);
if (null != render) {
mHosterKit.setRemoteVideoRender(publishId, render.GetRenderPointer());
}
同意连麦后,连麦通道建立,将会回调onRTCOpenRemoteVideoRender()方法,在该回调中应显示连麦者视频图像,参照上述代码,具体可参考demo
2.1 申请连麦游客的视频即将关闭
示例代码:
//移除对方视频
mHosterKit.setRTCRemoteVideoRender(strPublishId, 0);
mVideoView.removeRemoteRender(strLivePeerId);
连麦者挂断或主播自己调用hangupRTCLine()方法挂断后,都会回调onRTCCloseRemoteVideoRender()方法,在该回调中应移除连麦者视频图像,参照上述代码,具体可参考demo
2.2 停止推流销毁主播段
示例代码:
mHosterKit.stopRtmpStream();//停止推流
mVideoView.removeLocalVideoRender();//移除本地视频
mHosterKit.clean();//释放主播对象
具体可参考demo
游客端
2.3 获取Guest配置类并设置相关配置
示例代码:
//获取配置类
ARRtmpcGuestOption guestOption = ARRtmpcEngine.Inst().getGuestOption();
//设置视频分辨率
guestOption.setVideoProfile(ARVideoCommon.ARVideoProfile.ARVideoProfile480x640);
//更多参考API文档
2.4 实例化Guest对象
示例代码:
ARRtmpcGuestKit mGuestKit = new ARRtmpcGuestKit(ARRtmpcGuestEvent guestEvent);
需传入回调接口实现类
2.5 实例化视频显示View
示例代码:
ARVideoView videoView = new ARVideoView(rl_video, ARRtmpcEngine.Inst().Egl(),this,false);
videoView.setVideoViewLayout(true,Gravity.CENTER, LinearLayout.VERTICAL);
ARVideoView 对象是显示视频,调整视频窗口摆放位置的类,可由开发者自定义,具体可参照Demo
2.6 打开本地摄像头采集
示例代码:
mGuestKit.setLocalVideoCapturer(videoView.openLocalVideoRender().GetRenderPointer());
注意安卓动态权限处理,这里需要录音和摄像头权限。 这一步在游客端的使用,应在连麦申请成功之后再打开本地摄像头
2.7 开始拉流
示例代码:
mGuestKit.startRtmpPlay("pullUrl");
rtmp连接结果,状态均会回调,具体查看API文档
2.8 加入RTC连接
示例代码:
mGuestKit.joinRTCLine();
加入RTC连接必须放在startRtmpPlay后面,加入成功或者失败都会回调onRTCJoinLineResult()
2.9 申请/取消申请/挂断连麦
示例代码:
//申请连麦
mGuestKit.applyRTCLine();
//取消申请或挂断连麦
mGuestKit.hangupRTCLine();
申请连麦成功会回调onRTCApplyLineResult(),code==0的时候意味着连麦成功 此时会回调onRTCOpenRemoteVideoRender(),在此方法中应显示对方视频。 游客端调用hangupRTCLine()挂断或者主播挂断都会走onRTCOpenRemoteVideoRender()回调,此时应移除对方视频 见3.0 3.1
3.0 其他人视频即将显示
示例代码:
//显示对方视频
final VideoRenderer render = mVideoView.openRemoteVideoRender(publishId);
if (null != render) {
mGuestKit.setRemoteVideoRender(publishId, render.GetRenderPointer());
}
同意连麦后,连麦通道建立,将会回调onRTCOpenRemoteVideoRender()方法,在该回调中应显示主播或其他人视频图像,参照上述代码,具体可参考demo。注意:只有在连麦接通后才会走该回调
3.1 其他人视频即将关闭
示例代码:
//移除对方视频
mGuestKit.setRTCRemoteVideoRender(strPublishId, 0);
mVideoView.removeRemoteRender(strLivePeerId);
其他连麦者挂断或主播自己调用hangupRTCLine()方法挂断后,都会回调onRTCCloseRemoteVideoRender()方法,在该回调中应移除连麦者或主播视频图像,参照上述代码,具体可参考demo。注意:只有在连麦接通后才会走该回调
3.2 释放Guest对象
示例代码:
//如果在连麦应移除本地像 挂断连麦
mGuestKit.hangupRTCLine()
mVideoView.removeLocalVideoRender();
mGuestKit.clean();
如果在连麦中应先移除本地像,挂断连麦,再释放
3.2 权限说明
使用ARRtmpc SDK需以下权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3.4 混淆配置
在Proguard混淆文件中增加以下配置:
-dontwarn org.anyrtc.**
-keep class org.anyrtc.**{*;}
-dontwarn org.ar.**
-keep class org.ar.**{*;}
-dontwarn org.webrtc.**
-keep class org.webrtc.**{*;}
三、API接口文档
ARRtmpcEngine 类
1. 初始化并配置开发者信息
定义
void initEngine(Context context, String appId, String token)
参数
参数名 | 类型 | 描述 |
---|---|---|
context | Context | 上下文对象 |
appId | String | appId |
token | String | token |
说明
该方法为配置开发者信息,上述参数均可在https://www.anyrtc.io/ 应用管理中获得;建议在Application调用。
2. 配置私有云
定义
void configServerForPriCloud(String address,int port)
参数
参数名 | 类型 | 描述 |
---|---|---|
address | String | 私有云服务地址 |
port | int | 私有云服务端口 |
说明
配置私有云信息,当使用私有云时才需要进行配置,默认无需配置。
3. 获取SDK版本号
定义
String getSdkVersion()
返回值
SDK版本号
4. 关闭硬解码(安卓特有)
定义
void disableHWDecode()
5. 关闭硬编码(安卓特有)
定义
void disableHWEncode()
6. 设置日志显示级别
定义
void setLogLevel(ARLogLevel logLevel)
参数
参数名 | 类型 | 描述 |
---|---|---|
logLevel | ARLogLevel | 日志显示级别 |
ARRtmpcHosterOption主播端配置类
1. 获取配置类
定义
ARRtmpcHosterOption arHostOption = ARRtmpcEngine.Inst().getHosterOption();
2. 设置可配置参数
定义
void setOptionParams(boolean isDefaultFrontCamera, ARVideoCommon.ARVideoOrientation videoOrientation, ARVideoCommon.ARVideoProfile videoProfile, ARVideoCommon.ARVideoFrameRate videoFps, ARVideoCommon.ARMediaType mediaType, ARRtmpcLineLayoutTemplate lineLayoutTemplate)
参数
参数名 | 类型 | 描述 |
---|---|---|
isDefaultFrontCamera | boolean | 是否默认前置摄像头 true 前置 false 后置 默认true |
videoOrientation | ARVideoOrientation | 视频方向 默认竖直 |
videoProfile | ARVideoProfile | 视频分辨率 默认360x640 |
videoFps | ARVideoFrameRate | 视频帧率 默认 Fps15 |
mediaType | ARMediaType | 发布媒体类型 Video音视频 Audio 音频 默认音视频 |
lineLayoutTemplate | ARRtmpcLineLayoutTemplate | 连麦合成画面布局样式 |
说明
可通过上面方法配置,也可单独设置
ARRtmpcHosterKit主播类
1. 实例化ARRtmpcHosterKit对象
定义
ARRtmpcHosterKit hostKit = new ARRtmpcHosterKit(ARRtmpcHosterEvent hosterEvent);
参数
参数名 | 类型 | 描述 |
---|---|---|
hosterEvent | ARRtmpcHosterEvent | 回调实现类 |
2. 设置本地视频采集窗口
定义
int setLocalVideoCapturer(long renderPointer)
参数
参数名 | 类型 | 描述 |
---|---|---|
render | long | 底层视频渲染对象 |
返回值
0/1/2:没有相机权限/打开相机成功/打开相机失败
3. 开始推流
定义
void startPushRtmpStream(String pushUrl)
参数
参数名 | 类型 | 描述 |
---|---|---|
pushUrl | String | 推流地址 |
说明
传入推流地址开始推流
3. 创建RTC连接
定义
int createRTCLine(String token,String anyrtcId, String userId, String userData)
参数
参数名 | 类型 | 描述 |
---|---|---|
token | String | 令牌:客户端向自己服务申请获得,参考企业级安全指南 |
anyrtcId | String | 在开发者业务系统中保持唯一的Id(必填) |
userId | String | 主播在开发者自己平台的Id |
userData | String | 播在开发者自己平台的相关信息(昵称,头像等) |
返回值
0:调用成功;4:参数非法
说明
该方法须在开始推流(startRtmpPlay)方法后调用
4. 同意游客连麦请求
定义
void acceptRTCLine(String peerId)
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | RTC服务生成的连麦者标识Id 。(用于标识连麦用户,每次连麦随机生成)) |
说明
调用此方法即可同意游客的连麦请求。
5.拒绝游客连麦请求
定义
void rejectRTCLine(String peerId)
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | RTC服务生成的连麦者标识Id 。(用于标识连麦用户,每次连麦随机生成)) |
说明
调用此方法即可拒绝游客的连麦请求
6.挂断游客连麦
定义
void hangupRTCLine(String peerId)
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | RTC服务生成的连麦者标识Id 。(用于标识连麦用户,每次连麦随机生成)) |
说明
调用此方法即可挂断与游客的连麦
7.停止推流
定义
void stopRtmpStream()
说明
停止推流
8.设置其他人视频窗口
定义
void setRTCRemoteVideoRender(String publishId,long render)
参数
参数名 | 类型 | 描述 |
---|---|---|
publishId | String | RTC服务生成是视频通道Id |
render | long | SDK底层视频显示对象 |
说明
该方法用于游客申请连麦接通后,游客视频连麦接通回调中(OnRTCOpenRemoteVideoRender)使用
9. 发送消息
定义
boolean sendMessage(int type,String userName, String headUrl, String content)
参数
参数名 | 类型 | 描述 |
---|---|---|
type | int | 消息类型 0 普通消息 1 弹幕消息 |
userName | String | 用户昵称(最大256字节),不能为空,否则发送失败; |
headUrl | String | 用户头像(最大512字节),可选; |
content | String | 消息内容(最大1024字节)不能为空,否则发送失败; |
返回值
true 发送成功 false 发送失败
10. 关闭RTC连接
定义
void closeRTCLine()
说明
一般不调用。主播端如果调用此方法,将会关闭RTC服务,游客端将会收主播已离开onRTCLineLeave回调。
11. 设置合成流连麦视频窗口位置
定义
void setVideoTemplate( ARRtmpcVideoHorizontal eHor, ARRtmpcVideoVertical eVer,ARRtmpcVideoDirection eDir, int ePadhor, int ePadver, int nWLineWidth)
参数
参数名 | 类型 | 描述 |
---|---|---|
eHor | ARRtmpcVideoHorizontal | 横向位置 |
eVer | ARRtmpcVideoVertical | 竖向位置 |
eDir | ARRtmpcVideoDirection | 排布方向 |
ePadhor | int | 横向的间距(左右间距:最左边或者最后边的视频离边框的距离) |
ePadver | int | 竖向的间距(上下间距:最上面或者最下面离边框的距离) |
nWLineWidth | int | 合成小视频白边宽度(上下间距:最上面或者最下面离边框的距离) |
12. 设置合成视频显示模板
定义
void setMixVideoModel(ARRtmpcLineLayoutTemplate layoutTemplate)
参数
参数名 | 类型 | 描述 |
---|---|---|
layoutTemplate | ARRtmpcLineLayoutTemplate | 布局样式 |
13. 设置视频的默认背景图片
定义
int setVideoSubBackground(String filePath)
参数
参数名 | 类型 | 描述 |
---|---|---|
filePath | String | 图片的路径 |
返回值
0/1/2:没有读取文件权限/打开设置成功/文件不存在
说明
一定要打开读取权限,仅支持jpg和png的图片格式(仅支持640*640分辨率以内)
14. 设置本地音频是否传输
定义
void setLocalAudioEnable(boolean enabled)
参数
参数名 | 类型 | 描述 |
---|---|---|
enable | boolean | 打开或关闭本地音频传输 |
说明
true为传输音频,false为不传输音频,默认传输
15. 设置本地视频是否传输
定义
void setLocalVideoEnable(boolean enabled)
参数
参数名 | 类型 | 描述 |
---|---|---|
enable | boolean | 打开或关闭本地视频传输 |
说明
true为传输视频,false为不传输视频,默认视频传输
16. 切换前后摄像头
定义
void switchCamera()
17. 设置录像地址(地址为拉流地址)
定义
void setRtmpRecordUrl( String url)
参数
参数名 | 类型 | 描述 |
---|---|---|
url | String | 设置Rtmp录制地址,需放在开始推流方法前.并且必须在平台上开启录像服务 |
说明
设置录像地址(地址为拉流地址)
18. 设置前置摄像头镜像是否打开
定义
void setFrontCameraMirrorEnable(boolean enable)
参数
参数名 | 类型 | 描述 |
---|---|---|
enable | boolean | true 打开 false 关闭 |
说明
是否打开镜像模式,默认关闭
19. 设置相机支持范围内的焦距
定义
void setCameraZoom( int distance)
参数
参数名 | 类型 | 描述 |
---|---|---|
distance | int | 焦距 |
说明
设置相机支持范围内的焦距
20. 获取相机最大焦距
定义
int getCameraMaxZoom()
返回值
最大焦距
21. 获取相机当前焦距
定义
int getCameraZoom()
返回值
当前焦距
22. 判断是否可变焦
定义
boolean isZoomSupported()
boolean isSmoothZoomSupported()
返回值
是否支持变焦/平滑变焦
说明
在设置变焦前先用该方法判断是否支持变焦
23. 打开关闭摄像头闪光灯
定义
void openCameraTorchMode(final boolean open)
参数
参数名 | 类型 | 描述 |
---|---|---|
open | boolean | 是否开启闪光灯 |
24. 设置音频检测
定义
void setAudioActiveCheck(boolean open)
参数
参数名 | 类型 | 描述 |
---|---|---|
open | boolean | 是否开启音频检测 |
说明
默认音频检测打开
25.设置视频横屏模式
定义
void setScreenToLandscape()
26.设置视频竖屏模式
定义
void setScreenToPortrait()
27. 设置左侧logo水印
定义
int setVideoLogo( String path, int x, int y)
参数
参数名 | 类型 | 描述 |
---|---|---|
path | String | 水印图片文件路径 |
x | int | 距左上角X轴距离 |
y | int | 距左上角Y轴距离 |
说明
仅支持jpg图片,注意安卓动态权限处理
28. 设置右侧logo水印
定义
int setVideoTopRightLogo( String path, int x, int y)
参数
参数名 | 类型 | 描述 |
---|---|---|
path | String | 水印图片文件路径 |
x | int | 距右上角X轴距离 |
y | int | 距右上角Y轴距离 |
说明
仅支持jpg图片,注意安卓动态权限处理
29.销毁主播端
定义
void clean()
ARRtmpcHosterEvent主播回调类
1. RTMP服务连接成功
定义
void onRtmpStreamOk()
2. RTMP 服务重连
定义
void onRtmpStreamReconnecting(int times)
参数
参数名 | 类型 | 描述 |
---|---|---|
times | int | 重连次数 |
3. RTMP推流状态
定义
void onRtmpStreamStatus(int delayTime, int netBand)
参数
参数名 | 类型 | 描述 |
---|---|---|
times | int | 推流的延迟时间(单位:ms) |
netBand | int | 当前的上行的带宽(单位:byte) |
4. RTMP服务连接失败
定义
void onRtmpStreamFailed(int code)
参数
参数名 | 类型 | 描述 |
---|---|---|
code | int | 状态码 |
5. RTMP服务关闭
定义
void onRtmpStreamClosed()
6. 创建RTC服务结果
定义
void onRTCCreateLineResult(int code, String reason);
参数
参数名 | 类型 | 描述 |
---|---|---|
code | int | 状态码 |
reason | String | 原因 |
说明
code==0 时,连接服务成功 code为其他值时均为失败,具体可查看code对应说明
7. 主播收到游客连麦请求
定义
void onRTCApplyToLine(String peerId, String userId, String userData)
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
userId | String | 游客在自己业务平台的UserId |
userData | String | 游客加入RTC连接的自定义参数体(可查看游客端加入RTC连接方法) |
8. 游客取消连麦申请
定义
void onRTCCancelLine(int code, String peerId)
参数
参数名 | 类型 | 描述 |
---|---|---|
code | int | 状态码 |
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
9. RTC服务关闭
定义
void onRTCLineClosed(int code,String reason)
参数
参数名 | 类型 | 描述 |
---|---|---|
code | int | 状态码 |
reason | String | 说明 |
10. 连麦者视频即将显示回调
定义
void onRTCOpenRemoteVideoRender(String peerId, String publishId, String userId, String userData);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
publishId | String | RTC服务生成的视频通道Id |
userId | String | 开发者自己平台的用户Id |
userData | String | 开发者自己平台的相关信息(昵称,头像等) |
说明
主播与游客的连麦接通后视频将要显示时回调此方法
11. 连麦者视频关闭
定义
void onRTCCloseRemoteVideoRender(String peerId, String publishId, String userId);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
publishId | String | RTC服务生成的视频通道Id |
userId | String | 开发者自己平台的用户Id |
说明
当与连麦的人断开连麦时会回调此方法
12. (语音连麦)连麦接通后
定义
void onRTCOpenRemoteAudioLine(String peerId, String publishId, String userId, String userData);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
publishId | String | RTC服务生成的视频通道Id |
userId | String | 开发者自己平台的用户Id |
userData | String | 开发者自己平台的相关信息(昵称,头像等) |
说明
语音模式下,主播与游客的连麦接通后回调此方法
13. (语音连麦)连麦断开后
定义
void onRTCCloseRemoteAudioLine(String peerId, String publishId, String userId);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
publishId | String | RTC服务生成的视频通道Id |
userId | String | 开发者自己平台的用户Id |
说明
语音连麦模式下,当与连麦的人断开连麦时会回调此方法
14. 连麦的人音视频状态回调
定义
void onRTCRemoteAVStatus(String peerId, boolean audio, boolean video);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
audio | boolean | true 音频打开 false 音频关闭 |
video | boolean | true 视频打开 false 视频关闭 |
15. 本地RTC音频检测
定义
void onRTLocalAudioActive(int time);
参数
参数名 | 类型 | 描述 |
---|---|---|
time | int | 音频检测在time毫秒内不会再回调该方法(单位:毫秒) |
16. 远程(连麦的人)RTC音频检测
定义
void onRTCRemoteAudioActive(String peerId, int level, int time);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
time | int | 音频检测在time毫秒内不会再回调该方法(单位:毫秒) |
17. 收到消息
定义
void onRTCUserMessage(int type,String userId, String userName, String headUrl, String message)
参数
参数名 | 类型 | 描述 |
---|---|---|
type | int | 消息类型 0 普通消息 1 弹幕消息 |
userId | String | 发送消息者在自己平台下的Id |
userName | String | 发送消息者的昵称 |
headUrl | String | 发送者的头像 |
message | String | 消息内容 |
说明
收到其他人发送的消息,(该参数来源均为发送消息时所带参数)
18. 实时在线人数变化通知
定义
void onRTCMemberNotify(String serverId, String roomId, int totalMember)
参数
参数名 | 类型 | 描述 |
---|---|---|
serverId | String | 服务器地址,用于请求人员列表的参数 |
roomId | String | 房间Id,用于请求人员列表的参数 |
totalMember | int | 当前在线人数 |
说明
serverAddress和roomId参数用于请求人员列表
ARRtmpcGuestOption游客端配置类
1. 获取配置类
定义
ARRtmpcGuestOption arGuestOption = ARRtmpcEngine.Inst().getGuestOption();
2. 设置可配置参数
定义
void setOptionParams(boolean isDefaultFrontCamera, ARVideoCommon.ARVideoOrientation videoOrientation, ARVideoCommon.ARMediaType mediaType)
参数
参数名 | 类型 | 描述 |
---|---|---|
isDefaultFrontCamera | boolean | 是否默认前置摄像头 true 前置 false 后置 默认true |
videoOrientation | ARVideoOrientation | 视频方向 默认竖直 |
mediaType | ARMediaType | 发布媒体类型 Video音视频 Audio 音频 默认音视频 |
说明
可通过上面方法配置,也可单独设置
ARRtmpcGuestKit游客类
1. 实例化ARRtmpcGuestKit对象
定义
ARRtmpcGuestKit guestKit = new ARRtmpcGuestKit(ARRtmpcGuestEvent guestEvent);
参数
参数名 | 类型 | 描述 |
---|---|---|
guestEvent | ARRtmpcGuestEvent | 回调实现类 |
2. 开始播放RTMP流
定义
void startRtmpPlay( String pullUrl, long render)
参数
参数名 | 类型 | 描述 |
---|---|---|
pullUrl | String | 拉流地址 |
render | long | SDK底层视频显示对象 |
3. 加入RTC连接
定义
int joinRTCLine( String token,String anyRTCId,String userId, String userData)
参数
参数名 | 类型 | 描述 |
---|---|---|
token | String | 令牌:客户端向自己服务申请获得,参考企业级安全指南 |
anyRTCId | String | 主播对应的anyRTCId |
userId | String | 游客业务平台的用户id |
userData | String | 游客业务平台自定义数据 |
返回值
0:调用成功;4:参数非法;
说明
此方法需在startRtmpPlay()之后调用
4. 设置本地视频采集窗口
定义
int setLocalVideoCapturer(long renderPointer)
参数
参数名 | 类型 | 描述 |
---|---|---|
render | long | 底层视频渲染对象 |
返回值
0/1/2:没有相机权限/打开相机成功/打开相机失败
5.设置其他人视频窗口
定义
void setRTCRemoteVideoRender(String publishId,long render)
参数
参数名 | 类型 | 描述 |
---|---|---|
publishId | String | RTC服务生成视频通道ID |
render | long | SDK底层视频显示对象 |
说明
该方法用于(OnRTCOpenRemoteVideoRender)回调中使用
6.申请连麦
定义
int applyRTCLine()
返回值
0/1:失败(没有录音权限)/成功
7.挂断连麦
定义
void hangupRTCLine()
8.关闭RTC连接
定义
void leaveRTCLine()
说明
用于关闭RTC服务,将无法进行聊天互动,人员上下线等
9.设置视频横屏模式
定义
void setScreenToLandscape()
10.设置视频竖屏模式
定义
void setScreenToPortrait()
11. 发送消息
定义
boolean sendMessage(int type,String userName, String headUrl, String content)
参数
参数名 | 类型 | 描述 |
---|---|---|
type | int | 消息类型 0 普通消息 1 弹幕消息 |
userName | String | 用户昵称(最大256字节),不能为空,否则发送失败; |
headUrl | String | 用户头像(最大512字节),可选; |
content | String | 消息内容(最大1024字节)不能为空,否则发送失败; |
返回值
true 发送成功 false 发送失败
12. 设置本地音频是否传输
定义
void setLocalAudioEnable(boolean enabled)
参数
参数名 | 类型 | 描述 |
---|---|---|
enable | boolean | 打开或关闭本地音频传输 |
说明
true为传输音频,false为不传输音频,默认传输
13. 设置本地视频是否传输
定义
void setLocalVideoEnable(boolean enabled)
参数
参数名 | 类型 | 描述 |
---|---|---|
enable | boolean | 打开或关闭本地视频传输 |
说明
true为传输视频,false为不传输视频,默认视频传输
14. 切换前后摄像头
定义
void switchCamera()
15. 设置音频检测
定义
void setAudioActiveCheck(boolean open)
参数
参数名 | 类型 | 描述 |
---|---|---|
open | boolean | 是否开启音频检测 |
说明
默认音频检测打开
16. 设置前置摄像头镜像是否打开
定义
void setFrontCameraMirrorEnable(boolean enable)
参数
参数名 | 类型 | 描述 |
---|---|---|
enable | boolean | true 打开 false 关闭 |
说明
是否打开镜像模式,默认关闭
17. 销毁游客端
定义
void clear()
ARRtmpcGuestEvent主播回调类
1. RTMP连接成功
定义
void onRtmpPlayerOk()
2. RTMP开始播放
定义
void onRtmpPlayerStart()
3. RTMP当前播放状态
定义
void onRtmpPlayerStatus(int cacheTime, int bitrate)
参数
参数名 | 类型 | 描述 |
---|---|---|
cacheTime | int | 缓存时间(单位:ms) |
bitrate | int | 当前码率大小(单位:byte) |
说明
在主播处于直播状态时,将会一直回调此方法
4. RTMP播放缓冲进度
定义
void onRtmpPlayerLoading(int percent)
参数
参数名 | 类型 | 描述 |
---|---|---|
percent | int | 缓存百分比,0-100 |
说明
弱网下rtmp播放出现卡顿时,当前缓冲进度。nPercent为0时,页面可以进行缓冲提示。当为100时,缓冲提示去掉
5.RTMP播放器关闭
定义
void onRtmpPlayerClosed(int code)
参数
参数名 | 类型 | 描述 |
---|---|---|
code | int | 状态码 |
说明
主播停止推流将会回调此方法
6.RTC服务连接结果
定义
void onRTCJoinLineResult(int code, String reason)
参数
参数名 | 类型 | 描述 |
---|---|---|
code | int | 状态码 |
reason | String | 说明 |
说明
code==0时,连接服务成功 code为其他值时均为失败,具体可查看code对应说明
7.申请连麦结果
定义
void onRTCApplyLineResult(int code)
参数
参数名 | 类型 | 描述 |
---|---|---|
code | int | 状态码 |
说明
code==0时连麦成功 code为其他值时均为失败,具体可查看code对应说明
8.主播挂断游客连麦
定义
void onRTCHangupLine()
说明
主播挂断游客的连麦。 视频直播中此时应移除本地连麦小窗口图像
9.断开RTC服务连接
定义
void onRTCLineLeave(int code,String reason)
参数
参数名 | 类型 | 描述 |
---|---|---|
code | int | 状态码 |
10. 其他人视频即将显示回调
定义
void onRTCOpenRemoteVideoRender(String peerId, String publishId, String userId, String userData);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
publishId | String | RTC服务生成的视频通道Id |
userId | String | 开发者自己平台的用户Id |
userData | String | 开发者自己平台的相关信息(昵称,头像等) |
说明
主播与游客的连麦接通后视频将要显示时回调此方法
11. 其他连麦者视频关闭
定义
void onRTCCloseRemoteVideoRender(String peerId, String publishId, String userId);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
publishId | String | RTC服务生成的视频通道Id |
userId | String | 开发者自己平台的用户Id |
说明
当与连麦的人断开连麦时会回调此方法
12. 其他连麦者(语音连麦)连麦接通后
定义
void onRTCOpenRemoteAudioLine(String peerId, String publishId, String userId, String userData);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
publishId | String | RTC服务生成的视频通道Id |
userId | String | 开发者自己平台的用户Id |
userData | String | 开发者自己平台的相关信息(昵称,头像等) |
说明
语音模式下,主播与游客的连麦接通后回调此方法
13. 其他连麦者(语音连麦)连麦断开后
定义
void onRTCCloseRemoteAudioLine(String peerId, String publishId, String userId);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
publishId | String | RTC服务生成的视频通道Id |
userId | String | 开发者自己平台的用户Id |
说明
语音连麦模式下,当与连麦的人断开连麦时会回调此方法
14. 连麦的人音视频状态回调
定义
void onRTCRemoteAVStatus(String peerId, boolean audio, boolean video);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
audio | boolean | true 音频打开 false 音频关闭 |
video | boolean | true 视频打开 false 视频关闭 |
15. 本地RTC音频检测
定义
void onRTLocalAudioActive(int time);
参数
参数名 | 类型 | 描述 |
---|---|---|
time | int | 音频检测在time毫秒内不会再回调该方法(单位:毫秒) |
16. 远程(连麦的人)RTC音频检测
定义
void onRTCRemoteAudioActive(String peerId, int level, int time);
参数
参数名 | 类型 | 描述 |
---|---|---|
peerId | String | 连麦者标识id(用于标识连麦用户,每次连麦随机生成) |
time | int | 音频检测在time毫秒内不会再回调该方法(单位:毫秒) |
17. 收到消息
定义
void onRTCUserMessage(int type,String userId, String userName, String headUrl, String message)
参数
参数名 | 类型 | 描述 |
---|---|---|
type | int | 消息类型 0 普通消息 1 弹幕消息 |
userId | String | 发送消息者在自己平台下的Id |
userName | String | 发送消息者的昵称 |
headUrl | String | 发送者的头像 |
message | String | 消息内容 |
说明
收到其他人发送的消息,(该参数来源均为发送消息时所带参数)
18. 实时在线人数变化通知
定义
void onRTCMemberNotify(String serverId, String roomId, int totalMember)
参数
参数名 | 类型 | 描述 |
---|---|---|
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