LiteAVSDK
腾讯云音视频 SDK ,服务于数万家企业客户的高可用组件,致力于最大限度地节省您的研发成本。
ITRTCCloud

详细描述

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

Module: ITRTCCloud @ TXLiteAVSDK

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

创建/使用/销毁 ITRTCCloud 对象的示例代码:

ITRTCCloud trtcCloud = ITRTCCloud.getTRTCShareInstance();
if (trtcCloud != null)
{
string version = trtcCloud->getSDKVersion();
}

程序退出或者后续程序流程不需要使用 TRTCCloud 对象时,释放单例对象 ITRTCCloud

ITRTCCloud.destroyTRTCShareInstance();
trtcCloud = null;

结构体说明

◆ ManageLiteAV::ITRTCCloud

class ManageLiteAV::ITRTCCloud

Public 成员函数

 ~ITRTCCloud ()
 

创建与销毁 ITRTCCloud 单例

static ITRTCCloud getTRTCShareInstance ()
 
static void destroyTRTCShareInstance ()
 

设置 TRTCCloudCallback 回调

void addCallback (ITRTCCloudCallback callback)
 
void removeCallback (ITRTCCloudCallback callback)
 

房间相关接口函数

void enterRoom (TRTCParams params, TRTCAppScene scene)
 
void exitRoom ()
 
void switchRole (TRTCRoleType role)
 
void connectOtherRoom (string params)
 
void disconnectOtherRoom ()
 
void setDefaultStreamRecvMode (bool autoRecvAudio, bool autoRecvVideo)
 
void switchRoom (TRTCSwitchRoomConfig config)
 

CDN 相关接口函数

void startPublishing (string streamId, TRTCVideoStreamType type)
 
void stopPublishing ()
 
void startPublishCDNStream (TRTCPublishCDNParam param)
 
void stopPublishCDNStream ()
 
void setMixTranscodingConfig (TRTCTranscodingConfig config)
 

视频相关接口函数

void startLocalPreview (IntPtr rendView)
 
void updateLocalView (IntPtr rendView)
 
void stopLocalPreview ()
 
void muteLocalVideo (bool mute)
 
void startRemoteView (String userId, TRTCVideoStreamType streamType, IntPtr rendView)
 
void updateRemoteView (String userId, TRTCVideoStreamType streamType, IntPtr rendView)
 
void stopRemoteView (String userId, TRTCVideoStreamType streamType)
 
void stopAllRemoteView ()
 
void muteRemoteVideoStream (string userId, bool mute)
 
void muteAllRemoteVideoStreams (bool mute)
 
void setVideoEncoderParam (TRTCVideoEncParam params)
 
void setNetworkQosParam (TRTCNetworkQosParam params)
 
void setLocalRenderParams (TRTCRenderParams params)
 
void setVideoEncoderRotation (TRTCVideoRotation rotation)
 
void setVideoEncoderMirror (bool mirror)
 
void setRemoteRenderParams (string userId, TRTCVideoStreamType streamType, TRTCRenderParams params)
 
void enableSmallVideoStream (bool enable, TRTCVideoEncParam smallVideoParam)
 
void setRemoteVideoStreamType (string userId, TRTCVideoStreamType type)
 

音频相关接口函数

void startLocalAudio (TRTCAudioQuality quality)
 
void stopLocalAudio ()
 
void muteLocalAudio (bool mute)
 
void muteRemoteAudio (string userId, bool mute)
 
void muteAllRemoteAudio (bool mute)
 
void setAudioCaptureVolume (int volume)
 
int getAudioCaptureVolume ()
 
void setAudioPlayoutVolume (int volume)
 
int getAudioPlayoutVolume ()
 
void enableAudioVolumeEvaluation (uint interval)
 
int startAudioRecording (TRTCAudioRecordingParams audioRecordingParams)
 
void stopAudioRecording ()
 

设备相关接口函数

ITXDeviceManager getDeviceManager ()
 

美颜特效和图像水印

void setBeautyStyle (TRTCBeautyStyle style, uint beauty, uint white, uint ruddiness)
 
void setWaterMark (TRTCVideoStreamType streamType, string srcData, TRTCWaterMarkSrcType srcType, uint nWidth, uint nHeight, float xOffset, float yOffset, float fWidthRatio)
 

音乐特效和人声特效

ITXAudioEffectManager getAudioEffectManager ()
 
void startSystemAudioLoopback (string path)
 
void stopSystemAudioLoopback ()
 
void setSystemAudioLoopbackVolume (uint volume)
 

屏幕分享相关接口函数

void startScreenCapture (IntPtr rendView, TRTCVideoStreamType type, TRTCVideoEncParam params)
 
void stopScreenCapture ()
 
void pauseScreenCapture ()
 
void resumeScreenCapture ()
 
ITRTCScreenCaptureSourceList getScreenCaptureSources (SIZE thumbSize, SIZE iconSize)
 
void selectScreenCaptureTarget (TRTCScreenCaptureSourceInfo source, RECT captureRect, TRTCScreenCaptureProperty property)
 
void setSubStreamEncoderParam (TRTCVideoEncParam% params)
 
void setSubStreamMixVolume (uint volume)
 
void addExcludedShareWindow (IntPtr window)
 
void removeExcludedShareWindow (IntPtr window)
 
void removeAllExcludedShareWindow ()
 

自定义采集和渲染

void enableCustomVideoCapture (bool enable)
 
void sendCustomVideoData (TRTCVideoFrame frame)
 
void enableCustomAudioCapture (bool enable)
 
void sendCustomAudioData (TRTCAudioFrame frame)
 
int setLocalVideoRenderCallback (TRTCVideoPixelFormat pixelFormat, TRTCVideoBufferType bufferType, ITRTCVideoRenderCallback callback)
 
int setRemoteVideoRenderCallback (string userId, TRTCVideoPixelFormat pixelFormat, TRTCVideoBufferType bufferType, ITRTCVideoRenderCallback callback)
 
int setAudioFrameCallback (ITRTCAudioFrameCallback callback)
 

自定义消息发送

bool sendCustomCmdMsg (uint cmdId, byte[] data, uint dataSize, bool reliable, bool ordered)
 
bool sendSEIMsg (byte[] data, int dataSize, int repeatCount)
 

网络测试

void startSpeedTest (uint sdkAppId, string userId, string userSig)
 
void stopSpeedTest ()
 

LOG 相关接口函数

string getSDKVersion ()
 
void setLogLevel (TRTCLogLevel level)
 
void setConsoleEnabled (bool enabled)
 
void setLogCompressEnabled (bool enabled)
 
void setLogDirPath (string path)
 
void setLogCallback (ITRTCLogCallback callback)
 
void showDebugView (int showType)
 
void callExperimentalAPI (string jsonStr)
 

弃用接口函数

void setMicVolumeOnMixing (uint volume)
 
void startScreenCapture (IntPtr rendHwnd)
 
void playBGM (string path)
 
void stopBGM ()
 
void pauseBGM ()
 
void resumeBGM ()
 
uint getBGMDuration (string path)
 
void setBGMPosition (uint pos)
 
void setBGMVolume (uint volume)
 
void setBGMPlayoutVolume (uint volume)
 
void setBGMPublishVolume (uint volume)
 
void playAudioEffect (TRTCAudioEffectParam effect)
 
void setAudioEffectVolume (int effectId, int volume)
 
void stopAudioEffect (int effectId)
 
void stopAllAudioEffects ()
 
void setAllAudioEffectsVolume (int volume)
 
void pauseAudioEffect (int effectId)
 
void resumeAudioEffect (int effectId)
 
void selectScreenCaptureTarget (TRTCScreenCaptureSourceInfo source, RECT captureRect, bool captureMouse, bool highlightWindow)
 
void startRemoteView (String userId, IntPtr rendHwnd)
 
void stopRemoteView (String userId)
 
void setLocalViewFillMode (TRTCVideoFillMode mode)
 
void setRemoteViewFillMode (String userId, TRTCVideoFillMode mode)
 
void setLocalViewRotation (TRTCVideoRotation rotation)
 
void setRemoteViewRotation (String userId, TRTCVideoRotation rotation)
 
void setLocalViewMirror (bool mirror)
 
void startRemoteSubStreamView (String userId, IntPtr rendHwnd)
 
void stopRemoteSubStreamView (String userId)
 
void setRemoteSubStreamViewFillMode (String userId, TRTCVideoFillMode mode)
 
void setRemoteSubStreamViewRotation (String userId, TRTCVideoRotation rotation)
 
void setPriorRemoteVideoStreamType (TRTCVideoStreamType type)
 
void setAudioQuality (TRTCAudioQuality quality)
 
void startLocalAudio ()
 
ITRTCDeviceCollection getCameraDevicesList ()
 
void setCurrentCameraDevice (String deviceId)
 
ITRTCDeviceInfo getCurrentCameraDevice ()
 
ITRTCDeviceCollection getMicDevicesList ()
 
ITRTCDeviceInfo getCurrentMicDevice ()
 
void setCurrentMicDevice (String micId)
 
uint getCurrentMicDeviceVolume ()
 
void setCurrentMicDeviceVolume (uint volume)
 
ITRTCDeviceCollection getSpeakerDevicesList ()
 
ITRTCDeviceInfo getCurrentSpeakerDevice ()
 
void setCurrentSpeakerDevice (String speakerId)
 
uint getCurrentSpeakerVolume ()
 
void setCurrentSpeakerVolume (uint volume)
 
void startCameraDeviceTest (IntPtr rendHwnd)
 
void stopCameraDeviceTest ()
 
void startMicDeviceTest (uint interval)
 
void stopMicDeviceTest ()
 
void startSpeakerDeviceTest (String testAudioFilePath)
 
void stopSpeakerDeviceTest ()
 

构造及析构函数说明

◆ ~ITRTCCloud()

~ITRTCCloud ( )

析构函数,C# 代码中要求显示调用 Dispose 函数,来触发托管 C++ 类析构函数。

成员函数说明

◆ getTRTCShareInstance()

static ITRTCCloud getTRTCShareInstance ( )
static

获取 ITRTCCloud 单例对象。

返回
返回 ITRTCCloud 单例对象

◆ destroyTRTCShareInstance()

static void destroyTRTCShareInstance ( )
static

释放 ITRTCCloud 单例对象。

◆ addCallback()

void addCallback ( ITRTCCloudCallback  callback)

设置回调接口 ITRTCCloudCallback

您可以通过 ITRTCCloudCallback 获得来自 SDK 的各种状态通知,详见 ITRTCCloudCallback.h 中的定义

参数
callback事件回调

◆ removeCallback()

void removeCallback ( ITRTCCloudCallback  callback)

移除事件回调

参数
callback事件回调

◆ enterRoom()

void enterRoom ( TRTCParams  params,
TRTCAppScene  scene 
)

进入房间

您会收到来自 TRTCCloudCallback 中的 onEnterRoom(result) 回调:

  • 如果加入成功,result 会是一个正数(result > 0),表示加入房间的时间消耗,单位是毫秒(ms)。
  • 如果加入失败,result 会是一个负数(result < 0),表示进房失败的错误码。

进房失败的错误码含义请参见错误码

  • TRTCAppSceneVideoCall
    视频通话场景,支持720P、1080P高清画质,单个房间最多支持300人同时在线,最高支持50人同时发言。
    适合:[1对1视频通话]、[300人视频会议]、[在线问诊]、[视频聊天]、[远程面试]等。
  • TRTCAppSceneAudioCall
    语音通话场景,支持 48kHz,支持双声道。单个房间最多支持300人同时在线,最高支持50人同时发言。
    适合:[1对1语音通话]、[300人语音会议]、[在线狼人杀]、[语音聊天室]等。
  • TRTCAppSceneLIVE
    视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。
    适合:[在线互动课堂]、[互动直播]、[视频相亲]、[远程培训]、[超大型会议]等。
  • TRTCAppSceneVoiceChatRoom
    语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。
    适合:[语聊房]、[K 歌房]、[FM 电台]等。
  1. 当 scene 选择为 TRTCAppSceneLIVE 或 TRTCAppSceneVoiceChatRoom 时,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。
  2. 不管进房是否成功,enterRoom 都必须与 exitRoom 配对使用,在调用 exitRoom 前再次调用 enterRoom 函数会导致不可预期的错误问题。
参数
params进房参数,请参考 TRTCParams
scene应用场景,目前支持视频通话(VideoCall)、在线直播(Live)、语音通话(AudioCall)、语音聊天室(VoiceChatRoom)四种场景

◆ exitRoom()

void exitRoom ( )

离开房间

调用 exitRoom() 接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源等。

待资源释放完毕,SDK 会通过 TRTCCloudCallback 中的 onExitRoom() 回调通知您。

如果您要再次调用 enterRoom() 或者切换到其他的音视频 SDK,请等待 onExitRoom() 回调到来后再执行相关操作。

否则可能会遇到如摄像头、麦克风设备被强占等各种异常问题。

◆ switchRole()

void switchRole ( TRTCRoleType  role)

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

在直播场景下,一个用户可能需要在“观众”和“主播”之间来回切换。

您可以在进房前通过 TRTCParams 中的 role 字段确定角色,也可以通过 switchRole 在进房后切换角色。

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

◆ connectOtherRoom()

void connectOtherRoom ( string  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。

跨房通话的请求结果会通过 TRTCCloudCallback 中的 onConnectOtherRoom() 回调通知给您。

此处用到 json 库来格式化json字符串

dynamic jsonObj = new JObject();

jsonObj["roomId"] = 002;

jsonObj["userId"] = "userB";

string params = JsonConvert.SerializeObject(jsonObj);

trtc.connectOtherRoom(params);

参数
paramsJSON 字符串连麦参数,roomId 代表目标房间号,userId 代表目标用户 ID。

◆ disconnectOtherRoom()

void disconnectOtherRoom ( )

关闭跨房连麦

跨房通话的退出结果会通过 ITRTCCloudCallback 中的 onDisconnectOtherRoom 回调通知给您。

◆ setDefaultStreamRecvMode()

void setDefaultStreamRecvMode ( bool  autoRecvAudio,
bool  autoRecvVideo 
)

设置音视频数据接收模式(需要在进房前设置才能生效)

为实现进房秒开的绝佳体验,SDK 默认进房后自动接收音视频。即在您进房成功的同时,您将立刻收到远端所有用户的音视频数据。

若您没有调用 startRemoteView,视频数据将自动超时取消。

若您主要用于语音聊天等没有自动接收视频数据需求的场景,您可以根据实际需求选择接收模式,以免产生预期之外的视频时长费用。

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

需要在进房前设置才能生效。

◆ switchRoom()

void switchRoom ( TRTCSwitchRoomConfig  config)

切换房间

调用该接口后,用户会先退出原来的房间并快速进入 TRTCSwitchRoomConfig 中指定的新房间:

相比于直接调用 exitRoom + enterRoom 的方式,switchRoom 接口对主播更加友好,因为 switchRoom 不会停止主播端视频的采集和预览。

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

参数
config房间切换参数,请参考 TRTCSwitchRoomConfig

◆ startPublishing()

void startPublishing ( string  streamId,
TRTCVideoStreamType  type 
)

开始向腾讯云的直播 CDN 推流

该接口会指定当前用户的音视频流在腾讯云 CDN 所对应的 StreamId,进而可以指定当前用户的 CDN 播放地址。

例如:如果我们采用如下代码设置当前用户的主画面 StreamId 为 user_stream_001,那么该用户主画面对应的 CDN 播放地址为:

“http://yourdomain/live/user_stream_001.flv”,其中 yourdomain 为您自己备案的播放域名,

您可以在直播控制台 配置您的播放域名,腾讯云不提供默认的播放域名。

您也可以在设置 enterRoom 的参数 TRTCParams 时指定 streamId, 而且我们更推荐您采用这种方案。

ITRTCCloud trtcCloud = ITRTCCloud.getTRTCShareInstance();
trtcCloud.enterRoom(params, TRTCAppScene.TRTCAppSceneLIVE);
trtcCloud.startLocalPreview(Intptr);
trtcCloud.startLocalAudio();
trtcCloud.startPublishing("user_stream_001", TRTCVideoStreamType.TRTCVideoStreamTypeBig);

您需要先在实时音视频 控制台 中的功能配置页开启“启用旁路推流”才能生效。

  • 若您选择“指定流旁路”,则您可以通过该接口将对应音视频流推送到腾讯云 CDN 且指定为填写的流 ID。
  • 若您选择“全局自动旁路”,则您可以通过该接口调整默认的流 ID。
参数
streamId自定义流 ID
type仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub。

◆ stopPublishing()

void stopPublishing ( )

停止向腾讯云的直播 CDN 推流

◆ startPublishCDNStream()

void startPublishCDNStream ( TRTCPublishCDNParam  param)

开始向友商云的直播 CDN 转推

该接口跟 startPublishing() 类似,但 startPublishCDNStream() 支持向非腾讯云的直播 CDN 转推。

使用 startPublishing() 绑定腾讯云直播 CDN 不收取额外的费用,但使用 startPublishCDNStream() 绑定非腾讯云直播 CDN 需要收取转推费用。

参数
paramparam param CDN 转推参数,请参考 TRTCTypeDef.h 中关于 TRTCPublishCDNParam 的介绍。

◆ stopPublishCDNStream()

void stopPublishCDNStream ( )

停止向非腾讯云地址转推

◆ setMixTranscodingConfig()

void setMixTranscodingConfig ( TRTCTranscodingConfig  config)

设置云端的混流转码参数

如果您在实时音视频 控制台 中的功能配置页开启了“启用旁路推流”功能, 房间里的每一路画面都会有一个默认的直播 CDN 地址。 一个直播间中可能有不止一位主播,而且每个主播都有自己的画面和声音,但对于 CDN 观众来说,他们只需要一路直播流, 所以您需要将多路音视频流混成一路标准的直播流,这就需要混流转码。

当您调用 setMixTranscodingConfig() 接口时,SDK 会向腾讯云的转码服务器发送一条指令,目的是将房间里的多路音视频流混合为一路, 您可以通过 mixUsers 参数来调整每一路画面的位置,以及是否只混合声音,也可以通过 videoWidth、videoHeight、videoBitrate 等参数控制混合音视频流的编码参数。

【画面1】=> 解码 ====> \

\

【画面2】=> 解码 => 画面混合 => 编码 => 【混合后的画面】

/

【画面3】=> 解码 ====> /

【声音1】=> 解码 ====> \

\

【声音2】=> 解码 => 声音混合 => 编码 => 【混合后的声音

/

【声音3】=> 解码 ====> /

参考文档:云端混流转码

关于云端混流的注意事项:

  • 云端转码会引入一定的 CDN 观看延时,大概会增加1 - 2秒。
  • 调用该函数的用户,会将连麦中的多路画面混合到自己当前这路画面或者 config 中指定的 streamId 上。
  • 请注意,若您还在房间中且不再需要混流,请务必传入 nullptr 进行取消,因为当您发起混流后,云端混流模块就会开始工作,不及时取消混流可能会引起不必要的计费损失。
  • 请放心,您退房时会自动取消混流状态。
参数
config请参考 TRTCCloudDef.h 中关于 TRTCTranscodingConfig 的介绍。如果传入 NULL 取消云端混流转码。

◆ startLocalPreview()

void startLocalPreview ( IntPtr  rendView)

开启本地视频的预览画面

这个接口会启动默认的摄像头,可以通过 setCurrentCameraDevice 接口选用其他摄像头

当开始渲染首帧摄像头画面时,您会收到 ITRTCCloudCallback 中的 onFirstVideoFrame(null) 回调。

参数
rendView承载预览画面的控件

◆ updateLocalView()

void updateLocalView ( IntPtr  rendView)

更新本地视频预览画面的窗口

参数
rendView承载预览画面的控件

◆ stopLocalPreview()

void stopLocalPreview ( )

停止本地视频采集及预览

◆ muteLocalVideo()

void muteLocalVideo ( bool  mute)

暂停/恢复推送本地的视频数据

当暂停推送本地视频后,房间里的其它成员将会收到 onUserVideoAvailable(userId, false) 回调通知

当恢复推送本地视频后,房间里的其它成员将会收到 onUserVideoAvailable(userId, true) 回调通知

参数
mutetrue:暂停;false:恢复,默认值:false

◆ startRemoteView() [1/2]

void startRemoteView ( String  userId,
TRTCVideoStreamType  streamType,
IntPtr  rendView 
)

开始拉取并显示指定用户的远端画面

该函数会拉取指定 userid 的视频流显示在您指定的 view 控件上,您可以通过 setRemoteRenderParams 设置显示模式。

- 如果您提前知道房间中某个 userid 正在推流,可以直接调用 startRemoteView 显示该用户的远端画面。

- 如果您不知道房间中有哪些用户开启了视频,可以在 enterRoom 后等待来自 SDK 的 onUserVideoAvailable(userId, true) 回调通知。

调用 startRemoteView 只是启动拉取,此时画面还需要加载,当加载完毕后 ITRTCCloudCallback 会通过 onFirstVideoFrame(userId) 通知您。

参数
userId指定远端用户的 userId
streamType指定要观看 userId 的视频流类型:

- 高清大画面:(TRTCVideoStreamTypeBig)

- 低清小画面:(TRTCVideoStreamTypeSmall)

- 辅流(屏幕分享):(TRTCVideoStreamTypeSub)

参数
rendView承载视频画面的控件

注意几点规则需要您关注:

1. SDK 支持同时观看某 userid 的大画面和辅路,或者小画面和辅路,但不支持同时观看大画面和小画面。

2. 只有当指定的 userid 通过 enableEncSmallVideoStream 开启双路编码后,才能观看该用户的小画面。

3. 如果该用户的小画面不存在,则默认切换到大画面。

◆ updateRemoteView()

void updateRemoteView ( String  userId,
TRTCVideoStreamType  streamType,
IntPtr  rendView 
)

更新远端视频渲染的窗口

参数
userId对方的用户标识
streamType要设置预览窗口的流类型(TRTCVideoStreamTypeBig、TRTCVideoStreamTypeSub)
rendView承载预览画面的控件

◆ stopRemoteView() [1/2]

void stopRemoteView ( String  userId,
TRTCVideoStreamType  streamType 
)

停止显示远端视频画面,同时不再拉取远端用户的视频数据流

调用此接口后,SDK 会停止接收该用户的远程视频流,同时会清理相关的视频显示资源。

参数
userId指定远端用户的 userId
streamType指定要停止观看的 userId 的视频流类型

◆ stopAllRemoteView()

void stopAllRemoteView ( )

停止显示所有远端视频画面,同时不再拉取远端用户的视频数据流

如果有屏幕分享的画面在显示,则屏幕分享的画面也会一并被关闭

◆ muteRemoteVideoStream()

void muteRemoteVideoStream ( string  userId,
bool  mute 
)

暂停/恢复接收指定的远端视频流

该接口仅暂停/恢复接收指定的远端用户的视频流,但并不释放显示资源,所以如果暂停,视频画面会冻屏在 mute 前的最后一帧。

参数
userId对方的用户标识
mute是否暂停接收

◆ muteAllRemoteVideoStreams()

void muteAllRemoteVideoStreams ( bool  mute)

暂停/恢复接收所有远端视频流

该接口仅暂停/恢复接收所有远端用户的视频流,但并不释放显示资源,所以如果暂停,视频画面会冻屏在 mute 前的最后一帧。

参数
mute是否停止接收

◆ setVideoEncoderParam()

void setVideoEncoderParam ( TRTCVideoEncParam  params)

设置视频编码器相关参数

该设置决定了远端用户看到的画面质量(同时也是云端录制出的视频文件的画面质量)

参数
params视频编码参数,详情请参考 TRTCCloudDef.h 中 TRTCVideoEncParam 的定义

◆ setNetworkQosParam()

void setNetworkQosParam ( TRTCNetworkQosParam  params)

设置网络流控相关参数

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

参数
params网络流控参数,详情请参考 TRTCCloudDef.h 中 TRTCNetworkQosParam 的定义

◆ setLocalRenderParams()

void setLocalRenderParams ( TRTCRenderParams  params)

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

参数
params本地图像的参数,详情请参考 TRTCTypeDef.h 中的 TRTCRenderParams 定义

◆ setVideoEncoderRotation()

void setVideoEncoderRotation ( TRTCVideoRotation  rotation)

设置视频编码输出的画面方向,即设置远端用户观看到的和服务器录制的画面方向

参数
rotation目前支持 TRTCVideoRotation0 和 TRTCVideoRotation180 旋转角度,默认值:TRTCVideoRotation0

◆ setVideoEncoderMirror()

void setVideoEncoderMirror ( bool  mirror)

设置编码器输出的画面镜像模式

该接口不改变本地摄像头的预览画面,但会改变另一端用户看到的(以及服务器录制的)画面效果。

参数
mirror是否开启远端镜像, true:远端画面镜像;false:远端画面非镜像。默认值:false

◆ setRemoteRenderParams()

void setRemoteRenderParams ( string  userId,
TRTCVideoStreamType  streamType,
TRTCRenderParams  params 
)

设置远端图像的渲染模式

参数
userId对应的远端视频流用户ID
streamType远端图像的视频流类型,详见 TRTCVideoStreamType 定义
params远端图像的参数,详情请参考 TRTCTypeDef.h 中的 TRTCRenderParams 定义

◆ enableSmallVideoStream()

void enableSmallVideoStream ( bool  enable,
TRTCVideoEncParam  smallVideoParam 
)

开启大小画面双路编码模式

如果当前用户是房间中的主要角色(例如主播、老师、主持人等),并且使用 PC 或者 Mac 环境,可以开启该模式。

开启该模式后,当前用户会同时输出【高清】和【低清】两路视频流(但只有一路音频流)。

对于开启该模式的当前用户,会占用更多的网络带宽,并且会更加消耗 CPU 计算资源。

对于同一房间的远程观众而言:

- 如果用户的下行网络很好,可以选择观看【高清】画面

- 如果用户的下行网络较差,可以选择观看【低清】画面

参数
enable是否开启小画面编码,默认值:false
smallVideoParam小流的视频参数

◆ setRemoteVideoStreamType()

void setRemoteVideoStreamType ( string  userId,
TRTCVideoStreamType  type 
)

选定观看指定 userId 的大画面还是小画面

此功能需要该 userId 通过 enableEncSmallVideoStream 提前开启双路编码模式。

如果该 userId 没有开启双路编码模式,则此操作无效。

参数
userId用户 ID
type视频流类型,即选择看大画面还是小画面,默认为 TRTCVideoStreamTypeBig

◆ startLocalAudio() [1/2]

void startLocalAudio ( TRTCAudioQuality  quality)

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

该函数会启动麦克风采集,并将音频数据传输给房间里的其他用户。

SDK 并不会默认开启本地的音频上行,也就说,如果您不调用这个函数,房间里的其他用户就听不到您的声音。

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

参数
quality声音质量,参见 TRTCAudioQuality

◆ stopLocalAudio()

void stopLocalAudio ( )

关闭本地音频的采集和上行

当关闭本地音频的采集和上行,房间里的其它成员会收到 onUserAudioAvailable(false) 回调通知。

◆ muteLocalAudio()

void muteLocalAudio ( bool  mute)

静音/取消静音本地的音频

当静音本地音频后,房间里的其它成员会收到 onUserAudioAvailable(userId, false) 回调通知。

当取消静音本地音频后,房间里的其它成员会收到 onUserAudioAvailable(userId, true) 回调通知。

与 stopLocalAudio 不同之处在于,muteLocalAudio(true) 并不会停止发送音视频数据,而是继续发送码率极低的静音包。

由于 MP4 等视频文件格式,对于音频的连续性是要求很高的,使用 stopLocalAudio 会导致录制出的 MP4 不易播放。

因此在对录制质量要求很高的场景中,建议选择 muteLocalAudio,从而录制出兼容性更好的 MP4 文件。

参数
mutetrue:静音;false:取消静音,默认值:false

◆ muteRemoteAudio()

void muteRemoteAudio ( string  userId,
bool  mute 
)

静音/取消静音指定的远端用户的声音

参数
userId用户 ID
mutetrue:静音;false:取消静音

静音时会停止接收该用户的远端音频流并停止播放,取消静音时会自动拉取该用户的远端音频流并进行播放。

◆ muteAllRemoteAudio()

void muteAllRemoteAudio ( bool  mute)

静音/取消静音所有用户的声音

参数
mutetrue:静音;false:取消静音

静音时会停止接收所有用户的远端音频流并停止播放,取消静音时会自动拉取所有用户的远端音频流并进行播放。

◆ setAudioCaptureVolume()

void setAudioCaptureVolume ( int  volume)

设置 SDK 采集音量

参数
volume音量大小,取值0 - 100,默认值为100

◆ getAudioCaptureVolume()

int getAudioCaptureVolume ( )

获取 SDK 采集音量

◆ setAudioPlayoutVolume()

void setAudioPlayoutVolume ( int  volume)

设置 SDK 播放音量。

该函数会控制最终交给系统播放的声音音量

会影响本地录制的音量大小。

不会影响耳返的音量。

参数
volume音量大小,取值0 - 100,默认值为100

◆ getAudioPlayoutVolume()

int getAudioPlayoutVolume ( )

获取 SDK 播放音量

◆ enableAudioVolumeEvaluation()

void enableAudioVolumeEvaluation ( uint  interval)

启用或关闭音量大小提示

开启此功能后,SDK 会在 onUserVoiceVolume() 中反馈对每一路声音音量大小值的评估。

我们在 Demo 中有一个音量大小的提示条,就是基于这个接口实现的。

如希望打开此功能,请在 startLocalAudio() 之前调用。

参数
interval设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms

◆ startAudioRecording()

int startAudioRecording ( TRTCAudioRecordingParams  audioRecordingParams)

开始录音

该方法调用后,SDK 会将通话过程中的所有音频(包括本地音频,远端音频,BGM等)录制到一个文件里。

无论是否进房,调用该接口都生效。

如果调用 exitRoom 时还在录音,录音会自动停止。

参数
audioRecordingParams录音参数,请参考 TRTCAudioRecordingParams
返回
0:成功;-1:录音已开始;-2:文件或目录创建失败;-3:后缀指定的音频格式不支持

◆ stopAudioRecording()

void stopAudioRecording ( )

停止录音

如果调用 exitRoom 时还在录音,录音会自动停止。

◆ getDeviceManager()

ITXDeviceManager getDeviceManager ( )

获取设备管理模块

返回
ITXDeviceManager 设备管理类

◆ setBeautyStyle()

void setBeautyStyle ( TRTCBeautyStyle  style,
uint  beauty,
uint  white,
uint  ruddiness 
)

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

SDK 内部集成了两套风格不同的磨皮算法,一套我们取名叫“光滑”,适用于美女秀场,效果比较明显。

另一套我们取名“自然”,磨皮算法更多地保留了面部细节,主观感受上会更加自然。

参数
style美颜风格,光滑或者自然,光滑风格磨皮更加明显,适合娱乐场景。
beauty美颜级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显
white美白级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显
ruddiness红润级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显,该参数暂未生效

◆ setWaterMark()

void setWaterMark ( TRTCVideoStreamType  streamType,
string  srcData,
TRTCWaterMarkSrcType  srcType,
uint  nWidth,
uint  nHeight,
float  xOffset,
float  yOffset,
float  fWidthRatio 
)

设置水印

水印的位置是通过 xOffset, yOffset, fWidthRatio 来指定的。

-xOffset:水印的坐标,取值范围为0 - 1的浮点数。

-yOffset:水印的坐标,取值范围为0 - 1的浮点数。

-fWidthRatio:水印的大小比例,取值范围为0 - 1的浮点数。

只支持主路视频流

参数
streamType要设置水印的流类型(TRTCVideoStreamTypeBig、TRTCVideoStreamTypeSub)
srcData水印图片源数据(传 NULL 表示去掉水印)
srcType水印图片源数据类型(传 NULL 时忽略该参数)
nWidth水印图片像素宽度(源数据为文件路径时忽略该参数)
nHeight水印图片像素高度(源数据为文件路径时忽略该参数)
xOffset水印显示的左上角 x 轴偏移
yOffset水印显示的左上角 y 轴偏移
fWidthRatio水印显示的宽度占画面宽度比例(水印按该参数等比例缩放显示)

◆ getAudioEffectManager()

ITXAudioEffectManager getAudioEffectManager ( )

获取音效管理类 ITXAudioEffectManager

该模块是整个 SDK 的音效管理模块,支持如下功能:

- 耳机耳返:麦克风捕捉的声音实时通过耳机播放。

- 混响效果:KTV、小房间、大会堂、低沉、洪亮...

- 变声特效:萝莉、大叔、重金属、外国人...

- 背景音乐:支持在线音乐和本地音乐,支持变速、变调等特效、支持原生和伴奏并播放和循环播放。

- 短音效:鼓掌声、欢笑声等简短的音效文件,对于小于10秒的文件,请将 isShortFile 参数设置为 YES。

◆ startSystemAudioLoopback()

void startSystemAudioLoopback ( string  path)

打开系统声音采集

开启后可以采集整个操作系统的播放声音(path 为空)或某一个播放器(path 不为空)的声音,

并将其混入到当前麦克风采集的声音中一起发送到云端。

参数
path- path 为空,代表采集整个操作系统的声音。path 填写 exe 程序(如 QQ音乐)所在的路径,将会启动此程序并只采集此程序的声音。

◆ stopSystemAudioLoopback()

void stopSystemAudioLoopback ( )

关闭系统声音采集。

◆ setSystemAudioLoopbackVolume()

void setSystemAudioLoopbackVolume ( uint  volume)

设置系统声音采集的音量。

参数
volume音量大小,取值范围为0 - 100。

◆ startScreenCapture() [1/2]

void startScreenCapture ( IntPtr  rendView,
TRTCVideoStreamType  type,
TRTCVideoEncParam  params 
)

启动屏幕分享

一个用户同时最多只能上传一条主路(TRTCVideoStreamTypeBig)画面和一条辅路(TRTCVideoStreamTypeSub)画面, 默认情况下,屏幕分享使用辅路画面,如果使用主路画面,建议您提前停止摄像头采集(stopLocalPreview)避免相互冲突。 /remarks>

参数
rendView承载预览画面的 HWND,可以设置为 nullptr,表示不显示屏幕分享的预览效果。
type屏幕分享使用的线路,可以设置为主路(TRTCVideoStreamTypeBig)或者辅路(TRTCVideoStreamTypeSub),默认使用辅路。
params屏幕分享的画面编码参数,可以设置为 nullptr,表示让 SDK 选择最佳的编码参数(分辨率、码率等)。

◆ stopScreenCapture()

void stopScreenCapture ( )

停止屏幕采集

◆ pauseScreenCapture()

void pauseScreenCapture ( )

暂停屏幕分享

◆ resumeScreenCapture()

void resumeScreenCapture ( )

恢复屏幕分享

◆ getScreenCaptureSources()

ITRTCScreenCaptureSourceList getScreenCaptureSources ( SIZE  thumbSize,
SIZE  iconSize 
)

枚举可分享的屏幕窗口,建议在 startScreenCapture 之前调用

如果您要给您的 App 增加屏幕分享功能,一般需要先显示一个窗口选择界面,这样用户可以选择希望分享的窗口。

通过如下函数,您可以获得可分享窗口的 ID、类型、窗口名称以及缩略图。

拿到这些信息后,您就可以实现一个窗口选择界面,当然,您也可以使用我们在 Demo 源码中已经实现好的一个界面。

返回的列表中包括屏幕和应用窗口,屏幕会在列表的前面几个元素中。

SDK 维护 ITRTCScreenCaptureSourceList 对象的生命周期。

参数
thumbSize指定要获取的窗口缩略图大小,缩略图可用于绘制在窗口选择界面上
iconSize指定要获取的窗口图标大小
返回
窗口列表包括屏幕

◆ selectScreenCaptureTarget() [1/2]

void selectScreenCaptureTarget ( TRTCScreenCaptureSourceInfo  source,
RECT  captureRect,
TRTCScreenCaptureProperty  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 }

参数
source指定分享源
captureRect指定捕获的区域
property指定屏幕分享目标的属性,包括捕获鼠标,高亮捕获窗口等,详情参考 TRTCScreenCaptureProperty 定义

◆ setSubStreamEncoderParam()

void setSubStreamEncoderParam ( TRTCVideoEncParam params)

设置屏幕分享的编码器参数

- setVideoEncoderParam() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的编码参数。

- setSubStreamEncoderParam() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的编码参数。

该设置决定远端用户看到的画面质量,同时也是云端录制出的视频文件的画面质量。

即使使用主路传输屏幕分享的数据(在调用 startScreenCapture 时设置 type=TRTCVideoStreamTypeBig),依然要使用此接口更新屏幕分享的编码参数。

参数
params辅流编码参数,详情请参考 TRTCCloudDef.h 中的 TRTCVideoEncParam 定义

◆ setSubStreamMixVolume()

void setSubStreamMixVolume ( uint  volume)

设置屏幕分享的混音音量大小

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

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

◆ addExcludedShareWindow()

void addExcludedShareWindow ( IntPtr  window)

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

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

参数
window不希望分享出去的窗口

◆ removeExcludedShareWindow()

void removeExcludedShareWindow ( IntPtr  window)

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

参数
window不希望分享出去的窗口

◆ removeAllExcludedShareWindow()

void removeAllExcludedShareWindow ( )

将所有窗口从屏幕分享的排除列表中移除

◆ enableCustomVideoCapture()

void enableCustomVideoCapture ( bool  enable)

启用视频自定义采集模式

开启该模式后,SDK 不再运行原有的视频采集流程,只保留编码和发送能力。

您需要用 sendCustomVideoData() 不断地向 SDK 塞入自己采集的视频画面。

参数
enable是否启用,默认值:false

◆ sendCustomVideoData()

void sendCustomVideoData ( TRTCVideoFrame  frame)

向 SDK 投送自己采集的视频数据

TRTCVideoFrame 推荐如下填写方式(其他字段不需要填写):

-pixelFormat:仅支持 LiteAVVideoPixelFormat_I420。

-bufferType:仅支持 LiteAVVideoBufferType_Buffer。

-data:视频帧 buffer。

-length:视频帧数据长度,I420 格式下,其值等于:width × height × 3 / 2。

-width:视频图像长度。

-height:视频图像宽度。

-timestamp:如果 timestamp 间隔不均匀,会严重影响音画同步和录制出的 MP4 质量。

参考文档:自定义采集和渲染

  • SDK 内部有帧率控制逻辑,目标帧率以您在 setVideoEncoderParam 中设置的为准,太快会自动丢帧,太慢则会自动补帧。

- 可以设置 frame 中的 timestamp 为 0,相当于让 SDK 自己设置时间戳,但请“均匀”地控制 sendCustomVideoData 的调用间隔,否则会导致视频帧率不稳定。

参数
frame视频数据,支持 I420 格式数据。

◆ enableCustomAudioCapture()

void enableCustomAudioCapture ( bool  enable)

启用音频自定义采集模式

开启该模式后,SDK 停止运行原有的音频采集流程,只保留编码和发送能力。

您需要用 sendCustomAudioData() 不断地向 SDK 塞入自己采集的音频数据。

参数
enable是否启用,默认值:false

◆ sendCustomAudioData()

void sendCustomAudioData ( TRTCAudioFrame  frame)

向 SDK 投送自己采集的音频数据

TRTCAudioFrame 推荐如下填写方式:

-audioFormat:音频数据格式,仅支持 TRTCAudioFrameFormatPCM。

-data:音频帧 buffer。

-length:音频帧数据长度,支持[5ms ~ 100ms]帧长,推荐使用20 ms帧长,【48000采样率、单声道的帧长度:48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。

-sampleRate:采样率,支持:16000、24000、32000、44100、48000。

-channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。

-timestamp:时间戳,单位毫秒(ms),可以设置 timestamp 为0,相当于让 SDK 自己设置时间戳。

参考文档:自定义采集和渲染

需精准的按每帧时长的间隔调用 sendCustomAudioData,否则会容易触发声音卡顿。

参数
frame音频数据

◆ setLocalVideoRenderCallback()

int setLocalVideoRenderCallback ( TRTCVideoPixelFormat  pixelFormat,
TRTCVideoBufferType  bufferType,
ITRTCVideoRenderCallback  callback 
)

设置本地视频自定义渲染

设置此方法,SDK 内部会把采集到的数据回调出来,SDK 跳过 HWND 渲染逻辑

调用 setLocalVideoRenderCallback(TRTCVideoPixelFormat_Unknown, TRTCVideoBufferType_Unknown, nullptr) 停止回调

参数
pixelFormat指定回调的像素格式
bufferType指定视频数据结构类型
callback自定义渲染回调
返回
0:成功;<0:错误

◆ setRemoteVideoRenderCallback()

int setRemoteVideoRenderCallback ( string  userId,
TRTCVideoPixelFormat  pixelFormat,
TRTCVideoBufferType  bufferType,
ITRTCVideoRenderCallback  callback 
)

设置远端视频自定义渲染

此方法同 setLocalVideoRenderDelegate,区别在于一个是本地画面的渲染回调, 一个是远程画面的渲染回调。

设置此方法,SDK 内部会把远端的数据解码后回调出来,SDK 跳过 HWND 渲染逻辑

调用 setRemoteVideoRenderCallback(userId, TRTCVideoPixelFormat_Unknown, TRTCVideoBufferType_Unknown, nullptr) 停止回调。

参数
userId用户标识
pixelFormat指定回调的像素格式
bufferType指定视频数据结构类型
callback自定义渲染回调
返回
0:成功;<0:错误

◆ setAudioFrameCallback()

int setAudioFrameCallback ( ITRTCAudioFrameCallback  callback)

设置音频数据回调

设置此方法,SDK 内部会把声音模块的数据(PCM 格式)回调出来,包括:

-onCapturedAudioFrame:本机麦克风采集到的音频数据

-onPlayAudioFrame:混音前的每一路远程用户的音频数据

-onMixedPlayAudioFrame:各路音频数据混合后送入扬声器播放的音频数据

参数
callback声音帧数据(PCM 格式)的回调,callback = nullptr 则停止回调数据
返回
0:成功;<0:错误

◆ sendCustomCmdMsg()

bool sendCustomCmdMsg ( uint  cmdId,
byte[]  data,
uint  dataSize,
bool  reliable,
bool  ordered 
)

发送自定义消息给房间内所有用户

该接口可以借助音视频数据通道向当前房间里的其他用户广播您自定义的数据,但因为复用了音视频数据通道, 请务必严格控制自定义消息的发送频率和消息体的大小,否则会影响音视频数据的质量控制逻辑,造成不确定性的问题。

本接口有以下限制:

-发送消息到房间内所有用户(暂时不支持 Web/小程序端),每秒最多能发送30条消息。

-每个包最大为1KB,超过则很有可能会被中间路由器或者服务器丢弃。

-每个客户端每秒最多能发送总计8KB数据。

-将 reliable 和 ordered 同时设置为 true 或 false,暂不支持交叉设置。

-强烈建议不同类型的消息使用不同的 cmdID,这样可以在要求有序的情况下减小消息时延。

参数
cmdId消息 ID,取值范围为1 - 10
data待发送的消息,最大支持1KB(1000字节)的数据大小
dataSize待发送的数据大小
reliable是否可靠发送,可靠发送的代价是会引入一定的延时,因为接收端要暂存一段时间的数据来等待重传
ordered是否要求有序,即是否要求接收端接收的数据顺序和发送端发送的顺序一致,这会带来一定的接收延时,因为在接收端需要暂存并排序这些消息
返回
true:消息已经发出;false:消息发送失败

◆ sendSEIMsg()

bool sendSEIMsg ( byte[]  data,
int  dataSize,
int  repeatCount 
)

将小数据量的自定义数据嵌入视频帧中

跟 sendCustomCmdMsg 的原理不同,sendSEIMsg 是将数据直接塞入视频数据头中。因此,即使视频帧被旁路到了直播 CDN 上, 这些数据也会一直存在。但是由于要把数据嵌入视频帧中,所以数据本身不能太大,推荐几个字节就好。

最常见的用法是把自定义的时间戳(timstamp)用 sendSEIMsg 嵌入视频帧中,这种方案的最大好处就是可以实现消息和画面的完美对齐。

本接口有以下限制:

-数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始带在视频帧中发送。

-发送消息到房间内所有用户,每秒最多能发送30条消息(与 sendCustomCmdMsg 共享限制)。

-每个包最大为1KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与 sendCustomCmdMsg 共享限制)。

-每个客户端每秒最多能发送总计8KB数据(与 sendCustomCmdMsg 共享限制)。

-若指定多次发送(repeatCount > 1),则数据会被带在后续的连续 repeatCount 个视频帧中发送出去,同样会导致视频码率增大。

-如果 repeatCount > 1,多次发送,接收消息 onRecvSEIMsg 回调也可能会收到多次相同的消息,需要去重。

参数
data待发送的数据,最大支持1kb(1000字节)的数据大小
dataSize待发送的数据大小
repeatCount发送数据次数
返回
true:消息已通过限制,等待后续视频帧发送;false:消息被限制发送

◆ startSpeedTest()

void startSpeedTest ( uint  sdkAppId,
string  userId,
string  userSig 
)

开始进行网络测速(视频通话期间请勿测试,以免影响通话质量)

测速结果将会用于优化 SDK 接下来的服务器选择策略,因此推荐您在用户首次通话前先进行一次测速,这将有助于我们选择最佳的服务器。

同时,如果测试结果非常不理想,您可以通过醒目的 UI 提示用户选择更好的网络。

测速本身会消耗一定的流量,所以也会产生少量额外的流量费用。

参数
sdkAppId应用标识
userId用户标识
userSig用户签名

◆ stopSpeedTest()

void stopSpeedTest ( )

停止网络测速

◆ getSDKVersion()

string getSDKVersion ( )

获取 SDK 版本信息

返回
UTF-8 编码的版本号。

◆ setLogLevel()

void setLogLevel ( TRTCLogLevel  level)

设置 Log 输出级别

参数
levellevel 参见 TRTCLogLevel,默认值:TRTCLogLevelNone

◆ setConsoleEnabled()

void setConsoleEnabled ( bool  enabled)

启用或禁用控制台日志打印

参数
enabled指定是否启用,默认为禁止状态

◆ setLogCompressEnabled()

void setLogCompressEnabled ( bool  enabled)

启用或禁用 Log 的本地压缩

开启压缩后,Log 存储体积明显减小,但需要腾讯云提供的 Python 脚本解压后才能阅读。

禁用压缩后,Log 采用明文存储,可以直接用记事本打开阅读,但占用空间较大。

参数
enabled指定是否启用,默认为禁止状态

◆ setLogDirPath()

void setLogDirPath ( string  path)

设置日志保存路径

日志文件默认保存在 C:/Users/[系统用户名]/AppData/Roaming/Tencent/liteav/log,即 appdata%/Tencent/liteav/log 下,如需修改,必须在所有方法前调用。

参数
path存储日志的文件夹,例如 "D:\\Log",UTF-8 编码

◆ setLogCallback()

void setLogCallback ( ITRTCLogCallback  callback)

设置日志回调

参数
callback日志回调

◆ showDebugView()

void showDebugView ( int  showType)

显示仪表盘

仪表盘是状态统计和事件消息浮层 view,方便调试。

参数
showType0:不显示;1:显示精简版;2:显示全量版,默认为不显示

◆ callExperimentalAPI()

void callExperimentalAPI ( string  jsonStr)

调用实验性 API 接口

该接口用于调用一些实验性功能

参数
jsonStr接口及参数描述的 JSON 字符串

◆ setMicVolumeOnMixing()

void setMicVolumeOnMixing ( uint  volume)

设置麦克风的音量大小

从 v6.9 版本开始废弃,请使用 setAudioCaptureVolume 接口替代。

◆ startScreenCapture() [2/2]

void startScreenCapture ( IntPtr  rendHwnd)

启动屏幕分享

从 v7.2 版本开始废弃,请使用 startScreenCapture(HWND rendHwnd, TRTCVideoStreamType type, TRTCVideoEncParam* params) 接口替代。

◆ playBGM()

void playBGM ( string  path)

启动播放背景音乐

v7.3 版本弃用,请使用 TXAudioEffectManager startPlayMusic 接口,支持并发播放多个 BGM

参数
path音乐文件路径,支持的文件格式:aac, mp3。

◆ stopBGM()

void stopBGM ( )

停止播放背景音乐

v7.3 版本弃用,请使用 TXAudioEffectManager stopPlayMusic 接口

◆ pauseBGM()

void pauseBGM ( )

暂停播放背景音乐

v7.3 版本弃用,请使用 TXAudioEffectManager pausePlayMusic 接口

◆ resumeBGM()

void resumeBGM ( )

继续播放背景音乐

v7.3 版本弃用,请使用 TXAudioEffectManager resumePlayMusic 接口

◆ getBGMDuration()

uint getBGMDuration ( string  path)

获取音乐文件总时长,单位毫秒

v7.3 版本弃用,请使用 TXAudioEffectManager getMusicDurationInMS 接口

参数
path音乐文件路径,如果 path 为空,那么返回当前正在播放的 music 时长
返回
成功返回时长,失败返回-1

◆ setBGMPosition()

void setBGMPosition ( uint  pos)

设置 BGM 播放进度

v7.3 版本弃用,请使用 TXAudioEffectManager seekMusicToPosInMS 接口

参数
pos单位毫秒

◆ setBGMVolume()

void setBGMVolume ( uint  volume)

设置背景音乐播放音量的大小

v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPublishVolume / setMusicPlayoutVolume 接口

播放背景音乐混音时使用,用来控制背景音乐播放音量的大小,

该接口会同时控制远端播放音量的大小和本地播放音量的大小,

因此调用该接口后,setBGMPlayoutVolume 和 setBGMPublishVolume 设置的音量值会被覆盖

参数
volume音量大小,100为正常音量,取值范围为0 - 100;默认值:100

◆ setBGMPlayoutVolume()

void setBGMPlayoutVolume ( uint  volume)

设置背景音乐本地播放音量的大小

v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPlayoutVolume 接口

播放背景音乐混音时使用,用来控制背景音乐在本地播放时的音量大小。

参数
volume音量大小,100为正常音量,取值范围为0 - 100;默认值:100

◆ setBGMPublishVolume()

void setBGMPublishVolume ( uint  volume)

设置背景音乐远端播放音量的大小

v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPublishVolume 接口

播放背景音乐混音时使用,用来控制背景音乐在远端播放时的音量大小。

参数
volume音量大小,100为正常音量,取值范围为0 - 100;默认值:100

◆ playAudioEffect()

void playAudioEffect ( TRTCAudioEffectParam  effect)

播放音效

v7.3 版本弃用,请使用 TXAudioEffectManager startPlayMusic 接口

每个音效都需要您指定具体的 ID,您可以通过该 ID 对音效的开始、停止、音量等进行设置。

支持的文件格式:aac, mp3。

若您想同时播放多个音效,请分配不同的 ID 进行播放。因为使用同一个 ID 播放不同音效,SDK 将会停止上一个 ID 对应的音效播放,再启动新的音效播放。

参数
effect音效

◆ setAudioEffectVolume()

void setAudioEffectVolume ( int  effectId,
int  volume 
)

设置音效音量

v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPublishVolume / setMusicPlayoutVolume 接口

会覆盖通过 setAllAudioEffectsVolume 指定的整体音效音量。

参数
effectId音效 ID
volume音量大小,取值范围为0 - 100;默认值:100

◆ stopAudioEffect()

void stopAudioEffect ( int  effectId)

停止音效

v7.3 版本弃用,请使用 TXAudioEffectManager stopPlayMusic 接口

参数
effectId音效 ID

◆ stopAllAudioEffects()

void stopAllAudioEffects ( )

停止所有音效

v7.3 版本弃用,请使用 TXAudioEffectManager stopPlayMusic 接口

◆ setAllAudioEffectsVolume()

void setAllAudioEffectsVolume ( int  volume)

设置所有音效的音量

v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPublishVolume / setMusicPlayoutVolume 接口

该操作会覆盖通过 setAudioEffectVolume 指定的单独音效音量。

参数
volume音量大小,取值范围为0 - 100;默认值:100

◆ pauseAudioEffect()

void pauseAudioEffect ( int  effectId)

暂停音效

v7.3 版本弃用,请使用 TXAudioEffectManager pausePlayMusic 接口

参数
effectId音效 Id

◆ resumeAudioEffect()

void resumeAudioEffect ( int  effectId)

恢复音效

v7.3 版本弃用,请使用 TXAudioEffectManager resumePlayMusic 接口

参数
effectId音效 Id

◆ selectScreenCaptureTarget() [2/2]

void selectScreenCaptureTarget ( TRTCScreenCaptureSourceInfo  source,
RECT  captureRect,
bool  captureMouse,
bool  highlightWindow 
)

设置屏幕共享参数

v7.9 版本弃用,请使用 selectScreenCaptureTarget(TRTCScreenCaptureSourceInfo,RECT,TRTCScreenCaptureProperty) 接口

参数
source指定分享源
captureRect指定捕获的区域
captureMouse指定是否捕获鼠标指针
highlightWindow指定是否高亮正在共享的窗口,以及当捕获图像被遮挡时高亮遮挡窗口提示用户移走遮挡

◆ startRemoteView() [2/2]

void startRemoteView ( String  userId,
IntPtr  rendHwnd 
)

开始显示远端视频画面

v8.0 版本弃用,请使用 startRemoteView(userId,streamType,rendView) 接口

参数
userId对方的用户标识
rendHwnd承载预览画面的窗口句柄

◆ stopRemoteView() [2/2]

void stopRemoteView ( String  userId)

停止显示远端视频画面,同时不再拉取远端用户的视频数据流

v8.0 版本弃用,请使用 stopRemoteView(userId,streamType) 接口

调用此接口后,SDK 会停止接收该用户的远程视频流,同时会清理相关的视频显示资源。

参数
userId对方的用户标识

◆ setLocalViewFillMode()

void setLocalViewFillMode ( TRTCVideoFillMode  mode)

设置本地图像的渲染模式

v8.0 版本弃用,请使用 setLocalRenderParams(TRTCRenderParams) 接口

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

◆ setRemoteViewFillMode()

void setRemoteViewFillMode ( String  userId,
TRTCVideoFillMode  mode 
)

设置远端图像的渲染模式

v8.0 版本弃用,请使用 setRemoteRenderParams(userId,streamType,param) 接口

参数
userId用户 ID
mode填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit

◆ setLocalViewRotation()

void setLocalViewRotation ( TRTCVideoRotation  rotation)

设置本地图像的顺时针旋转角度

v8.0 版本弃用,请使用 setLocalRenderParams(TRTCRenderParams) 接口

参数
rotation支持 TRTCVideoRotation90 、 TRTCVideoRotation180 以及 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0

◆ setRemoteViewRotation()

void setRemoteViewRotation ( String  userId,
TRTCVideoRotation  rotation 
)

设置远端图像的顺时针旋转角度

v8.0 版本弃用,请使用 setRemoteRenderParams(userId,streamType,param) 接口

参数
userId用户 ID
rotation支持 TRTCVideoRotation90 、 TRTCVideoRotation180 以及 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0

◆ setLocalViewMirror()

void setLocalViewMirror ( bool  mirror)

设置本地摄像头预览画面的镜像模式

v8.0 版本弃用,请使用 setLocalRenderParams(TRTCRenderParams) 接口

参数
mirror镜像模式,默认值:false(非镜像模式)

◆ startRemoteSubStreamView()

void startRemoteSubStreamView ( String  userId,
IntPtr  rendHwnd 
)

开始显示远端用户的辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)

v8.0 版本弃用,请使用 startRemoteView(userId,streamType,rendView) 接口

- startRemoteView() 用于显示主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)。

- startRemoteSubStreamView() 用于显示辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)。

请在 onUserSubStreamAvailable 回调后再调用这个接口。

参数
userId对方的用户标识
rendHwnd渲染画面的 HWND

◆ stopRemoteSubStreamView()

void stopRemoteSubStreamView ( String  userId)

停止显示远端用户的辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)。

v8.0 版本弃用,请使用 stopRemoteView(userId,streamType) 接口

参数
userId对方的用户标识

◆ setRemoteSubStreamViewFillMode()

void setRemoteSubStreamViewFillMode ( String  userId,
TRTCVideoFillMode  mode 
)

设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的显示模式

v8.0 版本弃用,请使用 setRemoteRenderParams(userId,streamType,param) 接口

- setRemoteViewFillMode() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的显示模式。

- setRemoteSubStreamViewFillMode() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的显示模式。

参数
userId用户的 ID
mode填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit

◆ setRemoteSubStreamViewRotation()

void setRemoteSubStreamViewRotation ( String  userId,
TRTCVideoRotation  rotation 
)

设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的顺时针旋转角度

v8.0 版本弃用,请使用 setRemoteRenderParams(userId,streamType,param) 接口

- setRemoteViewRotation() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的旋转角度。

- setRemoteSubStreamViewRotation() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的旋转角度。

参数
userId用户的 ID
rotation支持90、180、270旋转角度

◆ setPriorRemoteVideoStreamType()

void setPriorRemoteVideoStreamType ( TRTCVideoStreamType  type)

设定观看方优先选择的视频质量

低端设备推荐优先选择低清晰度的小画面。

如果对方没有开启双路视频模式,则此操作无效。

v8.0 版本弃用,请使用 startRemoteView(userId,streamType,rendView) 接口

参数
type默认观看大画面还是小画面,默认为 TRTCVideoStreamTypeBig

◆ setAudioQuality()

void setAudioQuality ( TRTCAudioQuality  quality)

设置音频质量

主播端的音质越高,观众端的听感越好,但传输所依赖的带宽也就越高,在带宽有限的场景下也更容易出现卡顿。

TRTCCloudDef::TRTCAudioQualitySpeech},流畅:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话。

TRTCCloudDef::TRTCAudioQualityDefault},默认:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。

TRTCCloudDef::TRTCAudioQualityMusic},高音质:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,比如K歌、音乐直播等。

v8.0 版本弃用,请使用 startLocalAudio(TRTCAudioQuality) 接口

该方法需要在 startLocalAudio 之前进行设置,否则不会生效。

◆ startLocalAudio() [2/2]

void startLocalAudio ( )

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

该函数会启动麦克风采集,并将音频数据传输给房间里的其他用户。

SDK 不会默认开启本地音频采集和上行,您需要调用该函数开启,否则房间里的其他用户将无法听到您的声音。

v8.0 版本弃用,请使用 startLocalAudio(TRTCAudioQuality) 接口

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

◆ getCameraDevicesList()

ITRTCDeviceCollection getCameraDevicesList ( )

获取摄像头设备列表

示例代码:

ITRTCDeviceCollection pDevice = m_pCloud.getCameraDevicesList();
for (int i = 0; i < pDevice.getCount(); i++)
{
string name = pDevice.getDeviceName(i));
}
pDevice.release();
pDevice = null;

SDK 维护 ITRTCDeviceCollection 对象的生命周期,使用完毕后请调用 release 方法释放资源。

v8.0 版本弃用,请使用 ITXDeviceManager::getDevicesList 接口

返回
摄像头管理器对象 ITRTCDeviceCollection

◆ setCurrentCameraDevice()

void setCurrentCameraDevice ( String  deviceId)

设置要使用的摄像头

v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentDevice 接口

参数
deviceId从 getCameraDevicesList 中得到的设备 ID

◆ getCurrentCameraDevice()

ITRTCDeviceInfo getCurrentCameraDevice ( )

获取当前使用的摄像头

v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentDevice 接口

返回
ITRTCDeviceInfo 设备信息,能获取设备 ID 和设备名称

◆ getMicDevicesList()

ITRTCDeviceCollection getMicDevicesList ( )

获取麦克风设备列表

示例代码:

ITRTCDeviceCollection pDevice = m_pCloud.getMicDevicesList();
for (int i = 0; i < pDevice.getCount(); i++)
{
string name = pDevice.getDeviceName(i));
}
pDevice.release();
pDevice = null;

SDK 维护 ITRTCDeviceCollection 对象的生命周期,使用完毕后请调用 release 方法释放资源。

v8.0 版本弃用,请使用 ITXDeviceManager::getDevicesList 接口

返回
麦克风管理器对象 ITRTCDeviceCollection

◆ getCurrentMicDevice()

ITRTCDeviceInfo getCurrentMicDevice ( )

获取当前选择的麦克风

v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentDevice 接口

返回
ITRTCDeviceInfo 设备信息,能获取设备 ID 和设备名称

◆ setCurrentMicDevice()

void setCurrentMicDevice ( String  micId)

设置要使用的麦克风

选择指定的麦克风作为录音设备,不调用该接口时,默认选择索引为0的麦克风

v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentDevice 接口

参数
micId从 getMicDevicesList 中得到的设备 ID

◆ getCurrentMicDeviceVolume()

uint getCurrentMicDeviceVolume ( )

获取系统当前麦克风设备音量

查询的是系统硬件音量大小。

v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentDeviceVolume 接口

返回
音量值,范围是[0 - 100]

◆ setCurrentMicDeviceVolume()

void setCurrentMicDeviceVolume ( uint  volume)

设置系统当前麦克风设备的音量

该接口的功能是调节系统采集音量,如果用户直接调节 WIN 系统设置的采集音量时,该接口的设置结果会被用户的操作所覆盖。

v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentDeviceVolume 接口

参数
volume麦克风音量值,范围[0 - 100]

◆ getSpeakerDevicesList()

ITRTCDeviceCollection getSpeakerDevicesList ( )

获取扬声器设备列表

示例代码:

ITRTCDeviceCollection pDevice = m_pCloud.getSpeakerDevicesList();
for (int i = 0; i < pDevice.getCount(); i++)
{
string name = pDevice.getDeviceName(i));
}
pDevice.release();

SDK 维护 ITRTCDeviceCollection 对象的生命周期,使用完毕后请调用 release 方法释放资源。

v8.0 版本弃用,请使用 ITXDeviceManager::getDevicesList 接口

返回
扬声器管理器对象 ITRTCDeviceCollection

◆ getCurrentSpeakerDevice()

ITRTCDeviceInfo getCurrentSpeakerDevice ( )

获取当前的扬声器设备

v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentDevice 接口

返回
ITRTCDeviceInfo 设备信息,能获取设备 ID 和设备名称

◆ setCurrentSpeakerDevice()

void setCurrentSpeakerDevice ( String  speakerId)

设置要使用的扬声器

v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentDevice 接口

参数
speakerId从 getDevicesList 中得到的设备 ID

◆ getCurrentSpeakerVolume()

uint getCurrentSpeakerVolume ( )

获取系统当前扬声器设备音量

查询的是系统硬件音量大小。

v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentVolume 接口

返回
扬声器音量,范围0 - 100

◆ setCurrentSpeakerVolume()

void setCurrentSpeakerVolume ( uint  volume)

设置系统当前扬声器设备音量

v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentVolume 接口

该接口的功能是调节系统播放音量,如果用户直接调节 WIN 系统设置的播放音量时,该接口的设置结果会被用户的操作所覆盖。

参数
volume设置的扬声器音量,范围0 - 100

◆ startCameraDeviceTest()

void startCameraDeviceTest ( IntPtr  rendHwnd)

开始进行摄像头测试

会触发 onFirstVideoFrame 回调接口

v8.0 版本弃用,请使用 ITXDeviceManager::startCameraDeviceTest 接口

在测试过程中可以使用 setCurrentCameraDevice 接口切换摄像头。

参数
rendHwnd承载预览画面的窗口句柄

◆ stopCameraDeviceTest()

void stopCameraDeviceTest ( )

停止摄像头测试

v8.0 版本弃用,请使用 ITXDeviceManager::stopCameraDeviceTest 接口

◆ startMicDeviceTest()

void startMicDeviceTest ( uint  interval)

开启麦克风测试

回调接口 onTestMicVolume 获取测试数据

该方法测试麦克风是否能正常工作,volume 的取值范围为0 - 100。

v8.0 版本弃用,请使用 ITXDeviceManager::startMicDeviceTest 接口

参数
interval反馈音量提示的时间间隔(ms),建议设置到大于 200 毫秒

◆ stopMicDeviceTest()

void stopMicDeviceTest ( )

停止麦克风测试

v8.0 版本弃用,请使用 ITXDeviceManager::stopMicDeviceTest 接口

◆ startSpeakerDeviceTest()

void startSpeakerDeviceTest ( String  testAudioFilePath)

开启扬声器测试

回调接口 onTestSpeakerVolume 获取测试数据

该方法播放指定的音频文件测试播放设备是否能正常工作。如果能听到声音,说明播放设备能正常工作。

v8.0 版本弃用,请使用 ITXDeviceManager::startSpeakerDeviceTest 接口

参数
testAudioFilePath音频文件的绝对路径,路径字符串使用 UTF-8 编码格式,支持文件格式:WAV、MP3

◆ stopSpeakerDeviceTest()

void stopSpeakerDeviceTest ( )

停止扬声器测试

v8.0 版本弃用,请使用 ITXDeviceManager::stopSpeakerDeviceTest 接口