SDK 参考
文档版本 01
发布日期 2022-02-25
版权所有 © 华为技术有限公司 2022。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目 录
1 使用前必读... 1
1.1 主要功能...1
1.2 文档基本使用技巧... 2
1.3 常见问题分析解决办法...3
2 SDK 概述... 4
3 Android SDK...5
3.1 开发前准备... 5
3.2 SDK 使用... 6
3.3 基本使用逻辑... 8
3.4 接口参考... 10
3.4.1 HRtcEngine... 10
3.4.1.1 接口总览... 11
3.4.1.2 初始化等基础接口... 17
3.4.1.3 房间功能... 19
3.4.1.4 音频管理... 22
3.4.1.5 视频管理... 26
3.4.1.6 屏幕共享... 34
3.4.1.7 辅流管理... 35
3.4.1.8 音效文件播放管理... 37
3.4.1.9 音频增强管理...47
3.4.1.10 检测功能... 48
3.4.1.11 自定义音频采集和渲染... 48
3.4.1.12 自定义视频采集和渲染... 50
3.4.1.13 设备管理... 52
3.4.2 事件回调(IHRTCEngineEventHandler)... 54
3.4.3 HRTCConnection... 87
3.4.3.1 接口总览... 87
3.4.3.2 初始化等基础接口... 89
3.4.3.3 房间功能... 90
3.4.3.4 音频管理... 92
3.4.3.5 视频管理... 93
3.4.3.6 辅流管理... 96
3.4.3.7 自定义渲染... 98
3.4.4 事件回调(IHRTCConnectionEventHandler)... 99
3.4.5 客户端错误码...109
3.4.6 服务端错误码...113
3.4.7 数据类型... 115
3.4.8 媒体原始数据管理... 147
3.4.8.1 注册回调(IHRTCMediaEngine)... 147
3.4.8.2 事件回调(IHRTCVideoFrameObserver)...149
3.4.8.3 事件回调(IHRTCAudioFrameObserver)...150
3.4.8.4 事件回调(IHRTCEncDecryptFrameObserver)...151
3.5 常见问题... 152
3.6 修订记录... 153
4 iOS/macOS SDK... 158
4.1 开发前准备... 158
4.1.1 iOS 开发前准备... 158
4.1.2 macOS 开发前准备... 160
4.2 SDK 使用... 161
4.3 基本使用逻辑... 163
4.4 接口参考... 165
4.4.1 HWRtcEngine...165
4.4.1.1 接口总览... 165
4.4.1.2 初始化等基础接口...172
4.4.1.3 房间功能... 174
4.4.1.4 音频管理... 177
4.4.1.5 视频管理... 182
4.4.1.6 辅流管理... 191
4.4.1.7 屏幕共享... 194
4.4.1.8 音效文件播放管理...196
4.4.1.9 检测功能... 206
4.4.1.10 自定义音频采集和渲染... 207
4.4.1.11 自定义视频采集和渲染... 208
4.4.1.12 设备管理... 210
4.4.2 事件回调(HWRtcEngine)...215
4.4.3 HWRtcConnection...232
4.4.3.1 接口总览... 232
4.4.3.2 初始化等基础接口...235
4.4.3.3 房间功能... 236
4.4.3.4 音频管理... 238
4.4.3.5 视频管理... 240
4.4.3.6 辅流管理... 243
4.4.3.7 媒体原始数据管理...245
4.4.4 事件回调(HWRtcConnection)...246
4.4.5 媒体原始数据管理... 255
4.4.5.1 注册回调(IHRTCMediaEngine)... 256
4.4.5.2 事件回调(HWRtcMediaEngineVideoDelegate)... 256
4.4.5.3 事件回调(HWRtcMediaEngineAudioDelegate)...258
4.4.6 HWRtcReplay... 260
4.4.7 客户端错误码...261
4.4.8 服务端错误码...264
4.4.9 数据类型... 266
4.4.10 事件回调(HWRtcReplay)... 305
4.5 常见问题... 305
4.6 修订记录... 307
5 All Platform C++ SDK... 312
5.1 开发前准备... 312
5.1.1 Android... 312
5.1.2 iOS... 313
5.1.3 Mac... 315
5.1.4 Windows...316
5.2 SDK 使用... 317
5.3 基本使用逻辑... 320
5.4 接口参考... 322
5.4.1 IHRTCEngine... 322
5.4.1.1 接口总览... 322
5.4.1.2 接口按功能说明... 323
5.4.1.3 初始化等基础接口...331
5.4.1.4 房间功能... 334
5.4.1.5 音频管理... 337
5.4.1.6 视频管理... 348
5.4.1.7 辅流管理... 360
5.4.1.8 屏幕共享... 362
5.4.1.9 音频文件播放管理...366
5.4.1.10 自采集自渲染... 374
5.4.1.11 其他接口... 377
5.4.2 事件回调(IHRTCEngine)... 378
5.4.3 IHRTCConnection... 396
5.4.3.1 接口总览... 396
5.4.3.2 初始化等基础接口...398
5.4.3.3 房间功能... 398
5.4.3.4 音频管理... 401
5.4.3.5 视频管理... 401
5.4.3.6 辅流管理... 405
5.4.4 事件回调(IHRTCConnection)... 406
5.4.5 音频设备管理...435
5.4.6 视频设备管理...443
5.4.7 共享屏幕资源管理... 446
5.4.8 媒体原始数据管理... 447
5.4.8.1 注册回调(IHRTCMediaEngine)... 447
5.4.8.2 事件回调(IHRTCVideoFrameObserver)... 448
5.4.8.3 事件回调(IHRTCAudioFrameObserver)...449
5.4.8.4 事件回调(IHRTCConnectionVideoFrameObserver)...451
5.4.8.5 事件回调(IHRTCEncDecryptFrameObserver)...452
5.4.9 客户端错误码...452
5.4.10 服务端错误码... 456
5.4.11 数据类型... 458
5.5 常见问题... 498
5.6 修订记录... 499
6 Web SDK...500
6.1 浏览器适配... 500
6.2 开发前准备... 504
6.3 SDK 使用... 504
6.4 基本使用逻辑... 508
6.5 接口参考... 510
6.5.1 主入口(HRTC)... 510
6.5.2 客户端对象(Client)... 515
6.5.3 客户端事件通知(ClientEvent)... 528
6.5.4 流对象(Stream)... 538
6.5.5 本地流对象(LocalStream)... 546
6.5.6 远端流对象(RemoteStream)... 557
6.5.7 流事件通知(RTCStreamEvent)...557
6.5.8 错误码(RtcError)... 559
6.5.9 客户端错误码...559
6.5.10 服务端错误码... 566
6.5.11 授权浏览器摄像头/麦克风访问权限的方法... 568
6.6 常见问题... 579
6.7 修订记录... 581
7 Electron SDK...584
7.1 开发前准备... 584
7.2 SDK 使用... 584
7.3 接口参考... 585
7.3.1 HRTCEngine... 585
7.3.1.1 接口总览... 585
7.3.1.2 基础接口... 591
7.3.1.3 房间管理... 595
7.3.1.4 音频管理... 596
7.3.1.5 视频管理... 600
7.3.1.6 辅流管理... 609
7.3.1.7 共享屏幕... 612
7.3.1.8 音频设备管理... 615
7.3.1.9 视频设备管理... 620
7.3.1.10 检测功能... 621
7.3.1.11 插件管理... 622
7.3.2 事件回调... 625
7.3.3 客户端错误码...639
7.3.4 服务端错误码...643
7.3.5 数据类型... 645
7.4 常见问题... 695
7.5 修订记录... 696
8 接入鉴权... 698
9 附录... 702
9.1 Grs 国家码对照表... 702
1 使用前必读
1.1 主要功能
1.2 文档基本使用技巧 1.3 常见问题分析解决办法
1.1 主要功能
SparkRTC主要包含基本房间功能和跨房功能,各端主要功能框架,如图1-1所示。
说明:图1-1中仅展示各端的统一功能,独属功能详见各端SDK指导。
图1-1 功能框架
表1-1 功能说明
类别 功能分类 功能说明 基本
功能
初始化等 基础接口
主要功能包括创建/销毁RTC引擎、设置日志保存位置等。
房间功能 主要功能包括进入/离开房间操作、设置角色、创建跨房引擎 等。
音频管理 主要功能包括是否采集/发送本地音频流、是否接收远端音频 流、调整录制/播放音量值、设置远端音频模式等。
视频管理 主要功能包括创建本地/远端窗口视图和其他参数设置、是否 接收远端视频流、镜像、摄像头等。
屏幕共享 主要功能包括是否开始/停止订阅辅流、设置辅流渲染模式/角 度等。
音效文件
播放管理 主要功能包括开始/停止/暂停/恢复播放音频或音效文件、音 频/音效音量相关设置。
检测功能 主要功能包括启动/关闭入会前网络检测。
自定义音 频采集和 渲染
主要功能包括是否开启音频自采集、推送外部音频数据。
自定义视 频采集和 渲染
主要功能包括是否开启视频自采集、推送外部视频数据、是否 开启视频流自渲染。
设备管理 主要功能包括切换摄像头、声音播放模式等。
跨房 功能
跨房间连麦,指主播的媒体流可以同时转发进多个房间频道,实现主播跨 频道与其他主播实时互动的场景。房间中的所有主播可以看见彼此,房间 中的观众可以看到所有主播。同一时间最多只能同时跨4个房间,每个跨房 房间的ID必须互不相同;同一时间只能以一个joiner角色加入某一个房间。
如果本端在其他房间里的角色是joiner,则需要将本端在该房间内的player 角色切换为joiner角色后再以joiner角色跨入其他房间。以player角色跨房后 只能收流不能发流,以joiner角色跨房后既能收流也能发流。
1.2 文档基本使用技巧
● 技巧1:基本使用逻辑说明
用时序图展示各端接口使用顺序,单击相应接口可以快速查看相关接口使用方 法。
● 技巧2:接口总览说明
包括SparkRTC接口总体功能流程图和接口列表,根据功能分类可以快速查找具体 功能单个接口,方便接口对接。
● 技巧3:单个接口使用须知
接口使用时注意使用的时机、参数说明。“注意”是强调每个接口使用的注意事 项并带有调用该接口的相关回调,对接时需要仔细阅读。
1.3 常见问题分析解决办法
● 问题1:调用setVideoEncoderConfig接口时,为什么有些参数直接报参数设置错 误?
设置分辨率时请使用华为SDK系统推荐的码表才能设置成功。
● 问题2:有哪些原因会导致跨房不成功?
– 可能原因1:同一时间不同房间最多只有一个Joiner角色才能跨房成功。
– 可能原因2:同一时间最多只能跨4个房间,跨房对应的房间ID必须互不相 同。
● 问题3:使用远端音频模式为HRTC_REMOTE_AUDIO_SUBSCRIBED时,如何设 置才能默认听不到远端用户的声音?
HRTC_REMOTE_AUDIO_SUBSCRIBED为自主订阅,需要用户手动调用订阅。在 加入房间(joinRoom)时调用带有HRTCJoinParam类的方法,创建该类实例后 autoSubscribeAudio属性设置为false进入房间后则听不到远端用户的声音,需要 手动调用muteRemoteAudio根据uid单个用户订阅才能听到声音。
● 问题3:为什么onVideoStats、onAudioStatus、
onAuxiliaryStreamStatsNotify回调触发时程序崩溃?
回调函数的入参localStats和remoteStats指针有可能为空,需要先判断不为空再 使用,否则可能引发空指针错误。
● 问题4:为什么本端听筒能听到自己的声音?
调用muteRemoteAudio时,参数设置为自己的uid就会发生此类情况。
● 问题5:setExternalAudioCapture(音频自采集)、setExternalVideoCapture
(视频自采集)能在房间内开启吗?
不能,需要在加入房间前调用。
2 SDK 概述
华为云实时音视频服务软件开发工具包是对SparkRTC服务提供的REST API进行的封 装,以简化用户的开发工作。用户直接调用SparkRTC SDK提供的接口函数即可实现使 用SparkRTC服务业务能力的目的。
相关开发包请参见SDK下载获取。
同时,针对不同平台的SDK提供了集成和接口参考。详细介绍了SDK的集成操作、接口 参数定义和代码示例。SparkRTC提供了以下主流平台SDK供开发者使用。
客户端 集成SDK 接口参考
Android
Android SDK集成 Android SDK接口参考
iOS
iOS SDK集成 iOS SDK接口参考
MAC
MAC SDK集成 MAC SDK接口参考
Windows
Windows SDK集成 Windows SDK接口参考
Web
Web SDK集成 Web SDK接口参考
Electron
Electron SDK集成 Electron SDK接口参考
3 Android SDK
3.1 开发前准备 3.2 SDK使用 3.3 基本使用逻辑 3.4 接口参考 3.5 常见问题 3.6 修订记录
3.1 开发前准备
环境要求
Android SDK需要集成到APP工程中,建议您在如下推荐环境中进行集成开发。
● 准备Android Studio或者Eclipse集成开发环境,推荐使用Android Studio 3.3.2及 以上。
● 准备Android运行环境:API 21、Android 5.0以上设备。
● 支持的终端CPU架构:armeabi-v7a、arm64-v8a。
说明
手机的CPU架构可通过以下方式查询。
手机开启USB调试,连接上电脑,然后打开Windows操作系统中的cmd程序,输入如下命令:
adb shell getprop ro.product.cpu.abi
SDK 集成
步骤1 解压Android SDK包。
步骤2 将Android SDK包中的“hwRtcSdk.aar”等aar文件,导入Android Studio工程的libs文 件夹下。
步骤3 在“/app/build.gradle”文件中设置aar存放路径,并设置依赖本地aar。
// aar存放路径 android{
repositories { flatDir { dirs 'libs' } }}
// 依赖本地aar dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs') implementation(name: 'hwRtcSdk', ext: 'aar') }
步骤4 将如图3-1所示的包含so库的两个文件夹导入到jniLibs文件夹中。
图3-1 so 库目录
步骤5 在“/app/build.gradle”文件中设置so库的存放路径。
sourceSets { main {
jniLibs.srcDirs = ['src/main/jniLibs']
} }
步骤6 在“app/src/main/res/values/strings.xml”文件中配置appId,其中,appId请提交工 单申请。
<string name="setting_appId_title" translatable="false">appId</string>
步骤7 在“/app/src/main/AndroidManifest.xml”文件中配置App权限。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
步骤8 单击“Sync Project With Gradle Files”,同步项目文件,完成SDK集成。
----结束
3.2 SDK 使用
步骤1 创建引擎。
HRTCEngineConfig config = new HRTCEngineConfig();
config.setAppId(appId); // 测试体验阶段可以使用官方提供的测试AppId config.setCountryCode(countryCode); // 如无特殊需求,请填空字符串,即""
config.setContext(getApplicationContext()); // 上下文,请传入Application Context config.setDomain(webSocketFalvor); // 该字段已废弃,不需要再传值
config.setMuteAudioRoute(isMuteAudioRoute);
config.setLogEnable(true);
config.setLogSize(logSize);
config.setLogLevel(logLevel);
config.setLogPath(logPath); // logPath为目录,非文件
mHwRtcEngine = HRTCEngine.create(config, mHwHandler); // mHwHandler继承自 IHRTCEngineEventHandler,用于监听各种回调事件
步骤2 设置本地窗口。
SurfaceView surface = HRTCEngine.createRenderer(getApplicationContext()); // 不可使用new SurfaceView(context)创建
mHwRtcEngine.setupLocalView(surface,
HRTCEnums.HRTCVideoDisplayMode.HRTC_VIDEO_DISPLAY_MODE_HIDDEN);
步骤3 加入房间。调测阶段直接使用appId加入,正式商用阶段建议使用签名鉴权。
HRTCJoinParam joinParam = new HRTCJoinParam();
joinParam.setUserId(mUserId); // userId用于标识同一房间的不同用户
joinParam.setUserName(mUserName); // 用户昵称,如无特殊需求,保持和userId一致即可 joinParam.setRole( HRTCJoinParam.HRTCRoleType.HRTC_ROLE_TYPE_JOINER);
joinParam.setRoomId(roomid);
joinParam.setScenario(1);
joinParam.setOptionalInfo(optionInfo);
joinParam.setAuthorization(signature); // 开启鉴权,则必填,否则不填 joinParam.setCtime(ctime); // 开启鉴权,则必填,否则不填
joinParam.setAutoSubscribeVideo(false);
joinParam.setAutoSubscribeAudio(true);
mHwRtcEngine.joinRoom(joinParam );
joinParam:入会参数,包含用户ID、用户名、房间号、认证信息、ctime、是否自动 订阅音频和视频、SFU类型、场景和用户角色,具体请参见HRTCJoinParam。
步骤4 监听远端用户加入房间,并设置远端窗口。
@Override
public void onRemoteUserOnline(String roomId, final String userId, String nickname) { if (userId.equals(mUserId)||mRole == HRTC_ROLE_TYPE_JOINER.ordinal()) { return;
}
Log.e(TAG, "onRemoteUserOnline userId: " + userId);
runOnUiThread(new Runnable() { @Override
public void run() {
Toast.makeText(LiveActivity.this, userId + "加入了房间", Toast.LENGTH_SHORT).show();
SurfaceView surface = HRTCEngine.createRenderer(getApplicationContext());
mHwRtcEngine.startRemoteStreamView(userId,surface, HRTCEnums.HRTCStreamType.HRTC_STREAM_TYPE_HD);
mHwRtcEngine.updateRemoteRenderMode(userId,HRTCEnums.HRTCVideoDisplayMode.HRTC_VIDEO_DISPL AY_MODE_Fit);
// 将userId对应surface添加到布局中 }
});
}
步骤5 监听远端用户离开房间,并删除远端窗口。
@Override
public void onRemoteUserOffline(String roomId, final String userId, int reason) {
Log.i(TAG, "HwRtcDemo onRemoteUserOffline roomId:" + roomId + ", userId:" + userId + ", reason:" + reason);
runOnUiThread(new Runnable() { @Override
public void run() {
Log.e(TAG, "HwRtcDemo run removeRemoteUser! ");
Toast.makeText(LiveActivity.this, userId + "离开了房间", Toast.LENGTH_SHORT).show();
mHwRtcEngine.stopRemoteStreamView(userId);
// 将userId对应的surface从布局中移除 }
});
}
步骤6 离开房间。
mHwRtcEngine.leaveRoom();
finish();
步骤7 销毁引擎
HRTCEngine.destroy();
----结束
3.3 基本使用逻辑
1. 创建新的项目工程,导入SDK后,需要先创建引擎。
2. 您可以在入会前进行视频编码、声音播放模式等参数的配置。
3. 设置本地视图。
4. 用户加入房间后,将通过回调的方式通知房间内的其他用户,收到其他用户加入 的回调后,可以为其设置远端视图。
5. 在会中,也可以进行切换摄像头等参数的配置。
6. 用户离开房间后,需销毁对应资源。
说明
在时序图中,单击相应接口名称可快速跳转到相应接口位置查看其使用方法。
3.4 接口参考
3.4.1 HRtcEngine
setBackgroundBlur
public abstract int setBackgroundBlur(boolean enable, int radius)
【功能说明】
背景虚化功能开关,默认关闭。
【请求参数】
● enable:是否打开背景虚化功能开关,true表示打开,false表示关闭。
● radius:背景虚化半径,范围0-25。
【返回参数】
● 0:表示调用命令成功。
● > 0:表示调用命令失败。
setBackgroundReplace
public abstract int setBackgroundReplace(boolean enable, String path)
【功能说明】
背景替换功能开关,默认关闭。
【请求参数】
● enable:是否打开背景替换功能开关,true表示打开,false表示关闭。
● path:背景替换的图片路径,图片只支持png,jpeg格式,高宽不可超过5000,
不可小于50。图片路径长度不可超过255字节(包括一个字节的结束符,即实际 有效长度254)
【返回参数】
● 0:表示调用命令成功。
● > 0:表示调用命令失败。
3.4.1.1 接口总览
本章节介绍了Android SDK的HRtcEngine接口详情。
HRtcEngine按照其功能可分类为:初始化等基础接口、房间功能、视频管理、屏幕共 享、音频管理、音效文件播放管理、自定义视频采集和渲染、自定义音频采集和渲 染、设备管理、检测功能、音频增强管理。
说明
单击下图中相应接口名称,可快速跳转到相应接口位置查看其使用方法。
初始化等基础接口
表3-1 初始化等基础接口
接口 描述
create
创建SparkRTC引擎实例destroy
销毁SparkRTC引擎logUpload
上传日志disableRejoinRoom
设置是否禁用房间重连功能。enableStats
打点功能开关接口 描述
getVersion
获取当前SDK版本号setEncryption
设置端到端加密模式setAccessResourceType
设置接入环境房间功能
表3-2 房间功能接口
接口 描述
joinRoom
加入房间leaveRoom
离开房间changeUserRole
设置用户角色renewAuthorization
更新鉴权签名changeUserName
更新用户昵称createConnection
创建跨房(HRTCConnection)对象音频管理
表3-3 音频管理接口
接口 描述
muteLocalAudio
设置是否发送本地音频流muteRemoteAudio
设置是否接收对应远端用户的音频流muteAllRemoteAudio
设置是否接收所有远端用户的音频流enableLocalAudioStream
设置是否开启音频采集adjustRecordingVolume
调整录制音量adjustPlaybackVolume
调整播放音量adjustPlaybackVolume
调整单个用户播放音量sendAudioSeiMsg
发送音频SEIsetAudioFrameRecordParameters
设置音频采集回调参数setAudioConfig
设置音频场景sendCommandData
媒体通道Cmd命令数据包转发接口 描述
enableCommandMsg
是否开启媒体通道发数据包功能视频管理
表3-4 视频管理接口
接口 描述
createRenderer
创建渲染视图updateLocalRenderMode
设置本地窗口显示模式,镜像模式setupLocalView
设置本地窗口pushLocalVideo
设置是否发送本地视频流setVideoEncoderConfig
设置视频编码参数setRemoteVideoAdjustResolution
设置订阅视频流的分辨率自适应startLocalPreview
开始本地预览stopLocalPreview
停止本地预览startRemoteStreamView
开始订阅远端视频流stopRemoteStreamView
停止订阅远端视频流setupRemoteView
设置远端窗口视图updateRemoteRenderMode
设置远端窗口渲染模式,镜像模式pullRemoteVideo
设置是否接收对应远端用户的视频流pullAllRemoteVideo
设置是否接收所有远端用户的视频流setVideoEncoderMirror
设置视频编码镜像模式enableLocalVideo
设置是否开启摄像头采集视频enableVideoSuperResolution
设置是否开启视频超分enableSmallVideoStream
开启并设置小流编码参数setPriorRemoteVideoStreamType
设置默认订阅的视频流类型(大流还是 小流)setRemoteVideoStreamType
设置当前订阅的视频流类型startPublishStream
开始旁路推流updateTransCoding
更新旁路推流stopPublishStream
停止旁路推流屏幕共享
表3-5 屏幕共享接口
接口 描述
startScreenShare
开启屏幕共享stopScreenShare
关闭屏幕共享辅流管理
表3-6 辅流管理接口
接口 描述
setAuxiliaryVideoEncodeSmooth
设置是否开启辅流的流畅度优先。startRemoteAuxiliaryStreamView
开始订阅辅流stopRemoteAuxiliaryStreamView
停止订阅辅流setRemoteAuxiliaryStreamViewRota
tion
设置辅流角度updateRemoteAuxiliaryStreamRende
rMode
设置辅流渲染模式,镜像模式setAuxiliaryVideoEncoderConfig
设置辅流编码参数setAuxExternalVideoCapture
设置是否开启视频辅流外部采集音效文件播放管理
表3-7 音效文件播放管理接口
接口 描述
startAudioFile
开始播放音频文件stopAudioFile
停止播放音频文件pauseAudioFile
暂停播放音频文件resumeAudioFile
恢复播放音频文件isPlayMixMyself
是否只有本地可以听到混音isMixWithMicrophone
是否需要替代采集adjustAudioFileVolume
调整本地和远端音频播放的音量adjustAudioFilePlayoutVolume
调整本地音频播放的音量接口 描述
adjustAudioFilePublishVolume
调整远端音频播放的音量getAudioFileVolume
获取音频播放的音量getAudioFilePlayoutVolume
获取音频本地播放的音量getAudioFilePublishVolume
获取音频远端播放的音量getAudioFileDuration
获取音频文件的时长getAudioFilePosition
获取音频文件当前播放位置setAudioFilePosition
设置音频文件播放位置playAudioClip
开始播放音效文件stopAudioClip
停止播放音效文件pauseAudioClip
暂停播放音效文件resumeAudioClip
恢复播放音效文件stopAllAudioClips
停止播放所有音效文件pauseAllAudioClips
暂停播放所有音效文件resumeAllAudioClips
恢复播放所有音效文件setAudioClipsVolume
设置音效播放的最大音量getAudioClipsVolume
获取音效播放的最大音量setVolumeOfAudioClip
设置指定音效的播放音量getVolumeOfAudioClip
获取指定音效的播放音量setAudioClipPosition
设置指定音效文件的播放位置getAudioClipCurrentPosition
获取指定音效文件当前的播放位置getAudioClipDuration
获取音效的文件时长preloadAudioClip
预加载音效文件unloadAudioClip
删除预加载音效文件音频增强管理
表3-8 音频增强接口
接口 描述
enableUserVolumeNotify
设置音量值上报回调函数onUserVolumeStatsNotify回调周期
检测功能
表3-9 检测功能接口
接口 描述
startNetworkTest
开启会前网络探测stopNetworkTest
停止会前网络检测自定义视频采集和渲染
表3-10 自定义视频采集和渲染接口
接口 描述
setExternalVideoFrameOutputEnable
设置视频数据输出使能setExternalDataFrameOutputEnable
设置共享数据输出使能setExternalVideoCapture
设置是否开启外部视频采集pushExternalVideoFrame
输入外部视频数据自定义音频采集和渲染
表3-11 自定义音频采集和渲染接口
接口 描述
setExternalAudioFrameOutputEnabl
e
设置音频数据输出使能setExternalAudioCapture
设置是否开启外部音频采集pushExternalAudioFrame
输入外部音频数据设备管理
表3-12 设备管理接口
接口 描述
setCameraConfig
设置摄像头参数switchCamera
切换摄像头setSpeakerModel
设置声音播放模式接口 描述
setDefaultSpeakerModel
设置默认的声音播放模式setLayoutDirect
设置显示模式,区分横屏还是竖屏,用于保证摄像头方向与本地界面方向一致
isSpeakerphoneEnabled
查询是否启用扬声器3.4.1.2 初始化等基础接口 create
public static synchronized HRTCEngine create(HRTCEngineConfig config, IHRTCEngineEventHandler eventHandler)
【功能说明】
创建SparkRTC引擎实例。
【请求参数】
● config:引擎创建相关参数,具体请参见HRTCEngineConfig。
● eventHandler:引擎事件句柄,用于加入房间、离开房间等事件回调,具体请参 见IHRTCEngineEventHandler。
【返回参数】
返回引擎实例对象。
destroy
public static synchronized void destroy()
【功能说明】
销毁SparkRTC引擎。
【请求参数】
无
【返回参数】
无
注意
请不要在RTC SDK的接口回调函数中直接调用此方法,请切回业务线程后调用。
logUpload
public abstract int logUpload();
【功能说明】
上传日志。
【请求参数】
无
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
注意
会触发以下回调:
●
onLogUploadResult:日志上传结果回调。
●
onLogUploadProgress:日志上传进度回调。
disableRejoinRoom
public abstract int disableRejoinRoom(boolean disable);
【功能说明】
设置是否禁用房间重连功能。
【请求参数】
disable:true表示禁用,false表示不禁用。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
enableStats
public abstract int enableStats(boolean enabled);
【功能说明】
打点功能开关,在create之后调用。默认开启。
【请求参数】
enabled:是否打开打点功能开关,true表示打开,false表示关闭。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
getVersion
public static String getVersion();
【功能说明】
获取SDK版本号。
【返回参数】
SDK版本号。
setEncryption
public abstract int setEncryption(HRTCEncryptionConfig encryptionParam);
【功能说明】
设置端到端加密方式。需要在加入房间前设置生效。其中sdk加密模式,需要设置16位 加密秘钥和加密算法,app加密模式需要先设置回调接口。
【请求参数】
encryptionParam:加密配置,具体请参见HRTCEncryptionConfig。
【返回参数】
● 0:成功。
● <0:失败。具体请参见客户端错误码。
setAccessResourceType
public abstract int setAccessResourceType(int resType);
【功能说明】
设置接入的环境,不支持跨房间场景。
【请求参数】
● resType:环境类型。
● 0:公网sfu资源。
● 1:公司局Sfu。
● 2:MPC。
● 3:LLL
【返回参数】
● 0:成功。
● <0:失败。具体请参见客户端错误码。
3.4.1.3 房间功能 joinRoom
public abstract int joinRoom(HRTCJoinParam joinParam);
【功能说明】
加入房间。
【请求参数】
joinParam:入会参数,具体请参见HRTCJoinParam。
【返回参数】
● 0:成功。
● 1:失败。具体请参见客户端错误码。
● 2:上下文为空。
注意
该方法将会触发以下回调:
●
onConnectionStateChangedNotify:连接状态发送改变。
●
onJoinRoomSuccess:加入房间成功时回调。
●
onJoinRoomFailure:加入房间失败时回调,失败原因请参见•加入房间失败时,
如何解决?。
●
onRemoteUserOnline:加入房间成功后,通知房间内已加入用户的回调,不包
括自己。leaveRoom
public abstract int leaveRoom()
【功能说明】
离开房间。
【请求参数】
无
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
注意
会触发以下回调:
●
onLeaveRoom:离开房间回调。
●
onConnectionStateChangedNotify:连接状态改变回调。
renewAuthorization
public abstract int renewAuthorization(String signature, long ctime);
【功能说明】
鉴权签名过期,收到onAuthorizationExpired回调后更新鉴权签名。
【请求参数】
● signature:鉴权签名字符串。
● ctime:过期时间,单位:秒。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
changeUserRole
public abstract int changeUserRole(HRTCRoleType role, String authorization, long ctime);
【功能说明】
设置本端用户在房间内的角色。
【请求参数】
● role:用户角色,具体请参见HRTCRoleType。
● authorization:预留参数,填null或者空字符串。
● ctime:预留参数,填0。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
注意
支持joiner,player角色间相互切换。
● 切换成功将触发onUserRoleChangedNotify回调。
● 切换失败将触发onError回调,返回错误码
“HRTC_ERR_CODE_USER_ROLE_CHANGE_FAIL”。
changeUserName
public abstract int changeUserName(String usrName);
【功能说明】
修改用户昵称。
【请求参数】
usrName:用户新的昵称。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
注意
修改成功后,本端会回调onUserNameChangedNotify事件,远端会回调 onRemoteUserNameChangedNotify事件。
createConnection
public abstract HRTCConnection createConnection(String roomId, IHRTCConnectionEventHandler eventHandler);
【功能说明】
根据房间ID,创建HRTCConnection对象,为跨房做准备。
通过此接口创建一个与房间关联的HRTCConnection连接对象。
该方法支持多次调用,创建多个HRTCConnection连接对象,调用每个对象中的 joinRoom方法,可以同时加入到多个房间。在每个房间中,可以分别订阅和选看房间 中的用户。
具体请参见事件回调(IHRTCConnectionEventHandler)中相关接口和回调。
【请求参数】
roomId:房间ID。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
● 同一时间最多只能创建4个连接对象,每个连接对象对应的房间ID必须互不相同。
● 如果使用HRTCConnection对象加入房间,则加入房间的房间ID不能和已创建连接 对象对应的房间ID相同。
● 同一时间只能以JOINER角色加入某一个房间。
3.4.1.4 音频管理 muteLocalAudio
public abstract int muteLocalAudio(boolean mute);
【功能说明】
设置是否发送本地音频流。
【请求参数】
mute:true表示不发送,false表示发送。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
注意
成功加入房间发送音频流后才能调用,默认为发送本地音频流。
muteRemoteAudio
public abstract int muteRemoteAudio(String userId, boolean mute);
【功能说明】
设置是否接收对应远端用户的音频流。
【请求参数】
● userId:用户ID。
● mute:true表示取消音频流接收,false表示开启音频流接收,默认为false。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
muteAllRemoteAudio
public abstract int muteAllRemoteAudio(boolean mute);
【功能说明】
设置是否接收所有远端用户的音频流。
【请求参数】
mute:true表示取消音频流接收,false表示开启音频流接收。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
● 取消所有音频流接收,同时也会取消接收新加入用户的音频流。
● 开启所有音频流接收,同时也会开启接收新加入用户的音频流。
● 默认开启所有音频流接收。
enableLocalAudioStream
public abstract int enableLocalAudioStream(boolean enabled);
【功能说明】
设置是否开启音频采集。
【请求参数】
enabled:true表示采集开启,false表示关闭。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
默认开启,本端调用该接口时,远端用户会触发onRemoteAudioStateChangedNotify 远端音频流状态变化回调。
adjustRecordingVolume
public abstract int adjustRecordingVolume(int volume);
【功能说明】
调整录制音量值。
【请求参数】
volume:音量值,取值范围:[0,100],默认音量值为10, 此接口不会影响系统音 量。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
adjustPlaybackVolume
public abstract int adjustPlaybackVolume(int volume);
【功能说明】
调整播放音量值。
【请求参数】
volume:音量值,取值范围为[0,100],默认音量值为10,此接口不会影响系统音量。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
adjustPlaybackVolume
public abstract int adjustPlaybackVolume(String userId, int volume);
【功能说明】
调整单个用户播放音量增益值。
【请求参数】
● userId:用户ID。
● volume:音量值,取值范围为[0,100],默认音量值为10无增益,10以下表示负 增益,10以上表示正增益,此接口不会影响系统音量。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
sendAudioSeiMsg
public abstract int sendAudioSeiMsg(String message, int repeateCount);
【功能说明】
发送音频SEI消息。
【请求参数】
● message:发送的内容。
● repeateCount:发送次数(1-10),根据需要填发送次数 一般发1次。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
setAudioFrameRecordParameters
public abstract int setAudioFrameRecordParameters(int sampleRate, int channel, HRTCAudioOperateMode mode, int samplesPerCall);
【功能说明】
设置采集回调参数,配合setAudioFrameObserver的onAudioFrameRecord使用。
【请求参数】
● sampleRate:onAudioFrameRecord中返回的采样率,可设置为8000,16000,
32000, 44100, 48000。
● channel:声道,1表示单声道;2表示双声道。
● mode:可读可写模式,具体请参见HRTCAudioOperateMode。
● samplesPerCall:每次回调的单声道样点数(小于(sampleRate/
100)*channel*2*3,大于(sample/300)*channel*3)。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
setAudioConfig
public abstract int setAudioConfig(HRTCAudioQualityLevel level, HRTCAudioSceneType scene)
【功能说明】
设置音频使用场景。
【请求参数】
● level:表示档位,暂时只支持16k。具体请参见HRTCAudioQualityLevel。
● scene:表示音频场景模式,具体请参见HRTCAudioSceneType。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
sendCommandData
public abstract int sendCommandData(String remoteUserId, byte[] data, int length)
【功能说明】
媒体通道Cmd命令数据包转发。
【请求参数】
● userId:用户id,空字符表示广播消息。
● data:数据包。
● length:数据包长度。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
enableCommandMsg
public abstract int enableCommandMsg(boolean enable)
【功能说明】
是否开启媒体通道发数据包功能,该接口需要在joinRoom前调用。
【请求参数】
enable:true表示开启,false表示关闭。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
3.4.1.5 视频管理 createRenderer
public static SurfaceView createRenderer(Context context)
【功能说明】
创建渲染视图。
【请求参数】
context:上下文。
【返回参数】
创建的渲染视图。
updateLocalRenderMode
public abstract int updateLocalRenderMode(HRTCVideoDisplayMode displayMode, HRTCVideoMirrorType mirrorMode) = 0;
【功能说明】
设置本地窗口显示模式,镜像模式。
【请求参数】
● displayMode:显示模式,具体请参见HRTCVideoDisplayMode。
● mirrorMode:镜像模式,具体请参见HRTCVideoMirrorType。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
setupLocalView
public abstract int setupLocalView(SurfaceView view);
public abstract int setupLocalView(SurfaceView view, HRTCVideoDisplayMode viewMode);
【功能说明】
设置本地窗口。
【请求参数】
● view:窗口视图。
● displayMode:显示模式,具体请参见HRTCVideoDisplayMode。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
pushLocalVideo
public abstract int pushLocalVideo(boolean push);
【功能说明】
设置是否发送本地视频流。
【请求参数】
push:true表示发送,false表示不发送。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
setVideoEncoderConfig
public abstract int setVideoEncoderConfig(int totalBitRate, List<HRTCVideoEncParam> encoderParams);
public abstract int setVideoEncoderConfig(HRTCVideoEncParam encoderParam);
【功能说明】
设置视频编码参数。具体请参见全平台setVideoEncoderConfig。
【请求参数】
● totalBitRate:视频最大码率,默认值4096。
● encoderParams:视频编码参数列表,具体请参见HRTCVideoEncParam。
● encoderParam:视频编码参数,具体请参见HRTCVideoEncParam。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
setRemoteVideoAdjustResolution
public abstract int setRemoteVideoAdjustResolution(boolean enable);
【功能说明】
设置是否开启远端流分辨率自适应。默认开启自适应。
【请求参数】
enable:是否开启分辨率自适应。默认开启。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
startLocalPreview
public abstract int startLocalPreview();
【功能说明】
开始本地预览。
【请求参数】
无
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
注意
● 该接口限制在房间外调用,在房间内设置不生效,需要调用stopLocalPreview关闭 预览,否则将一直处于预览状态。
● 在房间内预览:可调用setupLocalView设置有效view开启预览,设置为null表示关 闭预览,不需要调用stopLocalPreview。
● 在房间外预览:先调用setupLocalView设置有效view,再调用startLocalPreview 开启预览;关闭时,先调用setupLocalView设置为null,再调用stopLocalPreview 关闭预览。
stopLocalPreview
public abstract int stopLocalPreview();
【功能说明】
停止本地预览。
【请求参数】
无
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
注意
如果调用了startLocalPreview,需调用stopLocalPreview关闭预览,否则将一直处于 预览状态。该接口限制在房间外调用,在房间内设置不生效。
startRemoteStreamView
public abstract int startRemoteStreamView(String userId, SurfaceView view, HRTCStreamType streamType, boolean disableAdjustRes);
【功能说明】
开始订阅远端视频流,并设置远端窗口。
【请求参数】
● userId:用户ID。
● view:远端窗口视图。
● streamType:流类型,具体请参见HRTCStreamType。
● disableAdjustRes:禁用分辨率自适应的标志。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
stopRemoteStreamView
public abstract int stopRemoteStreamView(String userId);
【功能说明】
停止订阅远端视频流,并关闭远端窗口。
【请求参数】
userId:用户ID。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
setupRemoteView
public abstract int setupRemoteView(String userId, SurfaceView view);
【功能说明】
设置远端流视图,该接口不影响收流。
【请求参数】
● userId:远端用户的唯一标识。
● view:远端窗口视图,view为null时,解除窗口绑定。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
updateRemoteRenderMode
public abstract int updateRemoteRenderMode(String userId, HRTCVideoDisplayMode displayMode, HRTCVideoMirrorType mirrorMode);
【功能说明】
设置远端窗口渲染模式。
【请求参数】
● userId:用户ID。
● displayMode:渲染模式,具体请参见HRTCVideoDisplayMode。
● mirrorMode:镜像模式,具体请参见HRTCVideoMirrorType 。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
pullRemoteVideo
public abstract int pullRemoteVideo(String userId, boolean pull);
【功能说明】
开启、关闭指定远端用户的视频流。
【请求参数】
● userId:远端用户的userId,唯一标识。
● pull:true表示开始接收,false表示关闭接收。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
pullAllRemoteVideo
public abstract int pullAllRemoteVideo(boolean pull);
【功能说明】
批量开启、关闭当前所有远端用户的视频流。
【请求参数】
pull:true表示开启接收,false表示关闭接收, 默认开启接收。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
开启本地镜像后,本地视频窗口看到的是镜像视图,但不影响远端查看自己的视图。
setVideoEncoderMirror
public abstract int setVideoEncoderMirror(HRTCVideoMirrorType mirrorType);
【功能说明】
设置视频编码镜像模式。
【请求参数】
mirrorType:镜像模式,是否开启镜像,具体请参见HRTCVideoMirrorType,默认值 false。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
开启镜像后,仅改变编码发送给远端用户的视图,不影响自己看到的本地视频窗口。
enableLocalVideo
public abstract int enableLocalVideo(boolean enabled);
【功能说明】
设置是否开启摄像头采集视频。
【请求参数】
enabled:true表示开启,false表示关闭。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
默认开启,本端调用时,远端用户会触发onRemoteVideoStateChangedNotify远端 视频流状态变化回调。
enableVideoSuperResolution
public abstract int enableVideoSuperResolution(boolean enabled);
【功能说明】
设置是否开启视频超分 。
【请求参数】
enabled:true表示开启,false表示关闭。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
enableSmallVideoStream
public abstract int enableSmallVideoStream(boolean enable, HRTCVideoEncParam encoderParam);
【功能说明】
大小流模式设置是否开启小流,并设置编码参数。小流选择性开启。
【请求参数】
● enable:是否开启小流。
● encoderParam:视频编码参数。包括流类型、宽、高、码率、帧率等。具体请参 见HRTCVideoEncParam。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
setPriorRemoteVideoStreamType
public abstract int setPriorRemoteVideoStreamType(HRTCVideoStreamType type);
【功能说明】
大小流模式,设置所有订阅的远端视频流类型。默认订阅大流,优先应用 setRemoteVideoStreamType接口设置的用户流类型。
【请求参数】
type:订阅的视频流类型,分为大流和小流,具体请参见HRTCVideoStreamType。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
setRemoteVideoStreamType
public abstract int setRemoteVideoStreamType(String userId, HRTCVideoStreamType type);
【功能说明】
大小流模式,设置指定订阅的远端视频流类型。
【请求参数】
● userId:远端用户唯一标识。
● type:订阅的视频流类型,分为大流和小流,具体请参见
HRTCVideoStreamType。
startPublishStream
public abstract int startPublishStream(String taskId, List<String> urlList, HRTCTranscodeConfig transcodeConfig);
【功能说明】
开始旁路推流。
【请求参数】
● taskId:任务id,业务自行定义,保证唯一。
● urlList:url数组。参考HRTCRtmpUrlList
● transcodeConfig:用户id数组和其他参数,具体请参见
HRTCTranscodeConfig。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
updateTransCoding
public abstract int updateTransCoding(String taskId, HRTCTranscodeConfig transcodeConfig);
【功能说明】
更新旁路推流。
【请求参数】
● taskId:任务id,业务自行定义,保证唯一。
● transcodeConfig:用户id数组和其他参数,具体请参见
HRTCTranscodeConfig。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
stopPublishStream
virtual int stopPublishStream(const char* taskId)
【功能说明】
停止旁路推流。
【请求参数】
taskId:任务id,支持自定义,需保证唯一性。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
startAllRemoteView
public abstract int startAllRemoteView(List<HRTCVideoRemoteView> viewInfoList);
【功能说明】
批量设置远端流视图。
【请求参数】
viewInfoList:订阅的视图信息,主要包括该视图的句柄、流类型、用户ID、是否自适 应等,具体请参见HRTCVideoRemoteView。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
3.4.1.6 屏幕共享 startScreenShare
public abstract int startScreenShare();
【功能说明】
开启屏幕共享。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
● Android 5.0及以上版本支持此功能。
● 使用时,在AndroidManifest.xml中需添加如下约束。
<activity
<activity android:name="com.huawei.allplatform.screencapture.HRTCScreenShareAssistantActivity"
android:theme="@style/dialog" />
● targetSdkVersion >= 24时,在AndroidManifest.xml中需添加如下约束,并在开启 屏幕共享时弹出自定义悬浮窗,避免被系统强杀掉。
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
● targetSdkVersion >= 29时,在AndroidManifest.xml中需添加如下约束。
<service android:name="com.huawei.allplatform.screencapture.HRTCScreenShareService"
android:enabled="true"
android:foregroundServiceType="mediaProjection"/>
● 目前可支持多路辅流共享,若需开启多辅流,请提交工单联系华为云技术工程师处 理。
● 开启后将触发onScreenShareStarted回调。
● 远端会收到onUserAuxiliaryStreamAvailable通知,可据此发起辅流选看。
stopScreenShare
public abstract int stopScreenShare();
【功能说明】
停止屏幕共享。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
● SDK 1.7.1及以上版本支持。
● 停止后将会触发onScreenShareStopped回调。
3.4.1.7 辅流管理
setAuxiliaryVideoEncodeSmooth
public abstract int setAuxiliaryVideoEncodeSmooth(boolean enabled);
【功能说明】
设置是否开启辅流的流畅度优先。
【请求参数】
enable:true表示辅流分辨率为720p,false表示辅流分辨率为1080p。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
● SDK 1.7.1及以上版本支持。
● 开启后,辅流发流分辨率为720p,否则发流分辨率为1080p。默认不开启。
startRemoteAuxiliaryStreamView
public abstract int startRemoteAuxiliaryStreamView(String userId, SurfaceView view);
【功能说明】
开始订阅辅流。
【请求参数】
● userId:用户ID。
● view:窗口视图。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
注意
● 收到onUserAuxiliaryStreamAvailable通知后,获取对应的userId。
● 多辅流场景下,一个用户只能同时订阅一条辅流。即当前正在订阅用户A的辅 流,需要订阅另一个用户B的辅流时,需要调用
startRemoteAuxiliaryStreamView停止订阅用户A的辅流后,才能订阅用户B
的辅流。stopRemoteAuxiliaryStreamView
public abstract int stopRemoteAuxiliaryStreamView(String userId);
【功能说明】
停止订阅辅流。
【请求参数】
userId:用户ID。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
setRemoteAuxiliaryStreamViewRotation
public abstract int setRemoteAuxiliaryStreamViewRotation(String userId, HRTCRotationType rotation);
【功能说明】
设置辅流角度。
【请求参数】
● userId:用户ID。
● rotation:辅流角度,默认值为HRTC_ROTATION_TYPE_0,具体请参见
HRTCRotationType。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
updateRemoteAuxiliaryStreamRenderMode
public abstract int updateRemoteAuxiliaryStreamRenderMode(String userId, HRTCVideoDisplayMode displayMode, HRTCVideoMirrorType mirrorMode);
【功能说明】
设置辅流渲染模式。
【请求参数】
● userId:用户ID。
● displayMode:渲染模式,默认值为HRTC_VIDEO_DISPLAY_MODE_FIT,具体请 参见HRTCVideoDisplayMode。
● mirrorMode:镜像模式,默认值为HRTC_VIDEO_MIRROR_TYPE_DISABLE,具体 请参见HRTCVideoMirrorType。
【返回参数】
● 0:成功。
● >0:失败。具体请参见客户端错误码。
setAuxiliaryVideoEncoderConfig
public abstract int setAuxiliaryVideoEncoderConfig(HRTCVideoAuxiliaryEncParam encoderParams);
【功能说明】
设置辅流编码参数。
【请求参数】
encoderParams:需要设置的辅流编码参数,包括宽、高、帧率和码率,具体请参见
HRTCVideoAuxiliaryEncParam。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
使用该接口设置辅流编码参数时,由于当前系统策略会根据获取的区域宽高比对设置 的宽高进行调整,使用户设置的宽高比与获取的宽高比保持一致,因此用户实际收流 的分辨率与设置的分辨率可能存在不同。
3.4.1.8 音效文件播放管理 startAudioFile
public abstract int startAudioFile(String fullFilePath, int publish, int cycle, int replace);
public abstract int startAudioFile(String fullFilePath, int publish, int cycle, int replace, int startPos);
【功能说明】
开始播放音频文件。当前仅支持本端播放。
【请求参数】
● fullFilePath:音频文件的本地全路径,支持播放本地文件或网络文件。
● publish:播放模式,0表示只有本端能听到播放的音频,1表示远端也能听到播放 的音频。
● cycle:循环次数,0表示无限循环。
● replace:是否替代麦克风采集,等于1时用音频文件的声音替换麦克风采集的声 音。
● startPos:音频文件开始播放的位置,单位为ms。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
注意
会触发onAudioMixStateChangedNotify回调。
stopAudioFile
public abstract int stopAudioFile();
【功能说明】
停止播放音频文件。
【请求参数】
无
【返回参数】
● 0:成功。
● > 0:失败。
注意
会触发onAudioMixStateChangedNotify回调。
pauseAudioFile
public abstract int pauseAudioFile();
【功能说明】
暂停播放音频文件。
【请求参数】
无
【返回参数】
● 0:成功。
● >0:失败。
注意
会触发onAudioMixStateChangedNotify回调。
resumeAudioFile
public abstract int resumeAudioFile();
【功能说明】
恢复播放音频文件。
【请求参数】
无
【返回参数】
● 0:成功。
● >0:失败。
注意
会触发onAudioMixStateChangedNotify回调。
isPlayMixMyself
public abstract int isPlayMixMyself(boolean myself);
【功能说明】
是否只有本地可以听到混音。
【请求参数】
myself:true表示只有本地可以听到混音, false表示本地和对方都可以听到混音,默 认值为false。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
isMixWithMicrophone
public abstract int isMixWithMicrophone(boolean withMic);
【功能说明】
是否需要替代采集。
【请求参数】
withMic:true表示替代采集,远端只能听到音乐,false表示不替代,远端可以同时听 到音乐和MIC采集的声音,默认值为false。
【返回参数】
● 0:成功。
● > 0:失败。具体请参见客户端错误码。
adjustAudioFileVolume
public abstract int adjustAudioFileVolume(int volume);
【功能说明】
调整本地和远端音频播放的音量。
【请求参数】
volume:音量大小,范围为0-100,默认值为100。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见客户端错误码。
adjustAudioFilePlayoutVolume
public abstract int adjustAudioFilePlayoutVolume(int volume);
【功能说明】
调整本地音频播放的音量。
【请求参数】
volume:音量大小,范围为0-100,默认值为100。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见客户端错误码。
adjustAudioFilePublishVolume
public abstract int adjustAudioFilePublishVolume(int volume);
【功能说明】
调整远端音频播放的音量。
【请求参数】
volume:音量大小,范围0-100,默认值100。
【返回参数】
● 0:方法调用成功。
● > 0:方法调用失败。具体请参见客户端错误码。
getAudioFileVolume
public abstract int getAudioFileVolume();
【功能说明】
获取音频播放的音量。
【请求参数】
无
【返回参数】
● >=0:音量大小,范围为0-100。
● < 0:方法调用失败。具体请参见客户端错误码。
getAudioFilePlayoutVolume
public abstract int getAudioFilePlayoutVolume();
【功能说明】
获取音频本地播放的音量。
【请求参数】
无
【返回参数】
● >=0:音量大小,范围为0-100。
● < 0:方法调用失败。具体请参见客户端错误码。
getAudioFilePublishVolume
public abstract int getAudioFilePublishVolume();
【功能说明】
获取音频远端播放的音量。
【请求参数】
无
【返回参数】
● >=0:音量大小,范围为0-100。
● < 0:方法调用失败。具体请参见客户端错误码。
getAudioFileDuration
public abstract int getAudioFileDuration();
【功能说明】
获取音频文件的时长。
【请求参数】
无
【返回参数】
● >0:音频时长,单位为ms。
● <= 0:方法调用失败。具体请参见客户端错误码。
getAudioFilePosition
public abstract int getAudioFilePosition();
【功能说明】
获取音频文件当前播放位置。
【请求参数】
无
【返回参数】
● >=0:播放位置,单位为ms。
● < 0:方法调用失败。具体请参见客户端错误码。
setAudioFilePosition
public abstract int setAudioFilePosition(int position);
【功能说明】
设置音频文件播放位置。
【请求参数】
position:播放位置,单位为ms。
【返回参数】
● 0:方法调用成功。
● < 0:方法调用失败。具体请参见客户端错误码。
playAudioClip
public abstract int playAudioClip(int soundId, String filePath, int loop, double pitch, double pan, double gain, int publish, int startPos);
【功能说明】
播放音效文件并启动混音,需要在有joiner加入房间后调用。
【请求参数】
● soundId:音效ID,取值>= 0。
● filePath:音效文件路径,支持本地文件和网络文件。
● loop:音效文件播放次数,0为循环播放。
● pitch:音调大小,当前不支持。
● pan:空间位置,当前不支持。
● gain:音量大小,取值范围0-100。
● publish:1表示将音效文件混音后发送到远端,0为本地播放,不发送到远端。
● startPos:起始播放位置,单位为ms。
【返回参数】
● 0:方法调用成功。
● < 0:方法调用失败。具体请参见客户端错误码。
注意
soundId需要开发者自己生成并维护,保证不同的soundId对应不同的音效播放实例。
同时音效播放完毕或者停止播放后,soundId最好主动回收,下一次播放音效的时候,
尽量复用被回收的soundId。
stopAudioClip
public abstract int stopAudioClip(int soundId);
【功能说明】
停止播放指定的音效文件。
【请求参数】
soundId:音效ID,取值>= 0。
【返回参数】
● 0:方法调用成功。
● < 0:方法调用失败。具体请参见客户端错误码。
pauseAudioClip
public abstract int pauseAudioClip(int soundId);
【功能说明】
暂停播放指定的音效文件。
【请求参数】
soundId:音效ID,取值>= 0。
【返回参数】
● 0:方法调用成功。
● < 0:方法调用失败。具体请参见客户端错误码。
resumeAudioClip
public abstract int resumeAudioClip(int soundId);
【功能说明】
恢复播放指定的音效文件。
【请求参数】
soundId:音效ID,取值>= 0。
【返回参数】
● 0:方法调用成功。
● < 0:方法调用失败。具体请参见客户端错误码。
stopAllAudioClips
public abstract int stopAllAudioClips();
【功能说明】
停止播放所有音效文件。
【请求参数】
无