Copyright (c) 2026 Tencent. All rights reserved.
Module: TRTCCloud @ TXLiteAVSDK
Function: 腾讯云 TRTC 主功能接口
Version: 13.5
腾讯云 TRTC 主功能接口,Flutter SDK:
tencent_rtc_sdk。通过 TRTCCloud.sharedInstance() 获取单例后即可调用全部接口。函数列表
实例与事件回调
API | 描述 |
创建 TRTCCloud 实例(单例模式)。 | |
销毁 TRTCCloud 实例(单例模式)。 | |
添加 TRTC 事件回调。 | |
移除 TRTC 事件回调。 |
房间相关接口
API | 描述 |
进入房间。 | |
离开房间。 | |
切换角色。 | |
切换房间。 | |
请求跨房通话。 | |
退出跨房通话。 | |
设置订阅模式(需要在进房前设置才能生效)。 |
CDN 发布与混流
API | 描述 |
开始发布媒体流。 | |
更新发布媒体流。 | |
停止发布媒体流。 |
视频相关接口
API | 描述 |
开启本地摄像头的预览画面。 | |
更新本地摄像头的预览画面。 | |
停止摄像头预览。 | |
暂停/恢复发布本地的视频流。 | |
订阅远端用户的视频流,并绑定视频渲染控件。 | |
更新远端用户的视频渲染控件。 | |
停止订阅远端用户的视频流,并释放渲染控件。 | |
停止订阅所有远端用户的视频流,并释放全部渲染资源。 | |
设置本地画面被暂停期间的替代图片(暂不支持 Windows / macOS)。 | |
添加水印(暂不支持 Windows / macOS)。 | |
暂停/恢复订阅远端用户的视频流。 | |
暂停/恢复订阅所有远端用户的视频流。 | |
设置视频编码器的编码参数。 | |
设置编码器输出的画面镜像模式。 | |
设置网络质量控制的相关参数。 | |
设置本地画面的渲染参数。 | |
设置远端画面的渲染模式。 | |
开启大小画面双路编码模式。 | |
切换指定远端用户的大小画面。 | |
视频画面截图(暂不支持 Windows / macOS)。 | |
设置重力感应的适配模式(仅移动端)。 |
音频相关接口
API | 描述 |
开启本地音频的采集和发布。 | |
停止本地音频的采集和发布。 | |
暂停/恢复发布本地的音频流。 | |
暂停/恢复播放远端的音频流。 | |
暂停/恢复播放所有远端用户的音频流。 | |
设定某一个远端用户的声音播放音量。 | |
设定本地音频的采集音量。 | |
获取本地音频的采集音量。 | |
设定远端音频的播放音量。 | |
获取远端音频的播放音量。 | |
启用音量大小提示。 | |
开启本地媒体录制。 | |
停止本地媒体录制。 |
设备、美颜与音效
API | 描述 |
获取设备管理类(TXDeviceManager)。 | |
设置美颜、美白、红润等特效。 | |
获取音效管理类(TXAudioEffectManager)。 | |
开启系统声音采集(仅 Windows)。 | |
停止系统声音采集(仅 Windows)。 | |
设置系统声音的采集音量(仅 Windows)。 |
屏幕分享
API | 描述 |
启动屏幕分享。 | |
通过 ReplayKit 启动屏幕分享(仅 iOS)。 | |
停止屏幕分享。 | |
暂停屏幕分享。 | |
恢复屏幕分享。 | |
枚举可分享的屏幕和窗口(仅桌面系统)。 | |
选取要分享的屏幕或窗口(仅桌面系统)。 | |
将指定窗口加入屏幕分享的排除列表(仅桌面系统)。 | |
将指定窗口从排除列表移除(仅桌面系统)。 | |
将所有窗口从排除列表移除(仅桌面系统)。 | |
将指定窗口加入屏幕分享的包含列表(仅桌面系统)。 | |
将指定窗口从包含列表移除(仅桌面系统)。 | |
将全部窗口从包含列表移除(仅桌面系统)。 | |
设置屏幕分享(即辅路)的视频编码参数。 |
自定义采集与自定义消息
API | 描述 |
启用音频自定义采集模式。 | |
向 SDK 投送自己采集的音频数据。 | |
设置音频数据回调。 | |
使用 UDP 通道发送自定义消息给房间内所有用户。 | |
使用 SEI 通道发送自定义消息给房间内所有用户。 |
网络测试
API | 描述 |
开始进行网速测试(进房前使用)。 | |
停止网络测速。 |
调试相关接口
API | 描述 |
获取 SDK 版本信息。 | |
设置 Log 输出级别。 | |
启用/禁用控制台日志打印。 | |
启用/禁用日志的本地压缩。 | |
设置本地日志的保存路径。 | |
设置日志回调。 | |
显示仪表盘。 | |
调用实验性接口。 |
AI 能力
API | 描述 |
获取 AI 转录管理类(AITranscriberManager)。 |
接口详情
以下按函数列表顺序逐一说明各接口的签名、功能、参数、返回值及注意事项。
sharedInstance
static Future<TRTCCloud> sharedInstance()
创建 TRTCCloud 实例(单例模式)。
返回值
Future<TRTCCloud>,异步返回 TRTCCloud 单例对象。示例代码
TRTCCloud trtcCloud = await TRTCCloud.sharedInstance();
destroySharedInstance
static void destroySharedInstance()
销毁 TRTCCloud 实例(单例模式)。
registerListener
void registerListener(TRTCCloudListener func)
添加 TRTC 事件回调。
您可以通过
TRTCCloudListener 获得来自 SDK 的各类事件通知(例如:错误码、警告码、音视频状态参数等)。参数 | 类型 | 描述 |
func | TRTCCloudListener | 事件回调对象,详见 TRTCCloudListener。 |
unRegisterListener
void unRegisterListener(TRTCCloudListener func)
移除 TRTC 事件回调。
参数 | 类型 | 描述 |
func | TRTCCloudListener | 要移除的事件回调对象。 |
enterRoom
void enterRoom(TRTCParams param, TRTCAppScene scene)
进入房间。
TRTC 的所有用户都需要进入房间才能“发布”或“订阅”音视频流,“发布”是指将自己的音频和视频推送到云端,“订阅”是指从云端拉取房间里其他用户的音视频流。
调用该接口后,您会收到来自
TRTCCloudListener 中的 onEnterRoom 回调:如果进房成功,参数
result 会是一个正数(result > 0),表示从函数调用到进入房间所花费的时间,单位是毫秒(ms)。如果进房失败,参数
result 会是一个负数(result < 0),表示进房失败的错误码。参数 | 类型 | 描述 |
param | ||
scene |
说明:
1. 当您指定参数
scene 为 TRTCAppScene.live 或 TRTCAppScene.voiceChatRoom 时,您必须通过 TRTCParams 中的 role 字段为当前用户设定他/她在房间中的角色。2. 无论进房是否成功,
enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 之前再次调用 enterRoom 会导致意外的错误。示例代码
TRTCCloud trtcCloud = await TRTCCloud.sharedInstance();TRTCParams params = TRTCParams(sdkAppId: 1400000123,userId: 'denny',userSig: 'xxxxxxx',roomId: 123321,role: TRTCRoleType.anchor,);trtcCloud.enterRoom(params, TRTCAppScene.live);
exitRoom
void exitRoom()
离开房间。
调用该接口会让用户离开自己所在的音视频房间,并释放摄像头、麦克风、扬声器等设备资源。
等资源释放完毕之后,SDK 会通过
TRTCCloudListener 中的 onExitRoom 回调向您通知。如果您要再次调用
enterRoom 或者切换到其他供应商的 SDK,建议等待 onExitRoom 回调到来之后再执行之后的操作,以避免摄像头或麦克风被占用的问题。switchRole
void switchRole(TRTCRoleType role)
切换角色。
调用本接口可以实现用户在“主播”和“观众”两种角色之间来回切换。
由于视频直播和语音聊天室需要支持多达 10 万名观众同时观看,所以设定了“只有主播才能发布自己的音视频”的规则。因此,当有些观众希望发布自己的音视频流(以便能跟主播互动)时,就需要先把自己的角色切换成“主播”。
参数 | 类型 | 描述 |
role | 角色,默认为 TRTCRoleType.anchor。TRTCRoleType.anchor:主播,可以发布自己的音视频,同一个房间里最多支持 50 个主播同时发布音视频。TRTCRoleType.audience:观众,不能发布自己的音视频流,只能观看房间中其他主播的音视频。如果要发布自己的音视频,需要先通过 switchRole 切换成“主播”,同一个房间内同时最多可以容纳 10 万名观众。 |
说明:
1. 该接口仅适用于视频直播(
TRTCAppScene.live)和语音聊天室(TRTCAppScene.voiceChatRoom)这两个场景。2. 如果您在调用
enterRoom 时指定的 scene 为 TRTCAppScene.videoCall 或 TRTCAppScene.audioCall,请不要调用这个接口。switchRoom
void switchRoom(TRTCSwitchRoomConfig config)
切换房间。
使用该接口可以让用户快速从一个房间切换到另一个房间。
如果用户的身份是“观众”,该接口的调用效果等同于
exitRoom(当前房间)+ enterRoom(新的房间)。如果用户的身份是“主播”,该接口在切换房间的同时还会保持自己的音视频发布状态,因此在房间切换过程中,摄像头的预览和声音的采集都不会中断。
该接口适用于在线教育场景中,监课老师在多个房间中进行快速切换的场景。在该场景下使用
switchRoom 可以获得比 exitRoom + enterRoom 更好的流畅性和更少的代码量。接口调用结果会通过
TRTCCloudListener 中的 onSwitchRoom 回调。参数 | 类型 | 描述 |
config |
说明:
由于对老版本 SDK 兼容的需求,参数
config 中同时包含 roomId 与 strRoomId 两个参数,这两个参数的填写格外讲究,请注意如下事项:1. 若您选用
strRoomId,则 roomId 需要填写为 0。若两者都填,将优先选用 roomId。2. 所有房间需要同时使用
strRoomId 或同时使用 roomId,不可混用,否则将会出现很多预期之外的 bug。connectOtherRoom
void connectOtherRoom(String param)
请求跨房通话。
在 TRTC 中,两个不同房间中的主播可以通过“跨房通话”功能进行跨房间的连麦,他们无需退出自己的房间即可进行“连麦 PK”。
例如:当房间“001”中的主播 A 通过
connectOtherRoom 成功呼叫房间“002”中的主播 B 之后,房间“001”中的所有用户都会收到主播 B 的 onRemoteUserEnterRoom(B) 和 onUserVideoAvailable(B, true) 回调,房间“002”中的所有用户都会收到主播 A 的 onRemoteUserEnterRoom(A) 和 onUserVideoAvailable(A, true) 回调。简而言之,跨房通话的本质是:把两个不同房间中的主播的音视频流分享出去,让每个房间中的观众都能看到这两个主播。
考虑到后续扩展字段的兼容性问题,跨房通话的参数暂时采用了 JSON 格式的字符串参数,且至少需要包含如下两个字段:
roomId:如果房间“001”中的主播 A 要跟房间“002”中的主播 B 连麦,那么主播 A 调用 connectOtherRoom 时 roomId 需要填 002。userId:如果房间“001”中的主播 A 要跟房间“002”中的主播 B 连麦,那么主播 A 调用 connectOtherRoom 时 userId 需要填主播 B 的 userId。跨房通话的请求结果会通过
TRTCCloudListener 中的 onConnectOtherRoom 回调通知给您。参数 | 类型 | 描述 |
param | String | 需要您传入 JSON 格式的字符串参数: roomId(int):数字格式的房间号。strRoomId(String):字符串格式的房间号。userId(String):目标主播的用户 ID。 |
示例代码
import 'dart:convert';Map<String, dynamic> object = {'roomId': 155,'userId': '57890',};trtcCloud.connectOtherRoom(jsonEncode(object));
disconnectOtherRoom
void disconnectOtherRoom()
退出跨房通话。
退出结果会通过
TRTCCloudListener 中的 onDisconnectOtherRoom 回调通知给您。setDefaultStreamRecvMode
void setDefaultStreamRecvMode(bool autoRecvAudio, bool autoRecvVideo)
设置订阅模式(需要在进房前设置才能生效)。
您可以通过该接口在“自动订阅”和“手动订阅”两种模式下进行切换:
自动订阅:默认模式,用户在进入房间后会立刻接收到该房间中的音视频流,音频会自动播放,视频会自动开始解码(依然需要您通过
startRemoteView 接口绑定渲染控件)。手动订阅:在用户进入房间后,需要手动调用
startRemoteView 接口才能启动视频流的订阅和解码,需要手动调用 muteRemoteAudio(false) 接口才能启动声音的播放。在绝大多数场景下,用户进入房间后都会订阅房间中所有主播的音视频流,因此 TRTC 默认采用了自动订阅模式,以求得最佳的“秒开体验”。
如果您的应用场景中每个房间同时会有很多路音视频流在发布,而每个用户只想选择性地订阅其中的 1-2 路,则推荐使用“手动订阅”模式以节省流量费用。
参数 | 类型 | 描述 |
autoRecvAudio | bool | true:自动订阅音频;false:需手动调用 muteRemoteAudio(false) 订阅音频。默认值: true。 |
autoRecvVideo | bool | true:自动订阅视频;false:需手动调用 startRemoteView 订阅视频。默认值: true。 |
说明:
1. 该配置只有在进房(
enterRoom)之前调用才会生效。2. 在自动订阅模式下,如果用户在进入房间后没有调用
startRemoteView 订阅视频流,SDK 会自动停止订阅视频流,以便达到节省流量的目的。startPublishMediaStream
void startPublishMediaStream(TRTCPublishTarget target,TRTCStreamEncoderParam param, TRTCStreamMixingConfig config)
开始发布媒体流。
该接口会向 TRTC 服务器发送指令,要求其将当前用户的音视频流转推(转码或不转码)到直播 CDN,或者转码后回推到 TRTC 房间中。您可以通过 TRTCPublishTarget 中的 TRTCPublishMode 指定具体的发布模式。
参数 | 类型 | 描述 |
target | ||
param | ||
config | 云端混流(On-Cloud MixTranscoding)配置参数,详见 TRTCStreamMixingConfig。转推模式下该参数无效;转码发布到 CDN 或回推到 TRTC 房间时为必填项。 |
说明:
1. SDK 会通过
TRTCCloudListener 中的 onStartPublishMediaStream 回调带给您后台启动的任务标识(即 taskId)。2. 同一个发布任务仅支持启动一次,不能发起两个使用相同发布模式和相同 CDN 发布地址的发布任务。请记录返回的 taskId,后续需要传给
updatePublishMediaStream 修改发布参数或 stopPublishMediaStream 停止任务。3.
target 中最多可以同时指定 10 个 CDN URL。即使同一个转码任务有多个转推地址,对应的转码计费仍只收取一份。4. 为避免引起错误,请不要让不同的发布任务同时使用相同的 URL 地址。推荐在 URL 中加入 “sdkappid_roomid_userid_main” 作为区分标识,以避免在您的多个应用中发生冲突。
updatePublishMediaStream
void updatePublishMediaStream(String taskId, TRTCPublishTarget target,TRTCStreamEncoderParam param, TRTCStreamMixingConfig config)
更新发布媒体流。
您可以通过该接口修改由
startPublishMediaStream 发起的发布任务的参数。参数 | 类型 | 描述 |
taskId | String | 通过 TRTCCloudListener 中的 onStartPublishMediaStream 回调带给您后台启动的任务标识。 |
target | ||
param | ||
config |
说明:
1. 您可以通过本接口来增删发布的 CDN URL(最多同时 10 个),但请勿让多个任务同时往相同的 URL 地址推送。
2. 您可以通过本接口在转推任务和转码任务之间切换。例如在跨房连麦场景中,您可以先通过
startPublishMediaStream 发起转推,当主播发起连麦时,传入 taskId 调用本接口将转推任务切换为转码任务。这样可以保证直播流和 CDN 播放不中断(您需要保持编码参数一致)。3. 同一个任务不支持“纯音频”、“纯视频”、“音视频”之间的切换。
stopPublishMediaStream
void stopPublishMediaStream(String taskId)
停止发布媒体流。
您可以通过该接口停止由
startPublishMediaStream 发起的发布任务。参数 | 类型 | 描述 |
taskId | String | 通过 TRTCCloudListener 中的 onStartPublishMediaStream 回调带给您后台启动的任务标识。 |
说明:
1. 若您的业务后台并没有保存该
taskId,在您的主播异常退房重进后,您可以再次调用 startPublishMediaStream 启动任务。此时发布会失败,但 TRTC 后台会返回上一次启动的 taskId 给您。2. 若
taskId 填空字符串,将会停止该用户所有通过 startPublishMediaStream 启动的媒体流。如果您只启动了一个任务或者想停止所有任务,推荐使用这种方式。startLocalPreview
void startLocalPreview(bool frontCamera, int? viewId)
开启本地摄像头的预览画面。
在
enterRoom 之前调用此函数,SDK 只会开启摄像头,并一直等到您调用 enterRoom 之后才开始推流。在
enterRoom 之后调用此函数,SDK 会开启摄像头并自动开始视频推流。当开始渲染首帧摄像头画面时,您会收到
TRTCCloudListener 中的 onCameraDidReady 回调通知。参数 | 类型 | 描述 |
frontCamera | bool | true:前置摄像头;false:后置摄像头。仅在移动设备上生效。 |
viewId | int? | 承载视频画面的渲染控件 ID。 |
说明:
如果希望开播前预览摄像头画面并调节美颜参数,您可以:
方案一:在调用
enterRoom 之前调用 startLocalPreview。方案二:在调用
enterRoom 之后调用 startLocalPreview + muteLocalVideo(true)。updateLocalView
void updateLocalView(int? viewId)
更新本地摄像头的预览画面。
参数 | 类型 | 描述 |
viewId | int? | 新的承载视频画面的渲染控件 ID。 |
stopLocalPreview
void stopLocalPreview()
停止摄像头预览。
muteLocalVideo
void muteLocalVideo(TRTCVideoStreamType streamType, bool mute)
暂停/恢复发布本地的视频流。
该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己的画面。
该接口在指定
TRTCVideoStreamType.big 时等效于 startLocalPreview + stopLocalPreview 这两个接口,但具有更好的响应速度。因为 startLocalPreview / stopLocalPreview 需要打开和关闭摄像头,属于硬件设备相关的操作,非常耗时;而 muteLocalVideo 只需要在软件层面对数据流进行暂停或者放行,因此效率更高,也更适合需要频繁开关的场景。暂停发布本地视频后,同一房间中的其他成员会收到
onUserVideoAvailable(userId, false) 回调通知。恢复发布本地视频后,同一房间中的其他成员会收到
onUserVideoAvailable(userId, true) 回调通知。参数 | 类型 | 描述 |
streamType | 要暂停/恢复的视频流类型,仅支持 TRTCVideoStreamType.big 和 TRTCVideoStreamType.sub。 | |
mute | bool | true:暂停;false:恢复。 |
startRemoteView
void startRemoteView(String userId, TRTCVideoStreamType streamType, int? viewId)
订阅远端用户的视频流,并绑定视频渲染控件。
调用该接口可以让 SDK 拉取指定
userId 的视频流,并渲染到 viewId 指定的渲染控件上。您可以通过 setRemoteRenderParams 设置画面的显示模式。如果您已经知道房间中有视频流的用户的
userId,可以直接调用 startRemoteView 订阅该用户的画面。如果您不知道房间中有哪些用户在发布视频,您可以在
enterRoom 之后等待来自 onUserVideoAvailable 的通知。调用本接口只是启动视频流的拉取,此时画面还需要加载和缓冲,当缓冲完毕后您会收到来自
onFirstVideoFrame 的通知。参数 | 类型 | 描述 |
userId | String | 指定远端用户的 ID。 |
streamType | 指定要观看 userId 的视频流类型:高清大画面: TRTCVideoStreamType.big;低清小画面: TRTCVideoStreamType.small(需要远端用户通过 enableSmallVideoStream 开启双路编码后才有效果);辅路画面(常用于屏幕分享): TRTCVideoStreamType.sub。 | |
viewId | int? | 承载视频画面的渲染控件 ID。 |
说明:
1. SDK 支持同时观看某
userId 的大画面和辅路画面,或者同时观看小画面和辅路画面,但不支持同时观看大画面和小画面。2. 只有当指定的
userId 通过 enableSmallVideoStream 开启双路编码后,才能观看该用户的小画面。3. 当指定的
userId 的小画面不存在时,SDK 默认切换到该用户的大画面。updateRemoteView
void updateRemoteView(String userId, TRTCVideoStreamType streamType, int? viewId)
更新远端用户的视频渲染控件。
该接口可用于更新远端视频画面的渲染控件,常被用于切换显示区域的交互场景中。
参数 | 类型 | 描述 |
userId | String | 指定远端用户的 ID。 |
streamType | 要设置预览窗口的流类型(仅支持 TRTCVideoStreamType.big 和 TRTCVideoStreamType.sub)。 | |
viewId | int? | 承载视频画面的渲染控件 ID。 |
stopRemoteView
void stopRemoteView(String userId, TRTCVideoStreamType streamType)
停止订阅远端用户的视频流,并释放渲染控件。
调用此接口会让 SDK 停止接收该用户的视频流,并释放该路视频流的解码和渲染资源。
参数 | 类型 | 描述 |
userId | String | 指定远端用户的 ID。 |
streamType | 要停止订阅的视频流类型: 高清大画面: TRTCVideoStreamType.big;低清小画面: TRTCVideoStreamType.small;辅路画面(常用于屏幕分享): TRTCVideoStreamType.sub。 |
stopAllRemoteView
void stopAllRemoteView()
停止订阅所有远端用户的视频流,并释放全部渲染资源。
调用此接口会让 SDK 停止接收所有来自远端的视频流,并释放全部的解码和渲染资源。
说明:
如果当前有正在显示的辅路画面(屏幕分享)也会一并被停止。
setVideoMuteImage
void setVideoMuteImage(String imagePath, int fps)
设置本地画面被暂停期间的替代图片(暂不支持 Windows / macOS)。
当本地视频流被暂停时(例如通过
muteLocalVideo 暂停),SDK 会显示指定的图片,而不是保留最后一帧视频画面。参数 | 类型 | 描述 |
imagePath | String | 图片文件路径,支持 JPG、PNG 格式。示例路径: Android: /storage/emulated/0/Android/data/com.tencent.rtc.flutter.example/files/image.jpgiOS: /Library/Caches/image.jpg |
fps | int | 替代图片的显示帧率(帧/秒)。 |
setWatermark
void setWatermark(String imagePath, TRTCVideoStreamType streamType,double x, double y, double width)
添加水印(暂不支持 Windows / macOS)。
该接口会为本地视频流添加水印。水印默认显示在视频画面的左上角,您可以通过参数调整其位置和大小。
参数 | 类型 | 描述 |
imagePath | String | 水印图片文件路径,支持 JPG、PNG 格式。示例路径: Android: /storage/emulated/0/Android/data/com.tencent.rtc.flutter.example/files/watermark.pngiOS: /Library/Caches/watermark.png |
streamType | 要添加水印的视频流类型( TRTCVideoStreamType.big 或 TRTCVideoStreamType.sub)。 | |
x | double | 水印左上角的 X 坐标,归一化取值,范围为 0.0 - 1.0。 |
y | double | 水印左上角的 Y 坐标,归一化取值,范围为 0.0 - 1.0。 |
width | double | 水印的宽度,归一化取值,范围为 0.0 - 1.0。 |
muteRemoteVideoStream
void muteRemoteVideoStream(String userId, TRTCVideoStreamType streamType, bool mute)
暂停/恢复订阅远端用户的视频流。
该接口仅暂停/恢复接收指定用户的视频流,但并不释放显示资源,视频画面会被冻屏在接口调用时的最后一帧。
参数 | 类型 | 描述 |
userId | String | 指定远端用户的 ID。 |
streamType | 要暂停/恢复的视频流类型: 高清大画面: TRTCVideoStreamType.big;低清小画面: TRTCVideoStreamType.small;辅路画面(常用于屏幕分享): TRTCVideoStreamType.sub。 | |
mute | bool | 是否暂停接收。 |
说明:
1. 该接口支持您在进房(
enterRoom)前调用,暂停状态在退房(exitRoom)之后会被重置。2. 调用该接口暂停接收指定用户的视频流后,只调用
startRemoteView 接口无法播放该用户的视频,需要调用 muteRemoteVideoStream(false) 或 muteAllRemoteVideoStreams(false) 才能恢复。muteAllRemoteVideoStreams
void muteAllRemoteVideoStreams(bool mute)
暂停/恢复订阅所有远端用户的视频流。
该接口仅暂停/恢复接收所有用户的视频流,但并不释放显示资源,视频画面会被冻屏在接口调用时的最后一帧。
参数 | 类型 | 描述 |
mute | bool | 是否暂停接收。 |
说明:
1. 该接口支持您在进房(
enterRoom)前调用,暂停状态在退房(exitRoom)之后会被重置。2. 调用该接口暂停接收所有用户的视频流后,只调用
startRemoteView 接口无法播放指定用户的视频,需要调用 muteRemoteVideoStream(false) 或 muteAllRemoteVideoStreams(false) 才能恢复。setVideoEncoderParam
void setVideoEncoderParam(TRTCVideoEncParam params)
设置视频编码器的编码参数。
该设置能够决定远端用户看到的画面质量,同时也能决定云端录制出的视频文件的画面质量。
参数 | 类型 | 描述 |
params |
setVideoEncoderMirror
void setVideoEncoderMirror(bool enable)
设置编码器输出的画面镜像模式。
参数 | 类型 | 描述 |
enable | bool | 是否开启画面镜像模式,默认值: false。 |
setNetworkQosParam
void setNetworkQosParam(TRTCNetworkQosParam params)
设置网络质量控制的相关参数。
该设置决定在差网络环境下的质量调控策略,如“画质优先”或“流畅优先”等策略。
参数 | 类型 | 描述 |
params |
setLocalRenderParams
void setLocalRenderParams(TRTCRenderParams params)
设置本地画面的渲染参数。
可设置的参数包括有:画面的旋转角度、填充模式以及左右镜像等。
参数 | 类型 | 描述 |
params |
setRemoteRenderParams
void setRemoteRenderParams(String userId, TRTCVideoStreamType streamType,TRTCRenderParams params)
设置远端画面的渲染模式。
可设置的参数包括有:画面的旋转角度、填充模式以及左右镜像等。
参数 | 类型 | 描述 |
userId | String | 指定远端用户的 ID。 |
streamType | 可以设置为 TRTCVideoStreamType.big(主路画面)或 TRTCVideoStreamType.sub(辅路画面)。 | |
params |
enableSmallVideoStream
int enableSmallVideoStream(bool enable, TRTCVideoEncParam smallVideoEncParam)
开启大小画面双路编码模式。
开启双路编码模式后,当前用户的编码器会同时输出【高清大画面】和【低清小画面】两路视频流(但只有一路音频流)。
如此一来,房间中的其他用户就可以根据自身的网络情况或屏幕大小选择订阅【高清大画面】或是【低清小画面】。
参数 | 类型 | 描述 |
enable | bool | 是否开启小画面编码,默认值: false。 |
smallVideoEncParam |
说明:
双路编码开启后,会消耗更多的 CPU 和网络带宽,所以 macOS、Windows 或者高性能 Pad 可以考虑开启,不建议手机端开启。
返回值
0:成功;
-1:当前大画面已被设置为较低画质,开启双路编码已无必要。
setRemoteVideoStreamType
void setRemoteVideoStreamType(String userId, TRTCVideoStreamType streamType)
切换指定远端用户的大小画面。
当房间中某个主播开启了双路编码之后,房间中其他用户通过
startRemoteView 订阅到的画面默认会是【高清大画面】。您可以通过此接口选定希望订阅的画面是大画面还是小画面,该接口在
startRemoteView 之前和之后调用均可生效。参数 | 类型 | 描述 |
userId | String | 指定远端用户的 ID。 |
streamType | 视频流类型,即选择看大画面还是小画面,默认为 TRTCVideoStreamType.big。 |
说明:
此功能需要目标用户已经通过
enableSmallVideoStream 提前开启了双路编码模式,否则此调用无实际效果。snapshotVideo
void snapshotVideo(String userId, TRTCVideoStreamType streamType,TRTCSnapshotSourceType sourceType, {String? path})
视频画面截图(暂不支持 Windows / macOS)。
您可以通过本接口截取本地的视频画面,远端用户的主路画面以及远端用户的辅路(屏幕分享)画面。
截图结果会通过
TRTCCloudListener 中的 onSnapshotComplete(userId, path, errCode, errMsg) 回调通知给您。参数 | 类型 | 描述 |
userId | String | 用户 ID。为空表示截取本地的视频画面。 |
streamType | 视频流类型,可选择截取主路画面( TRTCVideoStreamType.big,常用于摄像头)或辅路画面(TRTCVideoStreamType.sub,常用于屏幕分享)。 | |
sourceType | 画面来源,可选择截取视频流画面( TRTCSnapshotSourceType.stream,一般清晰度更高)、视频渲染画面(TRTCSnapshotSourceType.view)或采集画面(TRTCSnapshotSourceType.capture,采集画面截图更清晰)。 | |
path | String? | 截图文件的保存路径,可选命名参数。 |
setGravitySensorAdaptiveMode
void setGravitySensorAdaptiveMode(TRTCGSensorMode mode)
设置重力感应的适配模式(仅移动端)。
开启重力感应后,如果采集端的设备发生旋转,采集端和观众端的画面都会进行相应地渲染,以确保视野中的画面始终朝上。
该接口只在 SDK 内部摄像头采集场景生效。
参数 | 类型 | 描述 |
mode | 重力感应模式,默认值: TRTCGSensorMode.uiAutoLayout。 |
说明:
1. 该接口仅对采集端起作用,如果只是观看房间中的画面,开启此接口是无效的。
2. 当采集端设备发生 90 度或 270 度旋转时,采集端或者观众看到的画面可能会被裁剪以保持比例的协调。
startLocalAudio
void startLocalAudio(TRTCAudioQuality quality)
开启本地音频的采集和发布。
SDK 默认不开启麦克风,当用户需要发布本地音频时,需要调用该接口开启麦克风采集,并将音频编码并发布到当前的房间中。
开启本地音频的采集和发布后,房间中的其他用户会收到
onUserAudioAvailable(userId, true) 的通知。参数 | 类型 | 描述 |
quality | 声音音质: TRTCAudioQuality.speech:流畅,采样率 16 kHz;单声道;音频码率 16 Kbps。适合语音通话场景,例如在线会议、语音通话。TRTCAudioQuality.defaultMode:默认,采样率 48 kHz;单声道;音频码率 50 Kbps。SDK 默认的音频质量,如无特殊需求推荐选择之。TRTCAudioQuality.music:高音质,采样率 48 kHz;双声道 + 全频带;音频码率 128 Kbps。适合需要高保真传输音乐的场景,例如在线 K 歌、音乐直播等。 |
说明:
该函数会检查麦克风的使用权限,如果当前 App 没有麦克风权限,SDK 会自动向用户申请麦克风使用权限。
stopLocalAudio
void stopLocalAudio()
停止本地音频的采集和发布。
停止本地音频的采集和发布后,房间中的其他用户会收到
onUserAudioAvailable(userId, false) 的通知。muteLocalAudio
void muteLocalAudio(bool mute)
暂停/恢复发布本地的音频流。
当您暂停发布本地音频流之后,房间中的其他用户会收到
onUserAudioAvailable(userId, false) 的通知。当您恢复发布本地音频流之后,房间中的其他用户会收到
onUserAudioAvailable(userId, true) 的通知。与
stopLocalAudio 的不同之处在于,muteLocalAudio(true) 并不会释放麦克风权限,而是继续发送码率极低的静音包。这对于需要云端录制的场景非常适用,因为 MP4 等格式的视频文件对于音频数据的连续性要求很高,使用
stopLocalAudio 会导致录制出的 MP4 文件不易播放。因此在对录制文件的质量要求较高的场景中,建议使用 muteLocalAudio。参数 | 类型 | 描述 |
mute | bool | true:静音;false:恢复。 |
muteRemoteAudio
void muteRemoteAudio(String userId, bool mute)
暂停/恢复播放远端的音频流。
当您静音某用户的远端音频时,SDK 会停止播放指定用户的声音,同时也会停止拉取该用户的音频数据。
参数 | 类型 | 描述 |
userId | String | 用于指定远端用户的 ID。 |
mute | bool | true:静音;false:取消静音。 |
说明:
在进入房间(
enterRoom)之前或之后调用本接口均生效,静音状态在退出房间(exitRoom)之后会被重置为 false。muteAllRemoteAudio
void muteAllRemoteAudio(bool mute)
暂停/恢复播放所有远端用户的音频流。
当您静音所有用户的远端音频时,SDK 会停止播放所有来自远端的音频流,同时也会停止拉取所有用户的音频数据。
参数 | 类型 | 描述 |
mute | bool | true:静音;false:取消静音。 |
说明:
在进入房间(
enterRoom)之前或之后调用本接口均生效,静音状态在退出房间(exitRoom)之后会被重置为 false。setRemoteAudioVolume
void setRemoteAudioVolume(String userId, int volume)
设定某一个远端用户的声音播放音量。
您可以通过
setRemoteAudioVolume(userId, 0) 将某一个远端用户的声音静音。参数 | 类型 | 描述 |
userId | String | 用于指定远端用户的 ID。 |
volume | int | 音量大小,100 为原始音量。取值范围:[0, 150],默认值:100。 |
说明:
如果将
volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但可能会有副作用。setAudioCaptureVolume
void setAudioCaptureVolume(int volume)
设定本地音频的采集音量。
参数 | 类型 | 描述 |
volume | int | 音量大小,100 为原始音量。取值范围:[0, 150],默认值:100。 |
说明:
如果将
volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但可能会有副作用。getAudioCaptureVolume
int getAudioCaptureVolume()
获取本地音频的采集音量。
返回值
采集音量。
setAudioPlayoutVolume
void setAudioPlayoutVolume(int volume)
设定远端音频的播放音量。
该接口会控制 SDK 最终交给系统播放的声音音量,调节效果会影响到本地音频录制文件的音量大小,但不会影响到耳返的音量大小。
参数 | 类型 | 描述 |
volume | int | 音量大小,100 为原始音量。取值范围:[0, 150],默认值:100。 |
说明:
如果将
volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但可能会有副作用。getAudioPlayoutVolume
int getAudioPlayoutVolume()
获取远端音频的播放音量。
返回值
播放音量。
enableAudioVolumeEvaluation
void enableAudioVolumeEvaluation(bool enable, TRTCAudioVolumeEvaluateParams params)
启用音量大小提示。
开启此功能后,SDK 会在
TRTCCloudListener 中的 onUserVoiceVolume 回调中反馈本地推流用户和远端用户的音量评估信息。参数 | 类型 | 描述 |
enable | bool | 是否启用音量提示,默认为关闭状态。 |
params |
说明:
如需启用音量大小提示,请在调用
startLocalAudio 之前调用该接口。startLocalRecording
int startLocalRecording(TRTCLocalRecordingParams param)
开启本地媒体录制。
开启后把直播过程中的音视频内容录制到本地的一个文件中。
参数 | 类型 | 描述 |
param |
返回值
接口调用结果,由 Native SDK 返回。
stopLocalRecording
void stopLocalRecording()
停止本地媒体录制。
如果录制任务在退出房间前尚未通过本接口停止,则退出房间后录制任务会自动被停止。
getDeviceManager
TXDeviceManager getDeviceManager()
获取设备管理类(TXDeviceManager)。
通过设备管理,您可以设置摄像头、麦克风和扬声器等音视频相关的硬件设备功能。
返回值
设备管理类
TXDeviceManager。setBeautyStyle
void setBeautyStyle(TRTCBeautyStyle style, int beautyLevel,int whitenessLevel, int ruddinessLevel)
设置美颜、美白、红润等特效。
SDK 内置了两种不同风格的磨皮算法:
“光滑(smooth)”风格:算法比较激进,效果更明显,适合秀场直播。
“自然(nature)”风格:保留更多面部细节,效果更自然,适合大多数直播场景。
参数 | 类型 | 描述 |
style | ||
beautyLevel | int | 美颜强度,取值范围:0 - 9;0 表示关闭,值越大效果越明显。 |
whitenessLevel | int | 美白强度,取值范围:0 - 9;0 表示关闭,值越大效果越明显。 |
ruddinessLevel | int | 红润强度,取值范围:0 - 9;0 表示关闭,值越大效果越明显。 |
getAudioEffectManager
TXAudioEffectManager getAudioEffectManager()
获取音效管理类(TXAudioEffectManager)。
TXAudioEffectManager 是音效管理接口,您可以通过该接口实现如下功能:背景音乐:支持在线音乐和本地音乐,支持变速、变调等特效,支持原声和伴奏并播放和循环播放。
耳机耳返:麦克风捕捉的声音实时通过耳机播放,常用于音乐直播。
混响效果:KTV、小房间、大会堂、低沉、洪亮等。
变声特效:萝莉、大叔、重金属等。
短音效:鼓掌声、欢笑声等简短的音效文件(对于小于 10 秒的文件,请将
isShortFile 参数设置为 true)。返回值
音效管理类
TXAudioEffectManager。startSystemAudioLoopback
void startSystemAudioLoopback({String? deviceName})
开启系统声音采集(仅 Windows)。
该接口会从电脑的声卡中采集音频数据,并将其混入到 SDK 当前的音频数据流中,从而使房间中的其他用户也能听到主播的电脑所播放出的声音。
在线教育场景中,老师可以使用此功能让 SDK 采集教学影片中的声音,并广播给同房间中的学生。
音乐直播场景中,主播可以使用此功能让 SDK 采集音乐播放器中的音乐,从而为自己的直播间增加背景音乐。
参数 | 类型 | 描述 |
deviceName | String? | 可选命名参数。如果该参数为空,则采集整个系统的声音。 |
说明:
在 Windows 平台下,您可以将参数
deviceName 设置为某个应用程序的可执行文件(如 QQMusic.exe)的绝对路径,此时 SDK 只会采集该应用程序的声音(32 位版本的 SDK 支持;64 位版本的 SDK 需要 Windows 版本为 10.0.19042 或更高版本)。您也可以指定该参数为某个扬声器设备的名称来采集特定扬声器声音(可通过
TXDeviceManager 中的 getDevicesList 接口获取类型为 TXMediaDeviceType.speaker 的扬声器设备)。在 Windows 平台下,您也可以指定该参数为某个进程的进程 ID(格式为 “process_xxx”,其中 xxx 为进程 ID),此时 SDK 会只采集该进程的声音(需要 Windows 版本为 10.0.19042 或更高版本)。
在 Windows 平台下,您也可以指定该参数为需要排除的某个进程的进程 ID(格式为 “exclude_process_xxx”,其中 xxx 为进程 ID),此时 SDK 会采集除该进程之外的其他所有声音(需要 Windows 版本为 10.0.19042 或更高版本)。
stopSystemAudioLoopback
void stopSystemAudioLoopback()
停止系统声音采集(仅 Windows)。
setSystemAudioLoopbackVolume
void setSystemAudioLoopbackVolume(int volume)
设置系统声音的采集音量(仅 Windows)。
参数 | 类型 | 描述 |
volume | int | 设置的音量大小,取值范围:[0, 150],默认值:100。 |
startScreenCapture
void startScreenCapture(int? viewId, TRTCVideoStreamType streamType,TRTCVideoEncParam encParam)
启动屏幕分享。
该接口可以抓取整个屏幕的内容,或抓取您指定的某个应用的窗口内容,并将其分享给同房间中的其他用户。
iOS 平台调用该接口仅支持应用内分享,如需分享整个系统屏幕,请使用
startScreenCaptureByReplaykit。参数 | 类型 | 描述 |
viewId | int? | 渲染控件所在的父控件 ID,可以设置为 0,表示不显示屏幕分享的预览效果(目前仅 Android 支持本地预览)。 |
streamType | 屏幕分享使用的线路,可以设置为主路( TRTCVideoStreamType.big)或者辅路(TRTCVideoStreamType.sub)。 | |
encParam | 屏幕分享的画面编码参数,可以设置为空,表示让 SDK 选择最佳的编码参数(如分辨率和码率)。 |
说明:
1. 同一个用户同时最多只能发布一路主路(
TRTCVideoStreamType.big)画面和一路辅路(TRTCVideoStreamType.sub)画面。2. 默认情况下,屏幕分享使用辅路画面。如果使用主路做屏幕分享,您需要提前通过
stopLocalPreview 停止摄像头采集,以避免相互冲突。3. 同一个房间中同时只能有一个用户使用辅路做屏幕分享,也就是说,同一个房间中同时只允许一个用户开启辅路。
4. 当房间中已经有其他用户在使用辅路分享屏幕时,此时调用该接口会收到来自
TRTCCloudListener 的 onError(ERR_SERVER_CENTER_ANOTHER_USER_PUSH_SUB_VIDEO)回调。startScreenCaptureByReplaykit
void startScreenCaptureByReplaykit(TRTCVideoStreamType streamType,TRTCVideoEncParam encParam, String? appGroup)
通过 ReplayKit 启动屏幕分享(仅 iOS)。
该接口支持您分享整个 iOS 系统的屏幕。
参数 | 类型 | 描述 |
streamType | 屏幕分享使用的线路,可以设置为主路( TRTCVideoStreamType.big)或者辅路(TRTCVideoStreamType.sub)。 | |
encParam | 屏幕分享的画面编码参数,可以设置为空,表示让 SDK 选择最佳的编码参数(如分辨率和码率)。 | |
appGroup | String? | 您的 App 与录屏进程共享的 Application Group Identifier。可以指定为 null,但建议您按照文档进行设置以获得更好的可靠性。 |
stopScreenCapture
void stopScreenCapture()
停止屏幕分享。
pauseScreenCapture
void pauseScreenCapture()
暂停屏幕分享。
resumeScreenCapture
void resumeScreenCapture()
恢复屏幕分享。
getScreenCaptureSources
TRTCScreenCaptureSourceList? getScreenCaptureSources(TRTCSize thumbnail, TRTCSize icon)
枚举可分享的屏幕和窗口(仅桌面系统)。
当您在对接桌面端系统的屏幕分享功能时,一般都需要展示一个选择分享目标的界面,这样用户能够使用这个界面选择是分享整个屏幕还是某个窗口。
通过本接口,您就可以查询到当前系统中可用于分享的窗口的 ID、名称以及缩略图。我们在 Demo 中提供了一份默认的界面实现供您参考。
返回值
窗口列表(包括屏幕)。Android / iOS 平台不支持该接口,返回
null。selectScreenCaptureTarget
void selectScreenCaptureTarget(TRTCScreenCaptureSourceInfo source,TRTCRect rect, TRTCScreenCaptureProperty property)
选取要分享的屏幕或窗口(仅桌面系统)。
当您通过
getScreenCaptureSources 获取到可以分享的屏幕和窗口之后,您可以调用该接口选定期望分享的目标屏幕或目标窗口。在屏幕分享的过程中,您也可以随时调用该接口以切换分享目标。支持如下四种情况:
共享整个屏幕:
source 中 type 为 Screen 的 source,rect 设为 {0, 0, 0, 0}。共享指定区域:
source 中 type 为 Screen 的 source,rect 设为非空值,例如 {100, 100, 300, 300}。共享整个窗口:
source 中 type 为 Window 的 source,rect 设为 {0, 0, 0, 0}。共享窗口区域:
source 中 type 为 Window 的 source,rect 设为非空值,例如 {100, 100, 300, 300}。参数 | 类型 | 描述 |
source | ||
rect | 指定捕获的区域。 | |
property |
说明:
设置高亮边框颜色、宽度参数在 macOS 平台不生效。
addExcludedShareWindow
void addExcludedShareWindow(int windowID)
将指定窗口加入屏幕分享的排除列表中(仅桌面系统)。
加入排除列表中的窗口不会被分享出去,常见的用法是将某个应用的窗口加入到排除列表中以避免隐私问题。
支持启动屏幕分享前设置过滤窗口,也支持屏幕分享过程中动态添加过滤窗口。
参数 | 类型 | 描述 |
windowID | int | 不希望分享出去的窗口(macOS 为窗口 ID,Windows 为 HWND)。 |
说明:
1. 该接口只有在 TRTCScreenCaptureSourceInfo 中的
type 指定为屏幕类型时才生效,即只有在分享整个屏幕内容时,排除指定窗口的功能才生效。2. 使用该接口添加到排除列表中的窗口会在退出房间后被 SDK 自动清除。
3. macOS 平台下请传入窗口 ID(即 CGWindowID),您可以通过 TRTCScreenCaptureSourceInfo 中的
sourceId 成员获得。removeExcludedShareWindow
void removeExcludedShareWindow(int windowID)
将指定窗口从屏幕分享的排除列表中移除(仅桌面系统)。
参数 | 类型 | 描述 |
windowID | int | 要移除的窗口 ID。 |
removeAllExcludedShareWindow
void removeAllExcludedShareWindow()
将所有窗口从屏幕分享的排除列表中移除(仅桌面系统)。
addIncludedShareWindow
void addIncludedShareWindow(int windowID)
将指定窗口加入屏幕分享的包含列表中(仅桌面系统)。
该接口只有在 TRTCScreenCaptureSourceInfo 中的
type 指定为窗口类型时才生效,即只有在分享窗口内容时,额外包含指定窗口的功能才生效。您可以在 startScreenCapture 之前和之后调用。参数 | 类型 | 描述 |
windowID | int | 希望被分享出去的窗口(Windows 平台下为窗口句柄 HWND)。 |
说明:
通过该方法添加到包含列表中的窗口,会在退出房间后被 SDK 自动清除。
removeIncludedShareWindow
void removeIncludedShareWindow(int windowID)
将指定窗口从屏幕分享的包含列表中移除(仅桌面系统)。
参数 | 类型 | 描述 |
windowID | int | 要移除的窗口(macOS 为窗口 ID,Windows 为 HWND)。 |
removeAllIncludedShareWindow
void removeAllIncludedShareWindow()
将全部窗口从屏幕分享的包含列表中移除(仅桌面系统)。
setSubStreamEncoderParam
void setSubStreamEncoderParam(TRTCVideoEncParam param)
设置屏幕分享(即辅路)的视频编码参数(桌面系统和移动系统均已支持)。
该接口可以设定远端用户所看到的屏幕分享(即辅路)的画面质量,同时也能决定云端录制出的视频文件中屏幕分享的画面质量。
请注意如下两个接口的差异:
setVideoEncoderParam:用于设置主路画面(TRTCVideoStreamType.big,一般用于摄像头)的视频编码参数。setSubStreamEncoderParam:用于设置辅路画面(TRTCVideoStreamType.sub,一般用于屏幕分享)的视频编码参数。参数 | 类型 | 描述 |
param |
enableCustomAudioCapture
void enableCustomAudioCapture(bool enable)
启用音频自定义采集模式。
开启该模式后,SDK 不再运行原有的音频采集流程,即不再继续从麦克风采集音频数据,而是只保留音频编码和发送能力。您需要通过
sendCustomAudioData 不断地向 SDK 塞入自己采集的音频数据。参数 | 类型 | 描述 |
enable | bool | 是否启用,默认值: false。 |
说明:
由于回声抵消(AEC)需要严格控制声音采集和播放的时间,所以开启自定义音频采集后,AEC 能力可能会失效。
sendCustomAudioData
void sendCustomAudioData(TRTCAudioFrame frame)
向 SDK 投送自己采集的音频数据。
audioFormat:音频数据格式,仅支持
TRTCAudioFrameFormat.pcm。data:音频帧 buffer。音频帧数据必须为 PCM 格式,支持 5 - 100 ms 帧长(推荐 20 ms)。长度计算方法:例如采样率为 48000,单声道的帧长度为
48000 × 0.02s × 1 × 16bit = 15360bit = 1920 字节。sampleRate:采样率,有效取值:16000、24000、32000、44100、48000。
channel:声道数(如果是立体声,数据是交叉的),有效取值:1(单声道)、2(双声道)。
timestamp:时间戳,单位为毫秒(ms)。
参数 | 类型 | 描述 |
frame |
说明:
请您精准地按每帧时长的间隔调用本接口,数据投送间隔不均匀时极易触发声音卡顿。
setAudioFrameCallback
int setAudioFrameCallback(TRTCAudioFrameCallback? callback)
设置音频数据回调。
设置该回调之后,SDK 内部会把音频数据(PCM 格式)回调出来。将 callback 设置为
null 即代表停止回调,设置为非 null 则代表启动回调。参数 | 类型 | 描述 |
callback | TRTCAudioFrameCallback? | 音频帧回调对象,传 null 表示停止回调。 |
返回值
0:设置成功。sendCustomCmdMsg
bool sendCustomCmdMsg(int cmdID, String data, bool reliable, bool ordered)
使用 UDP 通道发送自定义消息给房间内所有用户。
该接口可以让您借助 TRTC 的 UDP 通道,向当前房间里的其他用户广播自定义数据,以达到传输信令的目的。房间中的其他用户可以通过
TRTCCloudListener 中的 onRecvCustomCmdMsg 回调接收消息。参数 | 类型 | 描述 |
cmdID | int | 消息 ID,取值范围:[1, 10]。 |
data | String | 待发送的消息,单个消息的最大长度被限制为 1 KB。 |
reliable | bool | 是否可靠发送。可靠发送可以获得更高的发送成功率,但会带来比不可靠发送更大的接收延迟。 |
ordered | bool | 是否要求有序,即是否要求接收端的数据包顺序和发送端的数据包顺序一致(这会带来一定的接收延时)。 |
说明:
1. 发送消息到房间内所有用户(暂时不支持 Web/小程序端),每秒最多能发送 30 条消息。
2. 每个包最大为 1 KB,超过则很有可能会被中间路由器或者服务器丢弃。
3. 每个客户端每秒最多能发送总计 8 KB 数据。
4. 请将
reliable 和 ordered 同时设置为 true 或同时设置为 false,暂不支持交叉设置。5. 强烈建议您将不同类型的消息设定为不同的
cmdID,这样可以在要求有序的情况下减小消息时延。6. 目前仅支持主播身份。
返回值
true:消息已经发出;false:消息发送失败。sendSEIMsg
bool sendSEIMsg(String data, int repeatCount)
使用 SEI 通道发送自定义消息给房间内所有用户。
视频帧的头部有一个叫做 SEI 的头部数据块,该接口的原理就是利用这个被称为 SEI 的头部数据块,将您要发送的自定义信令嵌入其中,使其同视频帧一并发送出去。
因此,与
sendCustomCmdMsg 相比,SEI 通道传输的信令具有更好的兼容性:信令可以伴随着视频帧一直传输到直播 CDN 上。不过,由于视频帧头部的数据块不能太大,建议您使用该接口时,尽量将信令控制在几个字节的大小。最常见的用法是把自定义的时间戳用本接口嵌入视频帧中,实现消息和画面的完美对齐(例如:教育场景下的课件和视频信号的对齐)。房间中的其他用户可以通过
TRTCCloudListener 中的 onRecvSEIMsg 回调接收消息。参数 | 类型 | 描述 |
data | String | 待发送的数据,最大支持 1 KB(1000 字节)。 |
repeatCount | int | 数据发送次数。 |
说明:
1. 数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始与视频帧一起发送。
2. 发送消息到房间内所有用户,每秒最多能发送 30 条消息(与
sendCustomCmdMsg 共享限制)。3. 每个包最大为 1 KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与
sendCustomCmdMsg 共享限制)。4. 每个客户端每秒最多能发送总计 8 KB 数据(与
sendCustomCmdMsg 共享限制)。5. 如果需要多次发送(即
repeatCount > 1),数据会被连续插入后续的 repeatCount 个视频帧中发送,这会增加视频码率。6. 如果
repeatCount 大于 1,数据会被发送多次,在 onRecvSEIMsg 回调中可能会收到重复的消息,因此需要去重。返回值
true:消息被允许,并将随后续视频帧发送;false:消息被禁止发送。startSpeedTest
int startSpeedTest(TRTCSpeedTestParams params)
开始进行网速测试(进房前使用)。
参数 | 类型 | 描述 |
params | 测速选项。 |
说明:
1. 测速过程会产生少量基础服务费用。
2. 请在进房前进行网速测试,因为进房后测试会影响正常的音视频传输,并且由于房间内的干扰,结果也会不准确。
3. 同一时间只允许运行一个测速任务。
返回值
接口调用结果,
< 0:失败。stopSpeedTest
void stopSpeedTest()
停止网络测速。
getSDKVersion
String getSDKVersion()
获取 SDK 版本信息。
返回值
SDK 版本号字符串。
setLogLevel
void setLogLevel(TRTCLogLevel level)
设置 Log 输出级别。
参数 | 类型 | 描述 |
level | 日志级别,默认值: TRTCLogLevel.none。 |
setConsoleEnabled
void setConsoleEnabled(bool enabled)
启用/禁用控制台日志打印。
参数 | 类型 | 描述 |
enabled | bool | 指定是否启用控制台日志打印,默认为禁用。 |
setLogCompressEnabled
void setLogCompressEnabled(bool enabled)
启用/禁用日志的本地压缩。
如果启用压缩,日志体积会显著减小,但需要腾讯云提供的 Python 脚本解压后才能阅读。
如果禁用压缩,日志将以明文存储,可以直接用记事本打开阅读,但会占用更多存储空间。
参数 | 类型 | 描述 |
enabled | bool | 指定是否启用日志压缩,默认为启用。 |
setLogDirPath
void setLogDirPath(String path)
设置本地日志的保存路径。
您可以通过该接口修改 SDK 本地日志的默认存储路径,默认路径如下:
Windows:
C:/Users/[username]/AppData/Roaming/liteav/log,即 %appdata%/liteav/log。iOS 或 macOS:沙盒的
Documents/log 目录下。Android:
/app 目录/files/log/liteav/ 目录下。参数 | 类型 | 描述 |
path | String | 日志存储路径。 |
说明:
请务必在所有其他接口之前调用该接口,并确保您指定的目录存在且您的应用对该目录具有读写权限。
setLogCallback
void setLogCallback(TRTCLogCallback? callback)
设置日志回调。
参数 | 类型 | 描述 |
callback | TRTCLogCallback? | 日志回调对象,传 null 表示取消回调。 |
showDebugView
void showDebugView(int showType)
显示仪表盘。
“仪表盘”是位于视频渲染控件之上的一个半透明的调试信息浮层,用于展示音视频信息和事件信息,方便集成和调试。
参数 | 类型 | 描述 |
showType | int | 0:不显示;1:显示精简版(仅音视频信息);2:显示完整版(音视频信息和事件信息)。 |
callExperimentalAPI
String callExperimentalAPI(String jsonStr)
调用实验性接口。
参数 | 类型 | 描述 |
jsonStr | String | JSON 格式的实验性接口调用参数。 |
返回值
接口调用结果字符串。
getAITranscriberManager
AITranscriberManager getAITranscriberManager()
获取 AI 转录管理类(AITranscriberManager)。
该接口返回
AITranscriberManager 单例,用于管理实时转录和翻译功能。使用 AI 转录之前:
1. 请在控制台 > 功能配置 > 增值功能中,开启 AI 智能识别功能(语音转文字、实时翻译)。
2. 详见 相关文档。
返回值
AITranscriberManager 单例对象。