public abstract class com.ss.video.rtc.engine.RtcEngine
RtcEngine接口
| 类型 | 名称 |
|---|---|
| int | VIDEO_MIRROR_MODE_AUTO |
| int | VIDEO_MIRROR_MODE_ENABLED |
| int | VIDEO_MIRROR_MODE_DISABLED |
| 返回 | 名称 |
|---|---|
| static synchronized RtcEngine | create |
| static synchronized RtcEngine | create |
| static synchronized RtcEngine | create |
| static synchronized RtcEngine | create |
| static synchronized RtcEngine | createEngine |
| static synchronized void | destroyEngine |
| static synchronized void | destroy |
| static String | getSdkVersion |
| static String | getErrorDescription |
| static void | enablePerformanceCollect |
| static int | feedback |
public static final int com.ss.video.rtc.engine.RtcEngine.VIDEO_MIRROR_MODE_AUTO = 0;
默认镜像模式,即由 SDK 决定镜像模式
public static final int com.ss.video.rtc.engine.RtcEngine.VIDEO_MIRROR_MODE_ENABLED = 1;
启用镜像模式
public static final int com.ss.video.rtc.engine.RtcEngine.VIDEO_MIRROR_MODE_DISABLED = 2;
关闭镜像模式
public static synchronized RtcEngine com.ss.video.rtc.engine.RtcEngine.create(
Context context,
String appId,
IRtcEngineEventHandler handler)
创建引擎对象
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| context | Context | Android Context |
| appId | String | 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。 |
| handler | IRtcEngineEventHandler | SDK 回调给应用层的 Handler,详见 IRtcEngineEventHandler |
返回值
注意
public static synchronized RtcEngine com.ss.video.rtc.engine.RtcEngine.create(
Context context,
String appId,
IRtcEngineEventHandler handler,
Object eglContext)
创建引擎对象
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| context | Context | Android Context |
| appId | String | 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。 |
| handler | IRtcEngineEventHandler | SDK 回调给应用层的 Handler,详见 IRtcEngineEventHandler |
| eglContext | Object | 如果需要支持外部纹理硬编码,则需要传入eglContext。以jObject方式传入eglContext |
返回值
注意
public static synchronized RtcEngine com.ss.video.rtc.engine.RtcEngine.create(
Context context,
String appId,
IRtcEngineEventHandler handler,
EGLContext eglContext)
创建引擎对象
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| context | Context | Android Context |
| appId | String | 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。 |
| handler | IRtcEngineEventHandler | SDK 回调给应用层的 Handler,详见 IRtcEngineEventHandler |
| eglContext | EGLContext | 如果需要支持外部纹理硬编码,则需要传入eglContext。以EGLContext方式传入eglContext |
返回值
注意
public static synchronized RtcEngine com.ss.video.rtc.engine.RtcEngine.create(
Context context,
String appId,
IRtcEngineEventHandler handler,
javax.microedition.khronos.egl.EGLContext eglContext)
创建引擎对象
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| context | Context | Android Context |
| appId | String | 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。 |
| handler | IRtcEngineEventHandler | SDK 回调给应用层的 Handler,详见 IRtcEngineEventHandler |
| eglContext | javax.microedition.khronos.egl.EGLContext | 如果需要支持外部纹理硬编码,则需要传入eglContext。以javax.microedition.khronos.egl.EGLContext 方式传入eglContext |
返回值
注意
public static synchronized RtcEngine com.ss.video.rtc.engine.RtcEngine.createEngine(
Context context,
String appId,
IRtcEngineEventHandler handler,
Object eglContext,
JSONObject parameters)
创建引擎对象
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| context | Context | Android Application Context |
| appId | String | 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。 |
| handler | IRtcEngineEventHandler | SDK 回调给应用层的 Handler,详见 IRtcEngineEventHandler |
| eglContext | Object | 如果需要支持外部纹理硬编码,则需要传入eglContext。以jObject方式传入eglContext |
| parameters | JSONObject | 用以覆盖全局参数的本引擎实例参数 |
返回值
注意
public static synchronized void com.ss.video.rtc.engine.RtcEngine.destroyEngine(
RtcEngine engine)
销毁引擎
销毁由 createEgninecreate 所创建引擎实例,并释放所有相关资源
注意
public static synchronized void com.ss.video.rtc.engine.RtcEngine.destroy()
销毁引擎
销毁由 create 所创建引擎实例,并释放所有相关资源
注意
public static String com.ss.video.rtc.engine.RtcEngine.getSdkVersion()
获取 SDK 当前的版本号。
返回值
SDK 当前的版本号。
public static String com.ss.video.rtc.engine.RtcEngine.getErrorDescription(
int code)
获取SDK内各种错误码、警告码的描述文字
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | int | 通过 onWarning 和 onError 回调获得的值, 具体可以参考 RtcErrorCode 和 RtcWarnCode |
返回值
String 描述文字
public static void com.ss.video.rtc.engine.RtcEngine.enablePerformanceCollect(
boolean enable)
由外部控制是否开启性能采集,默认关闭。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | boolean | • true: 开启。 • false: 不开启。 |
注意
public static int com.ss.video.rtc.engine.RtcEngine.feedback(
Context context,
int grade,
int type,
String problemDesc)
通话结束,用户反馈上报
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| context | Context | 上下文,用户SDK获取网络状态 |
| grade | int | 打分 1~5分 |
| type | int | 问题列表 |
| problemDesc | String | 其他问题 |
返回值
0: 成功; -1: 还没加入过房间,上报失败; -2: 数据解析错误 -3: 字段缺失 -4: grade不合法
public abstract void com.ss.video.rtc.engine.RtcEngine.setRtcEngineEventHandler(
IRtcEngineEventHandler engineEventHandler)
设置引擎事件回调的接收类,必须继承自 IRtcEngineEventHandler 。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| engineEventHandler | IRtcEngineEventHandler | 事件处理器接口类,详见 IRtcEngineEventHandler 。 |
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.joinChannel(
String token,
String channelName,
PublisherConfiguration publisherConfiguration,
String uid)
加入房间。用户调用此方法加入房间,在一个房间内的用户间可以相互通话。
用户调用 create 方法创建 RTC 引擎后,需调用此方法加入房间实现同其他用户进行音视频通话。如果用户调用此方法加入房间,则后续重复调用此方法均会失败,用户必须调用 leaveChannel 退出当前房间后,才能加入下一个房间。
用户调用此方法加入房间成功后,会收到 onJoinChannelSuccess 回调通知。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | String | 动态密钥,用于对登录用户进行鉴权验证。 进入房间需要携带 Token。测试时可使用控制台生成临时 Token ,正式上线需要使用密钥 SDK 在您的服务端生成并下发 Token 。 |
| channelName | String | 房间ID ,用户调用此接口加入的房间的房间ID 。 房间ID 为最大长度为128字节的非空字符串,支持的字符集范围为: 1. 26个大写字母 A ~ Z 。 2. 26个小写字母 a ~ z 。 3. 10个数字 0 ~ 9 。 4. 下划线"_", at符"@", 减号"-"。 |
| publisherConfiguration | PublisherConfiguration | 预留参数。 |
| uid | String | 用户ID ,用户调用此接口加入的房间时使用的用户ID 。 用户ID 为最大长度为128字节的非空字符串,支持的字符集范围为: 1. 26个大写字母 A ~ Z 。 2. 26个小写字母 a ~ z 。 3. 10个数字 0 ~ 9 。 4. 下划线"_", at符"@", 减号"-"。 |
返回值
方法调用结果。
+ 0: 成功
+ -1: channelName 为空,失败
+ -2: uid 为空,失败
+ -3: Engine 创建失败
+ -4: joinChannel(@link #joinChannel) 重复调用,失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.leaveChannel()
离开房间。
用户调用此方法离开房间,结束通话过程,释放所有通话相关的资源。
调用 joinChannel 方法加入房间后,在通话结束时必须调用此方法结束通话,否则无法开始下一次通话。无论当前是否在房间中,都可以调用此方法。重复调用此方法不会有负面影响。
此方法是异步操作,调用返回时并没有真正退出房间。真正退出房间后,本端会收到 onLeaveChannel 回调通知。
返回值
方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.enableLocalVideo(
boolean enabled)
该方法开启或关闭本地视频采集。默认为开启状态。
调用该方法后,房间中的其他用户会收到 onUserEnableLocalVideo 的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enabled | boolean | 是否开启本地视频 • true: 开启本地视频采集 • false: 关闭本地视频采集 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.enableLocalAudio(
boolean enabled)
开启关闭本地音频。
调用该方法后,房间中的其他用户会收到 onUserEnableLocalAudio 的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enabled | boolean | 是否开启本地音频采集 • true: 开启本地音频采集(默认) • false: 关闭本地音频采集 |
返回值
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.setAudioScenario(
AudioScenarioType audioScenario)
设置音频场景类型。
你可以根据你的应用所在场景,选择合适的音频场景类型。
选择音频场景后,RTC 会自动根据客户端音频路由和发布订阅状态,适用通话音量/媒体音量。
在进房前和进房后设置均可生效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioScenario | AudioScenarioType | 音频场景类型, 参见 AudioScenarioType |
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.startPreview()
开启视频预览,视频预览默认为关闭状态。
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.stopPreview()
关闭视频预览,视频预览默认为关闭状态。
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.setupLocalVideo(
VideoCanvas local)
设置本地视频显示属性
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| local | VideoCanvas | 设置视频属性, 参考: VideoCanvas |
返回值
注意
该方法设置本地视频显示信息。应用程序通过调用此接口绑定本地视频流的显示视窗 (view),并设置视频显示模式。 在应用程序开发中,通常在 APP 收到 onFirstLocalVideoFrame 事件后调用该方法进行本地视频设置,然后再加入房间。 退出房间后,绑定仍然有效,如果需要解除绑定,可以指定空 View(NULL)调用 setupLocalVideo。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupLocalVideoRender(
IVideoSink videoSink,
String uid)
设置本地视频外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性, 参考:IVideoSink |
| uid | String | 要绑定的用户ID |
返回值
注意
该方法设置本地视频外部渲染。应用程序通过调用此接口绑定本地视频流的数据源回调。 在应用程序开发中,通常在 APP 收到 onFirstLocalVideoFrame 事件后调用该方法进行本地视频设置,然后再加入房间。 退出房间后,会收到 onStop 和 onDispose,如果需要手动提前 Dispose,需要设置 setupLocalVideoRender为 null,清除设置 。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupLocalVideoRender(
IVideoSink videoSink,
String uid,
boolean isInitialized)
设置本地视频外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性, 参考:IVideoSink |
| uid | String | 要绑定的用户ID |
| isInitialized | boolean | 是否初始化 |
返回值
注意
该方法设置本地视频外部渲染。应用程序通过调用此接口绑定本地视频流的数据源回调。 在应用程序开发中,通常在 APP 收到 onFirstLocalVideoFrame 事件后调用该方法进行本地视频设置,然后再加入房间。 退出房间后,会收到 onStop 和 onDispose,如果需要手动提前 Dispose,需要设置 setupLocalVideoRender为 null,清除设置 。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupLocalScreenRender(
IVideoSink videoSink,
String uid)
设置本地屏幕视频的外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性, 参考:IVideoSink |
| uid | String | 要绑定的用户ID |
返回值
注意
该方法设置本地屏幕视频外部渲染。应用通过调用此接口绑定本地视频流的数据源回调。 在应用开发中,通常在应用收到 onFirstLocalScreenFrame 事件后调用该方法进行本地视频设置。 退出房间后,需要设置 setupLocalScreenRender 为 null,清除设置 。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupRemoteVideo(
VideoCanvas videoCanvas)
设置远端视频视图
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoCanvas | VideoCanvas | 用于渲染远端用户视频的画布,参考: VideoCanvas |
返回值
public abstract int com.ss.video.rtc.engine.RtcEngine.setupRemoteVideoRender(
IVideoSink videoSink,
String roomid,
String uid)
设置远端视频的外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性, 参考: IVideoSink |
| roomid | String | 要绑定的用户所属房间ID |
| uid | String | 要绑定的用户ID |
返回值
注意
该方法设置远端视频外部渲染。应用程序通过调用此接口绑定远端视频流的数据源回调。 在应用程序开发中,通常在 APP 收到 onFirstRemoteVideoFrame 事件后调用该方法进行远端视频设置,然后再加入房间。 退出房间后,会收到 onStop 和 onDispose,如果需要手动提前 Dispose,需要设置 setupRemoteVideoRender 为 null,清除设置。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupRemoteVideoRender(
IVideoSink videoSink,
String uid)
设置远端视频的外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性,参考: IVideoSink |
| uid | String | 要绑定的用户ID |
返回值
注意
该方法设置远端视频外部渲染。应用程序通过调用此接口绑定远端视频流的数据源回调。 在应用程序开发中,通常在 APP 收到 onFirstRemoteVideoFrame 事件后调用该方法进行远端视频设置,然后再加入房间。 退出房间后,会收到 onStop 和 onDispose,如果需要手动提前 Dispose,需要设置 setupRemoteVideoRender 为 null,清除设置。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupRemoteVideoRender(
IVideoSink videoSink,
String roomid,
String uid,
boolean isInitialized)
设置远端视频的外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性, 参考: IVideoSink |
| uid | String | 要绑定的用户ID |
| roomid | String | 要绑定的用户所属房间 id |
| isInitialized | boolean | videoSink 是否已经初始化 |
返回值
注意
该方法设置远端视频外部渲染。应用程序通过调用此接口绑定远端视频流的数据源回调。 在应用程序开发中,通常在 APP 收到 onFirstRemoteVideoFrame 事件后调用该方法进行远端视频设置,然后再加入房间。 退出房间后,会收到 onStop 和 onDispose,如果需要手动提前 Dispose,需要设置 setupRemoteVideoRender 为 null,清除设置。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupRemoteVideoRender(
IVideoSink videoSink,
String uid,
boolean isInitialized)
设置远端视频的外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性, 参考: IVideoSink |
| uid | String | 要绑定的用户ID |
| isInitialized | boolean | videoSink 是否已经初始化 |
返回值
注意
该方法设置远端视频外部渲染。应用程序通过调用此接口绑定远端视频流的数据源回调。 在应用程序开发中,通常在 APP 收到 onFirstRemoteVideoFrame 事件后调用该方法进行远端视频设置,然后再加入房间。 退出房间后,会收到 onStop 和 onDispose,如果需要手动提前 Dispose,需要设置 setupRemoteVideoRender 为 null,清除设置。。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupRemoteScreenRender(
IVideoSink videoSink,
String roomid,
String uid)
设置远端屏幕流视频的外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性, 参考:IVideoSink |
| uid | String | 要绑定的用户ID |
| roomid | String | 要绑定的用户所属房间ID |
返回值
注意
该方法设置远端屏幕视频外部渲染。应用通过调用此接口绑定远端视频流的数据源回调。 在应用开发中,通常在应用收到 onFirstRemoteScreenFrame 事件后调用该方法进行远端视频设置。 退出房间后,需要设置 setupRemoteScreenRender 为 null,清除设置 。
public abstract int com.ss.video.rtc.engine.RtcEngine.setupRemoteScreenRender(
IVideoSink videoSink,
String uid)
设置远端屏幕流视频的外部渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSink | IVideoSink | 设置视频属性, 参考:IVideoSink |
| uid | String | 要绑定的用户ID |
返回值
注意
该方法设置远端屏幕视频外部渲染。应用程序通过调用此接口绑定远端视频流的数据源回调。 在应用开发中,通常在应用收到 onFirstRemoteScreenFrame 事件后调用该方法进行远端视频设置。 退出房间后,需要设置 setupRemoteScreenRender 为 null,清除设置 。
public abstract int com.ss.video.rtc.engine.RtcEngine.setLocalVideoMirrorMode(
int mode)
设置本地视频镜像。 该方法设置本地视频镜像,支持动态设置。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mode | int | 设置本地视频镜像模式 • 0:默认镜像模式,即由 SDK 决定镜像模式 • 1:启用镜像模式 • 2:关闭镜像模式 |
返回值
public abstract boolean com.ss.video.rtc.engine.RtcEngine.isLocalVideoMirrorOn()
获取本地视频镜像。
返回值
当前镜像状态
+ true:镜像为打开状态
+ false:镜像为关闭状态
public abstract int com.ss.video.rtc.engine.RtcEngine.switchCamera()
切换前置/后置摄像头
返回值
public abstract int com.ss.video.rtc.engine.RtcEngine.replaceBackground(
BackgroundMode mode,
DivideModel divide_model)
视频图像分割,替换背景
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mode | BackgroundMode | 背景模式,用于设置预置背景,是否虚化等 详见 BackgroundMode |
| divide_model | DivideModel | 选择使用哪种分割模型, 分割模型类型详见 DivideModel |
返回值
public abstract int com.ss.video.rtc.engine.RtcEngine.setEnableSpeakerphone(
boolean enable)
设置音频播放设备为扬声器或者听筒,默认使用扬声器。 音频播放设备发生变化时,会收到 onAudioRouteChanged 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | boolean | 是否切换语音路由到扬声器。 • true: 没有连接耳机或者蓝牙设备时,音频播放切换到扬声器。 • false: 没有连接耳机或者蓝牙设备时,音频播放切换到听筒。 |
返回值
方法调用结果
+ 0: 方法调用成功
+ <0: 方法调用失败
注意
public abstract boolean com.ss.video.rtc.engine.RtcEngine.isSpeakerphoneEnabled()
查询扬声器启用状态
返回值
扬声器开启状态
+ true:扬声器已开启,语音会输出到扬声器
+ false:扬声器未开启,语音会输出到非扬声器(听筒,耳机等)
public abstract int com.ss.video.rtc.engine.RtcEngine.enableAudioVolumeIndication(
int interval,
int smooth)
启用说话者音量提示。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| interval | int | 指定音量提示的时间间隔 • ≤ 0:禁用音量提示功能。 • > 0:返回音量提示的间隔,单位为毫秒。建议设置到大于等于200 毫秒。少于 10 毫秒时,行为未定义。 |
| smooth | int | 该参数未使用 |
返回值
方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.muteLocalAudioStream(
boolean muted)
静音本地音频流。 调用该方法后,房间中的其他用户会收到 onUserMuteAudio 的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muted | boolean | 是否静音本地音频流 • true: 静音本地音频流 • false: 关闭静音本地音频流(默认) |
返回值
方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.muteLocalVideoStream(
boolean muted)
开启/关闭本地视频发送,调用该方法后,房间中的其他用户会收到 onUserMuteVideo 的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muted | boolean | • true:关闭视频流 • false:开启视频流(默认) |
返回值
public abstract int com.ss.video.rtc.engine.RtcEngine.muteAllRemoteVideoStreams(
boolean muted)
开启/关闭所有远程视频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muted | boolean | 是否接受所有远程视频流 • true:关闭所有视频流 • false:开启所有视频流(默认) |
返回值
public abstract int com.ss.video.rtc.engine.RtcEngine.setDefaultMuteAllRemoteVideoStreams(
boolean muted)
停止/恢复接受所有新加入房间用户的远端视频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muted | boolean | 是否接受新加入房间用户远端视频流 • true:关闭所有视频流 • false:开启所有视频流(默认) |
返回值
public abstract int com.ss.video.rtc.engine.RtcEngine.muteAllRemoteAudioStreams(
boolean muted)
静音/取消静音所有音频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muted | boolean | 是否静音所有远端音频流 • true:静音所有远端音频流 • false:取消静音所有远端音频流 |
返回值
方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败
注意
本方法只控制本地是否静音远端音频流,并不能控制远端音频设备的采集发送功能
public abstract int com.ss.video.rtc.engine.RtcEngine.setDefaultMuteAllRemoteAudioStreams(
boolean muted)
设置是否默认静音所有远端音频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muted | boolean | 是否默认静音所有远端音频流 true: 默认静音所有远端音频流 false: 默认取消静音所有远端音频流(默认) |
返回值
方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.muteRemoteAudioStream(
String uid,
boolean muted)
静音/取消静音指定用户的音频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 指定的远端用户ID |
| muted | boolean | • true:停止接收指定用户的音频流 • false:继续接收指定用户的音频流(默认) |
返回值
方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败
public abstract int com.ss.video.rtc.engine.RtcEngine.muteRemoteVideoStream(
String uid,
boolean muted)
接收/停止接收指定视频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 指定的用户ID |
| muted | boolean | • true:停止接收指定用户的视频流 • false:恢复接收指定用户的视频流(默认) |
返回值
public abstract int com.ss.video.rtc.engine.RtcEngine.renewToken(
String token)
更新 Token。
Token 有一定的有效期,当 Token 过期时,用户需调用此方法更新房间的 Token 信息。
用户调用 joinChannel 方法加入房间时,如果使用了过期的 Token 将导致加入房间失败,并会收到 onError 回调通知,回调错误码为 BRERR_INVALID_TOKEN 。此时需要重新获取 Token ,并调用此方法更新 Token。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | String | 更新的动态密钥。Token 用于对登录用户进行鉴权验证。 |
返回值
方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.setChannelProfile(
CHANNEL_PROFILE_TYPE channelProfile)
设置房间模式。
通过设置房间模式,用户可以选择应用 SDK 针对不同房间模式场景的优化策略。
默认的房间模式为通信模式 CHANNEL_PROFILE_COMMUNICATIONCHANNEL_PROFILE_TYPE 。
房间模式必须在调用 joinChannel 加入房间前设置,加入房间后设置不生效。设置用户角色(通过方法 setClientRole )建议在设置完房间模式后。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| channelProfile | CHANNEL_PROFILE_TYPE | 房间模式,详见 CHANNEL_PROFILE_TYPE 枚举类型。 |
返回值
方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.setClientRole(
CLIENT_ROLE_TYPE clientRole)
设置用户角色。
用户可通过设置用户角色,控制:1.是否发布音视频流;2.用户自身是否在房间中隐身。详见用户角色 CLIENT_ROLE_TYPE 。
默认用户角色为主播角色 CLIENT_ROLE_BROADCASTERCLIENT_ROLE_TYPE 。
房间模式(通过调用接口 setChannelProfile 可设置房间模式)为直播模式、游戏模式、云游戏模式时,设置用户角色生效。房间模式为通信模式时不区分用户角色。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| clientRole | CLIENT_ROLE_TYPE | 用户角色,详见 CLIENT_ROLE_TYPE 。 |
返回值
方法调用结果。
+ 0: 方法调用成功
+ <0: 方法调用失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.startAudioMixing(
String file,
boolean loopback,
boolean replace,
int cycle)
开始播放音乐文件及混音。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| file | String | 指定需要混音的本地文件的绝对路径。支持音频文件格式有: mp3,aac,m4a,3gp,wav。 |
| loopback | boolean | • true: 只有本地可以听到混音或替换后的音频流。 • false: 本地和对方都可以听到混音或替换后的音频流 |
| replace | boolean | • true: 只推送设置的本地音频文件,不传输麦克风采集的音频。 • false: 音频文件内容将会和麦克风采集的音频流进行混音 |
| cycle | int | 指定音频文件循环播放的次数。 • >0: 循环的次数。 • -1: 无限循环 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.stopAudioMixing()
停止播放音乐文件及混音。
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.adjustRecordingSignalVolume(
int volume)
调节录音音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 录音音量,可在 0~400 范围内进行调节 • 0:静音 • 100:原始音量 • 400: 最大可AdjustPlaybackSignalVolume为原始音量的 4 倍(自带溢出保护) |
返回值
注意
为保证更好的通话质量,建议将 volume 值设为 [0,100]
public abstract int com.ss.video.rtc.engine.RtcEngine.adjustPlaybackSignalVolume(
int volume)
调节本地播放的所有远端用户音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 播放音量,可在 0~400 范围内进行调节 • 0:静音 • 100:原始音量 • 400: 最大可为原始音量的 4 倍(自带溢出保护) |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.pauseAudioMixing()
暂停播放音乐文件
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.resumeAudioMixing()
恢复播放音乐文件
返回值
注意
public abstract long com.ss.video.rtc.engine.RtcEngine.sendRoomMessage(
String messgaeStr)
给房间内的所有其他用户发送广播消息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| messgaeStr | String | 用户发送的广播消息 |
返回值
>0:发送成功,返回这次发送消息的编号,从 1 开始递增 -1:发送失败
注意
1.调用该函数后会收到一次 OnRoomMessageSendResult 回调; 2.同一房间内的其他用户会收到 OnRoomMessageReceived 回调。
public abstract long com.ss.video.rtc.engine.RtcEngine.sendRoomBinaryMessage(
byte[] buffer)
给房间内的所有其他用户发送广播二进制消息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| buffer | byte[] | 用户发送的广播二进制消息 |
返回值
>0:发送成功,返回这次发送消息的编号,从 1 开始递增 -1:发送失败
注意
1.调用该函数后会收到一次 OnRoomMessageSendResult 回调; 2.同一房间内的其他用户会收到 OnRoomBinaryMessageReceived 回调。
public abstract long com.ss.video.rtc.engine.RtcEngine.sendUserMessage(
String userId,
String messageStr)
给房间内指定的用户发送消息, 返回这次发送消息的编号
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | String | 指定用户 ID |
| messageStr | String | 发送的消息内容 |
返回值
>0:发送成功,返回这次发送消息的编号,从 1 开始递增 -1:发送失败,RtcEngine 实例未创建 -2:发送失败,userId 为空
注意
1.调用该函数后会收到一次 OnUserMessageSendResult 回调; 2.若消息发送成功,则 uid 所指定的用户会收到 OnUserMessageReceived 回调。
public abstract long com.ss.video.rtc.engine.RtcEngine.sendUserBinaryMessage(
String userId,
byte[] buffer)
给房间内指定的用户发送二进制消息, 返回这次发送消息的编号
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | String | 指定用户 ID |
| buffer | byte[] | 发送的消息内容 |
返回值
>0:发送成功,返回这次发送消息的编号,从 1 开始递增 -1:发送失败,RtcEngine 实例未创建 -2:发送失败,uid 为空
注意
1.调用该函数后会收到一次 OnUserMessageSendResult 回调; 2.若消息发送成功,则 uid 所指定的用户会收到 OnUserBinaryMessageReceived 回调。
public abstract int com.ss.video.rtc.engine.RtcEngine.adjustAudioMixingVolume(
int volume)
调节音乐文件的文件音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400: 最大可调音量 (自带溢出保护) |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.getAudioMixingDuration()
获取音乐文件时长
返回值
注意
请在房间内调用该方法。
public abstract int com.ss.video.rtc.engine.RtcEngine.getAudioMixingCurrentPosition()
获取音乐文件播放进度
返回值
注意
请在房间内调用该方法。
public abstract int com.ss.video.rtc.engine.RtcEngine.setAudioMixingPosition(
int pos)
设置音频文件的播放位置
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| pos | int | 整数。进度条位置,单位为毫秒。 |
返回值
注意
该方法可以设置音频文件的播放位置,这样你可以根据实际情况从指定的位置播放音乐文件,无需从头到尾完整播放一个音乐文件。
public abstract int com.ss.video.rtc.engine.RtcEngine.adjustAudioMixingPlayoutVolume(
int volume)
调节音乐文件的本地播放音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400: 最大可调音量 (自带溢出保护) |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.adjustAudioMixingPublishVolume(
int volume)
调节音乐文件的远端播放音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400: 最大可调音量 (自带溢出保护) |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.getEffectVolume(
int soundId)
获取指定音效文件的文件音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性。确保此处的 soundId 与 playEffect 设置的 soundId 相同。 |
返回值
注意
请在房间内调用该方法。
public abstract int com.ss.video.rtc.engine.RtcEngine.setVolumeOfEffect(
int soundId,
int volume)
调节指定音效文件的文件音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性。确保此处的 soundId 与 playEffect 设置的 soundId 相同。 |
| volume | int | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400:最大可AdjustPlaybackSignalVolume为原始音量的 4 倍(自带溢出保护) |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.setEffectsVolume(
int volume)
调节所有音效文件的文件音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | int | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400: 最大可调音量 (自带溢出保护) |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.playEffect(
int soundId,
String filePath,
boolean loopback,
int cycle,
int volume)
开始播放指定音效文件。你可以在该方法中设置音效文件的播放次数、音量大小,以及远端用户是否能听到该音效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性。如果已经通过 preloadEffect 将音效加载至内存,确保此处的 soundId 与 preloadEffect 设置的 soundId 相同。 |
| filePath | String | 指定需要混音的音频文件名和文件路径名。支持以下音频格式: mp3,aac,m4a,3gp,wav |
| loopback | boolean | • true: 只有本地可以听到该音效。 • false: 本地和远端用户都可以听到该音效 |
| cycle | int | 指定音频文件循环播放的次数。 • >0:循环的次数。 • -1:无限循环,直至调用 stopEffect 或 stopAllEffects 后停止。 |
| volume | int | 音效文件播放音量范围为 0~400。默认 100 为原始文件音量 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.preloadEffect(
int soundId,
String filePath)
预加载指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性。 |
| filePath | String | 指定需要混音的音频文件名和文件路径名。支持以下音频格式: mp3,aac,m4a,3gp,wav。 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.unloadEffect(
int soundId)
卸载指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性。 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.stopEffect(
int soundId)
停止播放指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性。如果已经通过 preloadEffect 将音效加载至内存,确保此处的 soundId 与 preloadEffect 设置的 soundId 相同。 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.pauseEffect(
int soundId)
暂停播放指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性 |
返回值
注意
调用该方法暂停播放指定音效文件,可以调用 resumeEffect 方法恢复播放。
public abstract int com.ss.video.rtc.engine.RtcEngine.resumeEffect(
int soundId)
恢复播放指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | int | 音效ID,应用调用者维护,请保证唯一性。 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.stopAllEffects()
停止所有音效文件的播放
返回值
注意
该方法停止所有音效文件的播放。
public abstract int com.ss.video.rtc.engine.RtcEngine.unloadAllEffects()
卸载所有音效文件
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.pauseAllEffects()
暂停所有音效文件的播放
返回值
注意
该方法暂停所有音效文件的播放,可调用 resumeAllEffects 方法恢复播放。
public abstract int com.ss.video.rtc.engine.RtcEngine.resumeAllEffects()
恢复所有音效文件的播放
返回值
注意
public abstract boolean com.ss.video.rtc.engine.RtcEngine.setRecordingAudioFrameParameters(
int sampleRate,
int channels)
设置本地麦克风录制的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| sampleRate | int | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | int | 音频通道数,支持单声道(1)和双声道(2) |
返回值
方法调用结果
+ true:方法调用成功
+ false:方法调用失败
注意
使用本方法设置参数,并使用registerAudioFrameObserver注册数据观察者,之后可以在IAudioFrameObserver的 onRecordAudioFrame收到数据
public abstract boolean com.ss.video.rtc.engine.RtcEngine.setPlaybackAudioFrameParameters(
int sampleRate,
int channels)
设置远端所有用户音频数据混音后的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| sampleRate | int | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | int | 音频通道数,支持单声道(1)和双声道(2) |
返回值
方法调用结果
+ true:方法调用成功
+ false:方法调用失败
注意
使用本方法设置参数,并使用registerAudioFrameObserver注册数据观察者,之后可以在IAudioFrameObserver的 onPlaybackAudioFrame收到数据
public abstract boolean com.ss.video.rtc.engine.RtcEngine.setMixedAudioFrameParameters(
int sampleRate,
int channels)
设置本地麦克风录制音频数据和远端所有用户音频数据混音后的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| sampleRate | int | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | int | 音频通道数,支持单声道(1)和双声道(2) |
返回值
方法调用结果
+ true:方法调用成功
+ false:方法调用失败
注意
使用本方法设置参数,并使用registerAudioFrameObserver注册数据观察者,之后可以在IAudioFrameObserver的 onMixedAudioFrame收到数据
public abstract int com.ss.video.rtc.engine.RtcEngine.registerAudioFrameObserver(
IAudioFrameObserver observer)
注册音频数据回调观察者
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | IAudioFrameObserver | 音频数据回调观察者,详见IAudioFrameObserver。如果传入 null,则取消注册。 |
返回值
方法调用结果
+ 0:方法调用成功
+ <0:方法调用失败
注意
本方法需要与下面3个方法配合使用:setRecordingAudioFrameParameters、 setPlaybackAudioFrameParameters、 setMixedAudioFrameParameters
public abstract void com.ss.video.rtc.engine.RtcEngine.setExternalVideoSource(
boolean enable,
boolean useTexture,
boolean push)
配置外部视频源。 不支持频道内动态切换视频源。如果想切换成视频源,须先退出频道,再重新加入频道。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | boolean | 是否使用外部视频源 |
| useTexture | boolean | 是否使用 Texture 作为输入 |
| push | boolean | 是否外部视频源需要调用 pushExternalVideoFrame 将视频帧主动推送给SDK |
public abstract void com.ss.video.rtc.engine.RtcEngine.setExternalVideoSource(
boolean enable,
boolean useTexture,
boolean push,
boolean needRender)
配置外部视频源。 不支持频道内动态切换视频源。如果想切换成视频源,须先退出频道,再重新加入频道。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | boolean | 是否使用外部视频源 |
| useTexture | boolean | 是否使用 Texture 作为输入 |
| push | boolean | 是否外部视频源需要调用 pushExternalVideoFrame 将视频帧主动推送给SDK |
| needRender | boolean | 是否需要渲染 |
public abstract boolean com.ss.video.rtc.engine.RtcEngine.pushExternalVideoFrame(
RtcVideoFrame frame)
推送外部视频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | RtcVideoFrame | 视频帧的数据信息 |
返回值
注意
public abstract boolean com.ss.video.rtc.engine.RtcEngine.pushExternalVideoFrame(
RtcVideoFrame frame,
boolean isDirectEncode)
推送外部视频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | RtcVideoFrame | 视频帧的数据信息 |
| isDirectEncode | boolean | true:使用用户的纹理做硬编码;false:拷贝业务纹理后做硬编码 |
返回值
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.enableLiveTranscoding(
LiveTranscoding liveTranscode)
开启直播推流转码功能。
此方法用于开启直播推流转码功能,并设置旁路推流的视频视图布局及音频属性等。
直播推流转码功能开启时,会根据设置的视频视图布局和音频属性进行合流转码转成 rtmp 流并推送到设置的 CDN 。
直播推流转码功能启动成功或失败时、推流过程中发生错误时,SDK 通过 onStreamPublished 回调事件通知用户对应的状态事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| liveTranscode | LiveTranscoding | 推流转码配置属性,详见 LiveTranscoding 数据类型。 |
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.disableLiveTranscoding()
关闭直播推流转码功能。
public abstract void com.ss.video.rtc.engine.RtcEngine.setVideoCompositingLayout(
LiveTranscoding.Layout layout)
设置视频流合流布局。
此方法用于在直播推流转码功能开启时,更新旁路推流的视频合流布局属性。调用此方法前,用户需通过调用 enableLiveTranscoding 方法开启直播推流转码功能。如果未开启直播推流转码功能,则调用此方法不生效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| layout | LiveTranscoding.Layout | 视频合流布局属性,详见 LiveTranscoding.Layout 类型。 |
public abstract int com.ss.video.rtc.engine.RtcEngine.setVideoProfiles(
VideoStreamDescription[] videoStreamDescriptions)
设置发布的视频流属性
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoStreamDescriptions | VideoStreamDescription[] | 要发送的多路流的视频信息,参考: VideoStreamDescription |
返回值
public abstract int com.ss.video.rtc.engine.RtcEngine.setVideoProfiles(
VideoStreamDescription[] videoStreamDescriptions,
VideoEncoderConfiguration.ORIENTATION_MODE orientationMode)
设置发布的视频流属性和视频旋转角度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoStreamDescriptions | VideoStreamDescription[] | 要发送的多路流的视频信息,参考: VideoStreamDescription |
| orientationMode | VideoEncoderConfiguration.ORIENTATION_MODE | 视频的旋转角度 |
返回值
public abstract void com.ss.video.rtc.engine.RtcEngine.setupRemoteScreen(
VideoCanvas videoCanvas)
设置共享屏幕远端视频视图。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoCanvas | VideoCanvas | 远端视频视图 VideoCanvas |
注意
在应用开发中,通常在应用收到 onFirstRemoteScreenFrame 事件后调用该方法进行远端视频设置。
public abstract void com.ss.video.rtc.engine.RtcEngine.enableAutoSubscribe(
SubscribeMode audioMode,
SubscribeMode videoMode)
开启/关闭自动订阅功能。
用户调用此方法设置房间中是否开启自动订阅功能。SDK 默认开启自动订阅功能。
如需关闭自动订阅功能,建议在调用 joinChannel 方法加入房间前设置完成。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioMode | SubscribeMode | 开启/关闭音频自动订阅功能。详见枚举类型 SubscribeMode 。 |
| videoMode | SubscribeMode | 开启/关闭视频自动订阅功能。详见枚举类型 SubscribeMode 。 |
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.subscribeStream(
String userId,
SubscribeConfig info)
订阅指定的房间内远端音视频流。
关闭自动订阅功能,使用手动订阅模式时用户调用此方法按需订阅房间中的音视频流。
此方法仅在关闭自动订阅功能时生效。用户需在加入房间前调用 enableAutoSubscribe 方法关闭自动订阅功能以使用手动订阅模式。
订阅流失败时,SDK 会按失败原因回调 onError 通知用户,具体错误可参考错误码 RtcErrorCode 描述。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | String | 要订阅的流的发布用户的用户的ID 。 |
| info | SubscribeConfig | 选择订阅配置,详见数据结构 SubscribeConfig 。 |
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.unSubscribe(
String userId,
boolean isScreen)
停止订阅指定的房间内远端音视频流。
关闭自动订阅功能,使用手动订阅模式时用户调用此方法停止订阅已订阅的音视频流。
此方法仅在开启手动订阅功能时生效,用户需在加入房间前调用 enableAutoSubscribe 方法关闭自动订阅功能以使用手动订阅模式。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | String | 指定停止订阅的远端音视频流的发布用户的用户的ID 。 |
| isScreen | boolean | 是否是屏幕共享流。 |
注意
public abstract boolean com.ss.video.rtc.engine.RtcEngine.setExternalAudioDevice(
boolean enable,
int sampleRate,
int recordChannelNum,
int playoutChannelNum)
设置是否启用外部音频采集渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | boolean | • true: 启用自定义音频采集渲染 • false: 不启用自定义音频采集渲染 |
| sampleRate | int | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| recordChannelNum | int | 外部音频采集通道数,支持单声道(1)和双声道(2) |
| playoutChannelNum | int | 外部音频渲染通道数,支持单声道(1)和双声道(2) |
返回值
设置是否成功
+ true: 成功
+ false: 失败
注意
public abstract boolean com.ss.video.rtc.engine.RtcEngine.setAudioDeviceEventHandler(
IRtcEngineAudioDeviceEventHandler handler)
启动音频外部源采集渲染时,添加音频外部设备事件监控
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handler | IRtcEngineAudioDeviceEventHandler | 音频外部设备事件监控,详见:IRtcEngineAudioDeviceEventHandler |
返回值
方法调用结果
+ true:方法调用成功
+ false:方法调用失败
public abstract boolean com.ss.video.rtc.engine.RtcEngine.pushExternalAudioFrame(
byte[] audioFrame,
int frameNum)
推送外部音频数据。使用 setExternalAudioDevice 启用自定义音频采集渲染后,可以使用本方法推送外部音频数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | byte[] | pcm 数据,内存大小应该为 frameNum |
| frameNum | int | 采样点数量,应该为 setExternalAudioDevice 中设置的 sampleRate / 100。 当设置采样率为48000时, 每次应该推送480个采样点 |
返回值
方法调用结果
+ true:方法调用成功
+ false:方法调用失败
注意
public abstract boolean com.ss.video.rtc.engine.RtcEngine.pullExternalAudioFrame(
byte[] audioFrame,
int frameNum)
拉取远端音频数据。使用 setExternalAudioDevice 启用自定义音频采集渲染后,可以使用本方法拉取远端音频数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | byte[] | pcm 数据,内存大小应该为 frameNum |
| frameNum | int | 采样点数量,应该为 setExternalAudioDevice 中设置的 sample_rate / 100。 当设置采样率为48000时, 每次应该拉取480个采样点 |
返回值
方法调用结果
+ true:方法调用成功
+ false:方法调用失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.setupLocalScreen(
VideoCanvas videoCanvas)
设置共享屏幕渲染本地视图
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoCanvas | VideoCanvas | 设置视频属性 VideoCanvas |
返回值
注意
在应用开发中,通常在应用收到 onFirstLocalScreenFrame 事件后调用该方法进行本地视频设置。
public abstract int com.ss.video.rtc.engine.RtcEngine.publishScreen()
发布本地屏幕共享流。
返回值
0 :发布成功 -1 :发布失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.unpublishScreen()
停止发布本地屏幕共享流。
返回值
0 :发布成功 -1 :发布失败
注意
调用该接口后远端会收到 onStreamRemove 事件
public abstract int com.ss.video.rtc.engine.RtcEngine.startScreenSharing(
Intent mediaProjectionResultData,
ScreenSharingParameters parameters)
开启屏幕共享。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mediaProjectionResultData | Intent | Android屏幕共享Intent,申请屏幕共享权限之后拿到的Intent |
| parameters | ScreenSharingParameters | 屏幕共享流参数 ScreenSharingParameters |
返回值
0 :开启成功 -1 :开启失败
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.updateScreenSharingParameters(
ScreenSharingParameters parameters)
修改屏幕共享流参数。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| parameters | ScreenSharingParameters | 屏幕共享流参数 ScreenSharingParameters |
返回值
0 :开启成功 -1 :开启失败
public abstract int com.ss.video.rtc.engine.RtcEngine.stopScreenSharing()
关闭屏幕共享。
返回值
0 :关闭成功 -1 :关闭失败
注意
调用该接口后远端会收到 onStreamRemove 事件
public abstract boolean com.ss.video.rtc.engine.RtcEngine.pushScreenFrame(
RtcVideoFrame videoFrame)
发布共享屏幕视频帧
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoFrame | RtcVideoFrame | 视频帧 RtcVideoFrame |
返回值
true :发布成功 false :发布失败
public abstract void com.ss.video.rtc.engine.RtcEngine.setOnDestroyCompletedCallback(
Runnable callback)
设置引擎销毁后通知 App 的回调函数。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| callback | Runnable | App 接收引擎销毁的回调函数。 |
public abstract void com.ss.video.rtc.engine.RtcEngine.setAudioPlayoutMixStream(
boolean enable,
int sampleRate,
int channelNum)
启动/停止外部音频流混音, 并设置混音数据格式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | boolean | • true: 启用外部音频流混音。 • false: 停止外部音频流混音。 |
| sampleRate | int | 音频采样率,单位HZ。目前支持的采样率有:8000HZ, 16000HZ, 32000HZ, 44100HZ,48000HZ。 |
| channelNum | int | 音频声道个数。目前支持单通道(1),双通道(2) |
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.getAudioMixingStreamCachedFrameNum()
获取SDK当前缓冲数据
返回值
注意
调用该方法可以实时获取缓存数据量,并以此数据为基准调整数据推送节奏来避免内存溢出
public abstract boolean com.ss.video.rtc.engine.RtcEngine.pushAudioMixingStreamData(
byte[] audioFrame,
int frameNum)
向SDK推送混音的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | byte[] | PCM音频数据,其格式与 setAudioPlayoutMixStream 保持一致。 |
| frameNum | int | 采样点数。若音频采样率为 48000HZ,则单个声道每秒的数据量为 48000 个采样点,10 毫秒的音频数据对应的采样点数为 480 个采样点。 |
返回值
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.AdjustRemoteAudioVolume(
String uid,
int volume)
调节远端用户音量,默认为100
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 远端用户ID |
| volume | int | 播放音量,可在 0~400 范围内进行调节 • 0: 静音 • 100: 原始音量 • 400: 最大可为原始音量的 4 倍(自带溢出保护) |
public abstract int com.ss.video.rtc.engine.RtcEngine.setPublishFallbackOption(
int option)
设置发布的音视频流回退选项。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| option | int | 本地发布的音视频流回退选项。 • STREAM_FALLBACK_OPTION_DISABLED(0):(默认)上行网络较弱或性能不佳时,不对音视频流作回退处理。 • STREAM_FALLBACK_OPTION_VIDEO_STREAM_LOW(1):上行网络较弱或性能不佳时,只发送视频小流。 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.setRemoteSubscribeFallbackOption(
SubscribeFallbackOptions option)
设置订阅的音视频流回退选项。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| option | SubscribeFallbackOptions | 远端订阅的流回退处理选项,详见枚举类型 SubscribeFallbackOptions 。 |
返回值
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.setRemoteUserPriority(
String uid,
RemoteUserPriority priority)
设置用户优先级。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | String | 远端用户的 ID 。 |
| priority | RemoteUserPriority | 远端用户的优先级,详见枚举类型 RemoteUserPriority 。 |
返回值
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.registerMetadataObserver(
IMetadataObserver observer)
注册 metadata 观察者,用于接收或发送 metadata,底层通过在视频帧中添加 SEI 数据实现该功能。
注册观察者后,发送的视频帧里面没有 SEI 信息, 会触发 onReadyToSendMetadata 回调。
注册观察者后,接收的视频帧里面有 SEI 信息,会触发接收 onMetadataReceived 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | IMetadataObserver | metadata 观察者,详见:IMetadataObserver |
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.setBusinessId(
String businessId)
设置业务标识参数。
可通过 businessId 区分不同的业务场景(角色/策略等)。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| businessId | String | 用户设置的自己的 businessId 值。businessId 相当于一个 sub AppId,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。 businessId 只是一个标签,颗粒度需要用户自定义。 |
返回值
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.SetAudioPerfProfile(
AudioPerfProfile profile)
设置音频处理复杂度。对于希望性能占用较低,可设置较低的音频处理复杂度,如果更在意通话质量,可选择设置更高的音频处理复杂度。 加入房间时,会携带本接口传入的机型等级,然后从服务端拉起相应音频配置。如果传入的是 auto,服务端会查询数据库,获得机型等级,再下发配置。 不同复杂度会开关AEC、ANS、AGC算法,调整播放sample rate等, 进行性能和质量的控制。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| profile | AudioPerfProfile | 机型等级, 详见枚举类 AudioPerfProfile |
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.setEncryptInfo(
int aesType,
String key)
设置AES加密算法和加密密钥
有四种内置的加密算法,为 AES-128-CBC,AES-256-CBC,AES-128-ECB,AES-256-ECB
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| aesType | int | 加密类型 可选参数为1、2、3、4 代表的含义如下: 1. AES-128-CBC 2. AES-256-CBC 3. AES-128-ECB 4. AES-256-ECB |
| key | String | 加密密钥 长度限制为36位,超出部分将会被截断 |
注意
public abstract void com.ss.video.rtc.engine.RtcEngine.setCustomizeEncryptHandler(
ByteRtcEngineEncryptHandler handler)
设置自定义加密方法
自定义加密方法需要实现对应的加密/解密方法
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handler | ByteRtcEngineEncryptHandler | 自定义加密handler,需要实现里面的加密和解密方法 |
注意
public abstract int com.ss.video.rtc.engine.RtcEngine.checkVideoEffectLicense(
Context context,
String licenseFile)
视频特效许可证检查
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| context | Context | Android Context对象 |
| licenseFile | String | 许可证文件绝对路径 |
返回值
0: 许可证验证成功 !0: 许可证验证验证失败
注意
调用enableVideoEffect开始使用视频特效前,需要先调用这个方法进行许可证验证
public abstract void com.ss.video.rtc.engine.RtcEngine.setVideoEffectAlgoModelPath(
String modelPath)
设置视频特效算法模型路径
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| modelPath | String | 模型路径 |
public abstract int com.ss.video.rtc.engine.RtcEngine.enableVideoEffect(
boolean enable)
开启关闭视频特效
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | boolean | 是否开启特效,true: 开启,false: 关闭 |
返回值
0: 成功 !0: 失败。
注意
在调用checkVideoEffectLicense和setVideoEffectAlgoModelPath后调用此方法。
public abstract void com.ss.video.rtc.engine.RtcEngine.setVideoEffectPath(
List<String> effectPaths)
设置视频Effect资源路径,可以一次设置多种资源
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effectPaths | List |
视频Effect资源路径列表 |
public abstract void com.ss.video.rtc.engine.RtcEngine.addVideoEffectPath(
List<String> effectPaths)
增加特效包,支持同时增加多个特效包
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effectPaths | List |
要追加的特效包路径数组 |
public abstract void com.ss.video.rtc.engine.RtcEngine.removeVideoEffectPath(
List<String> effectPaths)
移除特效包,支持同时移除多个特效包
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effectPaths | List |
要移除的特效包路径数组 |
public abstract void com.ss.video.rtc.engine.RtcEngine.updateVideoEffect(
String effectPath,
String key,
float value)
设置特效强度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effectPath | String | 特效包路径 |
| key | String | 需要设置的键名称 |
| value | float | 要设置的强度值。取值范围[0,1] ,超出范围时设置无效 |
注意
key 的取值请参考特效包的参数说明文件
public abstract void com.ss.video.rtc.engine.RtcEngine.setVideoEffectColorFilter(
String resFile)
设置颜色滤镜
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| resFile | String | 滤镜资源包绝对路径 |
public abstract void com.ss.video.rtc.engine.RtcEngine.setVideoEffectColorFilterIntensity(
float intensity)
设置颜色滤镜强度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| intensity | float | 滤镜强度。取值范围[0,1] ,超出范围时设置无效 |
public abstract void com.ss.video.rtc.engine.RtcEngine.startCloudRendering(
String effectInfo)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effectInfo | String | 云端渲染的参数 |
public abstract void com.ss.video.rtc.engine.RtcEngine.updateCloudRendering(
String effectInfo)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effectInfo | String | 云端渲染的参数 |
public abstract void com.ss.video.rtc.engine.RtcEngine.stopCloudRendering()
public abstract void com.ss.video.rtc.engine.RtcEngine.SetRuntimeParameters(
JSONObject params)
public class com.ss.video.rtc.engine.utils.ByteAudioFrame
音频帧数据封装
| 类型 | 名称 |
|---|---|
| byte[] | samples |
| int | numOfSamples |
| int | bytesPerSample |
| int | channels |
| int | samplesPerSec |
public byte[] com.ss.video.rtc.engine.utils.ByteAudioFrame.samples;
音频pcm数据
public int com.ss.video.rtc.engine.utils.ByteAudioFrame.numOfSamples;
音频数据的采样点个数
public int com.ss.video.rtc.engine.utils.ByteAudioFrame.bytesPerSample;
音频数据的每个采样点的字节数(位深)
public int com.ss.video.rtc.engine.utils.ByteAudioFrame.channels;
音频数据的采样通道数
public int com.ss.video.rtc.engine.utils.ByteAudioFrame.samplesPerSec;
音频数据的采样率
public class com.ss.video.rtc.engine.VideoCanvas
SDK的渲染画布,可以通过 setupLocalVideo setupRemoteVideo 给SDK设置渲染View
| 类型 | 名称 |
|---|---|
| int | BYTERTC_RENDER_HIDDEN |
| int | BYTERTC_RENDER_FIT |
| int | BYTERTC_RENDER_ADAPTIVE |
| View | renderView |
| int | renderMode |
| String | roomId |
| String | uid |
| boolean | isScreen |
public static final int com.ss.video.rtc.engine.VideoCanvas.BYTERTC_RENDER_HIDDEN = 1;
SDK渲染模式,HIDDEN模式(图像等比放大,充满屏幕,多余部分会裁剪)
public static final int com.ss.video.rtc.engine.VideoCanvas.BYTERTC_RENDER_FIT = 2;
SDK渲染模式,FIT模式(图像保持比例,会在画布中完全显示,画布多余部分会显示黑边)
public static final int com.ss.video.rtc.engine.VideoCanvas.BYTERTC_RENDER_ADAPTIVE = 3;
已经废弃,SDK不支持,设置后图像会变形
public View com.ss.video.rtc.engine.VideoCanvas.renderView;
需要渲染的View
public int com.ss.video.rtc.engine.VideoCanvas.renderMode;
SDK渲染模式
public String com.ss.video.rtc.engine.VideoCanvas.roomId;
房间ID
public String com.ss.video.rtc.engine.VideoCanvas.uid;
用户ID
public boolean com.ss.video.rtc.engine.VideoCanvas.isScreen;
是否是屏幕流
public class com.ss.video.rtc.engine.mediaio.RtcVideoFrame
视频帧
| 类型 | 名称 |
|---|---|
| ByteBuffer | buffer |
| ByteBuffer | extend_data |
| ByteBuffer | supplementary_info |
| int | buffer_type |
| int | format |
| int | stride |
| int | height |
| int | rotation |
| long | timestamp |
| int | cropLeft |
| int | cropTop |
| int | cropRight |
| int | cropBottom |
| EGLContext | eglContext11 |
| android.opengl.EGLContext | eglContext14 |
| int | glTarget |
| int | textureId |
| float[] | transform |
| 返回 | 名称 |
|---|---|
| RtcVideoFrame | RtcVideoFrame |
public ByteBuffer com.ss.video.rtc.engine.mediaio.RtcVideoFrame.buffer;
视频数据缓冲区
public ByteBuffer com.ss.video.rtc.engine.mediaio.RtcVideoFrame.extend_data;
视频扩展数据
public ByteBuffer com.ss.video.rtc.engine.mediaio.RtcVideoFrame.supplementary_info;
补充数据
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.buffer_type;
缓冲区类型
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.format;
视频帧数据格式
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.stride;
视频帧数据跨距
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.height;
视频帧分辨率高度
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.rotation;
旋转角度
public long com.ss.video.rtc.engine.mediaio.RtcVideoFrame.timestamp;
视频帧时间戳, 单位纳秒
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.cropLeft = 0;
指定左边裁剪掉的像素数量。默认为 0
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.cropTop = 0;
指定顶边裁剪掉的像素数量。默认为 0
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.cropRight = 0;
指定右边裁剪掉的像素数量。默认为 0
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.cropBottom = 0;
指定底边裁剪掉的像素数量。默认为 0
public EGLContext com.ss.video.rtc.engine.mediaio.RtcVideoFrame.eglContext11 = null;
EGL Context
public android.opengl.EGLContext com.ss.video.rtc.engine.mediaio.RtcVideoFrame.eglContext14 = null;
EGL上下文
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.glTarget;
public int com.ss.video.rtc.engine.mediaio.RtcVideoFrame.textureId;
视频帧使用纹理的Id
public float[] com.ss.video.rtc.engine.mediaio.RtcVideoFrame.transform = null;
传入一个 4x4 的变换矩阵,典型值是传入一个单位矩阵
public com.ss.video.rtc.engine.mediaio.RtcVideoFrame.RtcVideoFrame(
int textureId,
@PixelFormat int format,
float[] transform_matrix,
@Nullable ByteBuffer extend_data,
@Nullable ByteBuffer supplementary_info,
int width,
int height,
int rotation,
long timestamp,
@Nullable Runnable releaseCallback)
构造函数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| textureId | int | OpenGL纹理ID |
| format | @PixelFormat int | Opengl纹理格式 2D/OES |
| transform_matrix | float[] | 纹理矩阵 |
| extend_data | @Nullable ByteBuffer | 扩展数据缓冲区 |
| supplementary_info | @Nullable ByteBuffer | 补充数据缓冲区 |
| width | int | 视频帧分辨率宽 |
| height | int | 视频分辨率高度 |
| rotation | int | 视频帧旋转角度 |
| timestamp | long | 视频帧时间戳 |
| releaseCallback | @Nullable Runnable | 视频帧释放回调 |
public class com.ss.video.rtc.engine.VideoStreamDescription
视频信息描述
| 类型 | 名称 |
|---|---|
| Integer> | videoSize |
| int | frameRate |
| int | maxKbps |
| ScaleMode | scaleMode |
| EncoderPreference | encodePreference |
public Pair<Integer, Integer> com.ss.video.rtc.engine.VideoStreamDescription.videoSize;
视频大小
public int com.ss.video.rtc.engine.VideoStreamDescription.frameRate;
视频帧率
public int com.ss.video.rtc.engine.VideoStreamDescription.maxKbps;
最大码率
public ScaleMode com.ss.video.rtc.engine.VideoStreamDescription.scaleMode = ScaleMode.Auto;
缩放策略,默认是拉伸
public EncoderPreference com.ss.video.rtc.engine.VideoStreamDescription.encodePreference = EncoderPreference.MaintainFramerate;
编码策略偏好