Constructor
new TRTCCloud(configopt)
Example
// 创建/使用/销毁 TRTCCloud 对象的示例代码:
import TRTCCloud from 'trtc-electron-sdk';
const rtcCloud = TRTCCloud.getTRTCShareInstance();
// 获取 SDK 版本号
const version = rtcCloud.getSDKVersion();
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
config |
TRTCInitConfig |
初始化参数,可选 Properties
|
Methods
(static) getTRTCShareInstance(configopt) → {TRTCCloud}
创建 TRTCCloud 主实例对象(单例模式)
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
config |
TRTCInitConfig |
初始化参数,可选 Properties
|
Returns:
- Type
- TRTCCloud
(static) destroyTRTCShareInstance()
销毁 TRTCCloud 主实例对象(单例模式)
注释:会同时销毁所有子实例
createSubCloud() → {TRTCCloud}
创建子实例
注意:只有主实例才能创建子实例,子实例不能创建子实例
Example
import TRTCCloud from 'trtc-electron-sdk';
const rtcCloud = TRTCCloud.getTRTCShareInstance();
rtcCloud.startLocalAudio(); // 主实例开启麦克风采集
const childRtcCloud = rtcCloud.createSubCloud();
childRtcCloud.startSystemAudioLoopback(); // 子实例开启系统音采集
Returns:
- Type
- TRTCCloud
getConfigObject() → {TRTCConfig}
获取 TRTC 配置对象
可以通过 TRTC 配置对象 TRTCConfig
打开 debug 模式
Example
// Enable 'debug' mode
import TRTCCloud from 'trtc-electron-sdk';
const rtcCloud = TRTCCloud.getTRTCShareInstance();
rtcCloud.getConfigObject().setDebugMode(true);
Returns:
- Type
- TRTCConfig
destroy()
销毁当前实例,释放资源
enterRoom(params, scene)
进入房间
调用接口后,您会收到来自 TRTCCallback 中的 onEnterRoom(result)
回调:
- 如果加入成功,result 会是一个正数(result > 0),表示加入房间的时间消耗,单位是毫秒(ms)。
- 如果加入失败,result 会是一个负数(result < 0),表示进房失败的错误码。
进房失败的错误码含义请参见错误码。
参数 scene 的枚举值如下:
TRTCAppSceneVideoCall
:
视频通话场景,支持720P、1080P高清画质,单个房间最多支持300人同时在线,最高支持50人同时发言。
适合:[1对1视频通话]、[300人视频会议]、[在线问诊]、[视频聊天]、[远程面试]等。TRTCAppSceneAudioCall
:
语音通话场景,支持 48kHz,支持双声道。单个房间最多支持300人同时在线,最高支持50人同时发言。
适合:[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等。TRTCAppSceneLIVE
:
视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。
适合:[视频低延时直播]、[十万人互动课堂]、[视频直播 PK]、[视频相亲房]、[互动课堂]、[远程培训]、[超大型会议]等。TRTCAppSceneVoiceChatRoom
:
语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。
适合:[语音低延时直播]、[语音直播连麦]、[语聊房]、[K 歌房]、[FM 电台]等。
注意:
- 当 scene 选择为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom 时,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。
- 不管进房是否成功,enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 前再次调用 enterRoom 函数会导致不可预期的错误问题。
Parameters:
Name | Type | Description | |||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCParams |
required
进房参数 Properties
|
|||||||||||||||||||||||||||||||||
scene |
TRTCAppScene |
required
应用场景,目前支持视频通话(VideoCall)、在线直播(Live)、语音通话(AudioCall)、语音聊天室(VoiceChatRoom)四种场景。 |
exitRoom()
退出房间
调用 exitRoom() 接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源。 待资源释放完毕,SDK 会通过 TRTCCallback 中的 onExitRoom() 回调通知您。
如果您要再次调用 enterRoom() 或者切换到其它的音视频 SDK,请等待 onExitRoom() 回调到来后再执行相关操作, 否则可能会遇到如摄像头、麦克风设备被强占等各种异常问题。
switchRoom(params)
切换房间
调用该接口后,用户会先退出原来的房间并快速进入 TRTCSwitchRoomParam 中指定的新房间: 相比于直接调用 exitRoom + enterRoom 的方式,switchRoom 接口对主播更加友好,因为 switchRoom 不会停止主播端视频的采集和预览。
Parameters:
Name | Type | Description |
---|---|---|
params |
TRTCSwitchRoomParam |
required
房间切换参数,请参考 接口调用结果会通过 onSwitchRoom(errCode, errMsg) 事件回调通知给您。 |
switchRole(role)
切换角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom)
在直播场景下,一个用户可能需要在“观众”和“主播”之间来回切换。 您可以在进房前通过 TRTCParams 中的 role 字段确定角色,也可以通过 switchRole 在进房后切换角色。
Parameters:
Name | Type | Description |
---|---|---|
role |
TRTCRoleType |
required
目标角色,默认为主播
|
connectOtherRoom(params)
请求跨房连麦(主播跨房 PK)
TRTC 中两个不同音视频房间中的主播,可以通过“跨房连麦”功能拉通连麦通话功能。使用此功能时, 两个主播无需退出各自原来的直播间即可进行“连麦 PK”。
例如:当房间“001”中的主播 A 通过 connectOtherRoom() 跟房间“002”中的主播 B 拉通跨房连麦后, 房间“001”中的用户都会收到主播 B 的 onUserEnter(B) 回调和 onUserVideoAvailable(B,true) 回调。 房间“002”中的用户都会收到主播 A 的 onUserEnter(A) 回调和 onUserVideoAvailable(A,true) 回调。
简言之,跨房连麦的本质,就是把两个不同房间中的主播相互分享,让每个房间里的观众都能看到两个主播。
房间 001 房间 002 ------------- ------------ 跨房连麦前: | 主播 A | | 主播 B | | 观众 U V W | | 观众 X Y Z | ------------- ------------ 房间 001 房间 002 ------------- ------------ 跨房连麦后: | 主播 A B | | 主播 B A | | 观众 U V W | | 观众 X Y Z | ------------- ------------
考虑到后续扩展字段的兼容性问题,跨房连麦的参数暂时采用了 JSON 格式的字符串,要求至少包含两个字段:
- roomId:房间“001”中的主播 A 要跟房间“002”中的主播 B 连麦,主播 A 调用 connectOtherRoom() 时 roomId 应指定为“002”。
- userId:房间“001”中的主播 A 要跟房间“002”中的主播 B 连麦,主播 A 调用 connectOtherRoom() 时 userId 应指定为 B 的 userId。
跨房连麦的请求结果会通过 TRTCCallback 中的 onConnectOtherRoom 回调通知给您。
Example
let json = JSON.stringify({roomId: 2, userId: "userB"});
rtcCloud.connectOtherRoom(json);
Parameters:
Name | Type | Description |
---|---|---|
params |
String |
required
JSON 字符串连麦参数,roomId 代表目标房间号,userId 代表目标用户 ID。 |
disconnectOtherRoom()
关闭跨房连麦(主播跨房 PK)
跨房连麦的退出结果会通过 TRTCCallback 中的 onDisconnectOtherRoom 回调通知给您。
setDefaultStreamRecvMode(autoRecvAudio, autoRecvVideo)
设置音视频数据接收模式(需要在进房前设置才能生效)
为实现进房秒开的绝佳体验,SDK 默认进房后自动接收音视频。即在您进房成功的同时,您将立刻收到远端所有用户的音视频数据。 若您没有调用 startRemoteView,视频数据将自动超时取消。 若您主要用于语音聊天等没有自动接收视频数据需求的场景,您可以根据实际需求选择接收模式。
注意:需要在进房前设置才能生效。
Parameters:
Name | Type | Description |
---|---|---|
autoRecvAudio |
Boolean |
required
true:自动接收音频数据;false:需要调用 |
autoRecvVideo |
Boolean |
required
true:自动接收视频数据;false:需要调用 |
startPublishMediaStream(target, params, config)
开始发布媒体流
该接口会向 TRTC 服务器发送指令,要求其将当前用户的音视频流转推/转码到直播 CDN 或者回推到 TRTC 房间中,您可以通过 TRTCPublishTarget
配置中的 TRTCPublishMode
指定具体的发布模式。
注意:
- SDK 会通过回调
onStartPublishMediaStream
带给您后台启动的任务标识(即 taskId)。 - 同一个任务(TRTCPublishMode 与 TRTCPublishCdnUrl 均相同)仅支持启动一次。若您后续需要更新或者停止该项任务,需要记录并使用返回的 taskId,通过
updatePublishMediaStream
或者stopPublishMediaStream
来操作。 - target 支持同时配置多个 CDN URL(最多同时 10 个)。若您的同一个转推/转码任务需要发布至多路 CDN,则仅需要在 target 中配置多个 CDN URL 即可。同一个转码任务即使有多个转推地址,对应的转码计费仍只收取一份。
- 使用时需要注意不要多个任务同时往相同的 URL 地址推送,以免引起异常推流状态。一种推荐的方案是 URL 中使用 “sdkappid_roomid_userid_main” 作为区分标识,这种命名方式容易辨认且不会在您的多个应用中发生冲突。
Examples
// Publish big stream(camera video) to CDN
import TRTCCloud, { TRTCPublishMode } from 'trtc-electron-sdk';
const trtcCloud = TRTCCloud.getTRTCShareInstance();
let cdnTaskId = '';
trtcCloud.on('onStartPublishMediaStream', (taskId: string, code: number, message: string) => {
if (code === 0) {
cdnTaskId = taskId;
} else {
console.log('startPublishMediaStream error:', code, message);
}
});
trtc.startPublishMediaStream({
mode: TRTCPublishMode.TRTCPublishBigStreamToCdn,
cdnUrlList: [{
rtmpUrl: 'rtmp://<Your RTMP URL>',
isInternalLine: true
}],
mixStreamIdentity: null
}, null, null);
// Publish sub stream(screen sharing video) to CDN
import TRTCCloud, { TRTCPublishMode } from 'trtc-electron-sdk';
const trtcCloud = TRTCCloud.getTRTCShareInstance();
let cdnTaskId = '';
trtcCloud.on('onStartPublishMediaStream', (taskId: string, code: number, message: string) => {
if (code === 0) {
cdnTaskId = taskId;
} else {
console.log('startPublishMediaStream error:', code, message);
}
});
trtc.startPublishMediaStream({
mode: TRTCPublishMode.TRTCPublishSubStreamToCdn,
cdnUrlList: [{
rtmpUrl: 'rtmp://<Your RTMP URL>',
isInternalLine: true
}],
mixStreamIdentity: null
}, null, null);
// Publish and mixing multi-user video and audio to CDN
import TRTCCloud, { TRTCPublishMode } from 'trtc-electron-sdk';
const trtcCloud = TRTCCloud.getTRTCShareInstance();
let cdnTaskId = '';
trtcCloud.on('onStartPublishMediaStream', (taskId: string, code: number, message: string) => {
if (code === 0) {
cdnTaskId = taskId;
} else {
console.log('startPublishMediaStream error:', code, message);
}
});
trtc.startPublishMediaStream(
{
mode: TRTCPublishMode.TRTCPublishMixStreamToCdn,
cdnUrlList: [{
rtmpUrl: 'rtmp://<Your RTMP URL>',
isInternalLine: true
}],
mixStreamIdentity: null
},
{
audioEncodedChannelNum: 2,
audioEncodedCodecType: 0,
audioEncodedKbps: 128,
audioEncodedSampleRate: 48000,
videoEncodedCodecType: 0,
videoEncodedFPS: 30,
videoEncodedGOP: 1,
videoEncodedWidth: 1280,
videoEncodedHeight: 720,
videoEncodedKbps: 2000,
videoSeiParams: "",
},
{
"backgroundColor": 14362921,
"backgroundImage": "",
"videoLayoutList": [
{
"rect": { "top": 0, "left": 0, "right": 960, "bottom": 540 },
"zOrder": 1,
"fillMode": 0,
"backgroundColor": 14483711,
"placeHolderImage": "",
"fixedVideoUser": { "userId": "windev", "intRoomId": 5055005, "strRoomId": "" },
"fixedVideoStreamType": 0
},
{
"rect": { "top": 360, "left": 640, "right": 1280, "bottom": 720 },
"zOrder": 2,
"fillMode": 0,
"backgroundColor": 14480000,
"placeHolderImage": "",
"fixedVideoUser": { "userId": "macdev", "intRoomId": 5055005, "strRoomId": "" },
"fixedVideoStreamType": 0
}
],
"audioMixUserList": [
{ "userId": "windev", "intRoomId": 5055005, "strRoomId": "" },
{ "userId": "macdev", "intRoomId": 5055005, "strRoomId": "" }
],
"watermarkList": [
{
"watermarkUrl": "https://<Your watermark image URL>",
"rect": { "top": 540, "left": 0, "right": 320, "bottom": 640 },
"zOrder": 3
}
]
}
);
Parameters:
Name | Type | Description |
---|---|---|
target |
TRTCPublishTarget |
required
媒体流发布的目标地址,支持转推/转码到腾讯或者第三方 CDN,也支持转码回推到 TRTC 房间中。 |
params |
TRTCStreamEncoderParam | null |
required
媒体流编码输出参数,转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码输出参数。在转推时,为了更好的转推稳定性和 CDN 兼容性,也建议您进行配置。 |
config |
TRTCStreamMixingConfig | null |
required
媒体流转码配置参数,转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码配置参数。转推模式下则无效。 |
updatePublishMediaStream(taskId, target, params, config)
更新发布媒体流
该接口会向 TRTC 服务器发送指令,更新通过 startPublishMediaStream
启动的媒体流
注意:
- 您可以通过本接口来更新发布的 CDN URL(支持增删,最多同时 10 个),但您使用时需要注意不要多个任务同时往相同的 URL 地址推送,以免引起异常推流状态。
- 您可以通过 taskId 来更新调整转推/转码任务。例如在 pk 业务中,您可以先通过
startPublishMediaStream
发起转推,接着在主播发起 pk 时,通过 taskId 和本接口将转推更新为转码任务。此时,CDN 播放将连续并且不会发生断流(您需要保持媒体流编码输出参数param
一致)。 - 同一个任务不支持纯音频、音视频、纯视频之间的切换。
Example
// Publish and mixing multi-user video and audio to TRTC Room
import TRTCCloud, { TRTCPublishMode } from 'trtc-electron-sdk';
const trtcCloud = TRTCCloud.getTRTCShareInstance();
let cdnTaskId = '';
trtcCloud.on('onStartPublishMediaStream', (taskId: string, code: number, message: string) => {
if (code === 0) {
cdnTaskId = taskId;
} else {
console.log('startPublishMediaStream error:', code, message);
}
});
trtc.updatePublishMediaStream(
cdnTaskId,
{
mode: TRTCPublishMode.TRTCPublishMixStreamToRoom,
cdnUrlList: [],
mixStreamIdentity: { // Publish to TRTC Room
"userId": "__robot__",
"intRoomId": 5055005,
"strRoomId": ""
}
},
{
audioEncodedChannelNum: 2,
audioEncodedCodecType: 0,
audioEncodedKbps: 128,
audioEncodedSampleRate: 48000,
videoEncodedCodecType: 0,
videoEncodedFPS: 30,
videoEncodedGOP: 1,
videoEncodedWidth: 1280,
videoEncodedHeight: 720,
videoEncodedKbps: 2000,
videoSeiParams: "",
},
{
"backgroundColor": 14362921,
"backgroundImage": "",
"videoLayoutList": [
{
"rect": { "top": 0, "left": 0, "right": 960, "bottom": 540 },
"zOrder": 1,
"fillMode": 0,
"backgroundColor": 14483711,
"placeHolderImage": "",
"fixedVideoUser": { "userId": "windev", "intRoomId": 5055005, "strRoomId": "" },
"fixedVideoStreamType": 0
},
{
"rect": { "top": 360, "left": 640, "right": 1280, "bottom": 720 },
"zOrder": 2,
"fillMode": 0,
"backgroundColor": 14480000,
"placeHolderImage": "",
"fixedVideoUser": { "userId": "macdev", "intRoomId": 5055005, "strRoomId": "" },
"fixedVideoStreamType": 0
}
],
"audioMixUserList": [
{ "userId": "windev", "intRoomId": 5055005, "strRoomId": "" },
{ "userId": "macdev", "intRoomId": 5055005, "strRoomId": "" }
],
"watermarkList": [
{
"watermarkUrl": "https://<Your watermark image URL>",
"rect": { "top": 540, "left": 0, "right": 320, "bottom": 640 },
"zOrder": 3
}
]
}
);
Parameters:
Name | Type | Description |
---|---|---|
taskId |
String |
required
通过回调 |
target |
TRTCPublishTarget | null |
required
媒体流发布的目标地址,支持转推/转码到腾讯或者第三方 CDN,也支持转码回推到 TRTC 房间中。 |
params |
TRTCStreamEncoderParam | null |
required
媒体流编码输出参数,转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码输出参数。在转推时,为了更好的转推稳定性和 CDN 兼容性,也建议您进行配置。 |
config |
TRTCStreamMixingConfig | null |
required
媒体流转码配置参数,转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码配置参数。转推模式下则无效。 |
stopPublishMediaStream(taskId)
停止发布媒体流
该接口会向 TRTC 服务器发送指令,停止通过 startPublishMediaStream
启动的媒体流
注意:
- 若您的业务后台并没有保存该 taskId,在您的主播异常退房重进后,如果您需要重新获取 taskId,您可以再次调用
startPublishMediaStream
启动任务。此时 TRTC 后台会返回任务启动失败,同时带给您上一次启动的 taskId - 若 taskId 填空字符串,将会停止该用户所有通过
startPublishMediaStream
启动的媒体流,如果您只启动了一个媒体流或者想停止所有通过您启动的媒体流,推荐使用这种方式。
Parameters:
Name | Type | Description |
---|---|---|
taskId |
String |
required
通过回调 |
startPublishing(streamId, type)
开始向腾讯云的直播 CDN 推流
该接口会指定当前用户的音视频流在腾讯云 CDN 所对应的 StreamId,进而可以指定当前用户的 CDN 播放地址。
例如:如果我们采用如下代码设置当前用户的主画面 StreamId 为 user_stream_001,那么该用户主画面对应的 CDN 播放地址为: “http://yourdomain/live/user_stream_001.flv”,其中 yourdomain 为您自己备案的播放域名, 您可以在直播控制台 配置您的播放域名,腾讯云不提供默认的播放域名。
您也可以在设置 enterRoom 的参数 TRTCParams 时指定 streamId, 而且我们更推荐您采用这种方案。
注意:您需要先在实时音视频 控制台 中的功能配置页开启“启动自动旁路直播”才能生效。
- Deprecated:
-
- Yes
Example
let trtcCloud = TRTCCloud.getTRTCShareInstance();
trtcCloud.enterRoom(params, TRTCAppScene.TRTCAppSceneLIVE);
trtcCloud.startLocalPreview(view);
trtcCloud.startLocalAudio(TRTCAudioQuality.TRTCAudioQualityDefault);
trtcCloud.startPublishing("user_stream_001", TRTCVideoStreamType.TRTCVideoStreamTypeBig);
Parameters:
Name | Type | Description |
---|---|---|
streamId |
String |
required
自定义流 ID。 |
type |
TRTCVideoStreamType |
required
仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub。 |
stopPublishing()
停止向腾讯云的直播 CDN 推流
- Deprecated:
-
- Yes
startPublishCDNStream(param)
开始向非腾讯云的直播 CDN 转推
该接口跟 startPublishing() 类似,但 startPublishCDNStream() 支持向非腾讯云的直播 CDN 转推。
注意:
- 使用 startPublishing() 绑定腾讯云直播 CDN 不收取额外的费用。
- 使用 startPublishCDNStream() 绑定非腾讯云直播 CDN 需要收取转推费用,且需要通过工单联系我们开通。
- Deprecated:
-
- Yes
Parameters:
Name | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
param |
TRTCPublishCDNParam |
required
转推参数 Properties
|
stopPublishCDNStream()
停止向非腾讯云的直播 CDN 推流
- Deprecated:
-
- Yes
setMixTranscodingConfig(config)
设置云端的混流转码参数
如果您在实时音视频 控制台 中的功能配置页开启了“启动自动旁路直播”功能, 房间里的每一路画面都会有一个默认的直播 CDN 地址。
一个直播间中可能有不止一位主播,而且每个主播都有自己的画面和声音,但对于 CDN 观众来说,他们只需要一路直播流, 所以您需要将多路音视频流混成一路标准的直播流,这就需要混流转码。
当您调用 setMixTranscodingConfig() 接口时,SDK 会向腾讯云的转码服务器发送一条指令,目的是将房间里的多路音视频流混合为一路, 您可以通过 mixUsers 参数来调整每一路画面的位置,以及是否只混合声音,也可以通过 videoWidth、videoHeight、videoBitrate 等参数控制混合音视频流的编码参数。
【画面1】=> 解码 ====> \ \ 【画面2】=> 解码 => 画面混合 => 编码 => 【混合后的画面】 / 【画面3】=> 解码 ====> / 【声音1】=> 解码 ====> \ \ 【声音2】=> 解码 => 声音混合 => 编码 => 【混合后的声音】 / 【声音3】=> 解码 ====> /
参考文档:云端混流转码。
注意:混流转码为收费功能,调用接口将产生云端混流转码费用,详见 云端混流转码计费说明。
- Deprecated:
-
- Yes
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
config |
TRTCTranscodingConfig |
required
请参考 trtc_define.js 中关于 TRTCTranscodingConfig 的介绍, 如果传入 null 取消云端混流转码。 Properties
|
startLocalPreview(views)
启动本地摄像头采集和预览
这个接口会启动默认的摄像头,可以通过 setCurrentCameraDevice()
接口选用其它摄像头
当开始渲染首帧摄像头画面时,您会收到 TRTCCallback 中的 onFirstVideoFrame('') 回调。
Parameters:
Name | Type | Description |
---|---|---|
views |
Array.<HTMLElement> | HTMLElement | null |
required
承载预览画面单个的 HTML 块节点或者 HTML 块节点数组
|
stopLocalPreview()
停止本地摄像头采集和预览
updateLocalView(views)
修改本地摄像头预览的 HTML 元素
本接口用于切换显示区域的交互场景中,修改本地摄像头预览的 HTML 元素。
注意:必须在调用 startLocalPreview()
接口开启本地摄像头采集后,调用本接口才会生效。
- 如果用户调用
startLocalPreview(views)
接口开启了摄像头采集,则通过此接口可以修改摄像头采集视频渲染的 HTML 元素。 - 如果用户调用
startLocalPreview(null)
接口开启了摄像头采集,但未开启本地预览,支持调用此接口开启预览。
Parameters:
Name | Type | Description |
---|---|---|
views |
Array.<HTMLElement> | HTMLElement | null |
required
承载预览画面单个的 HTML 块节点或者 HTML 块节点数组,传入 |
setCameraCaptureParams(params)
设置摄像头采集偏好
注意:目前只支持 Windows
系统
Parameters:
Name | Type | Description |
---|---|---|
params |
TRTCCameraCaptureParams |
required
摄像头采集参数 |
muteLocalVideo(mute, streamType)
暂停/恢复发布本地的视频流
该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己画面。 该接口在指定 TRTCVideoStreamTypeBig 时等效于 start/stopLocalPreview 这两个接口,但具有更好的响应速度。 因为 start/stopLocalPreview 需要打开和关闭摄像头,而打开和关闭摄像头都是硬件设备相关的操作,非常耗时。 相比之下,muteLocalVideo 只需要在软件层面对数据流进行暂停或者放行即可,因此效率更高,也更适合需要频繁打开关闭的场景。 当暂停/恢复发布指定 TRTCVideoStreamTypeBig 后,同一房间中的其他用户将会收到 onUserVideoAvailable 回调通知。 当暂停/恢复发布指定 TRTCVideoStreamTypeSub 后,同一房间中的其他用户将会收到 onUserSubStreamAvailable 回调通知。
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
required
true:屏蔽;false:开启,默认值:false |
streamType |
TRTCVideoStreamType |
required
要暂停/恢复的视频流类型, 仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub |
setVideoMuteImage(imageBuffer, fps)
设置本地画面被暂停期间的替代图片
当您调用 muteLocalVideo(true)
暂停本地画面时,您可以通过调用本接口设置一张替代图片,设置后,房间中的其他用户会看到这张替代图片,而不是黑屏画面。
Parameters:
Name | Type | Description |
---|---|---|
imageBuffer |
TRTCImageBuffer |
required
设置替代图片,空值代表在 muteLocalVideo 之后不再发送视频流数据,默认值为空。 |
fps |
Number |
required
设置替代图片帧率,最小值为5,最大值为10,默认5。 |
startRemoteView(userId, views, streamType)
开始显示远端视频画面
在收到 SDK 的 onUserVideoAvailable(userId, 1) 通知时,可以获知该远程用户开启了视频, 此后调用 startRemoteView(userId, views, streamType) 接口加载该用户的远程画面时,可以用 loading 动画优化加载过程中的等待体验。 待该用户的首帧画面开始显示时,您会收到 onFirstVideoFrame(userId) 事件回调。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
对方的用户标识 |
views |
Array.<HTMLElement> | HTMLElement | null |
required
承载预览画面单个的 HTML 块节点或者 HTML 块节点数组
|
streamType |
TRTCVideoStreamType |
required
视频流类型 |
stopRemoteView(userId, streamType)
停止显示远端视频画面,同时不再拉取该远端用户的视频数据流
调用此接口后,SDK 会停止接收该用户的远程视频流,同时会清理相关的视频显示资源。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
对方的用户标识 |
streamType |
TRTCVideoStreamType |
required
视频流类型 |
updateRemoteView(userId, views, streamType)
修改远端视频渲染的 HTML 元素 本接口用于切换显示区域的交互场景中,修改远端视频渲染的 HTML 元素。
注意:必须调用 startRemoteView()
订阅了远端视频流之后,调用此接口才会生效。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
远端视频流的用户 ID |
views |
Array.<HTMLElement> | HTMLElement | null |
required
承载预览画面单个的 HTML 块节点或者 HTML 块节点数组,传入 |
streamType |
TRTCVideoStreamType |
required
视频流类型 |
stopAllRemoteView()
停止显示所有远端视频画面,同时不再拉取该远端用户的视频数据流
注意:如果有屏幕分享的画面在显示,则屏幕分享的画面也会一并被关闭。
muteRemoteVideoStream(userId, mute, streamType)
暂停接收指定的远端视频流
该接口仅停止接收远程用户的视频流,但并不释放显示资源,所以视频画面会冻屏在 mute 前的最后一帧。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
对方的用户标识 |
mute |
Boolean |
required
是否停止接收 |
streamType |
TRTCVideoStreamType |
required
视频流类型 |
muteAllRemoteVideoStreams(mute)
停止接收所有远端视频流
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
required
是否停止接收 |
setVideoEncoderParam(params)
设置视频编码器相关参数
该设置决定了远端用户看到的画面质量(同时也是云端录制出的视频文件的画面质量)
Parameters:
Name | Type | Description | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCVideoEncParam |
required
视频编码参数 Properties
|
setNetworkQosParam(params)
设置网络流控相关参数
该设置决定了 SDK 在各种网络环境下的调控策略(例如弱网下是“保清晰”还是“保流畅”)
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCNetworkQosParam |
required
网络流控参数 Properties
|
setLocalRenderParams(params)
设置本地图像(主流)的渲染参数
Parameters:
Name | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCRenderParams |
required
本地图像的参数 Properties
|
setLocalViewFillMode(mode)
废弃接口: 设置本地图像的渲染模式
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setLocalRenderParams 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
mode |
TRTCVideoFillMode |
required
填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit
|
setRemoteRenderParams(userId, streamType, params)
设置远端画面的渲染模式
Parameters:
Name | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
userId |
String |
required
用户 ID |
||||||||||||
streamType |
TRTCVideoStreamType |
required
视频流类型 |
||||||||||||
params |
TRTCRenderParams |
required
本地画面渲染参数 Properties
|
setRemoteViewFillMode(userId, mode)
废弃接口: 设置远端图像的渲染模式
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setRemoteRenderParams 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
用户 ID |
mode |
TRTCVideoFillMode |
required
填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit
|
setLocalViewRotation(rotation)
废弃接口: 设置本地图像的顺时针旋转角度
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setLocalRenderParams 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
rotation |
TRTCVideoRotation |
required
支持 TRTCVideoRotation90 、 TRTCVideoRotation180 、 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0
|
setRemoteViewRotation(userId, rotation)
废弃接口: 设置远端图像的顺时针旋转角度
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setRemoteRenderParams 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
用户 ID |
rotation |
TRTCVideoRotation |
required
支持 TRTCVideoRotation90 、 TRTCVideoRotation180 、 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0
|
setVideoEncoderRotation(rotation)
设置视频编码输出的(也就是远端用户观看到的,以及服务器录制下来的)画面方向
Parameters:
Name | Type | Description |
---|---|---|
rotation |
TRTCVideoRotation |
required
目前支持 TRTCVideoRotation0 和 TRTCVideoRotation180 两个旋转角度,默认值:TRTCVideoRotation0
|
setLocalViewMirror(mirror)
废弃接口: 设置本地摄像头预览画面的镜像模式
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setLocalRenderParams 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
mirror |
Boolean |
required
镜像模式, windows 默认值: false(非镜像模式), mac 默认值: true(镜像模式) |
setVideoEncoderMirror(mirror)
设置编码器输出的画面镜像模式
该接口不改变本地摄像头的预览画面,但会改变另一端用户看到的(以及服务器录制的)画面效果。
Parameters:
Name | Type | Description |
---|---|---|
mirror |
Boolean |
required
是否开启远端镜像, true:远端画面镜像;false:远端画面非镜像。默认值:false |
enableSmallVideoStream(enable, params)
开启大小画面双路编码模式
如果当前用户是房间中的主要角色(例如主播、老师、主持人等),并且使用 PC 或者 Mac 环境,可以开启该模式。 开启该模式后,当前用户会同时输出【高清】和【低清】两路视频流(但只有一路音频流)。 对于开启该模式的当前用户,会占用更多的网络带宽,并且会更加消耗 CPU 计算资源。
对于同一房间的远程观众而言:
- 如果用户的下行网络很好,可以选择观看【高清】画面
- 如果用户的下行网络较差,可以选择观看【低清】画面
Parameters:
Name | Type | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
enable |
Boolean |
required
是否开启小画面编码,默认值:false |
||||||||||||||||||
params |
TRTCVideoEncParam |
required
小流的视频参数 Properties
|
setRemoteVideoStreamType(userId, streamType)
选定观看指定 userId 的大画面或小画面
此功能需要该 userId 通过 enableSmallVideoStream 提前开启双路编码模式。 如果该 userId 没有开启双路编码模式,则此操作无效。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
用户 ID |
streamType |
TRTCVideoStreamType |
required
视频流类型,即选择看大画面还是小画面,默认为 TRTCVideoStreamTypeBig
|
snapshotVideo(userId, streamType)
视频画面截图
调用截图接口后,您会收到来自 TRTCCallback 中的 onSnapshotComplete
回调:
截取本地、远程主路和远端辅流的视频画面,并通过 HBITMAP 对象返回给您。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
用户 ID,空字符串表示截取本地视频画面 |
streamType |
TRTCVideoStreamType |
required
视频流类型,支持摄像头画面(TRTCVideoStreamTypeBig)和屏幕分享画面(TRTCVideoStreamTypeSub) |
setPriorRemoteVideoStreamType(type)
废弃接口: 设定观看方优先选择的视频质量
低端设备推荐优先选择低清晰度的小画面。 如果对方没有开启双路视频模式,则此操作无效。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 startRemoteView 接口设置视频流类型参数进行替代。
Parameters:
Name | Type | Description |
---|---|---|
type |
TRTCVideoStreamType |
required
默认观看大画面还是小画面,默认为 TRTCVideoStreamTypeBig
|
startLocalRecording(options)
开启本地媒体录制
开启后把直播过程中的音视和视频内容录制到本地的一个文件中。
Parameters:
Name | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
Object |
required
录制参数 Properties
|
stopLocalRecording()
停止本地媒体录制
如果录制任务在退出房间前尚未通过本接口停止,则退出房间后录音任务会自动被停止。
startLocalAudio(quality)
开启本地音频的采集和上行
该函数会启动麦克风采集,并将音频数据传输给房间里的其他用户。 SDK 并不会默认开启本地的音频上行,也就说,如果您不调用这个函数,房间里的其他用户就听不到您的声音。
注意:TRTC SDK 并不会默认打开本地的麦克风采集。
Parameters:
Name | Type | Description |
---|---|---|
quality |
TRTCAudioQuality |
required
音频质量
|
stopLocalAudio()
关闭本地音频的采集和上行
当关闭本地音频的采集和上行,房间里的其它成员会收到 onUserAudioAvailable(false) 回调通知。
muteLocalAudio(mute)
静音本地的音频
当静音本地音频后,房间里的其它成员会收到 onUserAudioAvailable(false) 回调通知。 与 stopLocalAudio 不同之处在于,muteLocalAudio 并不会停止发送音视频数据,而是会继续发送码率极低的静音包。 在对录制质量要求很高的场景中,选择 muteLocalAudio 是更好的选择,能录制出兼容性更好的 MP4 文件。 这是由于 MP4 等视频文件格式,对于音频的连续性是要求很高的,简单粗暴地 stopLocalAudio 会导致录制出的 MP4 不易播放。
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
required
true:屏蔽;false:开启,默认值:false |
muteRemoteAudio(userId, mute)
静音掉某一个用户的声音,同时不再拉取该远端用户的音频数据流
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
用户 ID |
mute |
Boolean |
required
true:静音;false:非静音 |
muteAllRemoteAudio(mute)
静音/取消静音所有远端用户的音频流
当您静音所有用户的远端音频时,SDK 会停止播放所有来自远端的音频流,同时也会停止拉取所有用户的音频数据。
注意:该接口支持您在进入房间(enterRoom)前调用,暂停状态会在退出房间(exitRoom)在之后会被重置。
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
required
true:静音;false:非静音 |
setRemoteAudioVolume(userId, volume)
设置某个远程用户的播放音量
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
远程用户 ID |
volume |
Number |
required
音量大小,100为原始音量,范围是:[0 ~ 100],默认值为100 |
setAudioCaptureVolume(volume)
设置 SDK 采集音量
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,取值0 - 100,默认值为100 |
getAudioCaptureVolume() → {Number}
获取 SDK 采集音量
Returns:
SDK 采集音量
- Type
- Number
setAudioPlayoutVolume(volume)
设置 SDK 播放音量
注意:在混合远程用户、Bgm和音效的音频流后,送入系统播放前生效。 会影响本地录制的音量大小。 不会影响耳返的音量。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,取值0 - 100,默认值为100 |
getAudioPlayoutVolume() → {Number}
获取 SDK 播放音量
Returns:
SDK 播放音量
- Type
- Number
enableAudioVolumeEvaluation(interval)
启用或关闭音量大小提示
开启此功能后,SDK 会在 onUserVoiceVolume() 中反馈对每一路声音音量大小值的评估。 我们在 Demo 中有一个音量大小的提示条,就是基于这个接口实现的。 如希望打开此功能,请在 startLocalAudio() 之前调用。
Parameters:
Name | Type | Description |
---|---|---|
interval |
Number |
required
设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms |
startAudioRecording(params) → {Number}
开始录音
当您调用该接口后, SDK 会将本地和远端的所有音频(包括本地音频,远端音频,背景音乐和音效等)混合并录制到一个本地文件中。 该接口在进入房间前后调用均可生效,如果录制任务在退出房间前尚未通过 stopAudioRecording 停止,则退出房间后录制任务会自动被停止。
Parameters:
Name | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCAudioRecordingParams |
required
录音参数。 Properties
|
Returns:
0:成功;-1:录音已开始;-2:文件或目录创建失败;-3:后缀指定的音频格式不支持;-4:参数错误。
注意: - 在 9.3 之前的版本,params 为 string 代表 录音文件路径(必填), 9.3 以及以后同时支持 string 类型和 TRTCAudioRecordingParams。
- Type
- Number
stopAudioRecording()
停止录音
如果调用 exitRoom 时还在录音,录音会自动停止。
setRemoteAudioParallelParams(param)
设置远端音频流智能并发播放策略
设置远端音频流智能并发播放策略,适用于上麦人数比较多的场景。
Parameters:
Name | Type | Description |
---|---|---|
param |
TRTCAudioParallelParams |
required
音频并发参数。 |
setAudioQuality(quality)
设置音频质量
Parameters:
Name | Type | Description |
---|---|---|
quality |
TRTCAudioQuality |
required
音频质量
|
setMicVolumeOnMixing(volume)
废弃接口:设置麦克风的音量大小
- Deprecated:
-
- 从 TRTCSDK6.9 后该接口已被废弃,请使用 setAudioCaptureVolume 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,100为正常音量,取值范围为0 - 200。 |
getCameraDevicesList() → {Array.<TRTCDeviceInfo>}
获取摄像头设备列表
Example
var cameralist = rtcCloud.getCameraDevicesList();
for (i=0;i<cameralist.length;i++) {
var camera = cameralist[i];
console.info("camera deviceName: " + camera.deviceName + " deviceId:" + camera.deviceId);
}
Returns:
摄像头管理器列表
- Type
- Array.<TRTCDeviceInfo>
setCurrentCameraDevice(deviceId)
设置要使用的摄像头
Parameters:
Name | Type | Description |
---|---|---|
deviceId |
String |
required
从 getCameraDevicesList 中得到的设备 ID |
getCurrentCameraDevice() → {TRTCDeviceInfo}
获取当前使用的摄像头
Returns:
设备信息,能获取设备 ID 和设备名称
- Type
- TRTCDeviceInfo
getMicDevicesList() → {Array.<TRTCDeviceInfo>}
获取麦克风设备列表
Example
var miclist = rtcCloud.getMicDevicesList();
for (i=0;i<miclist.length;i++) {
var mic = miclist[i];
console.info("mic deviceName: " + mic.deviceName + " deviceId:" + mic.deviceId);
}
Returns:
麦克风管理器列表
- Type
- Array.<TRTCDeviceInfo>
getCurrentMicDevice() → {TRTCDeviceInfo}
获取当前选择的麦克风
Returns:
设备信息,能获取设备 ID 和设备名称
- Type
- TRTCDeviceInfo
setCurrentMicDevice(micId)
设置要使用的麦克风
选择指定的麦克风作为录音设备,不调用该接口时,默认选择索引为0的麦克风
Parameters:
Name | Type | Description |
---|---|---|
micId |
String |
required
从 getMicDevicesList 中得到的设备 ID |
getCurrentMicDeviceVolume() → {Number}
获取系统当前麦克风设备音量
注意:查询的是系统硬件音量大小。
Returns:
音量值,范围是0 - 100
- Type
- Number
setCurrentMicDeviceVolume(volume)
设置系统当前麦克风设备的音量
注意:该接口的功能是调节系统采集音量,如果用户直接调节系统设置的采集音量时,该接口的设置结果会被用户的操作所覆盖。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
麦克风音量值,范围0 - 100 |
setCurrentMicDeviceMute(mute)
设置系统当前麦克风设备的静音状态
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
required
设置为 true 时,麦克风设备静音;设置为 false时,麦克风设备取消静音 |
getCurrentMicDeviceMute() → {Boolean}
获取系统当前麦克风设备是否静音
Returns:
静音状态
- Type
- Boolean
getSpeakerDevicesList() → {Array.<TRTCDeviceInfo>}
获取扬声器设备列表
Example
var speakerlist = rtcCloud.getSpeakerDevicesList();
for (i=0;i<speakerlist.length;i++) {
var speaker = speakerlist[i];
console.info("mic deviceName: " + speaker.deviceName + " deviceId:" + speaker.deviceId);
}
Returns:
扬声器管理器列表
- Type
- Array.<TRTCDeviceInfo>
getCurrentSpeakerDevice() → {TRTCDeviceInfo}
获取当前的扬声器设备
Returns:
设备信息,能获取设备 ID 和设备名称
- Type
- TRTCDeviceInfo
setCurrentSpeakerDevice(speakerId)
设置要使用的扬声器
Parameters:
Name | Type | Description |
---|---|---|
speakerId |
String |
required
从 getSpeakerDevicesList 中得到的设备 ID |
getCurrentSpeakerVolume() → {Number}
获取系统当前扬声器设备音量
Returns:
扬声器音量,范围0 - 100
- Type
- Number
setCurrentSpeakerVolume(volume)
设置系统当前扬声器设备音量
注意:该接口的功能是调节系统播放音量,如果用户直接调节系统设置的播放音量时,该接口的设置结果会被用户的操作所覆盖。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
设置的扬声器音量,范围0 - 100 |
setCurrentSpeakerDeviceMute(mute)
设置系统当前扬声器设备的静音状态
Parameters:
Name | Type | Description |
---|---|---|
mute |
Boolean |
required
设置为 true 时,扬声器设备静音;设置为 false时,扬声器设备取消静音 |
getCurrentSpeakerDeviceMute() → {Boolean}
获取系统当前扬声器设备是否静音
Returns:
静音状态
- Type
- Boolean
enableFollowingDefaultAudioDevice(deviceType, enable)
设置 SDK 使用的音频设备自动跟随系统默认设备
仅支持设置麦克风和扬声器类型,摄像头暂不支持跟随系统默认设备
Parameters:
Name | Type | Description |
---|---|---|
deviceType |
TRTCDeviceType |
required
设备类型,只支持麦克风和扬声器,摄像头不支持 |
enable |
Boolean |
required
是否跟随系统默认的音频设备
|
setBeautyStyle(style, beauty, white, ruddiness)
设置美颜、美白、红润效果级别
SDK 内部集成了两套风格不同的磨皮算法,一套我们取名叫“光滑”,适用于美女秀场,效果比较明显。 另一套我们取名“自然”,磨皮算法更多地保留了面部细节,主观感受上会更加自然。
注意:计算机必须配备显卡,否则该接口功能不生效。
Parameters:
Name | Type | Description |
---|---|---|
style |
TRTCBeautyStyle |
required
美颜风格,光滑或者自然,光滑风格磨皮更加明显,适合娱乐场景。
|
beauty |
Number |
required
美颜级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显 |
white |
Number |
required
美白级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显 |
ruddiness |
Number |
required
红润级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显,该参数 windows 平台暂未生效 |
setWaterMark(streamType, srcData, srcType, nWidth, nHeight, xOffset, yOffset, fWidthRatio)
设置水印
水印的位置是通过 xOffset, yOffset, fWidthRatio 来指定的。
- xOffset:水印的坐标,取值范围为0 - 1的浮点数。
- yOffset:水印的坐标,取值范围为0 - 1的浮点数。
- fWidthRatio:水印的大小比例,取值范围为0 - 1的浮点数。
Parameters:
Name | Type | Description |
---|---|---|
streamType |
TRTCVideoStreamType |
required
要设置水印的流类型(TRTCVideoStreamTypeBig、TRTCVideoStreamTypeSub) |
srcData |
ArrayBuffer | String |
required
水印图片源数据(传 null 表示去掉水印) |
srcType |
TRTCWaterMarkSrcType |
required
水印图片源数据类型
|
nWidth |
Number |
required
水印图片像素宽度(源数据为文件路径时忽略该参数) |
nHeight |
Number |
required
水印图片像素高度(源数据为文件路径时忽略该参数) |
xOffset |
Number |
required
水印显示的左上角 x 轴偏移 |
yOffset |
Number |
required
水印显示的左上角 y 轴偏移 |
fWidthRatio |
Number |
required
水印显示的宽度占画面宽度比例(水印按该参数等比例缩放显示) |
startRemoteSubStreamView(userId, view)
废弃接口: 开始显示远端用户的辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)
- startRemoteView() 用于显示主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)。
- startRemoteSubStreamView() 用于显示辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 startRemoteView 接口替代。 注意:请在 onUserSubStreamAvailable 回调后再调用这个接口。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
对方的用户标识 |
view |
HTMLElement |
required
承载预览画面的 DOM |
stopRemoteSubStreamView(userId)
废弃接口: 停止显示远端用户的辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 stopRemoteView 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
对方的用户标识 |
setRemoteSubStreamViewFillMode(userId, mode)
废弃接口: 设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的显示模式。
- setRemoteViewFillMode() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的显示模式。
- setRemoteSubStreamViewFillMode() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的显示模式。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setRemoteRenderParams 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
用户的 ID |
mode |
TRTCVideoFillMode |
required
填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit
|
setRemoteSubStreamViewRotation(userId, rotation)
废弃接口: 设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的顺时针旋转角度
- setRemoteViewRotation() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的旋转角度。
- setRemoteSubStreamViewRotation() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的旋转角度。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setRemoteRenderParams 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
userId |
String |
required
用户 ID |
rotation |
TRTCVideoRotation |
required
支持90、180、270旋转角度 |
getScreenCaptureSources(thumbWidth, thumbHeight, iconWidth, iconHeight) → {Array.<TRTCScreenCaptureSourceInfo>}
枚举可共享的窗口列表
如果您要给您的 App 增加屏幕分享功能,一般需要先显示一个窗口选择界面,这样用户可以选择希望分享的窗口。 通过此函数,您可以获得可分享窗口的 ID、类型、窗口名称以及缩略图。 拿到这些信息后,您就可以实现一个窗口选择界面,当然,您也可以使用我们在 Demo 源码中已经实现好的一个界面。
注意:返回的列表中包括屏幕和应用窗口,屏幕会在列表的前面几个元素中。
Parameters:
Name | Type | Description |
---|---|---|
thumbWidth |
Number |
required
缩略图宽度,指定要获取的窗口缩略图大小,缩略图可用于绘制在窗口选择界面上 |
thumbHeight |
Number |
required
缩略图高度,指定要获取的窗口缩略图大小,缩略图可用于绘制在窗口选择界面上 |
iconWidth |
Number |
required
图标宽度,指定要获取的窗口图标大小 |
iconHeight |
Number |
required
图标高度,指定要获取的窗口图标大小 |
Returns:
窗口列表包括屏幕
- Type
- Array.<TRTCScreenCaptureSourceInfo>
selectScreenCaptureTarget(source, captureRect, property)
设置屏幕共享参数,该方法在屏幕共享过程中也可以调用
如果您期望在屏幕分享的过程中,切换想要分享的窗口,可以再次调用这个函数而不需要重新开启屏幕分享。
支持如下四种情况:
- 共享整个屏幕:sourceInfoList 中 type 为 Screen 的 source,captureRect 设为 { 0, 0, 0, 0 }
- 共享指定区域:sourceInfoList 中 type 为 Screen 的 source,captureRect 设为非 NULL,例如 { 100, 100, 300, 300 }
- 共享整个窗口:sourceInfoList 中 type 为 Window 的 source,captureRect 设为 { 0, 0, 0, 0 }
- 共享窗口区域:sourceInfoList 中 type 为 Window 的 source,captureRect 设为非 NULL,例如 { 100, 100, 300, 300 }
注意:由于操作系统 API 能力限制,分享在同一个应用的多个窗口之间切换时,第二次及以后分享的窗口在调用 SDK 接口后可能无法置顶,需要用户手动选择应用才能置顶。
Examples
// 示例1: 选择要分享的窗口或屏幕,9.3 以后版本推荐此方式
import TRTCCloud, {
Rect,
TRTCScreenCaptureProperty
} from 'trtc-electron-sdk';
const rtcCloud = TRTCCloud.getTRTCShareInstance();
const screenAndWindows = rtcCloud.getScreenCaptureSources(320, 180, 32, 32);
const selectedScreenOrWindow = screenAndWindows[0];
const selectRect = new Rect(0, 0, 0, 0);
const captureProperty = new TRTCScreenCaptureProperty(
true, // enable capture mouse
true, // enable highlight
true, // enable high performance
0xFF66FF, // highlight color.
8, // highlight width
false // disable capture child window
);
rtcCloud.selectScreenCaptureTarget(
selectedScreenOrWindow,
selectRect,
captureProperty
);
// 示例2: 选择要分享的窗口或屏幕,9.3 及之前版本只能使用此方式
import TRTCCloud, { Rect } from 'trtc-electron-sdk';
const rtcCloud = TRTCCloud.getTRTCShareInstance();
const screenAndWindows = rtcCloud.getScreenCaptureSources(320, 180, 32, 32);
const selectedScreenOrWindow = screenAndWindows[0];
const selectRect = new Rect(0, 0, 0, 0);
rtcCloud.selectScreenCaptureTarget(
selectedScreenOrWindow.type,
selectedScreenOrWindow.sourceId,
selectedScreenOrWindow.sourceName,
selectRect,
true, // enable capture mouse
true // enable highlight
);
Parameters:
Name | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
source |
TRTCScreenCaptureSourceInfo |
required
指定分享源,详情参考TRTCScreenCaptureSourceInfo 定义 Properties
|
|||||||||||||||
captureRect |
Rect |
required
指定捕获的区域 |
|||||||||||||||
property |
TRTCScreenCaptureProperty |
required
指定屏幕分享目标的属性,包括捕获鼠标,高亮捕获窗口等,详情参考TRTCScreenCaptureProperty 定义 |
startScreenCapture(view, type, params)
启动屏幕分享,支持选择使用主路或辅路进行屏幕分享。
注意: 一个用户同时最多只能上传一条主路(TRTCVideoStreamTypeBig)画面和一条辅路(TRTCVideoStreamTypeSub)画面, 默认情况下,屏幕分享使用辅路画面,如果使用主路画面,建议您提前停止摄像头采集(stopLocalPreview)避免相互冲突。
Example
// 分享屏幕或窗口
import TRTCCloud, {
TRTCVideoStreamType,
TRTCVideoEncParam,
TRTCVideoResolution,
TRTCVideoResolutionMode
} from 'trtc-electron-sdk';
const rtcCloud = TRTCCloud.getTRTCShareInstance();
const screenAndWindows = rtcCloud.getScreenCaptureSources(320, 180, 32, 32);
const selectedScreenOrWindow = screenAndWindows[0];
const selectRect = new Rect(0, 0, 0, 0);
const captureProperty = new TRTCScreenCaptureProperty(
true, // enable capture mouse
true, // enable highlight
true, // enable high performance
0, // default highlight color
0, // default highlight width
false // disable capture child window
);
rtcCloud.selectScreenCaptureTarget(
selectedScreenOrWindow,
selectRect,
captureProperty
);
const screenShareEncParam = new TRTCVideoEncParam(
TRTCVideoResolution.TRTCVideoResolution_1280_720,
TRTCVideoResolutionMode.TRTCVideoResolutionModeLandscape,
15,
1600,
0,
true,
);
rtcCloud.startScreenCapture(
view, // HTML Element
TRTCVideoStreamType.TRTCVideoStreamTypeSub,
screenShareEncParam,
);
Parameters:
Name | Type | Default | Description |
---|---|---|---|
view |
HTMLElement |
null
|
required
承载预览画面的 DOM |
type |
TRTCVideoStreamType |
required
屏幕分享使用的线路,可以设置为主路(TRTCVideoStreamTypeBig)或者辅路(TRTCVideoStreamTypeSub),默认使用辅路。 |
|
params |
TRTCVideoEncParam |
null
|
required
屏幕分享的画面编码参数,可以设置为 null,表示让 SDK 选择最佳的编码参数(分辨率、码率等)。即使在调用 startScreenCapture 时设置 type=TRTCVideoStreamTypeBig,依然可以使用此接口更新屏幕分享的编码参数。 |
pauseScreenCapture()
暂停屏幕分享
resumeScreenCapture()
恢复屏幕分享
stopScreenCapture()
停止屏幕分享
setSubStreamEncoderParam(params)
设置屏幕分享(即辅路)的视频编码参数
该接口可以设定远端用户所看到的屏幕分享(即辅路)的画面质量,同时也能决定云端录制出的视频文件中屏幕分享的画面质量。 请注意如下两个接口的差异:
- setVideoEncoderParam() 用于设置主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的视频编码参数。
- setSubStreamEncoderParam() 用于设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的视频编码参数。
注意: 即使您使用主路传输屏幕分享(在调用 startScreenCapture 时设置 type=TRTCVideoStreamTypeBig),依然要使用 setSubStreamEncoderParam 设定屏幕分享的编码参数,而不要使用 setVideoEncoderParam 。
Parameters:
Name | Type | Description | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCVideoEncParam |
required
辅流(屏幕分享)编码参数 Properties
|
setSubStreamMixVolume(volume)
设置辅流(屏幕分享)的混音音量大小
这个数值越高,辅路音量的占比就约高,麦克风音量占比就越小,所以不推荐设置得太大,否则麦克风的声音就被压制了。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
设置的混音音量大小,范围0 - 100 |
addExcludedShareWindow(win)
将指定窗口加入屏幕分享的排除列表中,加入排除列表中的窗口不会被分享出去
支持启动屏幕分享前设置过滤窗口,也支持屏幕分享过程中动态添加过滤窗口。
Parameters:
Name | Type | Description |
---|---|---|
win |
String |
required
不希望分享出去的窗口
|
removeExcludedShareWindow(win)
将指定窗口从屏幕分享的排除列表中移除
Parameters:
Name | Type | Description |
---|---|---|
win |
String |
required
不希望分享出去的窗口
|
removeAllExcludedShareWindow()
将所有窗口从屏幕分享的排除列表中移除
addIncludedShareWindow(win)
将指定窗口加入屏幕分享的包含列表中
该方法只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效,即分享窗口内容时,额外包含指定窗口的功能才生效。
您在 startScreenCapture 之前和之后调用均可。
注意:通过该方法添加到包含列表中的窗口,会在退出房间后被 SDK 自动清除。
Parameters:
Name | Type | Description |
---|---|---|
win |
String |
required
希望被分享出去的窗口 ID |
removeIncludedShareWindow(win)
将指定窗口从屏幕分享的包含列表中移除
该接口只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效。
即只有在分享窗口内容时,额外包含指定窗口的功能才生效。
Parameters:
Name | Type | Description |
---|---|---|
win |
String |
required
希望被分享出去的窗口 ID |
removeAllIncludedShareWindow()
将全部窗口从屏幕分享的包含列表中移除
该接口只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效。
即只有在分享窗口内容时,额外包含指定窗口的功能才生效。
enableCustomAudioCapture(enable)
启用音频自定义采集模式
开启该模式后,SDK 不在运行原有的音频采集流程,即不再继续从麦克风采集音频数据,而是只保留音频编码和发送能力。
您需要通过 sendCustomAudioData
不断地向 SDK 塞入自己采集的音频数据。
注意:
- 音频自定义采集与 SDK 默认的麦克疯音频采集互斥。因此,调用
enableCustomAudioCapture(true)
开启音频自定义采集前,需要先调用stopLocalAudio
接口关闭默认的麦克风音频上行,否则不生效;调用enableCustomAudioCapture(false)
关闭自定义采集后,要调用startLocalAudio
接口才能开启 SDK 默认的麦克风音频采集。 - 由于回声抵消(AEC)需要严格的控制声音采集和播放的时间,所以开启自定义音频采集后,AEC 能力可能会失效。
Parameters:
Name | Type | Description |
---|---|---|
enable |
Boolean |
required
是否启用,默认值:false。 |
sendCustomAudioData(frame)
向 SDK 投送自己采集的音频数据
参数 TRTCAudioFrame
推荐下列填写方式(其他字段不需要填写):
- audioFormat:音频数据格式,仅支持 TRTCAudioFrameFormatPCM。
- data:音频帧 buffer。音频帧数据只支持 PCM 格式,支持[5ms ~ 100ms]帧长,推荐使用 20ms 帧长,长度计算方法:【48000采样率、单声道的帧长度:48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。
- sampleRate:采样率,支持:16000、24000、32000、44100、48000。
- channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。
- timestamp:时间戳,单位为毫秒(ms),请使用音频帧在采集时被记录下来的时间戳(可以在采集到一帧音频帧之后,通过调用
generateCustomPTS
获取时间戳)。
注意:请您精准地按每帧时长的间隔调用本接口,数据投送间隔不均匀时极易触发声音卡顿。
Parameters:
Name | Type | Description |
---|---|---|
frame |
TRTCAudioFrame |
required
音频数据 |
enableMixExternalAudioFrame(enablePublish, enablePlayout)
启用/关闭自定义音轨
开启后,您可以通过本接口向 SDK 混入一条自定义的音轨。通过两个布尔型参数,您可以控制该音轨是否要在远端和本地播放。
注意: 如果您指定参数 enablePublish 和 enablePlayout 均为 false,代表完全关闭您的自定义音轨。
Parameters:
Name | Type | Description |
---|---|---|
enablePublish |
Boolean |
required
控制混入的音轨是否要在远端播放,默认值:false。 |
enablePlayout |
Boolean |
required
控制混入的音轨是否要在本地播放,默认值:false。 |
mixExternalAudioFrame(frame) → {Number}
向 SDK 混入自定义音轨
调用该接口之前,您需要先通过 enableMixExternalAudioFrame
开启自定义音轨,之后就可以通过本接口将自己的音轨以 PCM 格式混入到 SDK 中。
理想情况下,我们期望您的代码能够以非常均匀的速度向 SDK 提供音轨数据。但我们也非常清楚,完美的调用间隔是一个巨大的挑战。
所以 SDK 内部会开启一个音轨数据的缓冲区,该缓冲区的作用类似一个“蓄水池”,它能够暂存您传入的音轨数据,平抑由于接口调用间隔的抖动问题。
本接口的返回值代表这个音轨缓冲区的大小,单位是毫秒(ms),比如:如果该接口返回 50,则代表当前的音轨缓冲区有 50ms 的音轨数据。因此只要您在 50ms 内再次调用本接口,SDK 就能保证您混入的音轨数据是连续的。
当您调用该接口后,如果发现返回值 > 100ms,则可以等待一帧音频帧的播放时间之后再次调用;如果返回值 < 100ms,则代表缓冲区比较小,您可以再次混入一些音轨数据以确保音轨缓冲区的大小维持在“安全水位”以上。
参数 TRTCAudioFrame
推荐下列填写方式(其他字段不需要填写):
- data:音频帧 buffer。音频帧数据只支持 PCM 格式,支持[5ms ~ 100ms]帧长,推荐使用 20ms 帧长,长度计算方法:【48000采样率、单声道的帧长度:48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。
- sampleRate:采样率,支持:16000、24000、32000、44100、48000。
- channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。
- timestamp:时间戳,单位为毫秒(ms),请使用音频帧在采集时被记录下来的时间戳(可以在获得一帧音频帧之后,通过调用
generateCustomPTS
获得时间戳)。
注意:
- 混入自定义音轨,需要有上行音频流驱动,支持的上行音频流包括:
- SDK 默认采集的麦克风音频流,调用
startLocalAudio
接口开启。
- SDK 默认采集的麦克风音频流,调用
- 请您精准地按每帧时长的间隔调用本接口,数据投送间隔不均匀时极易触发声音卡顿。
Parameters:
Name | Type | Description |
---|---|---|
frame |
TRTCAudioFrame |
required
音频数据 |
Returns:
- 音频缓冲时长,单位:ms。< 0 错误(-1 未启用 mixExternalAudioFrame)
- Type
- Number
setMixExternalAudioVolume(publishVolume, playoutVolume)
设置推流时混入外部音频的推流音量和播放音量
Parameters:
Name | Type | Description |
---|---|---|
publishVolume |
Number |
required
设置的推流音量大小,范围0 - 100,-1表示不改变。 |
playoutVolume |
Number |
required
设置的播放音量大小,范围0 - 100,-1表示不改变。 |
generateCustomPTS() → {Number}
生成自定义采集时的时间戳
本接口仅适用于自定义采集模式,用于解决音视频帧的采集时间(capture time)和投送时间(send time)不一致所导致的音画不同步问题。
当您通过 sendCustomAudioData
等接口进行自定义视频或音频采集时,请按照如下操作使用该接口:
- 首先,在采集到一帧视频或音频帧时,通过调用本接口获得当时的 PTS 时间戳。
- 之后可以将该视频或音频帧送入您使用的前处理模块(如第三方美颜组件,或第三方音效组件)。
- 在真正调用
sendCustomAudioData
进行投送时,请将该帧在采集时记录的 PTS 时间戳赋值给TRTCVideoFrame
或TRTCAudioFrame
中的 timestamp 字段。
Returns:
- 时间戳(单位:ms)
- Type
- Number
setAudioFrameCallback(callback)
设置音频数据自定义回调
设置该回调之后,SDK 内部会把音频数据(PCM 格式)回调出来,包括: {onCapturedAudioFrame}:本地麦克风采集到的音频数据回调
- {onLocalProcessedAudioFrame}:本地采集并经过音频模块前处理后的音频数据回调
- {onPlayAudioFrame}:混音前的每一路远程用户的音频数据
- {onMixedPlayAudioFrame}:将各路音频混合之后并最终要由系统播放出的音频数据回调
- {onMixedAllAudioFrame}:SDK 所有音频混合后的音频数据(包括采集到的和待播放的)
注意: 设置回调为空即代表停止自定义音频回调,反之,设置回调不为空则代表启动自定义音频回调。
Example
import TRTCCloud from 'trtc-electron-sdk';
const rtcCloud = TRTCCloud.getTRTCShareInstance();
onCapturedAudioFrame(frame: TRTCAudioFrame) {}
onLocalProcessedAudioFrame(frame: TRTCAudioFrame) {}
onPlayAudioFrame(frame: TRTCAudioFrame, userId: string) {}
onMixedPlayAudioFrame(frame: TRTCAudioFrame) {}
onMixedAllAudioFrame(frame: TRTCAudioFrame) {}
// 设置音频数据自定义回调
rtcCloud.setAudioFrameCallback({
onCapturedAudioFrame: onCapturedAudioFrame,
onLocalProcessedAudioFrame: onLocalProcessedAudioFrame,
onPlayAudioFrame: onPlayAudioFrame,
onMixedPlayAudioFrame: onMixedPlayAudioFrame,
onMixedAllAudioFrame: onMixedAllAudioFrame,
});
// 取消音频数据自定义回调
rtcCloud.setAudioFrameCallback({
onCapturedAudioFrame: null,
onLocalProcessedAudioFrame: null,
onPlayAudioFrame: null,
onMixedPlayAudioFrame: null,
onMixedAllAudioFrame: null,
});
Parameters:
Name | Type | Description |
---|---|---|
callback |
TRTCAudioFrameCallback |
required
音频数据自定义回调对象。 |
sendCustomCmdMsg(cmdId, msg, reliable, ordered) → {Boolean}
发送自定义消息给房间内所有用户
该接口可以借助音视频数据通道向当前房间里的其他用户广播您自定义的数据,但因为复用了音视频数据通道, 请务必严格控制自定义消息的发送频率和消息体的大小,否则会影响音视频数据的质量控制逻辑,造成不确定性的问题。
注意:本接口有以下限制:
- 发送消息到房间内所有用户,每秒最多能发送30条消息。
- 每个包最大为1KB,超过则很有可能会被中间路由器或者服务器丢弃。
- 每个客户端每秒最多能发送总计8KB数据。
- 将 reliable 和 ordered 同时设置为 true 或 false,暂不支持交叉设置。
- 强烈建议不同类型的消息使用不同的 cmdID,这样可以在要求有序的情况下减小消息时延。
Parameters:
Name | Type | Description |
---|---|---|
cmdId |
Number |
required
消息 ID,取值范围为1 - 10 |
msg |
String |
required
待发送的消息,最大支持1KB(1000字节)的数据大小 |
reliable |
Boolean |
required
是否可靠发送,可靠发送的代价是会引入一定的延时,因为接收端要暂存一段时间的数据来等待重传 |
ordered |
Boolean |
required
是否要求有序,即是否要求接收端接收的数据顺序和发送端发送的顺序一致,这会带来一定的接收延时,因为在接收端需要暂存并排序这些消息 |
Returns:
true:消息已经发出;false:消息发送失败
- Type
- Boolean
sendSEIMsg(msg, repeatCount) → {Boolean}
将小数据量的自定义数据嵌入视频帧中
跟 sendCustomCmdMsg 的原理不同,sendSEIMsg 是将数据直接塞入视频数据头中。因此,即使视频帧被旁路到了直播 CDN 上, 这些数据也会一直存在。但是由于要把数据嵌入视频帧中,所以数据本身不能太大,推荐几个字节就好。
最常见的用法是把自定义的时间戳(timstamp)用 sendSEIMsg 嵌入视频帧中,这种方案的最大好处就是可以实现消息和画面的完美对齐。
注意:本接口有以下限制:
- 数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始带在视频帧中发送。
- 发送消息到房间内所有用户,每秒最多能发送30条消息(与 sendCustomCmdMsg 共享限制)。
- 每个包最大为1KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与 sendCustomCmdMsg 共享限制)。
- 每个客户端每秒最多能发送总计8KB数据(与 sendCustomCmdMsg 共享限制)。
- 若指定多次发送(repeatCount>1),则数据会被带在后续的连续 repeatCount 个视频帧中发送出去,同样会导致视频码率增大。
- 如果 repeatCount>1,多次发送,接收消息 onRecvSEIMsg 回调也可能会收到多次相同的消息,需要去重。
Parameters:
Name | Type | Description |
---|---|---|
msg |
String |
required
待发送的数据,最大支持1kb(1000字节)的数据大小 |
repeatCount |
Number |
required
发送数据次数 |
Returns:
true:消息已通过限制,等待后续视频帧发送;false:消息被限制发送
- Type
- Boolean
playBGM(path)
废弃接口: 启动播放背景音乐
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 startPlayMusic 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
path |
String |
required
音乐文件路径 |
stopBGM()
废弃接口: 停止播放背景音乐
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 stopPlayMusic 接口替代。
pauseBGM()
废弃接口: 暂停播放背景音乐
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 pausePlayMusic 接口替代。
resumeBGM()
废弃接口: 继续播放背景音乐
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 resumePlayMusic 接口替代。
getBGMDuration(path) → {Number}
废弃接口: 获取背景音乐文件总时长,单位毫秒
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 getMusicDurationInMS 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
path |
String |
required
音乐文件路径 |
Returns:
成功返回时长,失败返回-1
- Type
- Number
setBGMPosition(pos)
废弃接口: 设置背景音乐播放进度
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 seekMusicToPosInTime 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
pos |
Number |
required
单位毫秒 |
setBGMVolume(volume)
废弃接口: 设置背景音乐的音量大小,播放背景音乐混音时使用,用来控制背景音音量大小
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setAllMusicVolume 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,100为正常音量,取值范围为0 - 200。 |
setBGMPlayoutVolume(volume)
废弃接口: 设置背景音乐本地播放音量的大小
播放背景音乐混音时使用,用来控制背景音乐在本地播放时的音量大小。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setMusicPlayoutVolume 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,100为正常音量,取值范围为0 - 100;默认值:100 |
setBGMPublishVolume(volume)
废弃接口: 设置背景音乐远端播放音量的大小
播放背景音乐混音时使用,用来控制背景音乐在远端播放时的音量大小。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setMusicPublishVolume 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,100为正常音量,取值范围为0 - 100;默认值:100 |
startSystemAudioLoopback(path)
打开系统声音采集
开启后可以采集整个操作系统的播放声音(path 为空)或某一个播放器(path 不为空)的声音, 并将其混入到当前麦克风采集的声音中一起发送到云端。
Parameters:
Name | Type | Description |
---|---|---|
path |
String |
required
不传 path 或为 null,代表采集整个操作系统的声音;path 填写 exe 程序(如 QQ音乐)所在的路径,将会启动此程序并只采集此程序的声音。 |
stopSystemAudioLoopback()
关闭系统声音采集
setSystemAudioLoopbackVolume(volume)
设置系统声音采集的音量
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,取值范围为0 - 100。 |
setMusicObserver(observer)
设置背景音乐的事件回调监听
请在播放背景音乐之前使用该接口设置播放事件回调,以便感知背景音乐的播放进度。
Parameters:
Name | Type | Description |
---|---|---|
observer |
TRTCMusicPlayObserver |
required
背景音乐播放事件回调 |
startPlayMusic(musicParam, observeropt)
开始播放背景音乐
Example
import TRTCCloud, { AudioMusicParam } from 'trtc-electron-sdk';
const rtcCloud = TRTCCloud.getTRTCShareInstance();
// 设置背景音乐播放事件监听
rtcCloud.setMusicObserver({
onStart: (id: number, errCode: number) => {
console.log(`onStart, id: ${id}, errorCode: ${errCode}`);
},
onPlayProgress: (id: number, curPtsMS: number, durationMS: number) => {
console.log(`onPlayProgress, id: ${id}, curPtsMS: ${curPtsMS}, durationMS: ${durationMS}`);
},
onComplete: (id: number, errCode: number) => {
console.log(`onComplete, id: ${id}, errCode: ${errCode}`);
}
});
// 开始播放背景音乐
const params = new AudioMusicParam();
params.id = 1;
params.path = 'path';
params.publish = true;
rtcCloud.startPlayMusic(params);
Parameters:
Name | Type | Description |
---|---|---|
musicParam |
AudioMusicParam |
required
背景音乐参数 |
observer |
TRTCMusicPlayObserver |
该可选入参已经废弃。 播放音乐事件回调监听,请使用 |
stopPlayMusic(id)
停止播放背景音乐
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
required
音乐 ID |
pausePlayMusic(id)
暂停播放背景音乐
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
required
音乐 ID |
resumePlayMusic(id)
恢复播放背景音乐
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
required
音乐 ID |
getMusicCurrentPosInMS(id) → {Promise.<number>|Number}
获取背景音乐的播放进度(单位:毫秒)
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
required
音乐 ID。 |
Returns:
成功返回当前播放时间,单位:毫秒,失败返回 -1。
- Type
- Promise.<number> | Number
getMusicDurationInMS(path) → {Number}
获取背景音乐文件总时长,单位毫秒
Parameters:
Name | Type | Description |
---|---|---|
path |
String |
required
音乐文件路径 |
Returns:
成功返回时长,失败返回-1
- Type
- Number
seekMusicToPosInTime(id, pts)
设置背景音乐播放进度
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
required
音乐 ID |
pts |
Number |
required
单位: 毫秒 |
setAllMusicVolume(volume)
设置所有背景音乐的本地音量和远端音量的大小
该接口可以设置所有背景音乐的本地音量和远端音量。
- 本地音量:即主播本地可以听到的背景音乐的音量大小。
- 远端音量:即观众端可以听到的背景音乐的音量大小。
注意:如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,100为正常音量,取值范围为0 - 200。 |
setMusicPlayoutVolume(id, volume)
设置背景音乐本地播放音量的大小
播放背景音乐混音时使用,用来控制背景音乐在本地播放时的音量大小。
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
required
音乐 ID |
volume |
Number |
required
音量大小,100为正常音量,取值范围为0 - 100;默认值:100 |
setMusicPublishVolume(id, volume)
设置背景音乐远端播放音量的大小
播放背景音乐混音时使用,用来控制背景音乐在远端播放时的音量大小。
Parameters:
Name | Type | Description |
---|---|---|
id |
Number |
required
音乐 ID |
volume |
Number |
required
音量大小,100为正常音量,取值范围为0 - 100;默认值:100 |
enableVoiceEarMonitor(enable)
开启耳返
主播开启耳返后,可以在耳机里听到麦克风采集到的自己发出的声音,该特效适用于主播唱歌的应用场景中。
需要您注意的是,由于蓝牙耳机的硬件延迟非常高,所以在主播佩戴蓝牙耳机时无法开启此特效,请尽量在用户界面上提示主播佩戴有线耳机。同时也需要注意,并非所有的手机开启此特效后都能达到优秀的耳返效果,我们已经对部分耳返效果不佳的手机屏蔽了该特效。
Parameters:
Name | Type | Description |
---|---|---|
enable |
Boolean |
required
是否开启耳返。 |
setVoiceEarMonitorVolume(volumn)
设置耳返音量
通过该接口您可以设置耳返特效中声音的音量大小。
如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
Parameters:
Name | Type | Description |
---|---|---|
volumn |
Number |
required
音量大小,取值范围为0 - 100,默认值:100。 |
setVoiceCaptureVolume(volume)
设置语音音量
该接口可以设置语音音量的大小,一般配合音乐音量的设置接口 setAllMusicVolume 协同使用,用于调谐语音和音乐在混音前各自的音量占比。
如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,取值范围为0 - 100,默认值:100。 |
setVoicePitch(pitch)
设置语音音调
该接口可以设置语音音调,用于实现变调不变速的目的。
Parameters:
Name | Type | Description |
---|---|---|
pitch |
Number |
required
音调,取值范围为-1.0f~1.0f,默认值:0.0f。 |
setVoiceReverbType(type)
设置人声的混响效果
通过该接口您可以设置人声的混响效果,具体特效请参见枚举定义。
注意:设置的效果在退出房间后会自动失效,如果下次进房还需要对应特效,需要调用此接口再次进行设置。
Parameters:
Name | Type | Description |
---|---|---|
type |
TRTCVoiceReverbType |
required
人声的混响效果类型。 |
setVoiceChangerType(type)
设置人声的变声效果
通过该接口您可以设置人声的变声效果,具体特效请参见枚举定义
注意:设置的效果在退出房间后会自动失效,如果下次进房还需要对应特效,需要调用此接口再次进行设置
Parameters:
Name | Type | Description |
---|---|---|
type |
TRTCVoiceChangerType |
required
人声的变声效果类型 。 |
playAudioEffect(effect)
废弃接口: 播放音效
每个音效都需要您指定具体的 ID,您可以通过该 ID 对音效的开始、停止、音量等进行设置。 若您想同时播放多个音效,请分配不同的 ID 进行播放。因为使用同一个 ID 播放不同音效,SDK 将会停止上一个 ID 对应的音效播放,再启动新的音效播放。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 startPlayMusic 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
effect |
TRTCAudioEffectParam |
required
音效 |
Throws:
setAudioEffectVolume(effectId, volume)
废弃接口: 设置音效音量
注意:会覆盖通过 setAllAudioEffectsVolume 指定的整体音效音量。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setMusicPublishVolume, setMusicPlayoutVolume 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
effectId |
Number |
required
音效 ID |
volume |
Number |
required
音量大小,取值范围为0 - 100;默认值:100 |
stopAudioEffect(effectId)
废弃接口: 停止音效
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 stopPlayMusic 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
effectId |
Number |
required
音效 ID |
stopAllAudioEffects()
废弃接口: 停止所有音效
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃
setAllAudioEffectsVolume(volume)
废弃接口: 设置所有音效的音量
注意:该操作会覆盖通过 setAudioEffectVolume 指定的单独音效音量。
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setAllMusicVolume 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
volume |
Number |
required
音量大小,取值范围为0 - 100;默认值:100 |
pauseAudioEffect(effectId)
废弃接口: 暂停音效
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 pausePlayMusic 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
effectId |
Number |
required
音效 ID |
resumeAudioEffect(effectId)
废弃接口: 恢复音效
- Deprecated:
-
- 从 TRTCSDK 8.0 后该接口已被废弃,请使用 resumePlayMusic 接口替代。
Parameters:
Name | Type | Description |
---|---|---|
effectId |
Number |
required
音效 ID |
startSpeedTest(params)
开始进行网络测速(视频通话期间请勿测试,以免影响通话质量)
测速结果将会用于优化 SDK 接下来的服务器选择策略,因此推荐您在用户首次通话前先进行一次测速,这将有助于我们选择最佳的服务器。 同时,如果测试结果非常不理想,您可以通过醒目的 UI 提示用户选择更好的网络。
注意:
- 测速过程将产生少量的基础服务费用,详见 计费概述 > 基础服务 文档说明。
- 请在进入房间前进行网速测试,在房间中网速测试会影响正常的音视频传输效果,而且由于干扰过多,网速测试结果也不准确。
- 同一时间只允许一项网速测试任务运行。
Parameters:
Name | Type | Description | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
TRTCSpeedTestParams |
required
测速参数 Properties
|
Returns:
接口调用结果,< 0:失败
stopSpeedTest()
停止网络测速
startCameraDeviceTest(view)
开始进行摄像头测试
会触发 onFirstVideoFrame 回调接口
注意:在测试过程中可以使用 setCurrentCameraDevice 接口切换摄像头。
Parameters:
Name | Type | Description |
---|---|---|
view |
HTMLElement |
required
承载预览画面的 DOM |
stopCameraDeviceTest()
停止摄像头测试
startMicDeviceTest(interval, playbackopt)
开始进行麦克风测试
回调接口 onTestMicVolume 获取测试数据
该方法测试麦克风是否能正常工作,volume 的取值范围为0 - 100。
Parameters:
Name | Type | Description |
---|---|---|
interval |
Number |
required
反馈音量提示的时间间隔(ms),建议设置到大于 200 毫秒 |
playback |
Boolean |
是否开启回播麦克风声音,开启后用户测试麦克风时会听到自己的声音,如果不传递playback参数,则默认为false。 |
stopMicDeviceTest()
停止麦克风测试
startSpeakerDeviceTest(testAudioFilePath)
开始进行扬声器测试
回调接口 onTestSpeakerVolume 获取测试数据
该方法播放指定的音频文件测试播放设备是否能正常工作。如果能听到声音,说明播放设备能正常工作。
Parameters:
Name | Type | Description |
---|---|---|
testAudioFilePath |
String |
required
音频文件的绝对路径,路径字符串使用 UTF-8 编码格式,支持文件格式:WAV、MP3 |
stopSpeakerDeviceTest()
停止扬声器测试
getSDKVersion() → {String}
获取 SDK 版本信息
Returns:
UTF-8 编码的版本号。
- Type
- String
setLogLevel(level)
设置 Log 输出级别
Parameters:
Name | Type | Description |
---|---|---|
level |
TRTCLogLevel |
required
Log 输出等级,默认值:TRTCLogLevelNone
|
setConsoleEnabled(enabled)
启用或禁用控制台日志打印
Parameters:
Name | Type | Description |
---|---|---|
enabled |
Boolean |
required
指定是否启用,默认为禁止状态 |
setLogCompressEnabled(enabled)
启用或禁用 Log 的本地压缩
开启压缩后,Log 存储体积明显减小,但需要腾讯云提供的 Python 脚本解压后才能阅读。 禁用压缩后,Log 采用明文存储,可以直接用记事本打开阅读,但占用空间较大。
Parameters:
Name | Type | Description |
---|---|---|
enabled |
Boolean |
required
指定是否启用,默认为禁止状态 |
setLogDirPath(path)
设置日志保存路径
通过该接口您可以更改 SDK 本地日志的默认存储路径,SDK 默认的本地日志的存储位置:
- windows 日志文件默认保存在 C:/Users/[系统用户名]/AppData/Roaming/liteav/log,即 %appdata%/liteav/log 下,如需修改,必须在所有方法前调用。
- mac 日志文件默认保存在 sandbox Documents/log 下,如需修改,必须在所有方法前调用。
注意:请务必在所有其他接口之前调用,并且保证您指定的目录是存在的,并且您的应用程序拥有对该目录的读写权限。
Parameters:
Name | Type | Description |
---|---|---|
path |
String |
required
存储日志的文件夹,例如 "D:\Log",UTF-8 编码 |
setLogCallback(callback)
设置日志回调
注意: 如何您设置了日志回调,SDK的日志信息将会回调给您,您需要自行在代码中处理。当 callback 为 null 时取消日志回调,SDK 将不会再回调日志。
Parameters:
Name | Type | Description |
---|---|---|
callback |
function | null |
required
日志回调。 Function 的参数格式为 (log:string, level:TRTCLogLevel, module:string) => void。 |
callExperimentalAPI(jsonStr)
调用实验性 API 接口
注意:该接口用于调用一些实验性功能
Parameters:
Name | Type | Description |
---|---|---|
jsonStr |
String |
required
接口及参数描述的 JSON 字符串 |
setRenderMode(mode)
废弃接口:选择绘制的模式 (webgl/yuvcanvs/)
- Deprecated:
-
- 从 10.3.403 版本该接口被废弃。SDK 内部会根据视频流数据,自动选择合适的渲染方式,可能的渲染方式有 WebGL、Canvas 2D、video 标签。调用该接口不再修改视频的渲染方式。
Parameters:
Name | Type | Default | Description |
---|---|---|---|
mode |
Number |
1
|
required
|
setPluginParams(type, config)
设置自定义插件配置参数
调用 addPlugin
接口添加插件前,需要先调用本接口设置配置参数,否则插件不会启动、运行。
Parameters:
Name | Type | Description |
---|---|---|
type |
TRTCPluginType |
required
插件类型 |
config |
TRTCVideoProcessPluginOptions | TRTCMediaEncryptDecryptPluginOptions | TRTCAudioProcessPluginOptions |
required
插件配置参数 |
addPlugin(options) → {TRTCPluginInfo}
添加插件
Parameters:
Name | Type | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
required
插件信息 Properties
|
Returns:
- Type
- TRTCPluginInfo
removePlugin(id, deviceIdopt)
删除插件
Parameters:
Name | Type | Description |
---|---|---|
id |
String |
required
插件ID,必填。 |
deviceId |
String |
摄像头设备 ID,开启多个摄像头美颜时必填。 |
setPluginCallback(pluginCallback)
注册插件事件监听,全局只需要调用一次
Parameters:
Name | Type | Description |
---|---|---|
pluginCallback |
function |
required
插件事件回调函数
注意:错误码:-1000 到 1000 是 SDK 预留错误码,用户自定义插件中,请使用这个范围以外的错误码。 |
initPluginManager(optionsopt)
初始化插件管理器
- Deprecated:
-
- 请使用
setPluginParams
接口
启动美颜插件管理器,并设置视频在美颜处理时的像素格式和数据传递方式。
- 请使用
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
options |
视频预处理参数,非必填。 Properties
|
destroyPluginManager()
销毁插件管理
- Deprecated:
-
- 请使用
setPluginParams
接口
- 请使用
getMediaMixingManager() → {TRTCMediaMixingManager|null}
获取本地混流管理器
注意:
1.目前仅支持 Windows
操作系统。
2.本地混流管理器必须在 getTRTCShareInstance
创建 TRTCCloud 实例时传入 isIPCMode
为 true
才支持,否则返回 null。
Returns:
- Type
- TRTCMediaMixingManager | null