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

详细描述

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


结构体说明

◆ TRTCViewMargin

class TRTCViewMargin

Public 成员函数

 TRTCViewMargin (float leftMargin, float rightMargin, float topMargin, float bottomMargin)
 

成员变量

float leftMargin = 0.0f
 
float topMargin = 0.0f
 
float rightMargin = 0.0f
 
float bottomMargin = 0.0f
 

构造及析构函数说明

◆ TRTCViewMargin()

TRTCViewMargin ( float  leftMargin,
float  rightMargin,
float  topMargin,
float  bottomMargin 
)
inline

构造方法

结构体成员变量说明

◆ leftMargin

float leftMargin = 0.0f

距离左边的百分比,取值范围为0 - 1

◆ topMargin

float topMargin = 0.0f

距离顶部的百分比,取值范围为0 - 1

◆ rightMargin

float rightMargin = 0.0f

距离右边的百分比,取值范围为0 - 1

◆ bottomMargin

float bottomMargin = 0.0f

距离底部的百分比,取值范围为0 - 1

◆ BGMNotify

interface BGMNotify

Public 成员函数

void onBGMStart (int errCode)
 
void onBGMProgress (long progress, long duration)
 
void onBGMComplete (int err)
 

成员函数说明

◆ onBGMStart()

void onBGMStart ( int  errCode)

◆ onBGMProgress()

void onBGMProgress ( long  progress,
long  duration 
)

◆ onBGMComplete()

void onBGMComplete ( int  err)

◆ TRTCCloud

class TRTCCloud

基础方法

static TRTCCloud sharedInstance (Context context)
 
static void destroySharedInstance ()
 
abstract void setListener (TRTCCloudListener listener)
 
abstract void setListenerHandler (Handler listenerHandler)
 

房间相关接口函数

abstract void enterRoom (TRTCCloudDef.TRTCParams param, int scene)
 
abstract void exitRoom ()
 
abstract void switchRole (int role)
 
abstract void ConnectOtherRoom (String param)
 
abstract void DisconnectOtherRoom ()
 
abstract void setDefaultStreamRecvMode (boolean autoRecvAudio, boolean autoRecvVideo)
 
abstract TRTCCloud createSubCloud ()
 
abstract void destroySubCloud (final TRTCCloud subCloud)
 

CDN 相关接口函数

abstract void startPublishing (final String streamId, final int streamType)
 
abstract void stopPublishing ()
 
abstract void startPublishCDNStream (TRTCCloudDef.TRTCPublishCDNParam param)
 
abstract void stopPublishCDNStream ()
 
abstract void setMixTranscodingConfig (TRTCCloudDef.TRTCTranscodingConfig config)
 

视频相关接口函数

abstract void startLocalPreview (boolean frontCamera, TXCloudVideoView view)
 
abstract void stopLocalPreview ()
 
abstract void muteLocalVideo (boolean mute)
 
abstract void setVideoMuteImage (Bitmap image, int fps)
 
abstract void startRemoteView (String userId, TXCloudVideoView view)
 
abstract void stopRemoteView (String userId)
 
abstract void stopAllRemoteView ()
 
abstract void muteRemoteVideoStream (String userId, boolean mute)
 
abstract void muteAllRemoteVideoStreams (boolean mute)
 
abstract void setVideoEncoderParam (TRTCCloudDef.TRTCVideoEncParam param)
 
abstract void setNetworkQosParam (TRTCCloudDef.TRTCNetworkQosParam param)
 
abstract void setLocalViewFillMode (int mode)
 
abstract void setRemoteViewFillMode (String userId, int mode)
 
abstract void setLocalViewRotation (int rotation)
 
abstract void setRemoteViewRotation (String userId, int rotation)
 
abstract void setVideoEncoderRotation (int rotation)
 
abstract void setLocalViewMirror (int mirrorType)
 
abstract void setVideoEncoderMirror (boolean mirror)
 
abstract void setGSensorMode (int mode)
 
abstract int enableEncSmallVideoStream (boolean enable, TRTCCloudDef.TRTCVideoEncParam smallVideoEncParam)
 
abstract int setRemoteVideoStreamType (String userId, int streamType)
 
abstract int setPriorRemoteVideoStreamType (int streamType)
 
abstract void snapshotVideo (String userId, int streamType, TRTCCloudListener.TRTCSnapshotListener listener)
 

音频相关接口函数

abstract void setAudioQuality (int quality)
 
abstract void startLocalAudio ()
 
abstract void stopLocalAudio ()
 
abstract void muteLocalAudio (boolean mute)
 
abstract void setAudioRoute (int route)
 
abstract void muteRemoteAudio (String userId, boolean mute)
 
abstract void muteAllRemoteAudio (boolean mute)
 
abstract void setRemoteAudioVolume (String userId, int volume)
 
abstract void setAudioCaptureVolume (int volume)
 
abstract int getAudioCaptureVolume ()
 
abstract void setAudioPlayoutVolume (int volume)
 
abstract int getAudioPlayoutVolume ()
 
abstract void enableAudioVolumeEvaluation (int intervalMs)
 
abstract int startAudioRecording (TRTCCloudDef.TRTCAudioRecordingParams TRTCAudioRecordingParams)
 
abstract void stopAudioRecording ()
 
abstract void setSystemVolumeType (int type)
 
abstract void enableAudioEarMonitoring (boolean enable)
 

摄像头相关接口函数

abstract void switchCamera ()
 
abstract boolean isCameraZoomSupported ()
 
abstract void setZoom (int distance)
 
abstract boolean isCameraTorchSupported ()
 
abstract boolean enableTorch (boolean enable)
 
abstract boolean isCameraFocusPositionInPreviewSupported ()
 
abstract void setFocusPosition (int x, int y)
 
abstract boolean isCameraAutoFocusFaceModeSupported ()
 

美颜滤镜相关接口函数

abstract TXBeautyManager getBeautyManager ()
 
abstract void setWatermark (Bitmap image, int streamType, float x, float y, float width)
 

音乐特效和人声特效

abstract TXAudioEffectManager getAudioEffectManager ()
 

辅流相关接口函数

abstract void startScreenCapture (TRTCCloudDef.TRTCVideoEncParam encParams, TRTCCloudDef.TRTCScreenShareParams shareParams)
 
abstract void stopScreenCapture ()
 
abstract void pauseScreenCapture ()
 
abstract void resumeScreenCapture ()
 
abstract void startRemoteSubStreamView (String userId, TXCloudVideoView view)
 
abstract void stopRemoteSubStreamView (String userId)
 
abstract void setRemoteSubStreamViewFillMode (String userId, int mode)
 
abstract void setRemoteSubStreamViewRotation (final String userId, final int rotation)
 

自定义采集和渲染

abstract void enableCustomVideoCapture (boolean enable)
 
abstract void sendCustomVideoData (TRTCCloudDef.TRTCVideoFrame frame)
 
abstract int setLocalVideoRenderListener (int pixelFormat, int bufferType, TRTCCloudListener.TRTCVideoRenderListener listener)
 
abstract int setRemoteVideoRenderListener (String userId, int pixelFormat, int bufferType, TRTCCloudListener.TRTCVideoRenderListener listener)
 
abstract void enableCustomAudioCapture (boolean enable)
 
abstract void sendCustomAudioData (TRTCCloudDef.TRTCAudioFrame frame)
 
abstract void setAudioFrameListener (TRTCCloudListener.TRTCAudioFrameListener listener)
 

自定义消息发送

abstract boolean sendCustomCmdMsg (int cmdID, byte[] data, boolean reliable, boolean ordered)
 
abstract boolean sendSEIMsg (byte[] data, int repeatCount)
 

网络测试

abstract void startSpeedTest (int sdkAppId, String userId, String userSig)
 
abstract void stopSpeedTest ()
 

Log 相关接口函数

static String getSDKVersion ()
 
static void setLogLevel (int level)
 
static void setConsoleEnabled (boolean enabled)
 
static void setLogCompressEnabled (boolean enabled)
 
static void setLogDirPath (String path)
 
static void setLogListener (final TRTCCloudListener.TRTCLogListener logListener)
 
static native void setNetEnv (int env)
 
abstract void showDebugView (int showType)
 
abstract void setDebugViewMargin (String userId, TRTCViewMargin margin)
 
abstract void callExperimentalAPI (String jsonStr)
 

弃用接口(建议使用对应的新接口)

abstract void setMicVolumeOnMixing (int volume)
 
abstract void setBeautyStyle (int beautyStyle, int beautyLevel, int whitenessLevel, int ruddinessLevel)
 
abstract void setEyeScaleLevel (int eyeScaleLevel)
 
abstract void setFaceSlimLevel (int faceScaleLevel)
 
abstract void setFaceVLevel (int faceVLevel)
 
abstract void setChinLevel (int chinLevel)
 
abstract void setFaceShortLevel (int faceShortlevel)
 
abstract void setNoseSlimLevel (int noseSlimLevel)
 
abstract void selectMotionTmpl (String motionPath)
 
abstract void setMotionMute (boolean motionMute)
 
abstract void setFilter (Bitmap image)
 
abstract void setFilterConcentration (float concentration)
 
abstract boolean setGreenScreenFile (String file)
 
abstract void playBGM (String path, BGMNotify notify)
 
abstract void stopBGM ()
 
abstract void pauseBGM ()
 
abstract void resumeBGM ()
 
abstract int getBGMDuration (String path)
 
abstract int setBGMPosition (int pos)
 
abstract void setBGMVolume (int volume)
 
abstract void setBGMPlayoutVolume (int volume)
 
abstract void setBGMPublishVolume (int volume)
 
abstract void setReverbType (int reverbType)
 
abstract boolean setVoiceChangerType (int voiceChangerType)
 
abstract void playAudioEffect (TRTCCloudDef.TRTCAudioEffectParam effect)
 
abstract void setAudioEffectVolume (int effectId, int volume)
 
abstract void stopAudioEffect (int effectId)
 
abstract void stopAllAudioEffects ()
 
abstract void setAllAudioEffectsVolume (int volume)
 
abstract void pauseAudioEffect (int effectId)
 
abstract void resumeAudioEffect (int effectId)
 

成员函数说明

◆ sharedInstance()

static TRTCCloud sharedInstance ( Context  context)
inlinestatic

创建 TRTCCloud 单例

参数
contextAndroid 上下文,内部会转为 ApplicationContext 用于系统 API 调用
返回
TRTCCloud 实例
注意
可以调用 destroySharedInstance 销毁单例对象

◆ destroySharedInstance()

static void destroySharedInstance ( )
inlinestatic

销毁 TRTCCloud 单例

◆ setListener()

abstract void setListener ( TRTCCloudListener  listener)
abstract

设置回调接口 TRTCCloudListener,用户获得来自 TRTCCloud 的各种状态通知

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

◆ setListenerHandler()

abstract void setListenerHandler ( Handler  listenerHandler)
abstract

设置驱动 TRTCCloudListener 回调的队列

SDK 默认会采用 Main Thread 作为驱动 TRTCCloudListener,也就是说,如果您不指定自己的 listenerHandler, SDK 的 TRTCCloudListener 回调都将由 Main Thread 来调用。此时您在 TRTCCloudListener 的回调函数里操作 UI 是线程安全的。

◆ enterRoom()

abstract void enterRoom ( TRTCCloudDef.TRTCParams  param,
int  scene 
)
abstract

进入房间

调用接口后,您会收到来自 TRTCCloudListener 中的 onEnterRoom(result) 回调:

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

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

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

◆ exitRoom()

abstract void exitRoom ( )
abstract

离开房间

调用 exitRoom() 接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源等。 待资源释放完毕,SDK 会通过 TRTCCloudListener 中的 onExitRoom() 回调通知到您。

如果您要再次调用 enterRoom() 或者切换到其他的音视频 SDK,请等待 onExitRoom() 回调到来之后再执行相关操作。 否则可能会遇到摄像头或麦克风被占用等各种异常问题,例如常见的 Android 媒体音量和通话音量切换问题等等。

◆ switchRole()

abstract void switchRole ( int  role)
abstract

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

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

参数
role目标角色,默认为主播:

◆ ConnectOtherRoom()

abstract void ConnectOtherRoom ( String  param)
abstract

请求跨房通话(主播 PK)

TRTC 中两个不同音视频房间中的主播,可以通过“跨房通话”功能拉通连麦通话功能。使用此功能时, 两个主播无需退出各自原来的直播间即可进行“连麦 PK”。

例如:当房间“001”中的主播 A 通过 connectOtherRoom() 跟房间“002”中的主播 B 拉通跨房通话后, 房间“001”中的用户都会收到主播 B 的 onRemoteUserEnterRoom(B) 回调和 onUserVideoAvailable(B,true) 回调。 房间“002”中的用户都会收到主播 A 的 onRemoteUserEnterRoom(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。

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

  JSONObject jsonObj = new JSONObject();
  jsonObj.put("roomId", 002);
  jsonObj.put("userId", "userB");
  trtc.ConnectOtherRoom(jsonObj.toString());
参数
paramJSON 字符串连麦参数,roomId 代表目标房间号,userId 代表目标用户 ID。

◆ DisconnectOtherRoom()

abstract void DisconnectOtherRoom ( )
abstract

退出跨房通话

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

◆ setDefaultStreamRecvMode()

abstract void setDefaultStreamRecvMode ( boolean  autoRecvAudio,
boolean  autoRecvVideo 
)
abstract

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

为实现进房秒开的绝佳体验,SDK 默认进房后自动接收音视频。即在您进房成功的同时,您将立刻收到远端所有用户的音视频数据。 若您没有调用 startRemoteView,视频数据将自动超时取消。 若您主要用于语音聊天等没有自动接收视频数据需求的场景,您可以根据实际需求选择接收模式。

参数
autoRecvAudiotrue:自动接收音频数据;false:需要调用 muteRemoteAudio 进行请求或取消。默认值:true
autoRecvVideotrue:自动接收视频数据;false:需要调用 startRemoteView/stopRemoteView 进行请求或取消。默认值:true
注意
需要在进房前设置才能生效。

◆ createSubCloud()

abstract TRTCCloud createSubCloud ( )
abstract

创建子 TRTCCloud 实例

子 TRTCCloud 实例用于进入其他房间,观看其他房间主播的音视频流,还可以在不同的房间之间切换推送音视频流。

此接口主要应用于类似超级小班课这种需要进入多个房间推拉流的场景。

  TRTCCloud mainCloud = TRTCCloud.sharedInstance(mContext);
  // 1、mainCloud 进房并开始推送音视频流。
  // 2、创建子 TRTCCloud 实例并进入其他房间。
  TRTCCloud subCloud = mainCloud.createSubCloud();
  subCloud.enterRoom(params, scene);
  // 3、切换房间推送音视频流。
  // 3.1、mainCloud 停止推送音视频流。
  mainCloud.switchRole(TRTCCloudDef.TRTCRoleAudience);
  mainCloud.muteLocalVideo(true);
  mainCloud.muteLocalAudio(true);
  // 3.2、subCloud 推送音视频流。
  subCloud.switchRole(TRTCCloudDef.TRTCRoleAnchor);
  subCloud.muteLocalVideo(false);
  subCloud.muteLocalAudio(false);
  // 4、subCloud 退房。
  subCloud.exitRoom();
  // 5、销毁 subCloud。
  mainCloud.destroySubCloud(subCloud);
返回
子 TRTCCloud 实例
注意
  • 同一个用户,可以使用同一个 userId 进入多个不同 roomId 的房间。
  • 两台手机不可以同时使用同一个 userId 进入同一个 roomId 的房间。
  • 通过 createSubCloud 接口创建出来的子房间 TRTCCloud 实例有一个能力限制:不能调用子实例中与本地音视频 相关的接口(除了 switchRole、muteLocalVideo 和 muteLocalAudio 之外), 设置美颜等接口请使用 原 TRTCCloud 实例对象。
  • 同一个用户,同时只能在一个 TRTCCloud 实例中推流,在不同房间同时推流会引发云端的状态混乱,导致各种 bug。

◆ destroySubCloud()

abstract void destroySubCloud ( final TRTCCloud  subCloud)
abstract

销毁子 TRTCCloud 实例

◆ startPublishing()

abstract void startPublishing ( final String  streamId,
final int  streamType 
)
abstract

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

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

例如:如果我们采用如下代码设置当前用户的主画面 StreamId 为 user_stream_001,那么该用户主画面对应的 CDN 播放地址为: “http://yourdomain/live/user_stream_001.flv”,其中 yourdomain 为您自己备案的播放域名, 您可以在直播控制台 配置您的播放域名,腾讯云不提供默认的播放域名。

 TRTCCloud trtcCloud = TRTCCloud.sharedInstance(this);
 trtcCloud.enterRoom(params, TRTCCloudDef.TRTC_APP_SCENE_LIVE);
 trtcCloud.startLocalPreview(frontCamera, localView);
 trtcCloud.startLocalAudio();
 trtcCloud.startPublishing("user_stream_001", TRTCCloudDef.TRTC_VIDEO_STREAM_TYPE_BIG);

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

参数
streamId自定义流 Id。
streamType仅支持 TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_BIGTRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_SUB
注意
您需要先在实时音视频 控制台 中的功能配置页开启“启用旁路推流”才能生效。

◆ stopPublishing()

abstract void stopPublishing ( )
abstract

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

◆ startPublishCDNStream()

abstract void startPublishCDNStream ( TRTCCloudDef.TRTCPublishCDNParam  param)
abstract

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

该接口跟 startPublishing() 类似,但 startPublishCDNStream() 支持向非腾讯云的直播 CDN 转推。 使用 startPublishing() 绑定腾讯云直播 CDN 不收取额外的费用。 使用 startPublishCDNStream() 绑定非腾讯云直播 CDN 需要收取转推费用,且需要通过工单联系我们开通。

参数
paramCDN 转推参数,请参考 TRTCPublishCDNParam

◆ stopPublishCDNStream()

abstract void stopPublishCDNStream ( )
abstract

停止向非腾讯云地址转推

◆ setMixTranscodingConfig()

abstract void setMixTranscodingConfig ( TRTCCloudDef.TRTCTranscodingConfig  config)
abstract

设置云端的混流转码参数

如果您在实时音视频 控制台 中的功能配置页开启了“启用旁路推流”功能, 房间里的每一路画面都会有一个默认的直播 CDN 地址

一个直播间中可能有不止一位主播,而且每个主播都有自己的画面和声音,但对于 CDN 观众来说,他们只需要一路直播流, 所以您需要将多路音视频流混成一路标准的直播流,这就需要混流转码。

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

【画面1】=> 解码 ====> \
                        \
【画面2】=> 解码 =>  画面混合 => 编码 => 【混合后的画面】
                        /
【画面3】=> 解码 ====> /
【声音1】=> 解码 ====> \
                        \
【声音2】=> 解码 =>  声音混合 => 编码 => 【混合后的声音】
                        /
【声音3】=> 解码 ====> /

参考文档:云端混流转码

参数
config请参考 TRTCCloudDef.java 中关于 TRTCTranscodingConfig 的介绍。如果传入 null 则取消云端混流转码。
注意
关于云端混流的注意事项:
  • 云端转码会引入一定的 CDN 观看延时,大概会增加1 - 2秒。
  • 调用该函数的用户,会将连麦中的多路画面混合到自己当前这路画面中。

◆ startLocalPreview()

abstract void startLocalPreview ( boolean  frontCamera,
TXCloudVideoView  view 
)
abstract

开启本地视频的预览画面

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

参数
frontCameratrue:前置摄像头;false:后置摄像头
view承载视频画面的控件

◆ stopLocalPreview()

abstract void stopLocalPreview ( )
abstract

停止本地视频采集及预览

◆ muteLocalVideo()

abstract void muteLocalVideo ( boolean  mute)
abstract

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

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

参数
mutetrue:暂停;false:恢复

◆ setVideoMuteImage()

abstract void setVideoMuteImage ( Bitmap  image,
int  fps 
)
abstract

设置暂停推送本地视频时要推送的图片

当暂停推送本地视频后,会继续推送该接口设置的图片

参数
image设置要推送的图片。 null 表示不推送
fps设置推送图片帧率,最小值为5,最大值为20,默认10。

◆ startRemoteView()

abstract void startRemoteView ( String  userId,
TXCloudVideoView  view 
)
abstract

开始显示远端视频画面

在收到 SDK 的 onUserVideoAvailable(userId, true) 通知时,可以获知该远程用户开启了视频, 此后调用 startRemoteView(userId) 接口加载该用户的远程画面,可以用 loading 动画优化加载过程中的等待体验。 待该用户的首帧画面开始显示时,您会收到 onFirstVideoFrame(userId) 事件回调。

参数
userId对方的用户标识
view承载视频画面的控件

◆ stopRemoteView()

abstract void stopRemoteView ( String  userId)
abstract

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

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

参数
userId对方的用户标识

◆ stopAllRemoteView()

abstract void stopAllRemoteView ( )
abstract

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

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

◆ muteRemoteVideoStream()

abstract void muteRemoteVideoStream ( String  userId,
boolean  mute 
)
abstract

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

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

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

◆ muteAllRemoteVideoStreams()

abstract void muteAllRemoteVideoStreams ( boolean  mute)
abstract

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

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

参数
mute是否暂停接收

◆ setVideoEncoderParam()

abstract void setVideoEncoderParam ( TRTCCloudDef.TRTCVideoEncParam  param)
abstract

设置视频编码器相关参数

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

参数
param视频编码参数,详情请参考 TRTCVideoEncParam 定义

◆ setNetworkQosParam()

abstract void setNetworkQosParam ( TRTCCloudDef.TRTCNetworkQosParam  param)
abstract

设置网络流控相关参数

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

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

◆ setLocalViewFillMode()

abstract void setLocalViewFillMode ( int  mode)
abstract

设置本地图像的渲染模式

参数
mode填充或适应模式,默认值:填充(FILL)。

◆ setRemoteViewFillMode()

abstract void setRemoteViewFillMode ( String  userId,
int  mode 
)
abstract

设置远端图像的渲染模式

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

◆ setLocalViewRotation()

abstract void setLocalViewRotation ( int  rotation)
abstract

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

参数
rotation顺时针旋转角度:

◆ setRemoteViewRotation()

abstract void setRemoteViewRotation ( String  userId,
int  rotation 
)
abstract

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

参数
userId用户 ID
rotation顺时针旋转角度:

◆ setVideoEncoderRotation()

abstract void setVideoEncoderRotation ( int  rotation)
abstract

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

当用户的手机或者 Android Pad 做了一个180度旋转时,由于摄像头的采集方向没有变,所以另一边的用户看到的画面是上下颠倒的, 在这种情况下,您可以通过该接口将 SDK 输出到对方的画面旋转180度,这样可以可以确保对方看到的画面依然正常。

参数
rotation顺时针旋转角度,目前仅支持0度和180度两个角度:

◆ setLocalViewMirror()

abstract void setLocalViewMirror ( int  mirrorType)
abstract

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

参数
mirrorType镜像模式:

◆ setVideoEncoderMirror()

abstract void setVideoEncoderMirror ( boolean  mirror)
abstract

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

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

参数
mirrortrue:镜像;false:不镜像;默认值:false

◆ setGSensorMode()

abstract void setGSensorMode ( int  mode)
abstract

设置重力感应的适应模式

参数
mode重力感应模式:

◆ enableEncSmallVideoStream()

abstract int enableEncSmallVideoStream ( boolean  enable,
TRTCCloudDef.TRTCVideoEncParam  smallVideoEncParam 
)
abstract

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

如果当前用户是房间中的主要角色(例如主播、老师、主持人等),并且使用 PC 或者 Mac 环境,可以开启该模式。 开启该模式后,当前用户会同时输出【高清】和【低清】两路视频流(但只有一路音频流)。 对于开启该模式的当前用户,会占用更多的网络带宽,并且会更加消耗 CPU 计算资源。

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

  • 如果下行网络很好,可以选择观看【高清】画面
  • 如果下行网络较差,可以选择观看【低清】画面
注意
双路编码开启后,会消耗更多的 CPU 和 网络带宽,所以对于 iMac、Windows 或者高性能 Pad 可以考虑开启,但请不要在手机端开启。
参数
enable是否开启小画面编码,默认值:false
smallVideoEncParam小流的视频参数,详情请参考 TRTCVideoEncParam 定义
返回
0:成功;-1:大画面已经是最低画质

◆ setRemoteVideoStreamType()

abstract int setRemoteVideoStreamType ( String  userId,
int  streamType 
)
abstract

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

注意
  1. 此功能需要该 uid 通过 enableEncSmallVideoStream 提前开启双路编码模式。 如果该 uid 没有开启双路编码模式,则此操作将无任何反应。
  2. 在不通过此接口进行设置的情况下,startRemoteView 默认观看的画面为大画面。
参数
userId用户 ID
streamType视频流类型,即选择看大画面(TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_BIG)或小画面(TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_SMALL),默认为大画面。

◆ setPriorRemoteVideoStreamType()

abstract int setPriorRemoteVideoStreamType ( int  streamType)
abstract

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

低端设备推荐优先选择低清晰度的小画面。 如果对方没有开启双路视频模式,则此操作无效。

参数
streamType默认观看大画面(TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_BIG)或小画面(TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_SMALL)。

◆ snapshotVideo()

abstract void snapshotVideo ( String  userId,
int  streamType,
TRTCCloudListener.TRTCSnapshotListener  listener 
)
abstract

视频画面截图

截取本地、远程主路和远端辅流的视频画面,并通过 Bitmap 对象返回给您。

参数
userId用户 ID,null 表示截取本地视频画面,本地仅支持摄像头画面(TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_BIG)的截取。
streamType视频流类型,支持摄像头画面(TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_BIG)和 屏幕分享画面(TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_SUB)。
listener画面截取后的回调。

◆ setAudioQuality()

abstract void setAudioQuality ( int  quality)
abstract

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

  • TRTCCloudDef#TRTC_AUDIO_QUALITY_SPEECH, 流畅:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话。
  • TRTCCloudDef#TRTC_AUDIO_QUALITY_DEFAULT,默认:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。
  • TRTCCloudDef#TRTC_AUDIO_QUALITY_MUSIC,高音质:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,比如K歌、音乐直播等。
    注意
    该方法需要在 startLocalAudio 和 enableCustomAudioCapture 之前进行设置,否则不会生效。

◆ startLocalAudio()

abstract void startLocalAudio ( )
abstract

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

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

注意
该函数会检查麦克风的使用权限,如果当前 App 没有麦克风权限,SDK 会向用户申请开启。

◆ stopLocalAudio()

abstract void stopLocalAudio ( )
abstract

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

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

◆ muteLocalAudio()

abstract void muteLocalAudio ( boolean  mute)
abstract

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

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

与 stopLocalAudio 不同之处在于,muteLocalAudio(true) 并不会停止发送音视频数据,而是继续发送码率极低的静音包。 由于 MP4 等视频文件格式,对于音频的连续性是要求很高的,使用 stopLocalAudio 会导致录制出的 MP4 不易播放。 因此在对录制质量要求很高的场景中,建议选择 muteLocalAudio,从而录制出兼容性更好的 MP4 文件。

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

◆ setAudioRoute()

abstract void setAudioRoute ( int  route)
abstract

设置音频路由

微信和手机 QQ 视频通话功能的免提模式就是基于音频路由实现的。 一般手机都有两个扬声器,一个是位于顶部的听筒扬声器,声音偏小;一个是位于底部的立体声扬声器,声音偏大。 设置音频路由的作用就是决定声音使用哪个扬声器播放。

参数
route音频路由,即声音由哪里输出(扬声器、听筒),请参考 TRTCCloudDef#TRTC_AUDIO_ROUTE_SPEAKER,默认值:TRTCCloudDef#TRTC_AUDIO_ROUTE_SPEAKER

◆ muteRemoteAudio()

abstract void muteRemoteAudio ( String  userId,
boolean  mute 
)
abstract

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

参数
userId对方的用户 ID
mutetrue:静音;false:取消静音
注意
静音时会停止接收该用户的远端音频流并停止播放,取消静音时会自动拉取该用户的远端音频流并进行播放。

◆ muteAllRemoteAudio()

abstract void muteAllRemoteAudio ( boolean  mute)
abstract

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

参数
mutetrue:静音;false:取消静音
注意
静音时会停止接收所有用户的远端音频流并停止播放,取消静音时会自动拉取所有用户的远端音频流并进行播放。

◆ setRemoteAudioVolume()

abstract void setRemoteAudioVolume ( String  userId,
int  volume 
)
abstract

设置某个远程用户的播放音量

参数
userId远程用户 ID
volume音量大小,取值0 - 100

◆ setAudioCaptureVolume()

abstract void setAudioCaptureVolume ( int  volume)
abstract

设置 SDK 采集音量。

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

◆ getAudioCaptureVolume()

abstract int getAudioCaptureVolume ( )
abstract

获取 SDK 采集音量

◆ setAudioPlayoutVolume()

abstract void setAudioPlayoutVolume ( int  volume)
abstract

设置 SDK 播放音量。

注意
该函数会控制最终交给系统播放的声音音量,会影响录制本地音频文件的音量大小,但不会影响耳返的音量。
参数
volume音量大小,取值0 - 100,默认值为100

◆ getAudioPlayoutVolume()

abstract int getAudioPlayoutVolume ( )
abstract

获取 SDK 播放音量

◆ enableAudioVolumeEvaluation()

abstract void enableAudioVolumeEvaluation ( int  intervalMs)
abstract

启用音量大小提示

开启后会在 onUserVoiceVolume 中获取到 SDK 对音量大小值的评估。如需打开此功能,请在 startLocalAudio() 之前调用。

注意
Demo 中有一个音量大小的提示条,就是基于该接口实现的。
参数
intervalMs决定了 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;详细的回调规则请参考 onUserVoiceVolume 的注释说明

◆ startAudioRecording()

abstract int startAudioRecording ( TRTCCloudDef.TRTCAudioRecordingParams  TRTCAudioRecordingParams)
abstract

开始录音

该方法调用后, SDK 会将通话过程中的所有音频(包括本地音频,远端音频,BGM 等)录制到一个文件里。 无论是否进房,调用该接口都生效。 如果调用 exitRoom 时还在录音,录音会自动停止。

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

◆ stopAudioRecording()

abstract void stopAudioRecording ( )
abstract

停止录音

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

◆ setSystemVolumeType()

abstract void setSystemVolumeType ( int  type)
abstract

设置通话时使用的系统音量类型

智能手机一般具备两种系统音量类型,即通话音量类型和媒体音量类型。

  • 通话音量:手机专门为通话场景设计的音量类型,使用手机自带的回声抵消功能,音质相比媒体音量类型较差, 无法通过音量按键将音量调成零,但是支持蓝牙耳机上的麦克风。
  • 媒体音量:手机专门为音乐场景设计的音量类型,音质相比于通话音量类型要好,通过通过音量按键可以将音量调成零。 使用媒体音量类型时,如果要开启回声抵消(AEC)功能,SDK 会开启内置的声学处理算法对声音进行二次处理。 在媒体音量模式下,蓝牙耳机无法使用自带的麦克风采集声音,只能使用手机上的麦克风进行声音采集。

SDK 目前提供了三种系统音量类型的控制模式,分别为:

注意
  1. 需要在调用 startLocalAudio() 之前调用该接口。
  2. 如无特殊需求,不推荐您自行设置,您只需通过 enterRoom 设置好适合您的场景,SDK 内部会自动选择相匹配的音量类型。
参数
type系统音量类型,如无特殊需求,不推荐您自行设置。

◆ enableAudioEarMonitoring()

abstract void enableAudioEarMonitoring ( boolean  enable)
abstract

开启耳返

开启后会在耳机里听到自己的声音。

注意
仅在戴耳机时有效
参数
enabletrue:开启;false:关闭

◆ switchCamera()

abstract void switchCamera ( )
abstract

切换摄像头

◆ isCameraZoomSupported()

abstract boolean isCameraZoomSupported ( )
abstract

查询当前摄像头是否支持缩放

◆ setZoom()

abstract void setZoom ( int  distance)
abstract

设置摄像头缩放因子(焦距)

取值范围1 - 5,取值为1表示最远视角(正常镜头),取值为5表示最近视角(放大镜头)。 最大值推荐为5,若超过5,视频数据会变得模糊不清。

参数
distance取值范围为1 - 5,数值越大,焦距越远

◆ isCameraTorchSupported()

abstract boolean isCameraTorchSupported ( )
abstract

查询是否支持开关闪光灯(手电筒模式)

◆ enableTorch()

abstract boolean enableTorch ( boolean  enable)
abstract

开关闪光灯

参数
enabletrue:开启;false:关闭,默认值:false

◆ isCameraFocusPositionInPreviewSupported()

abstract boolean isCameraFocusPositionInPreviewSupported ( )
abstract

查询是否支持设置焦点

◆ setFocusPosition()

abstract void setFocusPosition ( int  x,
int  y 
)
abstract

设置摄像头焦点

参数
x对焦位置 x 坐标
y对焦位置 y 坐标

◆ isCameraAutoFocusFaceModeSupported()

abstract boolean isCameraAutoFocusFaceModeSupported ( )
abstract

查询是否支持自动识别人脸位置

◆ getBeautyManager()

abstract TXBeautyManager getBeautyManager ( )
abstract

获取美颜管理对象

通过美颜管理,您可以使用以下功能:

  • 设置”美颜风格”、”美白”、“红润”、“大眼”、“瘦脸”、“V脸”、“下巴”、“短脸”、“瘦鼻”、“亮眼”、“白牙”、“祛眼袋”、“祛皱纹”、“祛法令纹”等美容效果。
  • 调整“发际线”、“眼间距”、“眼角”、“嘴形”、“鼻翼”、“鼻子位置”、“嘴唇厚度”、“脸型”
  • 设置人脸挂件(素材)等动态效果
  • 添加美妆
  • 进行手势识别

◆ setWatermark()

abstract void setWatermark ( Bitmap  image,
int  streamType,
float  x,
float  y,
float  width 
)
abstract

添加水印

水印的位置是通过 x, y, width 来指定的

  • x:水印的坐标,取值范围为0 - 1的浮点数。
  • y:水印的坐标,取值范围为0 - 1的浮点数。
  • width:水印的宽度,取值范围为0 - 1的浮点数。

举例:如果当前编码分辨率是540 × 960,(x, y, width) 设置为(0.1, 0.1, 0.2) 那么:水印的左上坐标点就是 (540 × 0.1, 960 × 0.1),也就是 (54, 96),水印的宽度是 540 × 0.2 = 108px,高度自动计算。

参数
image水印图片,**必须使用透明底的 png 格式**
streamType如果要给屏幕分享的一路也设置水印,需要调用两次的 setWatermark,请参考 TRTCCloudDef#TRTC_VIDEO_STREAM_TYPE_BIG
x归一化水印位置的 X 轴坐标,取值[0,1]
y归一化水印位置的 Y 轴坐标,取值[0,1]
width归一化水印宽度,取值[0,1]

◆ getAudioEffectManager()

abstract TXAudioEffectManager getAudioEffectManager ( )
abstract

获取音效管理类 TXAudioEffectManager

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

  • 耳机耳返:麦克风捕捉的声音实时通过耳机播放。
  • 混响效果:KTV、小房间、大会堂、低沉、洪亮...
  • 变声特效:萝莉、大叔、重金属、外国人...
  • 背景音乐:支持在线音乐和本地音乐,支持变速、变调等特效、支持原生和伴奏并播放和循环播放。
  • 短音效:鼓掌声、欢笑声等简短的音效文件,对于小于10秒的文件,请将 isShortFile 参数设置为 YES。

◆ startScreenCapture()

abstract void startScreenCapture ( TRTCCloudDef.TRTCVideoEncParam  encParams,
TRTCCloudDef.TRTCScreenShareParams  shareParams 
)
abstract

启动屏幕分享

参考文档:实时屏幕分享(Android)

Android 手机的屏幕分享的推荐配置参数:

  • 分辨率(videoResolution):1280 x 720
  • 帧率(videoFps):10 FPS
  • 码率(videoBitrate):1200 kbps
  • 分辨率自适应(enableAdjustRes):false
参数
encParams编码参数,请参考 TRTCCloudDef#TRTCVideoEncParam。如果您指定 encParams 为 null,SDK 会自动使用之前设定的编码参数。
shareParams请参考 TRTCCloudDef#TRTCScreenShareParams,您可以通过其中的 floatingView 参数弹出悬浮窗(也可以使用 Android 系统的 WindowManager 接口自行弹出)。

◆ stopScreenCapture()

abstract void stopScreenCapture ( )
abstract

停止屏幕采集

◆ pauseScreenCapture()

abstract void pauseScreenCapture ( )
abstract

暂停屏幕分享

◆ resumeScreenCapture()

abstract void resumeScreenCapture ( )
abstract

恢复屏幕分享

◆ startRemoteSubStreamView()

abstract void startRemoteSubStreamView ( String  userId,
TXCloudVideoView  view 
)
abstract

开始显示远端用户的屏幕分享画面

对应于 startRemoteView() 用于显示主画面,该接口只能用于显示辅路(屏幕分享、远程播片)画面。

参数
userId对方的用户标识
view渲染控件
注意
请在 onUserSubStreamAvailable 回调后再调用这个接口。

◆ stopRemoteSubStreamView()

abstract void stopRemoteSubStreamView ( String  userId)
abstract

停止显示远端用户的屏幕分享画面。

参数
userId对方的用户标识

◆ setRemoteSubStreamViewFillMode()

abstract void setRemoteSubStreamViewFillMode ( String  userId,
int  mode 
)
abstract

设置屏幕分享画面的显示模式

对应于 setRemoteViewFillMode() 设置主画面的显示模式,该接口用于设置远端的辅路(屏幕分享、远程播片)画面。

参数
userId用户的 ID
mode填充或适应模式,默认值:填充(FILL)。

◆ setRemoteSubStreamViewRotation()

abstract void setRemoteSubStreamViewRotation ( final String  userId,
final int  rotation 
)
abstract

设置屏幕分享画面的顺时针旋转角度

对应于 setRemoteViewRotation() 用于设置主画面的旋转角度,该接口用于设置远端的辅路(屏幕分享、远程播片)画面。

参数
userId用户 ID
rotation顺时针旋转角度:

◆ enableCustomVideoCapture()

abstract void enableCustomVideoCapture ( boolean  enable)
abstract

启用视频自定义采集模式

开启该模式后,SDK 不在运行原有的视频采集流程,只保留编码和发送能力。 您需要用 sendCustomVideoData() 不断地向 SDK 塞入自己采集的视频画面。

参数
enable是否启用 true:启用;false:关闭,默认值:false

◆ sendCustomVideoData()

abstract void sendCustomVideoData ( TRTCCloudDef.TRTCVideoFrame  frame)
abstract

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

Android 平台有两种的方案:buffer

  • buffer 方案:对接起来比较简单,但是性能较差,不适合分辨率较高的场景。
  • texture 方案:对接需要一定的 OpenGL 基础,但是性能较好,640 × 360 以上的分辨率请采用该方案。

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

参数
frame视频数据,如果是 buffer 方案,请设置 data 字段;如果是 texture 方案,请设置 TRTCTexture 对象。请参考 TRTCVideoFrame
注意
- SDK 内部有帧率控制逻辑,目标帧率以您在 setVideoEncoderParam 中设置的为准,太快会自动丢帧,太慢则会自动补帧。
- 可以设置 frame 中的 timestamp 为 0,相当于让 SDK 自己设置时间戳,但请“均匀”地控制 sendCustomVideoData 的调用间隔,否则会导致视频帧率不稳定。

◆ setLocalVideoRenderListener()

abstract int setLocalVideoRenderListener ( int  pixelFormat,
int  bufferType,
TRTCCloudListener.TRTCVideoRenderListener  listener 
)
abstract

设置本地视频的自定义渲染回调

设置此方法后,SDK 内部会跳过自己原来的渲染流程,并把采集到的数据回调出来,您需要自己完成画面的渲染。

  • pixelFormat 指定回调的数据格式,目前支持 Texture2D 和 I420 两种格式。
  • bufferType 指定 buffer 的类型,BYTE_BUFFER 适合在 jni 层使用,BYTE_ARRAY 则可用于 Java 层的直接操作。

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

参数
pixelFormat指定视频帧的像素格式,如
bufferType指定视频帧的数据结构:
listener自定义视频渲染回调,每一帧视频数据回调一次
返回
0:成功;<0:错误

◆ setRemoteVideoRenderListener()

abstract int setRemoteVideoRenderListener ( String  userId,
int  pixelFormat,
int  bufferType,
TRTCCloudListener.TRTCVideoRenderListener  listener 
)
abstract

设置远端视频的自定义渲染回调

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

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

注意
实际使用时,需要先调用 startRemoteView(userid, null) 启动远程视频流的拉取,并将 view 设置为 null, 否则 SDK 不会启动自定义渲染流程,该 listener 的回调函数不会被触发。
参数
userId对方的用户标识
pixelFormat指定视频帧的像素格式,目前仅支持 TRTCCloudDef#TRTC_VIDEO_PIXEL_FORMAT_I420
bufferType指定视频帧的数据结构,如 TRTCCloudDef#TRTC_VIDEO_BUFFER_TYPE_BYTE_BUFFERTRTCCloudDef#TRTC_VIDEO_BUFFER_TYPE_BYTE_ARRAY
listener自定义视频渲染回调,每一帧视频数据回调一次
返回
0:成功;<0:错误

◆ enableCustomAudioCapture()

abstract void enableCustomAudioCapture ( boolean  enable)
abstract

启用音频自定义采集模式

开启该模式后,SDK 不在运行原有的音频采集流程,只保留编码和发送能力。 您需要用 sendCustomAudioData() 不断地向 SDK 塞入自己采集的音频数据。

参数
enable是否启用 true:启用;false:关闭,默认值:false

◆ sendCustomAudioData()

abstract void sendCustomAudioData ( TRTCCloudDef.TRTCAudioFrame  frame)
abstract

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

TRTCAudioFrame 推荐如下填写方式:

  • data:音频帧 buffer。音频帧数据必须是 PCM 格式,推荐每帧20ms采样数。【48000采样率、单声道的帧长度:48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。
  • sampleRate:采样率,仅支持48000。
  • channel:频道数量(如果是立体声,数据是交叉的),单声道:1; 双声道:2。
  • timestamp:如果 timestamp 间隔不均匀,会严重影响音画同步和录制出的 MP4 质量。

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

参数
frame音频帧。目前只支持单声道,仅支持48K采样率。请参考 TRTCAudioFrame
注意
可以设置 frame 中的 timestamp 为 0,相当于让 SDK 自己设置时间戳,但请“均匀”地控制 sendCustomAudioData 的调用间隔,否则会导致声音断断续续。

◆ setAudioFrameListener()

abstract void setAudioFrameListener ( TRTCCloudListener.TRTCAudioFrameListener  listener)
abstract

设置音频数据回调

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

  • onCapturedAudioFrame:本机麦克风采集到的音频数据
  • onPlayAudioFrame:混音前的每一路远程用户的音频数据
  • onMixedPlayAudioFrame:各路音频数据混合后送入扬声器播放的音频数据
参数
listener音频数据回调,listener = null 则停止回调数据

◆ sendCustomCmdMsg()

abstract boolean sendCustomCmdMsg ( int  cmdID,
byte[]  data,
boolean  reliable,
boolean  ordered 
)
abstract

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

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

参数
cmdID消息 ID,取值范围为1 - 10
data待发送的消息,最大支持1KB(1000字节)的数据大小
reliable是否可靠发送,可靠发送的代价是会引入一定的延时,因为接收端要暂存一段时间的数据来等待重传
ordered是否要求有序,即是否要求接收端接收的数据顺序和发送端发送的顺序一致,这会带来一定的接收延时,因为在接收端需要暂存并排序这些消息。
返回
true:消息已经发出;false:消息发送失败
注意
本接口有以下限制:
  • 发送消息到房间内所有用户,每秒最多能发送30条消息。
  • 每个包最大为1KB,超过则很有可能会被中间路由器或者服务器丢弃。
  • 每个客户端每秒最多能发送总计8KB数据。
  • 将 reliable 和 ordered 同时设置为 true 或 false,暂不支持交叉设置。
  • 强烈建议不同类型的消息使用不同的 cmdID,这样可以在要求有序的情况下减小消息时延。

◆ sendSEIMsg()

abstract boolean sendSEIMsg ( byte[]  data,
int  repeatCount 
)
abstract

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

与 sendCustomCmdMsg 的原理不同,sendSEIMsg 是将数据直接塞入视频数据头中。因此,即使视频帧被旁路到了直播 CDN 上, 这些数据也会一直存在。由于需要把数据嵌入视频帧中,建议尽量控制数据大小,推荐使用几个字节大小的数据。

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

参数
data待发送的数据,最大支持1kb(1000字节)的数据大小
repeatCount发送数据次数
返回
true:消息已通过限制,等待后续视频帧发送;false:消息被限制发送
注意
本接口有以下限制:
  • 数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始带在视频帧中发送。
  • 发送消息到房间内所有用户,每秒最多能发送30条消息(与 sendCustomCmdMsg 共享限制)。
  • 每个包最大为1KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与 sendCustomCmdMsg 共享限制)。
  • 每个客户端每秒最多能发送总计8KB数据(与 sendCustomCmdMsg 共享限制)。
  • 若指定多次发送(repeatCount > 1),则数据会被带在后续的连续 repeatCount 个视频帧中发送出去,同样会导致视频码率增大。
  • 如果 repeatCount > 1,多次发送,接收消息 onRecvSEIMsg 回调也可能会收到多次相同的消息,需要去重。

◆ startSpeedTest()

abstract void startSpeedTest ( int  sdkAppId,
String  userId,
String  userSig 
)
abstract

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

测速结果将会用于优化 SDK 接下来的服务器选择策略,因此推荐您在用户首次通话前先进行一次测速,这将有助于我们选择最佳的服务器。 同时,如果测试结果非常不理想,您可以通过醒目的 UI 提示用户选择更好的网络。 测试结果通过 TRTCCloudListener.onSpeedTest 回调出来。

注意
测速本身会消耗一定的流量,所以也会产生少量额外的流量费用。
参数
sdkAppId应用标识
userId用户标识
userSig用户签名

◆ stopSpeedTest()

abstract void stopSpeedTest ( )
abstract

停止服务器测速

◆ getSDKVersion()

static String getSDKVersion ( )
inlinestatic

获取 SDK 版本信息

◆ setLogLevel()

static void setLogLevel ( int  level)
inlinestatic

设置 Log 输出级别

参数
level请参见 TRTC_LOG_LEVEL,默认值:TRTCCloudDef#TRTC_LOG_LEVEL_NULL

◆ setConsoleEnabled()

static void setConsoleEnabled ( boolean  enabled)
inlinestatic

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

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

◆ setLogCompressEnabled()

static void setLogCompressEnabled ( boolean  enabled)
inlinestatic

启用或禁用 Log 的本地压缩。

开启压缩后,log 存储体积明显减小,但需要腾讯云提供的 Python 脚本解压后才能阅读。 禁用压缩后,log 采用明文存储,可以直接用记事本打开阅读,但占用空间较大。

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

◆ setLogDirPath()

static void setLogDirPath ( String  path)
inlinestatic

修改日志保存路径

注意
日志文件默认保存在 /app私有目录/files/log/tencent/liteav/ 下,如需修改, 必须在所有方法前调用,并且保证目录存在及应用有目录的读写权限。
参数
path存储日志路径

◆ setLogListener()

static void setLogListener ( final TRTCCloudListener.TRTCLogListener  logListener)
inlinestatic

设置日志回调

◆ showDebugView()

abstract void showDebugView ( int  showType)
abstract

显示仪表盘

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

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

◆ setDebugViewMargin()

abstract void setDebugViewMargin ( String  userId,
TRTCViewMargin  margin 
)
abstract

设置仪表盘的边距

必须在 showDebugView 调用前设置才会生效

参数
userId用户 ID
margin仪表盘内边距,基于 parentView 的百分比,margin 的取值范围是0 - 1

◆ callExperimentalAPI()

abstract void callExperimentalAPI ( String  jsonStr)
abstract

调用实验性 API 接口

注意
该接口用于调用一些实验性功能
参数
jsonStr接口及参数描述的 JSON 字符串

◆ setNetEnv()

static native void setNetEnv ( int  env)
static

设置后台环境(正式环境,测试环境)

注意
仅适用于腾讯内部研发团队使用,测试环境服务器和正式环境是隔离的,而且有大量的不确定性问题,请勿使用。
参数
env服务器环境 0:正式环境;1:测试环境;2:体验环境,默认为正式环境

◆ setMicVolumeOnMixing()

abstract void setMicVolumeOnMixing ( int  volume)
abstract

设置麦克风的音量大小

弃用:
v6.9 版本弃用 播放背景音乐混音时使用,用来控制麦克风音量大小。
参数
volume音量大小,100为正常音量,取值范围为0 - 100;默认值:100

◆ setBeautyStyle()

abstract void setBeautyStyle ( int  beautyStyle,
int  beautyLevel,
int  whitenessLevel,
int  ruddinessLevel 
)
abstract

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

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

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
beautyStyle美颜风格,光滑或者自然,光滑风格磨皮更加明显,适合娱乐场景。
beautyLevel美颜级别,取值范围0 - 9; 0表示关闭,1 - 9值越大,效果越明显。
whitenessLevel美白级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。
ruddinessLevel红润级别,取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。

◆ setEyeScaleLevel()

abstract void setEyeScaleLevel ( int  eyeScaleLevel)
abstract

设置大眼级别,该接口仅在 企业版 SDK 中生效

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
eyeScaleLevel大眼级别取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。

◆ setFaceSlimLevel()

abstract void setFaceSlimLevel ( int  faceScaleLevel)
abstract

设置瘦脸级别,该接口仅在 企业版 SDK 中生效

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
faceScaleLevel瘦脸级别取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。

◆ setFaceVLevel()

abstract void setFaceVLevel ( int  faceVLevel)
abstract

设置 V 脸级别,该接口仅在 企业版 SDK 中生效

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
faceVLevelV脸级别取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。

◆ setChinLevel()

abstract void setChinLevel ( int  chinLevel)
abstract

设置下巴拉伸或收缩,该接口仅在 企业版 SDK 中生效

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
chinLevel下巴拉伸或收缩级别取值范围0 - 9;0表示关闭,<0表示收缩,>0表示拉伸。

◆ setFaceShortLevel()

abstract void setFaceShortLevel ( int  faceShortlevel)
abstract

设置短脸级别,该接口仅在 企业版 SDK 中生效

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
faceShortlevel短脸级别取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。

◆ setNoseSlimLevel()

abstract void setNoseSlimLevel ( int  noseSlimLevel)
abstract

设置瘦鼻级别,该接口仅在 企业版 SDK 中生效

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
noseSlimLevel瘦鼻级别取值范围0 - 9;0表示关闭,1 - 9值越大,效果越明显。

◆ selectMotionTmpl()

abstract void selectMotionTmpl ( String  motionPath)
abstract

选择使用哪一款 AI 动效挂件,该接口仅在 企业版 SDK 中生效

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
motionPath动效完整路径

◆ setMotionMute()

abstract void setMotionMute ( boolean  motionMute)
abstract

设置动效静音,该接口仅在 企业版 SDK 中生效

有些挂件本身会有声音特效,通过此 API 可以关闭这些特效播放时所带的声音效果。

弃用:
v6.9 版本弃用,请使用 TXBeautyManager 设置美颜功能
参数
motionMutetrue:静音;false:不静音

◆ setFilter()

abstract void setFilter ( Bitmap  image)
abstract

设置指定素材滤镜特效

弃用:
v7.2 版本弃用,请使用 TXBeautyManager 设置滤镜功能

◆ setFilterConcentration()

abstract void setFilterConcentration ( float  concentration)
abstract

设置滤镜浓度

弃用:
v7.2 版本弃用,请使用 TXBeautyManager 设置滤镜浓度功能

◆ setGreenScreenFile()

abstract boolean setGreenScreenFile ( String  file)
abstract

设置绿幕背景视频(企业版有效,其它版本设置此参数无效)

弃用:
v7.2 版本弃用,请使用 TXBeautyManager 设置绿幕功能

◆ playBGM()

abstract void playBGM ( String  path,
BGMNotify  notify 
)
abstract

启动播放背景音乐

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ stopBGM()

abstract void stopBGM ( )
abstract

停止播放背景音乐

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ pauseBGM()

abstract void pauseBGM ( )
abstract

暂停播放背景音乐

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ resumeBGM()

abstract void resumeBGM ( )
abstract

继续播放背景音乐

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ getBGMDuration()

abstract int getBGMDuration ( String  path)
abstract

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

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ setBGMPosition()

abstract int setBGMPosition ( int  pos)
abstract

设置 BGM 播放进度

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ setBGMVolume()

abstract void setBGMVolume ( int  volume)
abstract

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

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ setBGMPlayoutVolume()

abstract void setBGMPlayoutVolume ( int  volume)
abstract

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

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ setBGMPublishVolume()

abstract void setBGMPublishVolume ( int  volume)
abstract

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

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ setReverbType()

abstract void setReverbType ( int  reverbType)
abstract

设置混响效果

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ setVoiceChangerType()

abstract boolean setVoiceChangerType ( int  voiceChangerType)
abstract

设置变声类型

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ playAudioEffect()

abstract void playAudioEffect ( TRTCCloudDef.TRTCAudioEffectParam  effect)
abstract

播放音效

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ setAudioEffectVolume()

abstract void setAudioEffectVolume ( int  effectId,
int  volume 
)
abstract

设置音效的音量

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ stopAudioEffect()

abstract void stopAudioEffect ( int  effectId)
abstract

停止音效

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ stopAllAudioEffects()

abstract void stopAllAudioEffects ( )
abstract

停止所有音效

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ setAllAudioEffectsVolume()

abstract void setAllAudioEffectsVolume ( int  volume)
abstract

设置所有音效的音量

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ pauseAudioEffect()

abstract void pauseAudioEffect ( int  effectId)
abstract

暂停音效

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐

◆ resumeAudioEffect()

abstract void resumeAudioEffect ( int  effectId)
abstract

恢复音效

弃用:
v7.3 版本弃用,请使用 TXAudioEffectManager 设置音效和背景音乐