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

详细描述

腾讯云实时音视频的关键类型定义

Module: TRTC 关键类型定义 Function: 分辨率、质量等级等枚举和常量值的定义


结构体说明

◆ liteav::RECT

struct liteav::RECT
成员变量
int bottom
int left
int right
int top

◆ liteav::SIZE

struct liteav::SIZE
成员变量
long height
long width

◆ liteav::TRTCParams

struct liteav::TRTCParams

Public 成员函数

 TRTCParams ()
 

成员变量

uint32_t sdkAppId
 
const char * userId
 
const char * userSig
 
uint32_t roomId
 
const char * strRoomId
 
TRTCRoleType role
 
const char * streamId
 
const char * userDefineRecordId
 
const char * privateMapKey
 
const char * businessInfo
 

构造及析构函数说明

◆ TRTCParams()

TRTCParams ( )
inline

结构体成员变量说明

◆ businessInfo

const char* businessInfo

【字段含义】业务数据字段(选填),部分高级特性才需要用到此字段。
【推荐取值】请不要自行设置该字段。

◆ privateMapKey

const char* privateMapKey

【字段含义】用于权限控制的权限票据(选填),当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。
【推荐取值】仅建议有高级别安全需求的客户使用,更多详情请参见 进房权限保护

◆ role

【字段含义】直播场景下的角色,仅适用于直播场景(TRTCAppSceneLIVETRTCAppSceneVoiceChatRoom),通话场景下指定该参数是无效的。
【推荐取值】默认值:主播(TRTCRoleAnchor)。

◆ roomId

uint32_t roomId

【字段含义】数字房间号,在同一个房间里的用户(userId)可以彼此看到对方并进行音视频通话。
【推荐取值】取值范围:1 - 4294967294。
【特别说明】roomId 与 strRoomId 是互斥的,若您选用 strRoomId,则 roomId 需要填写为0。若两者都填,SDK 将优先选用 roomId。
【请您注意】不要混用 roomId 和 strRoomId,因为它们之间是不互通的,比如数字 123 和字符串 “123” 在 TRTC 看来是两个完全不同的房间。

◆ sdkAppId

uint32_t sdkAppId

【字段含义】应用标识(必填),腾讯云基于 sdkAppId 完成计费统计。
【推荐取值】在 实时音视频控制台 创建应用后可以在账号信息页面中得到该 ID。

◆ streamId

const char* streamId

【字段含义】用于指定在腾讯云直播平台上的 streamId(选填),设置之后,您可以在腾讯云直播 CDN 上通过标准拉流方案(FLV或HLS)播放该用户的音视频流。
【推荐取值】限制长度为64字节,可以不填写,一种推荐的方案是使用 “sdkappid_roomid_userid_main” 作为 streamid,这中命名方式容易辨认且不会在您的多个应用中发生冲突。
【特殊说明】要使用腾讯云直播 CDN,您需要先在控制台 中的功能配置页开启“启动自动旁路直播”开关。
【参考文档】CDN 旁路直播

◆ strRoomId

const char* strRoomId

【字段含义】字符串房间号,在同一个房间里的用户(userId)可以彼此看到对方并进行音视频通话。
【特别说明】roomId 与 strRoomId 是互斥的,若您选用 strRoomId,则 roomId 需要填写为0。若两者都填,SDK 将优先选用 roomId。
【请您注意】不要混用 roomId 和 strRoomId,因为它们之间是不互通的,比如数字 123 和字符串 “123” 在 TRTC 看来是两个完全不同的房间。
【推荐取值】限制长度为64字节。以下为支持的字符集范围(共 89 个字符):

  • 大小写英文字母(a-zA-Z);
  • 数字(0-9);
  • 空格、"!"、"#"、"$"、"%"、"&"、"("、")"、"+"、"-"、":"、";"、"<"、"="、"."、">"、"?"、"@"、"["、"]"、"^"、"_"、" {"、"}"、"|"、"~"、","。

◆ userDefineRecordId

const char* userDefineRecordId

【字段含义】云端录制开关(选填),用于指定是否要在云端将该用户的音视频流录制下来。
【参考文档】云端录制
【推荐取值】限制长度为64字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。

方案一:手动录制方案:

  1. 在“控制台 => 应用管理 => 云端录制配置”中开启云端录制。
  2. 设置“录制形式”为“手动录制”。
  3. 设置手动录制后,在一个 TRTC 房间中只有设置了 userDefineRecordId 参数的用户才会在云端录制出视频文件,不指定该参数的用户不会产生录制行为。
  4. 云端会以 “userDefineRecordId_起始时间_结束时间” 的格式命名录制下来的文件。

方案二:自动录制方案:

  1. 需要在“控制台 => 应用管理 => 云端录制配置”中开启云端录制。
  2. 设置“录制形式”为“自动录制”。
  3. 设置自动录制后,在一个 TRTC 房间中的任何一个有音视频上行的用户,均会在云端录制出视频文件。
  4. 文件会以 “userDefineRecordId_起始时间_结束时间” 的格式命名,如果不指定 userDefineRecordId,则文件会以 “streamId_起始时间_结束时间” 命名。

◆ userId

const char* userId

【字段含义】用户标识(必填),当前用户的 userId,相当于用户名,使用 UTF-8 编码。
【推荐取值】如果一个用户在您的帐号系统中的 ID 为“mike”,则 userId 即可设置为“mike”。

◆ userSig

const char* userSig

【字段含义】用户签名(必填),当前 userId 对应的验证签名,相当于使用云服务的登录密码。
【推荐取值】具体计算方法请参见 如何计算UserSig

◆ liteav::TRTCVideoEncParam

struct liteav::TRTCVideoEncParam

Public 成员函数

 TRTCVideoEncParam ()
 

成员变量

TRTCVideoResolution videoResolution
 
TRTCVideoResolutionMode resMode
 
uint32_t videoFps
 
uint32_t videoBitrate
 
uint32_t minVideoBitrate
 
bool enableAdjustRes
 

构造及析构函数说明

◆ TRTCVideoEncParam()

TRTCVideoEncParam ( )
inline

结构体成员变量说明

◆ enableAdjustRes

bool enableAdjustRes

【字段含义】是否允许动态调整分辨率(开启后会对云端录制产生影响)。
【推荐取值】该功能适用于不需要云端录制的场景,开启后 SDK 会根据当前网络情况,智能选择出一个合适的分辨率,避免出现“大分辨率+小码率”的低效编码模式。
【特别说明】默认值:关闭。如有云端录制的需求,请不要开启此功能,因为如果视频分辨率发生变化后,云端录制出的 MP4 在普通的播放器上无法正常播放。

◆ minVideoBitrate

uint32_t minVideoBitrate

【字段含义】最低视频码率,SDK 会在网络不佳的情况下主动降低视频码率以保持流畅度,最低会降至 minVideoBitrate 所设定的数值。
【特别说明】 默认值:0,此时最低码率由 SDK 会根据您指定的分辨率,自动计算出合适的数值。
【推荐取值】您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围:

  • 如果您追求“弱网络下允许卡顿但要保持清晰”的效果,可以设置 minVideoBitrate 为 videoBitrate 的 60%;
  • 如果您追求“弱网络下允许模糊但要保持流畅”的效果,可以设置 minVideoBitrate 为一个较低的数值(比如 100kbps);
  • 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。

◆ resMode

【字段含义】分辨率模式(横屏分辨率 or 竖屏分辨率)
【推荐取值】手机平台(iOS、Android)建议选择 Portrait,桌面平台(Windows、Mac)建议选择 Landscape。
【特别说明】如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如: 640 × 360 + Portrait = 360 × 640。

◆ videoBitrate

uint32_t videoBitrate

【字段含义】目标视频码率,SDK 会按照目标码率进行编码,只有在弱网络环境下才会主动降低视频码率。
【推荐取值】请参考本 TRTCVideoResolution 在各档位注释的最佳码率,也可以在此基础上适当调高。 比如:TRTCVideoResolution_1280_720 对应 1200kbps 的目标码率,您也可以设置为 1500kbps 用来获得更好的观感清晰度。
【特别说明】您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围:

  • 如果您追求“弱网络下允许卡顿但要保持清晰”的效果,可以设置 minVideoBitrate 为 videoBitrate 的 60%;
  • 如果您追求“弱网络下允许模糊但要保持流畅”的效果,可以设置 minVideoBitrate 为一个较低的数值(比如 100kbps);
  • 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。

◆ videoFps

uint32_t videoFps

【字段含义】视频采集帧率
【推荐取值】15fps或20fps。5fps以下,卡顿感明显。10fps以下,会有轻微卡顿感。20fps以上,会浪费带宽(电影的帧率为24fps)。
【特别说明】部分 Android 手机的前置摄像头并不支持15fps以上的采集帧率,部分主打美颜功能的 Android 手机的前置摄像头的采集帧率可能低于10fps。

◆ videoResolution

TRTCVideoResolution videoResolution

【字段含义】 视频分辨率
【特别说明】如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如: 640 × 360 + Portrait = 360 × 640。
【推荐取值】

  • 手机视频通话:建议选择 360 × 640 及以下分辨率,resMode 选择 Portrait,即竖屏分辨率。
  • 手机在线直播:建议选择 540 × 960,resMode 选择 Portrait,即竖屏分辨率。
  • 桌面平台(Win + Mac):建议选择 640 × 360 及以上分辨率,resMode 选择 Landscape,即横屏分辨率。

◆ liteav::TRTCNetworkQosParam

struct liteav::TRTCNetworkQosParam

Public 成员函数

 TRTCNetworkQosParam ()
 

成员变量

TRTCVideoQosPreference preference
 
TRTCQosControlMode controlMode
 

构造及析构函数说明

◆ TRTCNetworkQosParam()

TRTCNetworkQosParam ( )
inline

结构体成员变量说明

◆ controlMode

TRTCQosControlMode controlMode

【字段含义】流控模式(已废弃)
【推荐取值】云端控制
【特别说明】请设置为云端控制模式(TRTCQosControlModeServer)

◆ preference

【字段含义】清晰优先还是流畅优先
【推荐取值】清晰优先
【特别说明】该参数主要影响 TRTC 在较差网络环境下的音视频表现:

  • 流畅优先:即当前网络不足以传输既清晰又流畅的画面时,优先保证画面的流畅性,代价就是画面会比较模糊且伴随有较多的马赛克。
  • 清晰优先(默认值):即当前网络不足以传输既清晰又流畅的画面时,优先保证画面的清晰度,代价就是画面会比较卡顿。

◆ liteav::TRTCRenderParams

struct liteav::TRTCRenderParams

Public 成员函数

 TRTCRenderParams ()
 

成员变量

TRTCVideoRotation rotation
 
TRTCVideoFillMode fillMode
 
TRTCVideoMirrorType mirrorType
 

构造及析构函数说明

◆ TRTCRenderParams()

TRTCRenderParams ( )
inline

结构体成员变量说明

◆ fillMode

【字段含义】画面填充模式
【推荐取值】填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fill

◆ mirrorType

TRTCVideoMirrorType mirrorType

【字段含义】画面镜像模式
【推荐取值】默认值:TRTCVideoMirrorType_Auto

◆ rotation

【字段含义】图像的顺时针旋转角度
【推荐取值】支持90、180以及270旋转角度,默认值:TRTCVideoRotation_0

◆ liteav::TRTCQualityInfo

struct liteav::TRTCQualityInfo

Public 成员函数

 TRTCQualityInfo ()
 

成员变量

const char * userId
 
TRTCQuality quality
 

构造及析构函数说明

◆ TRTCQualityInfo()

TRTCQualityInfo ( )
inline

结构体成员变量说明

◆ quality

TRTCQuality quality

网络质量

◆ userId

const char* userId

用户 ID

◆ liteav::TRTCVolumeInfo

struct liteav::TRTCVolumeInfo

Public 成员函数

 TRTCVolumeInfo ()
 

成员变量

const char * userId
 
uint32_t volume
 

构造及析构函数说明

◆ TRTCVolumeInfo()

TRTCVolumeInfo ( )
inline

结构体成员变量说明

◆ userId

const char* userId

说话者的 userId, 如果 userId 为空则代表是当前用户自己。

◆ volume

uint32_t volume

说话者的音量大小, 取值范围[0 - 100]。

◆ liteav::TRTCSpeedTestResult

struct liteav::TRTCSpeedTestResult

Public 成员函数

 TRTCSpeedTestResult ()
 

成员变量

const char * ip
 
TRTCQuality quality
 
float upLostRate
 
float downLostRate
 
int rtt
 

构造及析构函数说明

◆ TRTCSpeedTestResult()

TRTCSpeedTestResult ( )
inline

结构体成员变量说明

◆ downLostRate

float downLostRate

下行丢包率,取值范围是 [0 - 1.0],例如 0.2 表示每从服务器收取10个数据包可能会在中途丢失2个。

◆ ip

const char* ip

服务器 IP 地址

◆ quality

TRTCQuality quality

内部通过评估算法测算出的网络质量,网络质量越好得分越高。

◆ rtt

int rtt

延迟(毫秒),指当前设备到 TRTC 服务器的一次网络往返时间,该值越小越好,正常数值范围是10ms - 100ms。

◆ upLostRate

float upLostRate

上行丢包率,取值范围是 [0 - 1.0],例如 0.3 表示每向服务器发送10个数据包可能会在中途丢失3个。

◆ liteav::TRTCVideoFrame

struct liteav::TRTCVideoFrame

Public 成员函数

 TRTCVideoFrame ()
 

成员变量

TRTCVideoPixelFormat videoFormat
 
TRTCVideoBufferType bufferType
 
char * data
 
int textureId
 
uint32_t length
 
uint32_t width
 
uint32_t height
 
uint64_t timestamp
 
TRTCVideoRotation rotation
 

构造及析构函数说明

◆ TRTCVideoFrame()

TRTCVideoFrame ( )
inline

结构体成员变量说明

◆ bufferType

TRTCVideoBufferType bufferType

【字段含义】视频数据结构类型

◆ data

char* data

【字段含义】bufferType 为 TRTCVideoBufferType_Buffer 时的视频数据,承载用于 C++ 层的内存数据块。

◆ height

uint32_t height

【字段含义】视频高度

◆ length

uint32_t length

【字段含义】视频数据的长度,单位是字节。对于 i420 而言:length = width * height * 3 / 2;对于 BGRA32 而言:length = width * height * 4。

◆ rotation

【字段含义】视频像素的顺时针旋转角度

◆ textureId

int textureId

【字段含义】视频纹理 ID,bufferType 为 TRTCVideoBufferType_Texture 时的视频数据,承载用于 OpenGL 渲染的纹理数据。

◆ timestamp

uint64_t timestamp

【字段含义】视频帧的时间戳,单位毫秒
【推荐取值】自定义视频采集时可以设置为0。若该参数为0,SDK 会自定填充 timestamp 字段,但请“均匀”地控制 sendCustomVideoData 的调用间隔。

◆ videoFormat

TRTCVideoPixelFormat videoFormat

【字段含义】视频的像素格式

◆ width

uint32_t width

【字段含义】视频宽度

◆ liteav::TRTCAudioFrame

struct liteav::TRTCAudioFrame

Public 成员函数

 TRTCAudioFrame ()
 

成员变量

TRTCAudioFrameFormat audioFormat
 
char * data
 
uint32_t length
 
uint32_t sampleRate
 
uint32_t channel
 
uint64_t timestamp
 

构造及析构函数说明

◆ TRTCAudioFrame()

TRTCAudioFrame ( )
inline

结构体成员变量说明

◆ audioFormat

TRTCAudioFrameFormat audioFormat

【字段含义】音频帧的格式

◆ channel

uint32_t channel

【字段含义】声道数

◆ data

char* data

【字段含义】音频数据

◆ length

uint32_t length

【字段含义】音频数据的长度

◆ sampleRate

uint32_t sampleRate

【字段含义】采样率

◆ timestamp

uint64_t timestamp

【字段含义】时间戳,单位ms

◆ liteav::TRTCMixUser

struct liteav::TRTCMixUser

Public 成员函数

 TRTCMixUser ()
 

成员变量

const char * userId
 
const char * roomId
 
RECT rect
 
int zOrder
 
TRTCVideoStreamType streamType
 
bool pureAudio
 
TRTCMixInputType inputType
 

构造及析构函数说明

◆ TRTCMixUser()

TRTCMixUser ( )
inline

结构体成员变量说明

◆ inputType

TRTCMixInputType inputType

【字段含义】指定该路流的混合内容(只混合音频、只混合视频、混合音频和视频),该字段是对 pureAudio 字段的升级。
【推荐取值】默认值:TRTCMixInputTypeUndefined,代表参考 pureAudio 的取值。

  • 如果您是第一次使用 TRTC,之前并没有对 pureAudio 字段进行过设置,您可以根据实际需要设置该字段,不建议您再设置 pureAudio。
  • 如果您之前在老版本中已经使用了 pureAudio 字段,并期望保持其设置,则可以将 inputType 设置为 TRTCMixInputTypeUndefined。

◆ pureAudio

bool pureAudio

【字段含义】指定该路流是不是只混合声音
【推荐取值】默认值:NO
【特别说明】已废弃,推荐使用8.5版本开始新引入的字段:inputType。

◆ rect

RECT rect

【字段含义】指定该路画面的坐标区域(单位:像素)

◆ roomId

const char* roomId

【字段含义】该路音视频流所在的房间号(设置为空值代表当前用户所在的房间号)

◆ streamType

TRTCVideoStreamType streamType

【字段含义】指定该路画面是主路画面(TRTCVideoStreamTypeBig)还是辅路画面(TRTCVideoStreamTypeSub)。

◆ userId

const char* userId

【字段含义】用户 ID

◆ zOrder

int zOrder

【字段含义】指定该路画面的层级(取值范围:1 - 15,不可重复)

◆ liteav::TRTCTranscodingConfig

struct liteav::TRTCTranscodingConfig

Public 成员函数

 TRTCTranscodingConfig ()
 

成员变量

TRTCTranscodingConfigMode mode
 
uint32_t appId
 
uint32_t bizId
 
uint32_t videoWidth
 
uint32_t videoHeight
 
uint32_t videoBitrate
 
uint32_t videoFramerate
 
uint32_t videoGOP
 
uint32_t backgroundColor
 
const char * backgroundImage
 
uint32_t audioSampleRate
 
uint32_t audioBitrate
 
uint32_t audioChannels
 
TRTCMixUsermixUsersArray
 
uint32_t mixUsersArraySize
 
const char * streamId
 

构造及析构函数说明

◆ TRTCTranscodingConfig()

结构体成员变量说明

◆ appId

uint32_t appId

【字段含义】腾讯云直播服务的 AppID
【推荐取值】请在 实时音视频控制台 依次单击【应用管理】=>【应用信息】,并在【旁路直播信息】中获取 appid。

◆ audioBitrate

uint32_t audioBitrate

【字段含义】指定云端转码的目标音频码率
【推荐取值】默认值:64kbps,取值范围是 [32,192]。

◆ audioChannels

uint32_t audioChannels

【字段含义】指定云端转码的音频声道数
【推荐取值】默认值:1,代表单声道。可设定的数值只有两个数字:1-单声道,2-双声道。

◆ audioSampleRate

uint32_t audioSampleRate

【字段含义】指定云端转码的目标音频采样率
【推荐取值】默认值:48000Hz。支持12000HZ、16000HZ、22050HZ、24000HZ、32000HZ、44100HZ、48000HZ。

◆ backgroundColor

uint32_t backgroundColor

【字段含义】指定混合画面的底色颜色
【推荐取值】默认值:0x000000 代表黑色。格式为十六进制数字,比如:“0x61B9F1” 代表 RGB 分别为(97,158,241)。

◆ backgroundImage

const char* backgroundImage

【字段含义】指定混合画面的背景图片
【推荐取值】默认值:空值,即不设置背景图片。
【特别说明】背景图需要您事先在 “控制台 => 应用管理 => 功能配置 => 素材管理” 中单击【新增图片】按钮进行上传。 上传成功后可以获得对应的“图片ID”,然后将“图片ID”转换成字符串类型并设置到 backgroundImage 里即可。 例如:假设“图片ID” 为 63,可以设置 backgroundImage = "63";

◆ bizId

uint32_t bizId

【字段含义】腾讯云直播服务的 bizid
【推荐取值】请在 实时音视频控制台 依次单击【应用管理】=>【应用信息】,并在【旁路直播信息】中获取 bizid。

◆ mixUsersArray

TRTCMixUser* mixUsersArray

【字段含义】指定云端混流中每一路视频画面的位置、大小、图层以及流类型等信息
【推荐取值】该字段是一个 TRTCMixUser 类型的数组,数组中的每一个元素都用来代表每一路画面的信息。

◆ mixUsersArraySize

uint32_t mixUsersArraySize

【字段含义】 数组 mixUsersArray 的元素个数

◆ mode

【字段含义】排版模式
【推荐取值】请根据您的业务场景要求自行选择,预排版模式是适用性较好的一种模式。

◆ streamId

const char* streamId

【字段含义】输出到 CDN 上的直播流 ID
【推荐取值】默认值:空值,即房间里的多路音视频流最终会混合到接口调用者的那一路音视频流上。

  • 如不设置该参数,SDK 会执行默认逻辑,即房间里的多路音视频流会混合到该接口调用者的那一路音视频流上,也就是 A + B => A。
  • 如您设置该参数,SDK 会将房间里的多路音视频流混合到您指定的直播流上,也就是 A + B => C(C 代表您指定的 streamId)。

◆ videoBitrate

uint32_t videoBitrate

【字段含义】指定云端转码的目标视频码率(kbps)
【推荐取值】如果填0,TRTC 会根据 videoWidth 和 videoHeight 估算出一个合理的码率值,您也可以参考视频分辨率枚举定义中所推荐的码率值(见注释部分)。

◆ videoFramerate

uint32_t videoFramerate

【字段含义】指定云端转码的目标视频帧率(FPS)
【推荐取值】默认值:15fps,取值范围是 (0,30]。

◆ videoGOP

uint32_t videoGOP

【字段含义】指定云端转码的目标视频关键帧间隔(GOP)
【推荐取值】默认值:2,单位为秒,取值范围是 [1,8]。

◆ videoHeight

uint32_t videoHeight

【字段含义】指定云端转码的目标分辨率(高度)
【推荐取值】单位:像素值,推荐值:640,如果你只混合音频流,请将 width 和 height 均设置位 0,否则混流转码后的直播流中会有黑色背景。

◆ videoWidth

uint32_t videoWidth

【字段含义】指定云端转码的目标分辨率(宽度)
【推荐取值】单位:像素值,推荐值:360,如果你只混合音频流,请将 width 和 height 均设置位 0,否则混流转码后的直播流中会有黑色背景。

◆ liteav::TRTCPublishCDNParam

struct liteav::TRTCPublishCDNParam

Public 成员函数

 TRTCPublishCDNParam ()
 

成员变量

uint32_t appId
 
uint32_t bizId
 
const char * url
 

构造及析构函数说明

◆ TRTCPublishCDNParam()

TRTCPublishCDNParam ( )
inline

结构体成员变量说明

◆ appId

uint32_t appId

【字段含义】腾讯云直播服务的 AppID
【推荐取值】请在 实时音视频控制台 依次单击【应用管理】=>【应用信息】,并在【旁路直播信息】中获取 appid。

◆ bizId

uint32_t bizId

【字段含义】腾讯云直播服务的 bizid
【推荐取值】请在 实时音视频控制台 依次单击【应用管理】=>【应用信息】,并在【旁路直播信息】中获取 bizid。

◆ url

const char* url

【字段含义】指定该路音视频流在第三方直播服务商的推流地址(RTMP 格式)
【推荐取值】各家服务商的推流地址规则差异较大,请根据目标服务商的要求填写合法的推流 URL,TRTC 的后台服务器会按照您填写的 URL 向第三方服务商推送标准格式音视频流。
【特别说明】推流 URL 必须为 RTMP 格式,必须符合您的目标直播服务商的规范要求,否则目标服务商会拒绝来自 TRTC 后台服务的推流请求。

◆ liteav::TRTCAudioRecordingParams

struct liteav::TRTCAudioRecordingParams

Public 成员函数

 TRTCAudioRecordingParams ()
 

成员变量

const char * filePath
 
TRTCAudioRecordingContent recordingContent
 

构造及析构函数说明

◆ TRTCAudioRecordingParams()

结构体成员变量说明

◆ filePath

const char* filePath

【字段含义】录音文件的保存路径(必填)。
【特别说明】该路径需精确到文件名及格式后缀,格式后缀用于决定录音文件的格式,目前支持的格式有 PCM、WAV 和 AAC。 例如:假如您指定路径为 "mypath/record/audio.aac",代表您希望 SDK 生成一个 AAC 格式的音频录制文件。 请您指定一个有读写权限的合法路径,否则录音文件无法生成。

◆ recordingContent

TRTCAudioRecordingContent recordingContent

【字段含义】音频录制内容类型。
【特别说明】默认录制所有本地和远端音频。

◆ liteav::TRTCLocalRecordingParams

struct liteav::TRTCLocalRecordingParams
成员变量
const char * filePath

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

int interval 【字段含义】interval 录制信息更新频率,单位毫秒,有效范围:1000-10000。默认值为-1,表示不回调。
TRTCLocalRecordType recordType 【字段含义】媒体录制类型,默认值:TRTCRecordTypeBoth,即同时录制音频和视频。

◆ liteav::TRTCAudioEffectParam

struct liteav::TRTCAudioEffectParam

Public 成员函数

 TRTCAudioEffectParam (const int _effectId, const char *_path)
 

成员变量

int effectId
 
const char * path
 
int loopCount
 
bool publish
 
int volume
 

构造及析构函数说明

◆ TRTCAudioEffectParam()

TRTCAudioEffectParam ( const int  _effectId,
const char *  _path 
)
inline

结构体成员变量说明

◆ effectId

int effectId

【字段含义】音效 ID
【特别说明】SDK 允许播放多路音效,因此需要音效 ID 进行标记,用于控制音效的开始、停止、音量等。

◆ loopCount

int loopCount

【字段含义】循环播放次数
【推荐取值】取值范围为0 - 任意正整数,默认值:0,表示播放音效一次;1表示播放音效两次;以此类推。

◆ path

const char* path

【字段含义】音效文件路径,支持的文件格式:aac, mp3, m4a。

◆ publish

bool publish

【字段含义】音效是否上行
【推荐取值】YES:音效在本地播放的同时,会上行至云端,因此远端用户也能听到该音效;NO:音效不会上行至云端,因此只能在本地听到该音效。默认值:NO

◆ volume

int volume

【字段含义】音效音量
【推荐取值】取值范围为0 - 100;默认值:100

◆ liteav::TRTCSwitchRoomConfig

struct liteav::TRTCSwitchRoomConfig

Public 成员函数

 TRTCSwitchRoomConfig ()
 

成员变量

uint32_t roomId
 
const char * strRoomId
 
const char * userSig
 
const char * privateMapKey
 

构造及析构函数说明

◆ TRTCSwitchRoomConfig()

结构体成员变量说明

◆ privateMapKey

const char* privateMapKey

【字段含义】用于权限控制的权限票据(选填),当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。
【推荐取值】仅建议有高级别安全需求的客户使用,更多详情请参见 进房权限保护

◆ roomId

uint32_t roomId

【字段含义】数字房间号码 [选填],在同一个房间内的用户可以看到彼此并能够进行音视频通话。
【推荐取值】取值范围:1 - 4294967294。
【特别说明】roomId 和 strRoomId 必须并且只能填一个。若两者都填,则优先选择 roomId。

◆ strRoomId

const char* strRoomId

【字段含义】字符串房间号码 [选填],在同一个房间内的用户可以看到彼此并能够进行音视频通话。
【特别说明】roomId 和 strRoomId 必须并且只能填一个。若两者都填,则优先选择 roomId。

◆ userSig

const char* userSig

【字段含义】用户签名 [选填],当前 userId 对应的验证签名,相当于登录密码。 如果您在切换房间时不指定新计算出的 userSig,SDK 会继续使用您在进入房间时(enterRoom)时所指定的 userSig。 这就需要您必须保证旧的 userSig 在切换房间的那一刻仍在签名允许的效期内,否则会导致房间切换失败。
【推荐取值】具体计算方法请参考 如何计算UserSig

◆ liteav::TRTCAudioFrameCallbackFormat

struct liteav::TRTCAudioFrameCallbackFormat

Public 成员函数

 TRTCAudioFrameCallbackFormat ()
 

成员变量

int sampleRate
 
int channel
 
int samplesPerCall
 

构造及析构函数说明

◆ TRTCAudioFrameCallbackFormat()

结构体成员变量说明

◆ channel

int channel

【字段含义】声道数
【推荐取值】默认值:1,代表单声道。可设定的数值只有两个数字:1-单声道,2-双声道。

◆ sampleRate

int sampleRate

【字段含义】采样率
【推荐取值】默认值:48000Hz。支持 16000, 32000, 44100, 48000。

◆ samplesPerCall

int samplesPerCall

【字段含义】采样点数
【推荐取值】取值必须是 sampleRate/100 的整数倍。

◆ liteav::TRTCImageBuffer

struct liteav::TRTCImageBuffer

Public 成员函数

 TRTCImageBuffer ()
 

成员变量

const char * buffer
 
uint32_t length
 
uint32_t width
 
uint32_t height
 

构造及析构函数说明

◆ TRTCImageBuffer()

TRTCImageBuffer ( )
inline

结构体成员变量说明

◆ buffer

const char* buffer

image content in BGRA format

◆ height

uint32_t height

image height

◆ length

uint32_t length

buffer size

◆ width

uint32_t width

image width

◆ liteav::TRTCScreenCaptureSourceInfo

struct liteav::TRTCScreenCaptureSourceInfo

Public 成员函数

 TRTCScreenCaptureSourceInfo ()
 

成员变量

TRTCScreenCaptureSourceType type
 
TXView sourceId
 
const char * sourceName
 
TRTCImageBuffer thumbBGRA
 
TRTCImageBuffer iconBGRA
 
bool isMinimizeWindow
 
bool isMainScreen
 

构造及析构函数说明

◆ TRTCScreenCaptureSourceInfo()

结构体成员变量说明

◆ iconBGRA

TRTCImageBuffer iconBGRA

【字段含义】分享窗口的图标

◆ isMainScreen

bool isMainScreen

【字段含义】是否为主显示屏(适用于多显示器的情况)

◆ isMinimizeWindow

bool isMinimizeWindow

【字段含义】是否为最小化窗口

◆ sourceId

TXView sourceId

【字段含义】采集源的ID,对于窗口,该字段代表窗口的 ID;对于屏幕,该字段代表显示器的 ID。

◆ sourceName

const char* sourceName

【字段含义】采集源名称(采用 UTF8 编码)

◆ thumbBGRA

TRTCImageBuffer thumbBGRA

【字段含义】分享窗口的缩略图

◆ type

【字段含义】采集源类型(是分享整个屏幕?还是分享某个窗口?)

◆ liteav::ITRTCScreenCaptureSourceList

class liteav::ITRTCScreenCaptureSourceList

Public 成员函数

virtual uint32_t getCount ()=0
 
virtual TRTCScreenCaptureSourceInfo getSourceInfo (uint32_t index)=0
 
virtual void release ()=0
 

构造及析构函数说明

◆ ~ITRTCScreenCaptureSourceList()

virtual ~ITRTCScreenCaptureSourceList ( )
inlineprotectedvirtual

成员函数说明

◆ getCount()

virtual uint32_t getCount ( )
pure virtual

Size of this list.

◆ getSourceInfo()

virtual TRTCScreenCaptureSourceInfo getSourceInfo ( uint32_t  index)
pure virtual

Get element(TRTCScreenCaptureSourceInfo) by index.

◆ release()

virtual void release ( )
pure virtual

Don't use delete!!!

◆ liteav::TRTCScreenCaptureProperty

struct liteav::TRTCScreenCaptureProperty

Public 成员函数

 TRTCScreenCaptureProperty ()
 

成员变量

bool enableCaptureMouse
 
bool enableHighLight
 
bool enableHighPerformance
 
int highLightColor
 
int highLightWidth
 
bool enableCaptureChildWindow
 

构造及析构函数说明

◆ TRTCScreenCaptureProperty()

结构体成员变量说明

◆ enableCaptureChildWindow

bool enableCaptureChildWindow

【字段含义】窗口采集时是否采集子窗口(需要子窗口与被采集窗口具有 Owner 或 Popup 属性),默认为 false。

◆ enableCaptureMouse

bool enableCaptureMouse

【字段含义】是否采集目标内容的同时采集鼠标,默认为 true。

◆ enableHighLight

bool enableHighLight

【字段含义】是否高亮正在共享的窗口(在被分享目标周围绘制一个边框),默认为 true。

◆ enableHighPerformance

bool enableHighPerformance

【字段含义】是否开启高性能模式(只会在分享屏幕时会生效),默认为 true。
【特殊说明】开启后屏幕采集性能最佳,但会丧失抗遮挡能力,如果您同时开启 enableHighLight + enableHighPerformance,远端用户可以看到高亮的边框。

◆ highLightColor

int highLightColor

【字段含义】指定高亮边框的颜色,RGB 格式,传入 0 时代表采用默认颜色,默认颜色为 #8CBF26。

◆ highLightWidth

int highLightWidth

【字段含义】指定高亮边框的宽度,传入0时采用默认描边宽度,默认宽度为 5px,您可以设置的最大值为 50。

宏定义说明

◆ __TRTCTYPEDEF_H__

#define __TRTCTYPEDEF_H__

◆ TARGET_PLATFORM_DESKTOP

#define TARGET_PLATFORM_DESKTOP   ((__APPLE__ && TARGET_OS_MAC && !TARGET_OS_IPHONE) || _WIN32)

◆ TARGET_PLATFORM_MAC

#define TARGET_PLATFORM_MAC   (__APPLE__ && TARGET_OS_MAC && !TARGET_OS_IPHONE)

◆ TARGET_PLATFORM_PHONE

#define TARGET_PLATFORM_PHONE   (__ANDROID__ || (__APPLE__ && TARGET_OS_IOS))

◆ TRTC_API [1/5]

#define TRTC_API   __declspec(dllexport)

◆ TRTC_API [2/5]

#define TRTC_API   __declspec(dllimport)

◆ TRTC_API [3/5]

#define TRTC_API   __attribute__((visibility("default")))

◆ TRTC_API [4/5]

#define TRTC_API   __attribute__((visibility("default")))

◆ TRTC_API [5/5]

#define TRTC_API

◆ TRTCDeviceStateActive

#define TRTCDeviceStateActive   TXMediaDeviceStateActive

◆ TRTCDeviceStateAdd

#define TRTCDeviceStateAdd   TXMediaDeviceStateAdd

◆ TRTCDeviceStateRemove

#define TRTCDeviceStateRemove   TXMediaDeviceStateRemove

◆ TRTCDeviceTypeCamera

#define TRTCDeviceTypeCamera   TXMediaDeviceTypeCamera

◆ TRTCDeviceTypeMic

#define TRTCDeviceTypeMic   TXMediaDeviceTypeMic

◆ TRTCDeviceTypeSpeaker

#define TRTCDeviceTypeSpeaker   TXMediaDeviceTypeSpeaker

◆ TRTCDeviceTypeUnknow

#define TRTCDeviceTypeUnknow   TXMediaDeviceTypeUnknown

◆ WIN32_LEAN_AND_MEAN

#define WIN32_LEAN_AND_MEAN

类型定义说明

◆ ITRTCDeviceCollection

◆ ITRTCDeviceInfo

◆ TRTCDeviceState

设备操作

该枚举值用于本地设备的状态变化通知onDeviceChange

◆ TRTCDeviceType

设备类型(仅适用于桌面平台)

该枚举值用于定义三种类型的音视频设备,即摄像头、麦克风和扬声器,以便让一套设备管理接口可以操控三种不同类型的设备。 自 Ver8.0 版本开始,TRTC 在 TXDeviceManager 中重新定义了 “TXMediaDeviceType” 用于替换老版本中的 “TRTCMediaDeviceType”, 此处仅保留 “TRTCMediaDeviceType” 的定义,用于兼容老版本的客户代码。

◆ TXView

typedef void * TXView

[VIEW] 用于渲染视频画面的渲染控件

TRTC 中有很多需要操控视频画面的接口,这些接口都需要您指定视频渲染控件,SDK 为不同的终端平台提供了配套的渲染控件。 由于全平台 C++ 接口需要使用统一的参数类型,所以您需要在调用这些接口时,将渲染控件统一转换成 TXView 类型的指针:

  • iOS 平台:您可以使用 UIView 对象作为渲染控件,在调用 C++ 接口时请传入 UIView 对象的指针(需强转为 void* 类型)。
  • Mac 平台:您可以使用 NSView 对象作为渲染控件,在调用 C++ 接口时请传入 NSView 对象的指针(需强转为 void* 类型)。
  • Android 平台:在调用 C++ 接口时请传入指向 TXCloudVideoView 对象的 jobject 指针(需强转为 void* 类型)。
  • Windows 平台:您可以使用窗口句柄 HWND 作为渲染控件,在调用 C++ 接口时需要将 HWND 强转为 void* 类型。

代码示例一:在 QT 下使用 C++ 全平台接口

QWidget *videoView;
// The relevant code for setting the videoView is omitted here...
getTRTCShareInstance()->startLocalPreview(reinterpret_cast<TXView>(videoView->winId()));

代码示例二:在 Android 平台下,通过 JNI 调用 C++ 全平台接口

native void nativeStartLocalPreview(String userId, int streamType, TXCloudVideoView view);
//...
Java_com_example_test_MainActivity_nativeStartRemoteView(JNIEnv *env, jobject thiz, jstring user_id, jint stream_type, jobject view) {
    const char *user_id_chars = env->GetStringUTFChars(user_id, nullptr);
    trtc_cloud->startRemoteView(user_id_chars, (liteav::TRTCVideoStreamType)stream_type, view);
    env->ReleaseStringUTFChars(user_id, user_id_chars);
}

枚举类型说明

◆ TRTCAppScene

应用场景

TRTC 针对常见的音视频应用场景都进行了定向优化,以满足各种垂直场景下的差异化要求,主要场景可以分为如下两类:

  • 直播(LIVE)场景:包括 LIVE 和 VoiceChatRoom,前者是音频+视频,后者是纯音频。 直播场景下,用户被分成“主播”和“观众”两种角色,单个房间中同时最多支持10万人在线,适合于观众人数众多的直播场景。
  • 实时(RTC)场景:包括 VideoCall 和 AudioCall,前者是音频+视频,后者是纯音频。 实时场景下,用户没有角色的差异,但单个房间中同时最多支持 300 人在线,适合于小范围实时通信的场景。
枚举值
TRTCAppSceneVideoCall 

视频通话场景,支持720P、1080P高清画质,单个房间最多支持300人同时在线,最高支持50人同时发言。 适用于[1对1视频通话]、[300人视频会议]、[在线问诊]、[教育小班课]、[远程面试]等业务场景。

TRTCAppSceneLIVE 

视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。 适用于[低延时互动直播]、[大班课]、[主播PK]、[视频相亲]、[在线互动课堂]、[远程培训]、[超大型会议]等业务场景。

注解
此场景下,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。
TRTCAppSceneAudioCall 

语音通话场景,默认采用 SPEECH 音质,单个房间最多支持300人同时在线,最高支持50人同时发言。 适用于[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等业务场景。

TRTCAppSceneVoiceChatRoom 

语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。 适用于[语音俱乐部]、[在线K歌房]、[音乐直播间]、[FM电台]等业务场景。

注解
此场景下,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。

◆ TRTCAudioFrameFormat

音频帧的内容格式

枚举值
TRTCAudioFrameFormatNone 

None

TRTCAudioFrameFormatPCM 

PCM 格式的音频数据

◆ TRTCAudioQuality

声音音质

TRTC 提供了三种精心校调好的模式,用来满足各种垂直场景下对音质的差异化追求:

  • 人声模式(Speech):适用于以人声沟通为主的应用场景,该模式下音频传输的抗性较强,TRTC 会通过各种人声处理技术保障在弱网络环境下的流畅度最佳。
  • 音乐模式(Music):适用于对声乐要求很苛刻的场景,该模式下音频传输的数据量很大,TRTC 会通过各项技术确保音乐信号在各频段均能获得高保真的细节还原度。
  • 默认模式(Default):介于 Speech 和 Music 之间的档位,对音乐的还原度比人声模式要好,但传输数据量比音乐模式要低很多,对各种场景均有不错的适应性。
枚举值
TRTCAudioQualitySpeech 

人声模式:采样率:16k;单声道;编码码率:16kbps;具备几个模式中最强的网络抗性,适合语音通话为主的场景,比如在线会议,语音通话等。

TRTCAudioQualityDefault 

默认模式:采样率:48k;单声道;编码码率:50kbps;介于 Speech 和 Music 之间的档位,SDK 默认档位,推荐选择。

TRTCAudioQualityMusic 

音乐模式:采样率:48k;全频带立体声;编码码率:128kbps;适合需要高保真传输音乐的场景,比如在线K歌、音乐直播等。

◆ TRTCAudioRecordingContent

音频录制内容类型

该枚举类型用于音频录制接口startAudioRecording,用于指定录制音频的内容。

枚举值
TRTCAudioRecordingContentAll 

录制本地和远端所有音频

TRTCAudioRecordingContentLocal 

仅录制本地音频

TRTCAudioRecordingContentRemote 

仅录制远端音频

◆ TRTCAVStatusChangeReason

视频状态变化原因类型

该枚举类型用于视频状态变化回调接口onRemoteVideoStatusUpdated,用于指定当前的视频状态原因。

枚举值
TRTCAVStatusChangeReasonInternal 

缺省值

TRTCAVStatusChangeReasonBufferingBegin 

网络缓冲

TRTCAVStatusChangeReasonBufferingEnd 

结束缓冲

TRTCAVStatusChangeReasonLocalStarted 

本地启动视频流播放

TRTCAVStatusChangeReasonLocalStopped 

本地停止视频流播放

TRTCAVStatusChangeReasonRemoteStarted 

远端视频流开始(或继续)

TRTCAVStatusChangeReasonRemoteStopped 

远端视频流停止(或中断

◆ TRTCAVStatusType

视频状态类型

该枚举类型用于视频状态变化回调接口onRemoteVideoStatusUpdated,用于指定当前的视频状态。

枚举值
TRTCAVStatusStopped 

停止播放

TRTCAVStatusPlaying 

正在播放

TRTCAVStatusLoading 

正在加载

◆ TRTCBeautyStyle

美颜(磨皮)算法

TRTC 内置多种不同的磨皮算法,您可以选择最适合您产品定位的方案。

枚举值
TRTCBeautyStyleSmooth 

光滑,算法比较激进,磨皮效果比较明显,适用于秀场直播。

TRTCBeautyStyleNature 

自然,算法更多地保留了面部细节,磨皮效果更加自然,适用于绝大多数直播场景。

◆ TRTCLocalRecordType

媒体录制类型

该枚举类型用于本地媒体录制接口startLocalRecording,用于指定是录制音视频文件还是纯音频文件。

枚举值
TRTCLocalRecordType_Audio 

仅录制音频

TRTCLocalRecordType_Video 

仅录制视频

TRTCLocalRecordType_Both 

同时录制音频和视频

◆ TRTCLogLevel

Log 级别

不同的日志等级定义了不同的详实程度和日志数量,推荐一般情况下将日志等级设置为:TRTCLogLevelInfo。

枚举值
TRTCLogLevelVerbose 

输出所有级别的 Log

TRTCLogLevelDebug 

输出 DEBUG,INFO,WARNING,ERROR 和 FATAL 级别的 Log

TRTCLogLevelInfo 

输出 INFO,WARNING,ERROR 和 FATAL 级别的 Log

TRTCLogLevelWarn 

输出WARNING,ERROR 和 FATAL 级别的 Log

TRTCLogLevelError 

输出ERROR 和 FATAL 级别的 Log

TRTCLogLevelFatal 

仅输出 FATAL 级别的 Log

TRTCLogLevelNone 

不输出任何 SDK Log

◆ TRTCMixInputType

混流输入类型

枚举值
TRTCMixInputTypeUndefined 

不指定,SDK 会根据另一个参数 pureAudio 的数值决定混流输入类型

TRTCMixInputTypeAudioVideo 

混入音频和视频

TRTCMixInputTypePureVideo 

只混入视频

TRTCMixInputTypePureAudio 

只混入音频

◆ TRTCQosControlMode

流控模式(已废弃)

枚举值
TRTCQosControlModeClient 

本地控制,用于 SDK 开发内部调试,客户请勿使用。

TRTCQosControlModeServer 

云端控制,默认模式,推荐选择。

◆ TRTCQuality

网络质量

TRTC 会每隔两秒对当前的网络质量进行评估,评估结果为六个等级:Excellent 表示最好,Down 表示最差。

枚举值
TRTCQuality_Unknown 

未定义

TRTCQuality_Excellent 

当前网络非常好

TRTCQuality_Good 

当前网络比较好

TRTCQuality_Poor 

当前网络一般

TRTCQuality_Bad 

当前网络较差

TRTCQuality_Vbad 

当前网络很差

TRTCQuality_Down 

当前网络不满足 TRTC 的最低要求

◆ TRTCRoleType

角色

仅适用于直播类场景(即 TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom),把用户区分成两种不同的身份:

  • 主播:可以随时发布自己的音视频流,但人数有限制,同一个房间中最多只允许 50 个主播同时发布自己的音视频流。
  • 观众:只能观看其他用户的音视频流,要发布音视频流,需要先通过 switchRole 切换成主播,同一个房间中最多能容纳10万观众。
枚举值
TRTCRoleAnchor 

主播:可以随时发布自己的音视频流,但人数有限制,同一个房间中最多只允许 50 个主播同时发布自己的音视频流。

TRTCRoleAudience 

观众:只能观看其他用户的音视频流,要发布音视频流,需要先通过 switchRole 切换成主播,同一个房间中最多能容纳10万观众。

◆ TRTCScreenCaptureSourceType

屏幕分享的目标类型(仅适用于桌面端)

枚举值
TRTCScreenCaptureSourceTypeUnknown 

未定义

TRTCScreenCaptureSourceTypeWindow 

该分享目标是某一个应用的窗口

TRTCScreenCaptureSourceTypeScreen 

该分享目标是某一台显示器的屏幕

TRTCScreenCaptureSourceTypeCustom 

该分享目标是用户自定义的数据源

◆ TRTCSnapshotSourceType

本地视频截图的数据源

SDK 支持从如下两种数据源中截取图片并保存成本地文件:

  • 视频流:从视频流中截取原生的视频内容,截取的内容不受渲染控件的显示控制。
  • 渲染层:从渲染控件中截取显示的视频内容,可以做到用户所见即所得的效果,但如果显示区域过小,截取出的图片也会很小。
枚举值
TRTCSnapshotSourceTypeStream 

从视频流中截取原生的视频内容,截取的内容不受渲染控件的显示控制。

TRTCSnapshotSourceTypeView 

从渲染控件中截取显示的视频内容,可以做到用户所见即所得的效果,但如果显示区域过小,截取出的图片也会很小。

◆ TRTCTranscodingConfigMode

云端混流的排版模式

TRTC 的云端混流服务能够将房间中的多路音视频流混合成一路,因此您需要指定画面的排版方案,我们提供了如下几种排版模式:

枚举值
TRTCTranscodingConfigMode_Unknown 

未定义

TRTCTranscodingConfigMode_Manual 

全手动排版模式 该模式下,您需要指定每一路画面的精确排版位置。该模式的自由度最高,但易用性也最差:

  • 您需要填写 TRTCTranscodingConfig 中的所有参数,包括每一路画面(TRTCMixUser)的位置坐标。
  • 您需要监听 TRTCCloudDelegate 中的 onUserVideoAvailable() 和 onUserAudioAvailable() 事件回调,并根据当前房间中各个麦上用户的音视频状态不断地调整 mixUsers 参数。
TRTCTranscodingConfigMode_Template_PureAudio 

纯音频模式 该模式适用于语音通话(AudioCall)和语音聊天室(VoiceChatRoom)等纯音频的应用场景。

  • 您只需要在进入房间后,通过 setMixTranscodingConfig() 接口设置一次,之后 SDK 就会自动把房间内所有上麦用户的声音混流到当前用户的直播流上。
  • 您无需设置 TRTCTranscodingConfig 中的 mixUsers 参数,只需设置 audioSampleRate、audioBitrate 和 audioChannels 等参数即可。
TRTCTranscodingConfigMode_Template_PresetLayout 

预排版模式 最受欢迎的排版模式,因为该模式支持您通过占位符提前对各路画面的位置进行设定,之后 SDK 会自动根据房间中画面的路数动态进行适配调整。 此模式下,您依然需要设置 mixUsers 参数,但可以将 userId 设置为“占位符”,可选的占位符有:

  • "$PLACE_HOLDER_REMOTE$" : 指代远程用户的画面,可以设置多个。
  • "$PLACE_HOLDER_LOCAL_MAIN$" : 指代本地摄像头画面,只允许设置一个。
  • "$PLACE_HOLDER_LOCAL_SUB$" : 指代本地屏幕分享画面,只允许设置一个。 此模式下,您不需要监听 TRTCCloudDelegate 中的 onUserVideoAvailable() 和 onUserAudioAvailable() 回调进行实时调整, 只需要在进房成功后调用一次 setMixTranscodingConfig() 即可,之后 SDK 会自动将真实的 userId 补位到您设置的占位符上。
TRTCTranscodingConfigMode_Template_ScreenSharing 

屏幕分享模式 适用于在线教育场景等以屏幕分享为主的应用场景,仅支持 Windows 和 Mac 两个平台的 SDK。 该模式下,SDK 会先根据您通过 videoWidth 和 videoHeight 参数设置的目标分辨率构建一张画布,

  • 当老师未开启屏幕分享时,SDK 会将老师的摄像头画面等比例拉伸绘制到该画布上;
  • 当老师开启屏幕分享之后,SDK 会将屏幕分享画面绘制到同样的画布上。 此种排版模式的目的是为了确保混流模块的输出分辨率一致,避免课程回放和网页观看的花屏问题(网页播放器不支持可变分辨率)。 同时,连麦学生的声音也会被默认混合到老师的音视频流中。 br> 由于教学模式下的视频内容以屏幕分享为主,因此同时传输摄像头画面和屏幕分享画面是非常浪费带宽的。 推荐的做法是直接将摄像头画面通过 setLocalVideoRenderCallback 接口自定义绘制到当前屏幕上。 在该模式下,您无需设置 TRTCTranscodingConfig 中的 mixUsers 参数,SDK 不会混合学生的画面,以免干扰屏幕分享的效果。 br> 您可以将 TRTCTranscodingConfig 中的 width × height 设为 0px × 0px,SDK 会自动根据用户当前屏幕的宽高比计算出一个合适的分辨率:
  • 如果老师当前屏幕宽度 <= 1920px,SDK 会使用老师当前屏幕的实际分辨率。
  • 如果老师当前屏幕宽度 > 1920px,SDK 会根据当前屏幕宽高比,选择 1920x1080(16:9)、1920x1200(16:10)、1920x1440(4:3) 三种分辨率中的一种。

◆ TRTCVideoBufferType

视频数据传递方式

在自定义采集和自定义渲染功能,您需要用到下列枚举值来指定您希望以什么方式传递视频数据:

  • 方案一:使用内存 Buffer 传递视频数据,该方案在 iOS 效率尚可,但在 Android 系统上效率较差,Windows 暂时仅支持内存 Buffer 的传递方式。
  • 方案二:使用 Texture 纹理传递视频数据,该方案在 iOS 和 Android 系统下均有较高的效率,Windows 暂不支持,需要您有一定的 OpenGL 编程基础。
枚举值
TRTCVideoBufferType_Unknown 

未定义的传递方式

TRTCVideoBufferType_Buffer 

使用内存 Buffer 传递视频数据,iOS: PixelBuffer;Android: 用于 JNI 层的 Direct Buffer;Win: 内存数据块。

TRTCVideoBufferType_Texture 

使用 Texture 纹理传递视频数据

◆ TRTCVideoFillMode

视频画面填充模式

如果视频显示区域的宽高比不等于视频内容的宽高比时,就需要您指定画面的填充模式:

枚举值
TRTCVideoFillMode_Fill 

填充模式:即将画面内容居中等比缩放以充满整个显示区域,超出显示区域的部分将会被裁剪掉,此模式下画面可能不完整。

TRTCVideoFillMode_Fit 

适应模式:即按画面长边进行缩放以适应显示区域,短边部分会被填充为黑色,此模式下图像完整但可能留有黑边。

◆ TRTCVideoMirrorType

视频的镜像类型

视频的镜像是指对视频内容进行左右翻转,尤其是对本地的摄像头预览视频,开启镜像后能给主播带来熟悉的“照镜子”体验。

枚举值
TRTCVideoMirrorType_Auto 

自动模式:如果正使用前置摄像头则开启镜像,如果是后置摄像头则不开启镜像(仅适用于移动设备)。

TRTCVideoMirrorType_Enable 

强制开启镜像,不论当前使用的是前置摄像头还是后置摄像头。

TRTCVideoMirrorType_Disable 

强制关闭镜像,不论当前使用的是前置摄像头还是后置摄像头。

◆ TRTCVideoPixelFormat

视频像素格式

TRTC 提供针对视频的自定义采集和自定义渲染功能:

  • 在自定义采集功能中,您可以用下列枚举值描述您采集的视频像素格式。
  • 在自定义渲染功能中,您可以指定您期望 SDK 回调出的视频像素格式。
枚举值
TRTCVideoPixelFormat_Unknown 

未定义的格式

TRTCVideoPixelFormat_I420 

YUV420P(I420) 格式

TRTCVideoPixelFormat_Texture_2D 

OpenGL 2D 纹理格式

TRTCVideoPixelFormat_BGRA32 

BGRA 格式

TRTCVideoPixelFormat_RGBA32 

RGBA 格式

◆ TRTCVideoQosPreference

画质偏好

TRTC 在弱网络环境下有两种调控模式:“优先保证画面清晰”或“优先保证画面流畅”,两种模式均会优先保障声音数据的传输。

枚举值
TRTCVideoQosPreferenceSmooth 

流畅优先:即当前网络不足以传输既清晰又流畅的画面时,优先保证画面的流畅性,代价就是画面会比较模糊且伴随有较多的马赛克。

TRTCVideoQosPreferenceClear 

清晰优先(默认值):即当前网络不足以传输既清晰又流畅的画面时,优先保证画面的清晰度,代价就是画面会比较卡顿。

◆ TRTCVideoResolution

视频分辨率

此处仅定义横屏分辨率(如 640 × 360),如需使用竖屏分辨率(如360 × 640),需要同时指定 TRTCVideoResolutionMode 为 Portrait。

枚举值
TRTCVideoResolution_120_120 

宽高比 1:1;分辨率 120x120;建议码率(VideoCall)80kbps; 建议码率(LIVE)120kbps。

TRTCVideoResolution_160_160 

宽高比 1:1 分辨率 160x160;建议码率(VideoCall)100kbps; 建议码率(LIVE)150kbps。

TRTCVideoResolution_270_270 

宽高比 1:1;分辨率 270x270;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。

TRTCVideoResolution_480_480 

宽高比 1:1;分辨率 480x480;建议码率(VideoCall)350kbps; 建议码率(LIVE)500kbps。

TRTCVideoResolution_160_120 

宽高比4:3;分辨率 160x120;建议码率(VideoCall)100kbps; 建议码率(LIVE)150kbps。

TRTCVideoResolution_240_180 

宽高比 4:3;分辨率 240x180;建议码率(VideoCall)150kbps; 建议码率(LIVE)250kbps。

TRTCVideoResolution_280_210 

宽高比 4:3;分辨率 280x210;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。

TRTCVideoResolution_320_240 

宽高比 4:3;分辨率 320x240;建议码率(VideoCall)250kbps; 建议码率(LIVE)375kbps。

TRTCVideoResolution_400_300 

宽高比 4:3;分辨率 400x300;建议码率(VideoCall)300kbps; 建议码率(LIVE)450kbps。

TRTCVideoResolution_480_360 

宽高比 4:3;分辨率 480x360;建议码率(VideoCall)400kbps; 建议码率(LIVE)600kbps。

TRTCVideoResolution_640_480 

宽高比 4:3;分辨率 640x480;建议码率(VideoCall)600kbps; 建议码率(LIVE)900kbps。

TRTCVideoResolution_960_720 

宽高比 4:3;分辨率 960x720;建议码率(VideoCall)1000kbps; 建议码率(LIVE)1500kbps。

TRTCVideoResolution_160_90 

宽高比 16:9;分辨率 160x90;建议码率(VideoCall)150kbps; 建议码率(LIVE)250kbps。

TRTCVideoResolution_256_144 

宽高比 16:9;分辨率 256x144;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。

TRTCVideoResolution_320_180 

宽高比 16:9;分辨率 320x180;建议码率(VideoCall)250kbps; 建议码率(LIVE)400kbps。

TRTCVideoResolution_480_270 

宽高比 16:9;分辨率 480x270;建议码率(VideoCall)350kbps; 建议码率(LIVE)550kbps。

TRTCVideoResolution_640_360 

宽高比 16:9;分辨率 640x360;建议码率(VideoCall)500kbps; 建议码率(LIVE)900kbps。

TRTCVideoResolution_960_540 

宽高比 16:9;分辨率 960x540;建议码率(VideoCall)850kbps; 建议码率(LIVE)1300kbps。

TRTCVideoResolution_1280_720 

宽高比 16:9;分辨率 1280x720;建议码率(VideoCall)1200kbps; 建议码率(LIVE)1800kbps。

TRTCVideoResolution_1920_1080 

宽高比 16:9;分辨率 1920x1080;建议码率(VideoCall)2000kbps; 建议码率(LIVE)3000kbps。

◆ TRTCVideoResolutionMode

视频宽高比模式

TRTCVideoResolution 中仅定义了横屏分辨率(如 640 × 360),如需使用竖屏分辨率(如360 × 640),需要同时指定 TRTCVideoResolutionMode 为 Portrait。

枚举值
TRTCVideoResolutionModeLandscape 

横屏分辨率,例如:TRTCVideoResolution_640_360 + TRTCVideoResolutionModeLandscape = 640 × 360。

TRTCVideoResolutionModePortrait 

竖屏分辨率,例如:TRTCVideoResolution_640_360 + TRTCVideoResolutionModePortrait = 360 × 640。

◆ TRTCVideoRotation

视频画面旋转方向

TRTC 提供了对本地和远程画面的旋转角度设置 API,下列的旋转角度都是指顺时针方向的。

枚举值
TRTCVideoRotation0 

不旋转

TRTCVideoRotation90 

顺时针旋转90度

TRTCVideoRotation180 

顺时针旋转180度

TRTCVideoRotation270 

顺时针旋转270度

◆ TRTCVideoStreamType

视频流类型

TRTC 内部有三种不同的视频流,分别是:

  • 高清大画面:一般用来传输摄像头的视频数据。
  • 低清小画面:小画面和大画面的内容相互,但是分辨率和码率都比大画面低,因此清晰度也更低。
  • 辅流画面:一般用于屏幕分享,同一时间在同一个房间中只允许一个用户发布辅流视频,其他用户必须要等该用户关闭之后才能发布自己的辅流。
    注意
    不支持单独开启低清小画面,小画面必须依附于大画面而存在,SDK 会自动设定低清小画面的分辨率和码率。
枚举值
TRTCVideoStreamTypeBig 

高清大画面,一般用来传输摄像头的视频数据。

TRTCVideoStreamTypeSmall 

低清小画面:小画面和大画面的内容相互,但是分辨率和码率都比大画面低,因此清晰度也更低。

TRTCVideoStreamTypeSub 

辅流画面:一般用于屏幕分享,同一时间在同一个房间中只允许一个用户发布辅流视频,其他用户必须要等该用户关闭之后才能发布自己的辅流。

◆ TRTCWaterMarkSrcType

水印图片的源类型

枚举值
TRTCWaterMarkSrcTypeFile 

图片文件路径,支持 BMP、GIF、JPEG、PNG、TIFF、Exif、WMF 和 EMF 文件格式

TRTCWaterMarkSrcTypeBGRA32 

BGRA32格式内存块

TRTCWaterMarkSrcTypeRGBA32 

RGBA32格式内存块