TRTCCloud

TRTCCloud

腾讯云视频通话功能的主要接口类

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
Name Type Description
networkProxy Record.<string, any>

网络代理参数,可选。为空时,默认不开启网络代理。

isIPCMode Boolean

是否跨进程模式,跨进程模式支持本地混流且混流视频采用原生窗口渲染。默认:false,不开启。

Methods

(static) getTRTCShareInstance(configopt) → {TRTCCloud}

创建 TRTCCloud 主实例对象(单例模式)

Parameters:
Name Type Description
config TRTCInitConfig

初始化参数,可选

Properties
Name Type Description
networkProxy Record.<string, any>

网络代理参数,可选。为空时,默认不开启网络代理。

isIPCMode Boolean

是否跨进程模式,跨进程模式支持本地混流且混流视频采用原生窗口渲染。默认:false,不开启。

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 电台]等。

注意:

  1. 当 scene 选择为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom 时,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。
  2. 不管进房是否成功,enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 前再次调用 enterRoom 函数会导致不可预期的错误问题。
Parameters:
Name Type Description
params TRTCParams required

进房参数

Properties
Name Type Description
sdkAppId Number required

应用标识(必填)

userId String required

用户标识(必填)

userSig String required

用户签名(必填)

roomId Number required

房间号码, roomId 和 strRoomId 必须填一个, 若您选用 strRoomId,则 roomId 需要填写为0。

strRoomId String required

字符串房间号码 [选填],在同一个房间内的用户可以看到彼此并进行视频通话, roomId 和 strRoomId 必须填一个。若两者都填,则优先选择 roomId。

role TRTCRoleType required

直播场景下的角色,默认值:主播

  • TRTCRoleAnchor: 主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频。
  • TRTCRoleAudience: 观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限。
privateMapKey String required

房间签名(非必填)

businessInfo String required

业务数据(非必填)

streamId String required

自定义 CDN 播放地址(非必填)

userDefineRecordId String required

设置云端录制完成后的回调消息中的 "userdefinerecordid" 字段内容,便于您更方便的识别录制回调。

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

房间切换参数,请参考 TRTCSwitchRoomParam

接口调用结果会通过 onSwitchRoom(errCode, errMsg) 事件回调通知给您。

switchRole(role)

切换角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom)

在直播场景下,一个用户可能需要在“观众”和“主播”之间来回切换。 您可以在进房前通过 TRTCParams 中的 role 字段确定角色,也可以通过 switchRole 在进房后切换角色。

Parameters:
Name Type Description
role TRTCRoleType required

目标角色,默认为主播

  • TRTCRoleAnchor: 主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频。
  • TRTCRoleAudience: 观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限。

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:需要调用 muteRemoteAudio 进行请求或取消。默认值:true

autoRecvVideo Boolean required

true:自动接收视频数据;false:需要调用 startRemoteView/stopRemoteView 进行请求或取消。默认值:true

startPublishMediaStream(target, params, config)

开始发布媒体流

该接口会向 TRTC 服务器发送指令,要求其将当前用户的音视频流转推/转码到直播 CDN 或者回推到 TRTC 房间中,您可以通过 TRTCPublishTarget 配置中的 TRTCPublishMode 指定具体的发布模式。

注意:

  1. SDK 会通过回调 onStartPublishMediaStream 带给您后台启动的任务标识(即 taskId)。
  2. 同一个任务(TRTCPublishMode 与 TRTCPublishCdnUrl 均相同)仅支持启动一次。若您后续需要更新或者停止该项任务,需要记录并使用返回的 taskId,通过 updatePublishMediaStream 或者 stopPublishMediaStream 来操作。
  3. target 支持同时配置多个 CDN URL(最多同时 10 个)。若您的同一个转推/转码任务需要发布至多路 CDN,则仅需要在 target 中配置多个 CDN URL 即可。同一个转码任务即使有多个转推地址,对应的转码计费仍只收取一份。
  4. 使用时需要注意不要多个任务同时往相同的 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 启动的媒体流

注意:

  1. 您可以通过本接口来更新发布的 CDN URL(支持增删,最多同时 10 个),但您使用时需要注意不要多个任务同时往相同的 URL 地址推送,以免引起异常推流状态。
  2. 您可以通过 taskId 来更新调整转推/转码任务。例如在 pk 业务中,您可以先通过 startPublishMediaStream 发起转推,接着在主播发起 pk 时,通过 taskId 和本接口将转推更新为转码任务。此时,CDN 播放将连续并且不会发生断流(您需要保持媒体流编码输出参数 param 一致)。
  3. 同一个任务不支持纯音频、音视频、纯视频之间的切换。
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

通过回调 onStartPublishMediaStream 带给您后台启动的任务标识(即 taskId)

target TRTCPublishTarget | null required

媒体流发布的目标地址,支持转推/转码到腾讯或者第三方 CDN,也支持转码回推到 TRTC 房间中。

params TRTCStreamEncoderParam | null required

媒体流编码输出参数,转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码输出参数。在转推时,为了更好的转推稳定性和 CDN 兼容性,也建议您进行配置。

config TRTCStreamMixingConfig | null required

媒体流转码配置参数,转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码配置参数。转推模式下则无效。

stopPublishMediaStream(taskId)

停止发布媒体流

该接口会向 TRTC 服务器发送指令,停止通过 startPublishMediaStream 启动的媒体流

注意:

  1. 若您的业务后台并没有保存该 taskId,在您的主播异常退房重进后,如果您需要重新获取 taskId,您可以再次调用 startPublishMediaStream 启动任务。此时 TRTC 后台会返回任务启动失败,同时带给您上一次启动的 taskId
  2. 若 taskId 填空字符串,将会停止该用户所有通过 startPublishMediaStream 启动的媒体流,如果您只启动了一个媒体流或者想停止所有通过您启动的媒体流,推荐使用这种方式。
Parameters:
Name Type Description
taskId String required

通过回调 onStartPublishMediaStream 带给您后台启动的任务标识(即 taskId)

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
Name Type Description
appId Number required

腾讯云直播服务的 AppID

bizId Number required

腾讯云直播服务的 bizid

url String required

指定该路音视频流在第三方直播服务商的推流地址,推流 URL 必须为 RTMP 格式,必须符合您的目标直播服务商的规范要求,否则目标服务商会拒绝来自 TRTC 后台服务的推流请求。

streamId String required

需要转推的 streamId,默认值:空值。如果不填写,则默认转推调用者的旁路流。

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
Name Type Description
mode TRTCTranscodingConfigMode required

转码 config 模式

appId Number required

腾讯云直播 AppID

bizId Number required

腾讯云直播 bizid

videoWidth Number required

最终转码后的视频分辨率的宽度(px)

videoHeight Number required

最终转码后的视频分辨率的高度(px)

videoBitrate Number required

最终转码后的视频分辨率的码率(kbps)

videoFramerate Number required

最终转码后的视频分辨率的帧率(FPS)

videoGOP Number required

最终转码后的视频分辨率的关键帧间隔(也被称为 GOP),单位秒

audioSampleRate Number required

最终转码后的音频采样率

audioBitrate Number required

最终转码后的音频码率,单位:kbps

audioChannels Number required

最终转码后的音频声道数

audioCodec Number required

指定云端转码的输出流音频编码类型,默认为0

backgroundColor String required

混合后画面的底色颜色,格式为十六进制数字,比如:“0x61B9F1” 代表 RGB 分别为(97,158,241)

backgroundImage String required

混合后画面的背景图

streamId String required

输出到 CDN 上的直播流 ID

videoSeiParams String required

混流 SEI 参数,默认不填写

mixUsersArray Array.<TRTCMixUser> required

每一路子画面的位置信息

Properties
Name Type Description
userId String required

参与混流的 userId

roomId String required

参与混流的 roomId,跨房流传入的实际 roomId。当前房间流,请传入空字符串(roomId = '')。

rect Rect required

图层位置坐标以及大小,左上角为坐标原点(0,0) (绝对像素值)

Properties
Name Type Description
left Number required

图层位置的左坐标

top Number required

图层位置的上坐标

right Number required

图层位置的右坐标

bottom Number required

图层位置的下坐标

zOrder Number required

图层层次(1 - 15)不可重复

pureAudio Boolean required

是否纯音频

streamType TRTCVideoStreamType required

TRTCVideoStreamTypeBig:主路画面,一般用于摄像头;TRTCVideoStreamTypeSub:辅路画面,一般用于屏幕分享。

inputType TRTCMixInputType required

指定该路流的混合内容(只混音频、只混视频、混合音视频、混入水印)。TRTCMixInputTypePureAudio:只混音频;TRTCMixInputTypePureVideo:只混视频; TRTCMixInputTypeAudioVideo:混合音视频;TRTCMixInputTypeWatermark:混入水印。

renderMode Number required

该画面在输出时的显示模式。视频流默认为0。0为裁剪,1为缩放,2为缩放并显示黑底。

soundLevel Number required

该路音频参与混音时的音量等级(取值范围:0 - 100),默认值:100。

image String required

占位图是指当对应 userId 混流内容为纯音频时,混合后的画面中显示的是占位图片。水印图是指一张贴在混合后画面中的半透明图片,这张图片会一直覆盖于混合后的画面上。当指定 inputType 为 TRTCMixInputTypePureAudio 时,image 为占位图,此时需要您指定 userId。当指定 inputType 为 TRTCMixInputTypeWatermark 时,image 为水印图,此时不需要您指定 userId。

startLocalPreview(views)

启动本地摄像头采集和预览

这个接口会启动默认的摄像头,可以通过 setCurrentCameraDevice() 接口选用其它摄像头 当开始渲染首帧摄像头画面时,您会收到 TRTCCallback 中的 onFirstVideoFrame('') 回调。

Parameters:
Name Type Description
views Array.<HTMLElement> | HTMLElement | null required

承载预览画面单个的 HTML 块节点或者 HTML 块节点数组

  • 如果传入 null 则不预览摄像头画面,但不影响摄像头采集

stopLocalPreview()

停止本地摄像头采集和预览

updateLocalView(views)

修改本地摄像头预览的 HTML 元素

本接口用于切换显示区域的交互场景中,修改本地摄像头预览的 HTML 元素。

注意:必须在调用 startLocalPreview() 接口开启本地摄像头采集后,调用本接口才会生效。

  • 如果用户调用 startLocalPreview(views) 接口开启了摄像头采集,则通过此接口可以修改摄像头采集视频渲染的 HTML 元素。
  • 如果用户调用 startLocalPreview(null) 接口开启了摄像头采集,但未开启本地预览,支持调用此接口开启预览。
Parameters:
Name Type Description
views Array.<HTMLElement> | HTMLElement | null required

承载预览画面单个的 HTML 块节点或者 HTML 块节点数组,传入 null 结束本地摄像头采集视频的预览。

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 块节点数组

  • 如果传入 null 则不预览远端用户画面,但不影响拉取远端视频,适合需要自定义渲染的场景
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 块节点数组,传入 null 结束远端视频的渲染

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
Name Type Description
videoResolution TRTCVideoResolution required

视频分辨率

resMode TRTCVideoResolutionMode required

分辨率模式(横屏分辨率 - 竖屏分辨率)

  • TRTCVideoResolutionModeLandscape: 横屏分辨率
  • TRTCVideoResolutionModePortrait : 竖屏分辨率
videoFps Number required

视频采集帧率

videoBitrate Number required

视频上行码率

minVideoBitrate Number required

视频最小码率

enableAdjustRes Boolean required

是否允许动态调整分辨率,默认值:关闭。

setNetworkQosParam(params)

设置网络流控相关参数

该设置决定了 SDK 在各种网络环境下的调控策略(例如弱网下是“保清晰”还是“保流畅”)

Parameters:
Name Type Description
params TRTCNetworkQosParam required

网络流控参数

Properties
Name Type Description
preference TRTCVideoQosPreference required

弱网下是“保清晰”还是“保流畅”

  • TRTCVideoQosPreferenceSmooth: 弱网下保流畅,在遭遇弱网环境时首先确保声音的流畅和优先发送,画面会变得模糊且会有较多马赛克,但可以保持流畅不卡顿。
  • TRTCVideoQosPreferenceClear : 弱网下保清晰,在遭遇弱网环境时,画面会尽可能保持清晰,但可能会更容易出现卡顿。
controlMode TRTCQosControlMode required

流控模式(云端控制 - 客户端控制)

  • TRTCQosControlModeClient: 客户端控制(用于 SDK 开发内部调试,客户请勿使用)
  • TRTCQosControlModeServer: 云端控制 (默认)

setLocalRenderParams(params)

设置本地图像(主流)的渲染参数

Parameters:
Name Type Description
params TRTCRenderParams required

本地图像的参数

Properties
Name Type Description
rotation TRTCVideoRotation required

视频画面旋转方向

fillMode TRTCVideoFillMode required

视频画面填充模式

mirrorType TRTCVideoMirrorType required

画面渲染镜像类型

setLocalViewFillMode(mode)

废弃接口: 设置本地图像的渲染模式

Deprecated:
  • 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setLocalRenderParams 接口替代。
Parameters:
Name Type Description
mode TRTCVideoFillMode required

填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit

  • TRTCVideoFillMode_Fill: 图像铺满屏幕,超出显示视窗的视频部分将被截掉,所以画面显示可能不完整。
  • TRTCVideoFillMode_Fit: 图像长边填满屏幕,短边区域会被填充黑色,但画面的内容肯定是完整的。

setRemoteRenderParams(userId, streamType, params)

设置远端画面的渲染模式

Parameters:
Name Type Description
userId String required

用户 ID

streamType TRTCVideoStreamType required

视频流类型

params TRTCRenderParams required

本地画面渲染参数

Properties
Name Type Description
rotation TRTCVideoRotation required

视频画面旋转方向

fillMode TRTCVideoFillMode required

视频画面填充模式

mirrorType TRTCVideoMirrorType required

画面渲染镜像类型

setRemoteViewFillMode(userId, mode)

废弃接口: 设置远端图像的渲染模式

Deprecated:
  • 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setRemoteRenderParams 接口替代。
Parameters:
Name Type Description
userId String required

用户 ID

mode TRTCVideoFillMode required

填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit

  • TRTCVideoFillMode_Fill: 图像铺满屏幕,超出显示视窗的视频部分将被截掉,所以画面显示可能不完整。
  • TRTCVideoFillMode_Fit: 图像长边填满屏幕,短边区域会被填充黑色,但画面的内容肯定是完整的。

setLocalViewRotation(rotation)

废弃接口: 设置本地图像的顺时针旋转角度

Deprecated:
  • 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setLocalRenderParams 接口替代。
Parameters:
Name Type Description
rotation TRTCVideoRotation required

支持 TRTCVideoRotation90 、 TRTCVideoRotation180 、 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0

  • TRTCVideoRotation0 : 顺时针旋转0度
  • TRTCVideoRotation90 : 顺时针旋转90度
  • TRTCVideoRotation180: 顺时针旋转180度
  • TRTCVideoRotation270: 顺时针旋转270度

setRemoteViewRotation(userId, rotation)

废弃接口: 设置远端图像的顺时针旋转角度

Deprecated:
  • 从 TRTCSDK 8.0 后该接口已被废弃,请使用 setRemoteRenderParams 接口替代。
Parameters:
Name Type Description
userId String required

用户 ID

rotation TRTCVideoRotation required

支持 TRTCVideoRotation90 、 TRTCVideoRotation180 、 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0

  • TRTCVideoRotation0 : 顺时针旋转0度
  • TRTCVideoRotation90 : 顺时针旋转90度
  • TRTCVideoRotation180: 顺时针旋转180度
  • TRTCVideoRotation270: 顺时针旋转270度

setVideoEncoderRotation(rotation)

设置视频编码输出的(也就是远端用户观看到的,以及服务器录制下来的)画面方向

Parameters:
Name Type Description
rotation TRTCVideoRotation required

目前支持 TRTCVideoRotation0 和 TRTCVideoRotation180 两个旋转角度,默认值:TRTCVideoRotation0

  • TRTCVideoRotation0 : 顺时针旋转0度
  • TRTCVideoRotation180: 顺时针旋转180度

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
Name Type Description
videoResolution TRTCVideoResolution required

视频分辨率

resMode TRTCVideoResolutionMode required

分辨率模式(横屏分辨率 - 竖屏分辨率)

  • TRTCVideoResolutionModeLandscape: 横屏分辨率
  • TRTCVideoResolutionModePortrait : 竖屏分辨率
videoFps Number required

视频采集帧率

videoBitrate Number required

视频上行码率

minVideoBitrate Number required

视频最小码率

setRemoteVideoStreamType(userId, streamType)

选定观看指定 userId 的大画面或小画面

此功能需要该 userId 通过 enableSmallVideoStream 提前开启双路编码模式。 如果该 userId 没有开启双路编码模式,则此操作无效。

Parameters:
Name Type Description
userId String required

用户 ID

streamType TRTCVideoStreamType required

视频流类型,即选择看大画面还是小画面,默认为 TRTCVideoStreamTypeBig

  • TRTCVideoStreamTypeBig : 大画面视频流
  • TRTCVideoStreamTypeSmall: 小画面视频流

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

  • TRTCVideoStreamTypeBig : 大画面视频流
  • TRTCVideoStreamTypeSmall: 小画面视频流

startLocalRecording(options)

开启本地媒体录制

开启后把直播过程中的音视和视频内容录制到本地的一个文件中。

Parameters:
Name Type Description
options Object required

录制参数

Properties
Name Type Description
filePath string required

录制文件路径。

  • 录制的文件地址(必填),请确保路径有读写权限且合法,否则录制文件无法生成。
  • 【特别说明】该路径需精确到文件名及格式后缀,格式后缀用于决定录制出的文件格式,目前支持的格式暂时只有 MP4。 例如:假如您指定路径为 "mypath/record/test.mp4",代表您希望 SDK 生成一个 MP4 格式的本地视频文件。 请您指定一个有读写权限的合法路径,否则录制文件无法生成。
recordType TRTCRecordType required

媒体录制类型,默认值:TRTCRecordTypeBoth,即同时录制音频和视频。

interval number required

录制进行中事件 onLocalRecording 触发频率,单位毫秒,有效范围:1000-10000 和 -1。默认值为-1,表示不触发录制进行中事件。

stopLocalRecording()

停止本地媒体录制

如果录制任务在退出房间前尚未通过本接口停止,则退出房间后录音任务会自动被停止。

startLocalAudio(quality)

开启本地音频的采集和上行

该函数会启动麦克风采集,并将音频数据传输给房间里的其他用户。 SDK 并不会默认开启本地的音频上行,也就说,如果您不调用这个函数,房间里的其他用户就听不到您的声音。

注意:TRTC SDK 并不会默认打开本地的麦克风采集。

Parameters:
Name Type Description
quality TRTCAudioQuality required

音频质量

  • TRTCAudioQualitySpeech: 语音模式:采样率:16k
  • TRTCAudioQualityDefault: 标准模式(或者默认模式):采样率:48k
  • TRTCAudioQualityMusic: 音乐模式:采样率:48k

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
Name Type Description
filePath String required

录音文件的保存路径(必填)。

  • 该路径需精确到文件名及格式后缀,格式后缀用于决定录音文件的格式,目前支持的格式有 PCM、WAV 和 AAC。例如:假如您指定路径为 "mypath/record/audio.aac",代表您希望 SDK 生成一个 AAC 格式的音频录制文件。
  • 请您指定一个有读写权限的合法路径,否则录音文件无法生成。
recordingContent TRTCAudioRecordingContent required

音频录制内容类型。

maxDurationPerFile Number required

录制文件分片时长,单位毫秒,最小值10000。默认值为0,表示不分片。

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

音频质量

  • TRTCAudioQualitySpeech: 语音模式:采样率:16k
  • TRTCAudioQualityDefault: 标准模式(或者默认模式):采样率:48k
  • TRTCAudioQualityMusic: 音乐模式:采样率:48k

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

是否跟随系统默认的音频设备

  • true: 跟随。当系统默认音频设备发生改变时,SDK 立即切换音频设备。
  • false: 不跟随。只有当 SDK 使用的音频设备被移除后或插入新的音频设备为系统默认设备时,SDK 才切换至系统默认的音频设备。

setBeautyStyle(style, beauty, white, ruddiness)

设置美颜、美白、红润效果级别

SDK 内部集成了两套风格不同的磨皮算法,一套我们取名叫“光滑”,适用于美女秀场,效果比较明显。 另一套我们取名“自然”,磨皮算法更多地保留了面部细节,主观感受上会更加自然。

注意:计算机必须配备显卡,否则该接口功能不生效。

Parameters:
Name Type Description
style TRTCBeautyStyle required

美颜风格,光滑或者自然,光滑风格磨皮更加明显,适合娱乐场景。

  • TRTCBeautyStyleSmooth: 光滑,适用于美女秀场,效果比较明显。
  • TRTCBeautyStyleNature: 自然,磨皮算法更多地保留了面部细节,主观感受上会更加自然。
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

水印图片源数据类型

  • TRTCWaterMarkSrcTypeFile : 图片文件路径,支持 BMP、GIF、JPEG、PNG、TIFF、Exif、WMF 和 EMF 文件格式
  • TRTCWaterMarkSrcTypeBGRA32: BGRA32格式内存块
  • TRTCWaterMarkSrcTypeRGBA32: RGBA32格式内存块
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

  • TRTCVideoFillMode_Fill: 图像铺满屏幕,超出显示视窗的视频部分将被截掉,所以画面显示可能不完整。
  • 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
Name Type Description
type TRTCScreenCaptureSourceType required

必填, 采集源类型

sourceId String required

必填, 采集源ID;对于窗口,该字段指示窗口句柄;对于屏幕,该字段指示屏幕ID

sourceName String required

必填, 采集源名称,UTF8编码

isMinimizeWindow Boolean required

必填, 是否最小化窗口

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
Name Type Description
videoResolution TRTCVideoResolution required

视频分辨率

resMode TRTCVideoResolutionMode required

分辨率模式(横屏分辨率 - 竖屏分辨率)

  • TRTCVideoResolutionModeLandscape: 横屏分辨率
  • TRTCVideoResolutionModePortrait : 竖屏分辨率
videoFps Number required

视频采集帧率

videoBitrate Number required

视频上行码率

minVideoBitrate Number required

最小码率

setSubStreamMixVolume(volume)

设置辅流(屏幕分享)的混音音量大小

这个数值越高,辅路音量的占比就约高,麦克风音量占比就越小,所以不推荐设置得太大,否则麦克风的声音就被压制了。

Parameters:
Name Type Description
volume Number required

设置的混音音量大小,范围0 - 100

addExcludedShareWindow(win)

将指定窗口加入屏幕分享的排除列表中,加入排除列表中的窗口不会被分享出去

支持启动屏幕分享前设置过滤窗口,也支持屏幕分享过程中动态添加过滤窗口。

Parameters:
Name Type Description
win String required

不希望分享出去的窗口

  • 该方法只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeScreen 时生效,即分享屏幕时生效
  • Windows下该方法添加的窗口列表会在退房后清空;Mac下在退出房间时不会自动清空,需要调用一次removeAllExcludedShareWindow()方法清空列表。

removeExcludedShareWindow(win)

将指定窗口从屏幕分享的排除列表中移除

Parameters:
Name Type Description
win String required

不希望分享出去的窗口

  • 该方法只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeScreen 时生效,即分享屏幕时生效

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 接口开启。
  • 请您精准地按每帧时长的间隔调用本接口,数据投送间隔不均匀时极易触发声音卡顿。
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 等接口进行自定义视频或音频采集时,请按照如下操作使用该接口:

  1. 首先,在采集到一帧视频或音频帧时,通过调用本接口获得当时的 PTS 时间戳。
  2. 之后可以将该视频或音频帧送入您使用的前处理模块(如第三方美颜组件,或第三方音效组件)。
  3. 在真正调用 sendCustomAudioData 进行投送时,请将该帧在采集时记录的 PTS 时间戳赋值给 TRTCVideoFrameTRTCAudioFrame 中的 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

该可选入参已经废弃。 播放音乐事件回调监听,请使用 setMusicObserver() 接口设置背景音乐事件回调。

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:
String

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 提示用户选择更好的网络。

注意:

  1. 测速过程将产生少量的基础服务费用,详见 计费概述 > 基础服务 文档说明。
  2. 请在进入房间前进行网速测试,在房间中网速测试会影响正常的音视频传输效果,而且由于干扰过多,网速测试结果也不准确。
  3. 同一时间只允许一项网速测试任务运行。
Parameters:
Name Type Description
params TRTCSpeedTestParams required

测速参数

Properties
Name Type Description
sdkAppId Number required

应用标识

userId String required

用户标识

userSig String required

用户签名

expectedUpBandwidth Number required

预期的上行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)。

expectedDownBandwidth Number required

预期的下行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)。

scene Number required

测速场景

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

  • TRTCLogLevelNone : 不输出任何 SDK Log
  • TRTCLogLevelVerbose: 输出所有级别的 Log
  • TRTCLogLevelDebug : 输出 DEBUG,INFO,WARNING,ERROR 和 FATAL 级别的 Log
  • TRTCLogLevelInfo : 输出 INFO,WARNNING,ERROR 和 FATAL 级别的 Log
  • TRTCLogLevelWarn : 只输出WARNNING,ERROR 和 FATAL 级别的 Log
  • TRTCLogLevelError : 只输出ERROR 和 FATAL 级别的 Log
  • TRTCLogLevelFatal : 只输出 FATAL 级别的 Log

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
  • 1 webgl
  • 2 yuvcanvs

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
Name Type Description
id String required

插件ID,必填,多个插件之间不能重复。

path String required

插件库文件路径,必填。Windows 下为 ".dll" 文件,Mac 下为 ".dylib" 文件。

type TRTCPluginType required

插件类型,1表示自定义美颜插件,2表示音视频自定义加解密插件, 3表示音频自定义处理插件。

deviceId String

摄像头设备 ID,开启多个摄像头美颜时必填。

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

插件事件回调函数

  • pluginId - 插件ID
  • errorCode - 错误码。0、-1、-2、-3、-4、-5 是 SDK 内部定义错误码,其它错误码是插件自定义错误码。
    • 0 表示 addPlugin 成功
    • -1 插件库加载失败
    • -2 插件库缺少插件创建函数
    • -3 创建函数执行失败
    • -4 插件初始化函数执行失败
    • -5 插件加载资源函数执行失败
  • msg - 错误信息

注意:错误码:-1000 到 1000 是 SDK 预留错误码,用户自定义插件中,请使用这个范围以外的错误码。

initPluginManager(optionsopt)

初始化插件管理器

Deprecated:
  • 请使用 setPluginParams 接口
    启动美颜插件管理器,并设置视频在美颜处理时的像素格式和数据传递方式。
Parameters:
Name Type Description
options

视频预处理参数,非必填。

Properties
Name Type Description
pixelFormat TRTCVideoPixelFormat required

视频像素格式,默认值:TRTCVideoPixelFormat_I420

  • 当数据传递方式为纹理 TRTCVideoBufferType_Texture 时,取值必须为 TRTCVideoPixelFormat_RGBA32 格式。
bufferType TRTCVideoBufferType

视频数据传递方式,默认值:TRTCVideoBufferType_Buffer

destroyPluginManager()

销毁插件管理

Deprecated:

getMediaMixingManager() → {TRTCMediaMixingManager|null}

获取本地混流管理器

注意:
1.目前仅支持 Windows 操作系统。
2.本地混流管理器必须在 getTRTCShareInstance 创建 TRTCCloud 实例时传入 isIPCModetrue 才支持,否则返回 null。

Returns:
Type
TRTCMediaMixingManager | null