"ManageLiteAV" °TRTC @} 开始进行网络测速(视频通话期间请勿测试,以免影响通话质量) v9.3 版本弃用,请使用 startSpeedTest(TRTCSpeedTestParams) 接口 暂停/恢复推送本地的视频数据(已废弃) v9.0 版本弃用,请使用 muteLocalVideo(streamType, mute) 接口 向 SDK 投送自己采集的视频数据(已废弃) v9.0 版本弃用,请使用 sendCustomVideoData(streamType, frame) 接口 暂停/恢复接收指定的远端视频流 v9.0 版本弃用,请使用 muteRemoteVideoStream(userId, streamType, mute) 接口 @name 自定义采集和渲染 @{ /// 9.1 启用视频自定义采集模式(已废弃) 开启该模式后,SDK 不再运行原有的视频采集流程,只保留编码和发送能力。您需要用 sendCustomVideoData() 不断地向 SDK 塞入自己采集的视频画面。是否启用,默认值:false 停止扬声器测试 v8.0 版本弃用,请使用 ITXDeviceManager::stopSpeakerDeviceTest 接口 开启扬声器测试 回调接口 onTestSpeakerVolume 获取测试数据该方法播放指定的音频文件测试播放设备是否能正常工作。如果能听到声音,说明播放设备能正常工作。 v8.0 版本弃用,请使用 ITXDeviceManager::startSpeakerDeviceTest 接口 音频文件的绝对路径,路径字符串使用 UTF-8 编码格式,支持文件格式:WAV、MP3 停止麦克风测试 v8.0 版本弃用,请使用 ITXDeviceManager::stopMicDeviceTest 接口 开启麦克风测试 回调接口 onTestMicVolume 获取测试数据该方法测试麦克风是否能正常工作,volume 的取值范围为0 - 100。 v8.0 版本弃用,请使用 ITXDeviceManager::startMicDeviceTest 接口 反馈音量提示的时间间隔(ms),建议设置到大于 200 毫秒 停止摄像头测试 v8.0 版本弃用,请使用 ITXDeviceManager::stopCameraDeviceTest 接口 开始进行摄像头测试 会触发 onFirstVideoFrame 回调接口 v8.0 版本弃用,请使用 ITXDeviceManager::startCameraDeviceTest 接口 在测试过程中可以使用 setCurrentCameraDevice 接口切换摄像头。 承载预览画面的窗口句柄 设置系统当前扬声器设备音量 v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentVolume 接口 该接口的功能是调节系统播放音量,如果用户直接调节 WIN 系统设置的播放音量时,该接口的设置结果会被用户的操作所覆盖。 设置的扬声器音量,范围0 - 100 获取系统当前扬声器设备音量 查询的是系统硬件音量大小。 v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentVolume 接口 扬声器音量,范围0 - 100 设置要使用的扬声器 v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentDevice 接口 从 getDevicesList 中得到的设备 ID 获取当前的扬声器设备 v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentDevice 接口 ITRTCDeviceInfo 设备信息,能获取设备 ID 和设备名称 获取扬声器设备列表 示例代码: 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 设置系统当前麦克风设备的音量 该接口的功能是调节系统采集音量,如果用户直接调节 WIN 系统设置的采集音量时,该接口的设置结果会被用户的操作所覆盖。 v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentDeviceVolume 接口 麦克风音量值,范围[0 - 100] 获取系统当前麦克风设备音量 查询的是系统硬件音量大小。 v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentDeviceVolume 接口 音量值,范围是[0 - 100] 设置要使用的麦克风 选择指定的麦克风作为录音设备,不调用该接口时,默认选择索引为0的麦克风 v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentDevice 接口 从 getMicDevicesList 中得到的设备 ID 获取当前选择的麦克风 v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentDevice 接口 ITRTCDeviceInfo 设备信息,能获取设备 ID 和设备名称 获取麦克风设备列表 示例代码: 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 获取当前使用的摄像头 v8.0 版本弃用,请使用 ITXDeviceManager::getCurrentDevice 接口 ITRTCDeviceInfo 设备信息,能获取设备 ID 和设备名称 设置要使用的摄像头 v8.0 版本弃用,请使用 ITXDeviceManager::setCurrentDevice 接口 从 getCameraDevicesList 中得到的设备 ID 获取摄像头设备列表 示例代码: 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 开启本地音频的采集和上行 该函数会启动麦克风采集,并将音频数据传输给房间里的其他用户。SDK 不会默认开启本地音频采集和上行,您需要调用该函数开启,否则房间里的其他用户将无法听到您的声音。 v8.0 版本弃用,请使用 startLocalAudio(TRTCAudioQuality) 接口 TRTC SDK 并不会默认打开本地的麦克风采集。 设置音频质量 主播端的音质越高,观众端的听感越好,但传输所依赖的带宽也就越高,在带宽有限的场景下也更容易出现卡顿。TRTCCloudDef#TRTCAudioQualitySpeech},流畅:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话。TRTCCloudDef#TRTCAudioQualityDefault},默认:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。TRTCCloudDef#TRTCAudioQualityMusic},高音质:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,比如K歌、音乐直播等。 v8.0 版本弃用,请使用 startLocalAudio(TRTCAudioQuality) 接口 该方法需要在 startLocalAudio 之前进行设置,否则不会生效。 设定观看方优先选择的视频质量 低端设备推荐优先选择低清晰度的小画面。如果对方没有开启双路视频模式,则此操作无效。 v8.0 版本弃用,请使用 startRemoteView(userId,streamType,rendView) 接口 默认观看大画面还是小画面,默认为 TRTCVideoStreamTypeBig 设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的顺时针旋转角度 v8.0 版本弃用,请使用 setRemoteRenderParams(userId,streamType,param) 接口 - setRemoteViewRotation() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的旋转角度。 - setRemoteSubStreamViewRotation() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的旋转角度。 用户的 ID 支持90、180、270旋转角度 设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的显示模式 v8.0 版本弃用,请使用 setRemoteRenderParams(userId,streamType,param) 接口 - setRemoteViewFillMode() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的显示模式。 - setRemoteSubStreamViewFillMode() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的显示模式。 用户的 ID 填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit 停止显示远端用户的辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)。 v8.0 版本弃用,请使用 stopRemoteView(userId,streamType) 接口 对方的用户标识 开始显示远端用户的辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享) v8.0 版本弃用,请使用 startRemoteView(userId,streamType,rendView) 接口 - startRemoteView() 用于显示主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)。 - startRemoteSubStreamView() 用于显示辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)。 请在 onUserSubStreamAvailable 回调后再调用这个接口。 对方的用户标识 渲染画面的 HWND 设置本地摄像头预览画面的镜像模式 v8.0 版本弃用,请使用 setLocalRenderParams(TRTCRenderParams) 接口 镜像模式,默认值:false(非镜像模式) 设置远端图像的顺时针旋转角度 v8.0 版本弃用,请使用 setRemoteRenderParams(userId,streamType,param) 接口 用户 ID 支持 TRTCVideoRotation90 、 TRTCVideoRotation180 以及 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0 设置本地图像的顺时针旋转角度 v8.0 版本弃用,请使用 setLocalRenderParams(TRTCRenderParams) 接口 支持 TRTCVideoRotation90 、 TRTCVideoRotation180 以及 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0 设置远端图像的渲染模式 v8.0 版本弃用,请使用 setRemoteRenderParams(userId,streamType,param) 接口 用户 ID 填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit 设置本地图像的渲染模式 v8.0 版本弃用,请使用 setLocalRenderParams(TRTCRenderParams) 接口 填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit 停止显示远端视频画面,同时不再拉取远端用户的视频数据流 v8.0 版本弃用,请使用 stopRemoteView(userId,streamType) 接口 调用此接口后,SDK 会停止接收该用户的远程视频流,同时会清理相关的视频显示资源。 对方的用户标识 开始显示远端视频画面 v8.0 版本弃用,请使用 startRemoteView(userId,streamType,rendView) 接口 对方的用户标识 承载预览画面的窗口句柄 设置屏幕共享参数 v7.9 版本弃用,请使用 selectScreenCaptureTarget(TRTCScreenCaptureSourceInfo,RECT,TRTCScreenCaptureProperty) 接口 指定分享源 指定捕获的区域 指定是否捕获鼠标指针 指定是否高亮正在共享的窗口,以及当捕获图像被遮挡时高亮遮挡窗口提示用户移走遮挡 恢复音效 v7.3 版本弃用,请使用 TXAudioEffectManager resumePlayMusic 接口 音效 Id 暂停音效 v7.3 版本弃用,请使用 TXAudioEffectManager pausePlayMusic 接口 音效 Id 设置所有音效的音量 v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPublishVolume / setMusicPlayoutVolume 接口 该操作会覆盖通过 setAudioEffectVolume 指定的单独音效音量。 音量大小,取值范围为0 - 100;默认值:100 停止所有音效 v7.3 版本弃用,请使用 TXAudioEffectManager stopPlayMusic 接口 停止音效 v7.3 版本弃用,请使用 TXAudioEffectManager stopPlayMusic 接口 音效 ID 设置音效音量 v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPublishVolume / setMusicPlayoutVolume 接口 会覆盖通过 setAllAudioEffectsVolume 指定的整体音效音量。 音效 ID 音量大小,取值范围为0 - 100;默认值:100 播放音效 v7.3 版本弃用,请使用 TXAudioEffectManager startPlayMusic 接口 每个音效都需要您指定具体的 ID,您可以通过该 ID 对音效的开始、停止、音量等进行设置。 支持的文件格式:aac, mp3。 若您想同时播放多个音效,请分配不同的 ID 进行播放。因为使用同一个 ID 播放不同音效,SDK 将会停止上一个 ID 对应的音效播放,再启动新的音效播放。 音效 设置背景音乐远端播放音量的大小 v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPublishVolume 接口 播放背景音乐混音时使用,用来控制背景音乐在远端播放时的音量大小。 音量大小,100为正常音量,取值范围为0 - 100;默认值:100 设置背景音乐本地播放音量的大小 v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPlayoutVolume 接口 播放背景音乐混音时使用,用来控制背景音乐在本地播放时的音量大小。 音量大小,100为正常音量,取值范围为0 - 100;默认值:100 设置背景音乐播放音量的大小 v7.3 版本弃用,请使用 TXAudioEffectManager setMusicPublishVolume / setMusicPlayoutVolume 接口 播放背景音乐混音时使用,用来控制背景音乐播放音量的大小, 该接口会同时控制远端播放音量的大小和本地播放音量的大小, 因此调用该接口后,setBGMPlayoutVolume 和 setBGMPublishVolume 设置的音量值会被覆盖 音量大小,100为正常音量,取值范围为0 - 100;默认值:100 设置 BGM 播放进度 v7.3 版本弃用,请使用 TXAudioEffectManager seekMusicToPosInMS 接口 单位毫秒 获取音乐文件总时长,单位毫秒 v7.3 版本弃用,请使用 TXAudioEffectManager getMusicDurationInMS 接口 音乐文件路径,如果 path 为空,那么返回当前正在播放的 music 时长 成功返回时长,失败返回-1 继续播放背景音乐 v7.3 版本弃用,请使用 TXAudioEffectManager resumePlayMusic 接口 暂停播放背景音乐 v7.3 版本弃用,请使用 TXAudioEffectManager pausePlayMusic 接口 停止播放背景音乐 v7.3 版本弃用,请使用 TXAudioEffectManager stopPlayMusic 接口 启动播放背景音乐 v7.3 版本弃用,请使用 TXAudioEffectManager startPlayMusic 接口,支持并发播放多个 BGM 音乐文件路径,支持的文件格式:aac, mp3。 启动屏幕分享 从 v7.2 版本开始废弃,请使用 startScreenCapture(HWND rendHwnd, TRTCVideoStreamType type, TRTCVideoEncParam* params) 接口替代。 @} @name 弃用接口函数 @{ 设置麦克风的音量大小 从 v6.9 版本开始废弃,请使用 setAudioCaptureVolume 接口替代。 12.8 调用实验性 API 接口 该接口用于调用一些实验性功能 接口及参数描述的 JSON 字符串 12.7 显示仪表盘 仪表盘是状态统计和事件消息浮层 view,方便调试。 0:不显示;1:显示精简版;2:显示全量版,默认为不显示 12.6 设置日志回调 日志回调 12.5 设置日志保存路径 日志文件默认保存在 C:/Users/[系统用户名]/AppData/Roaming/Tencent/liteav/log,即 %appdata%/Tencent/liteav/log 下,如需修改,必须在所有方法前调用。 存储日志的文件夹,例如 "D:\\Log",UTF-8 编码 12.4 启用或禁用 Log 的本地压缩 开启压缩后,Log 存储体积明显减小,但需要腾讯云提供的 Python 脚本解压后才能阅读。禁用压缩后,Log 采用明文存储,可以直接用记事本打开阅读,但占用空间较大。 指定是否启用,默认为禁止状态 12.3 启用或禁用控制台日志打印 指定是否启用,默认为禁止状态 12.2 设置 Log 输出级别 level 参见 TRTCLogLevel,默认值:TRTCLogLevelNone @} @name LOG 相关接口函数 @{ 12.1 获取 SDK 版本信息 UTF-8 编码的版本号。 11.2 停止网络测速 @} @name 网络测试 @{ 11.1 开始进行网络测速(视频通话期间请勿测试,以免影响通话质量) 测速结果将会用于优化 SDK 接下来的服务器选择策略,因此推荐您在用户首次通话前先进行一次测速,这将有助于我们选择最佳的服务器。同时,如果测试结果非常不理想,您可以通过醒目的 UI 提示用户选择更好的网络。 测速本身会消耗一定的流量,所以也会产生少量额外的流量费用。 应用标识用户标识用户签名 10.2 将小数据量的自定义数据嵌入视频帧中 跟 sendCustomCmdMsg 的原理不同,sendSEIMsg 是将数据直接塞入视频数据头中。因此,即使视频帧被旁路到了直播 CDN 上, 这些数据也会一直存在。但是由于要把数据嵌入视频帧中,所以数据本身不能太大,推荐几个字节就好。 最常见的用法是把自定义的时间戳(timstamp)用 sendSEIMsg 嵌入视频帧中,这种方案的最大好处就是可以实现消息和画面的完美对齐。 本接口有以下限制: -数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始带在视频帧中发送。 -发送消息到房间内所有用户,每秒最多能发送30条消息(与 sendCustomCmdMsg 共享限制)。 -每个包最大为1KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与 sendCustomCmdMsg 共享限制)。 -每个客户端每秒最多能发送总计8KB数据(与 sendCustomCmdMsg 共享限制)。 -若指定多次发送(repeatCount > 1),则数据会被带在后续的连续 repeatCount 个视频帧中发送出去,同样会导致视频码率增大。 -如果 repeatCount > 1,多次发送,接收消息 onRecvSEIMsg 回调也可能会收到多次相同的消息,需要去重。 待发送的数据,最大支持1kb(1000字节)的数据大小 待发送的数据大小 发送数据次数 true:消息已通过限制,等待后续视频帧发送;false:消息被限制发送 @} @name 自定义消息发送 @{ 10.1 发送自定义消息给房间内所有用户 该接口可以借助音视频数据通道向当前房间里的其他用户广播您自定义的数据,但因为复用了音视频数据通道, 请务必严格控制自定义消息的发送频率和消息体的大小,否则会影响音视频数据的质量控制逻辑,造成不确定性的问题。 本接口有以下限制: -发送消息到房间内所有用户(暂时不支持 Web/小程序端),每秒最多能发送30条消息。 -每个包最大为1KB,超过则很有可能会被中间路由器或者服务器丢弃。 -每个客户端每秒最多能发送总计8KB数据。 -将 reliable 和 ordered 同时设置为 true 或 false,暂不支持交叉设置。 -强烈建议不同类型的消息使用不同的 cmdID,这样可以在要求有序的情况下减小消息时延。消息 ID,取值范围为1 - 10待发送的消息,最大支持1KB(1000字节)的数据大小待发送的数据大小是否可靠发送,可靠发送的代价是会引入一定的延时,因为接收端要暂存一段时间的数据来等待重传是否要求有序,即是否要求接收端接收的数据顺序和发送端发送的顺序一致,这会带来一定的接收延时,因为在接收端需要暂存并排序这些消息true:消息已经发出;false:消息发送失败 9.17 获取可播放的音频数据 调用该接口之前,您需要先通过 {@link enableCustomAudioRendering} 开启音频自定义播放。 参数 {@link TRTCAudioFrame} 推荐下列填写方式(其他字段不需要填写): - sampleRate:采样率,必填,支持 16000、24000、32000、44100、48000。 - channel:声道数,必填,单声道请填1,双声道请填2,双声道时数据是交叉的。 - data 于获取音频数据的 buffer。需要您根据一阵音频帧的帧长度分配好 date 的内存大小。 获取的 PCM 数据支持 10ms 或 20ms 两种帧长,推荐使用 20ms 的帧长。 计算公式为:48000采样率、单声道、且播放时长为 20ms 的一帧音频帧的 buffer 大小为 48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节。 音频数据帧 1. 参数 audioFrame 中的 sampleRate、channel 需提前设置好,同时分配好所需读取帧长的 data 空间。 2. SDK 内部会根据 sampleRate 和 channel 自动填充 data 数据。 3. 建议由系统的音频播放线程直接驱动该函数的调用,在播放完一帧音频之后,即调用该接口获取下一帧可播放的音频数据。 9.16 设置推流时混入外部音频的推流音量和播放音量 如果您需要外接一些特定的音频设备,或者希望自己掌控音频的播放逻辑,您可以通过该接口启用音频自定义播放。启用音频自定义播放后,SDK 将不再调用系统的音频接口播放数据,您需要通过 {@link getCustomAudioRenderingFrame} 获取 SDK 要播放的音频帧并自行播放。 是否启用音频自定义播放,默认为关闭状态。 需要您在进入房间前设置才能生效,暂不支持进入房间后再设置。 9.15 设置最终要由系统播放出的音频帧回调格式 本接口用于设置 {@link onMixedPlayAudioFrame} 回调出来的 AudioFrame 的格式:- sampleRate:采样率,支持:16000、32000、44100、48000。- channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。- samplesPerCall:采样点数,定义回调数据帧长。帧长必须为 10ms 的整数倍。 如果希望用毫秒数计算回调帧长,则将毫秒数转换成采样点数的公式为:采样点数 = 毫秒数* 采样率 / 1000; 举例:48000 采样率希望回调 20ms帧长的数据,则采样点数应该填: 960 = 20 * 48000 / 1000; 注意,最终回调的帧长度是以字节为单位,采样点数转换成字节数的计算公式为:字节数 =采样点数 * channel * 2(位宽) 举例:48000 采样率,双声道,20ms帧长,采样点数为 960,字节数为 3840 = 960 * 2 * 2 音频数据回调格式 0:成功;<0:错误 9.14 设置经过前处理后的本地音频帧回调格式 本接口用于设置 {@link onLocalProcessedAudioFrame} 回调出来的 AudioFrame 的格式:- sampleRate:采样率,支持:16000、32000、44100、48000。- channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。- samplesPerCall:采样点数,定义回调数据帧长。帧长必须为 10ms 的整数倍。 如果希望用毫秒数计算回调帧长,则将毫秒数转换成采样点数的公式为:采样点数 = 毫秒数* 采样率 / 1000; 举例:48000 采样率希望回调 20ms帧长的数据,则采样点数应该填: 960 = 20 * 48000 / 1000; 注意,最终回调的帧长度是以字节为单位,采样点数转换成字节数的计算公式为:字节数 =采样点数 * channel * 2(位宽) 举例:48000 采样率,双声道,20ms帧长,采样点数为 960,字节数为 3840 = 960 * 2 * 2 音频数据回调格式 0:成功;<0:错误 9.13 设置本地麦克风采集出的原始音频帧回调格式 本接口用于设置 {@link onCapturedRawAudioFrame} 回调出来的 AudioFrame 的格式:- sampleRate:采样率,支持:16000、32000、44100、48000。- channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。- samplesPerCall:采样点数,定义回调数据帧长。帧长必须为 10ms 的整数倍。 如果希望用毫秒数计算回调帧长,则将毫秒数转换成采样点数的公式为:采样点数 = 毫秒数 * 采样率 / 1000; 举例:48000 采样率希望回调 20ms 帧长的数据,则采样点数应该填: 960 = 20 * 48000 / 1000; 注意,最终回调的帧长度是以字节为单位,采样点数转换成字节数的计算公式为:字节数 = 采样点数 * channel * 2(位宽) 举例:48000 采样率,双声道,20ms 帧长,采样点数为 960,字节数为 3840 = 960 * 2 * 2 音频数据回调格式 0:成功;<0:错误 9.12 设置音频数据回调 设置此方法,SDK 内部会把声音模块的数据(PCM 格式)回调出来,包括:-onCapturedAudioFrame:本机麦克风采集到的音频数据-onPlayAudioFrame:混音前的每一路远程用户的音频数据-onMixedPlayAudioFrame:各路音频数据混合后送入扬声器播放的音频数据 声音帧数据(PCM 格式)的回调,callback = nullptr 则停止回调数据 0:成功;<0:错误 9.11 设置远端视频自定义渲染 此方法同 setLocalVideoRenderDelegate,区别在于一个是本地画面的渲染回调, 一个是远程画面的渲染回调。 设置此方法,SDK 内部会把远端的数据解码后回调出来,SDK 跳过 HWND 渲染逻辑 调用 setRemoteVideoRenderCallback(userId, TRTCVideoPixelFormat_Unknown, TRTCVideoBufferType_Unknown, nullptr) 停止回调。 用户标识 指定回调的像素格式 指定视频数据结构类型 自定义渲染回调 0:成功;<0:错误 9.10 设置本地视频自定义渲染 设置此方法,SDK 内部会把采集到的数据回调出来,SDK 跳过 HWND 渲染逻辑 调用 setLocalVideoRenderCallback(TRTCVideoPixelFormat_Unknown, TRTCVideoBufferType_Unknown, nullptr) 停止回调 指定回调的像素格式 指定视频数据结构类型 自定义渲染回调 0:成功;<0:错误 9.9 设置第三方美颜的视频数据回调 设置该回调之后,SDK 会把采集到的视频帧通过您设置的 callback 回调出来,用于第三方美颜组件进行二次处理,之后 SDK 会将处理后的视频帧进行编码和发送。 指定回调的像素格式 指定视频数据结构类型 自定义美颜回调 0:成功;<0:错误 9.8 生成自定义采集时间戳 此函数仅适合自定义视频采集时使用,当您的 App 自己或由第三方美颜 SDK 调用摄像头 API 采集视频时,由于可能引入一些耗时的外部操作(比为避免发生音画不同步的问题,请按照如下步骤正确使用该接口:1. 在调用系统相机 API 采集到一帧视频时,额外调用一次 generateCustomPTS() 获得 pts 时间戳。2. 在调用 {@link sendCustomVideoData()} 时,将该帧采集时记录的 pts 时间戳赋值给入参 TRTCVideoFrame 中的 timestamp 字段。 时间戳(单位:ms) 9.7 设置推流时混入外部音频的推流音量和播放音量 设置的推流音量大小,范围0 - 100, -1表示不改变 设置的播放音量大小,范围0 - 100, -1表示不改变 9.4 向 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 自己设置时间戳。参考文档:[自定义采集和渲染](https://cloud.tencent.com/document/product/647/34066)。 需精准的按每帧时长的间隔调用 sendCustomAudioData,否则会容易触发声音卡顿。 音频数据 9.3 启用音频自定义采集模式 开启该模式后,SDK 停止运行原有的音频采集流程,只保留编码和发送能力。您需要用 sendCustomAudioData() 不断地向 SDK 塞入自己采集的音频数据。 是否启用,默认值:false 9.2 向 SDK 投送自己采集的视频数据 TRTCVideoFrame 推荐如下填写方式(其他字段不需要填写):-pixelFormat:仅支持 LiteAVVideoPixelFormat_I420。-bufferType:仅支持 LiteAVVideoBufferType_Buffer。-data:视频帧 buffer。-length:视频帧数据长度,I420 格式下,其值等于:width × height × 3 / 2。-width:视频图像长度。-height:视频图像宽度。-timestamp:如果 timestamp 间隔不均匀,会严重影响音画同步和录制出的 MP4 质量。参考文档:[自定义采集和渲染](https://cloud.tencent.com/document/product/647/34066)。 - SDK 内部有帧率控制逻辑,目标帧率以您在 setVideoEncoderParam 中设置的为准,太快会自动丢帧,太慢则会自动补帧。 - 可以设置 frame 中的 timestamp 为 0,相当于让 SDK 自己设置时间戳,但请“均匀”地控制 sendCustomVideoData 的调用间隔,否则会导致视频帧率不稳定。 视频流类型 视频数据,支持 I420 格式数据。 @} 9.1 启用视频自定义采集模式 开启该模式后,SDK 不再运行原有的视频采集流程,只保留编码和发送能力。您需要用 sendCustomVideoData() 不断地向 SDK 塞入自己采集的视频画面。指定视频流类型是否启用,默认值:false 8.14 将所有窗口从屏幕分享的包含列表中移除 该方法只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效,即分享窗口时生效 8.13 将指定窗口从屏幕分享的包含列表中移除 该方法只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效,即分享窗口时生效 窗口句柄 8.12 将指定窗口加入屏幕分享的包含列表中,加入包含列表中的窗口如果在采集窗口区域内会被分享出去 支持启动屏幕分享前设置包含的窗口,也支持屏幕分享过程中动态添加包含的窗口该方法只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效,即分享窗口时生效该方法添加的窗口列表会在退房后清除 窗口句柄 8.11 将所有窗口从屏幕分享的排除列表中移除 8.10 将指定窗口从屏幕分享的排除列表中移除 不希望分享出去的窗口 8.9 将指定窗口加入屏幕分享的排除列表中,加入排除列表中的窗口不会被分享出去 支持启动屏幕分享前设置过滤窗口,也支持屏幕分享过程中动态添加过滤窗口。 不希望分享出去的窗口 8.8 设置屏幕分享的混音音量大小 这个数值越高,屏幕分享音量的占比就越高,麦克风音量占比就越小,所以不推荐设置得太大,否则麦克风的声音就被压制了。 设置的混音音量大小,范围0 - 100 8.7 设置屏幕分享的编码器参数 - setVideoEncoderParam() 用于设置远端主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的编码参数。 - setSubStreamEncoderParam() 用于设置远端辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的编码参数。 该设置决定远端用户看到的画面质量,同时也是云端录制出的视频文件的画面质量。 即使使用主路传输屏幕分享的数据(在调用 startScreenCapture 时设置 type=TRTCVideoStreamTypeBig),依然要使用此接口更新屏幕分享的编码参数。 辅流编码参数,详情请参考 TRTCCloudDef.h 中的 TRTCVideoEncParam 定义 8.6 设置屏幕共享参数,该方法在屏幕共享过程中也可以调用 如果您期望在屏幕分享的过程中,切换想要分享的窗口,可以再次调用这个函数而不需要重新开启屏幕分享。支持如下四种情况:-共享整个屏幕: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 } 指定分享源 指定捕获的区域 指定屏幕分享目标的属性,包括捕获鼠标,高亮捕获窗口等,详情参考 TRTCScreenCaptureProperty 定义 8.5 枚举可分享的屏幕窗口,建议在 startScreenCapture 之前调用 如果您要给您的 App 增加屏幕分享功能,一般需要先显示一个窗口选择界面,这样用户可以选择希望分享的窗口。通过如下函数,您可以获得可分享窗口的 ID、类型、窗口名称以及缩略图。拿到这些信息后,您就可以实现一个窗口选择界面,当然,您也可以使用我们在 Demo 源码中已经实现好的一个界面。 返回的列表中包括屏幕和应用窗口,屏幕会在列表的前面几个元素中。 SDK 维护 ITRTCScreenCaptureSourceList 对象的生命周期。 指定要获取的窗口缩略图大小,缩略图可用于绘制在窗口选择界面上 指定要获取的窗口图标大小 窗口列表包括屏幕 8.4 恢复屏幕分享 8.3 暂停屏幕分享 8.2 停止屏幕采集 @} @name 屏幕分享相关接口函数 @{ 8.1 启动屏幕分享 一个用户同时最多只能上传一条主路(TRTCVideoStreamTypeBig)画面和一条辅路(TRTCVideoStreamTypeSub)画面, 默认情况下,屏幕分享使用辅路画面,如果使用主路画面,建议您提前停止摄像头采集(stopLocalPreview)避免相互冲突。 承载预览画面的 HWND,可以设置为 nullptr,表示不显示屏幕分享的预览效果。屏幕分享使用的线路,可以设置为主路(TRTCVideoStreamTypeBig)或者辅路(TRTCVideoStreamTypeSub),默认使用辅路。屏幕分享的画面编码参数,可以设置为 nullptr,表示让 SDK 选择最佳的编码参数(分辨率、码率等)。 7.4 设置系统声音采集的音量。 音量大小,取值范围为0 - 100。 7.3 关闭系统声音采集。 7.2 打开系统声音采集 该接口会从电脑的声卡中采集音频数据,并将其混入到 SDK 当前的音频数据流中,从而使房间中的其他用户也能听到主播的电脑所播放出的声音。 在线教育场景中,老师可以使用此功能让 SDK 采集教学影片中的声音,并广播给同房间中的学生。 音乐直播场景中,主播可以使用此功能让 SDK 采集音乐播放器中的音乐,从而为自己的直播间增加背景音乐。 deviceName 您可以指定该参数为空置(nullptr),代表让 SDK 采集整个系统的声音。 在 Windows 平台下,您也可以将参数 deviceName设置为某个应用程序的可执行文件(如 QQMuisc.exe)的绝对路径,此时 SDK只会采集该应用程序的声音(仅支持 32 位版本的 SDK)。 您也可以指定该参数为某个扬声器设备的名称或PID来采集特定扬声器声音(通过接口 {@linkXDeviceManager} 中的 getDevicesList 接口,可以获取类型为 {@linkTXMediaDeviceTypeSpeaker} 的扬声器设备) @} @name 音乐特效和人声特效 @{ 7.1 获取音效管理类 ITXAudioEffectManager 该模块是整个 SDK 的音效管理模块,支持如下功能:- 耳机耳返:麦克风捕捉的声音实时通过耳机播放。- 混响效果:KTV、小房间、大会堂、低沉、洪亮...- 变声特效:萝莉、大叔、重金属、外国人...- 背景音乐:支持在线音乐和本地音乐,支持变速、变调等特效、支持原生和伴奏并播放和循环播放。- 短音效:鼓掌声、欢笑声等简短的音效文件,对于小于10秒的文件,请将 isShortFile 参数设置为 YES。 6.2 设置水印 水印的位置是通过 xOffset, yOffset, fWidthRatio 来指定的。-xOffset:水印的坐标,取值范围为0 - 1的浮点数。-yOffset:水印的坐标,取值范围为0 - 1的浮点数。-fWidthRatio:水印的大小比例,取值范围为0 - 1的浮点数。 只支持主路视频流 要设置水印的流类型(TRTCVideoStreamTypeBig、TRTCVideoStreamTypeSub) 水印图片源数据(传 NULL 表示去掉水印) 水印图片源数据类型(传 NULL 时忽略该参数) 水印图片像素宽度(源数据为文件路径时忽略该参数) 水印图片像素高度(源数据为文件路径时忽略该参数) 水印显示的左上角 x 轴偏移 水印显示的左上角 y 轴偏移 水印显示的宽度占画面宽度比例(水印按该参数等比例缩放显示) @} @name 美颜特效和图像水印 @{ 6.1 设置美颜、美白、红润效果级别 SDK 内部集成了两套风格不同的磨皮算法,一套我们取名叫“光滑”,适用于美女秀场,效果比较明显。另一套我们取名“自然”,磨皮算法更多地保留了面部细节,主观感受上会更加自然。美颜风格,光滑或者自然,光滑风格磨皮更加明显,适合娱乐场景。美颜级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显美白级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显红润级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显,该参数暂未生效 @} @name 设备相关接口函数 @{ 5.1 获取设备管理模块 ITXDeviceManager 设备管理类 4.15 停止本地录制 4.14 开启本地录制 录制参数 4.13 停止录音 如果调用 exitRoom 时还在录音,录音会自动停止。 4.12 开始录音 该方法调用后,SDK 会将通话过程中的所有音频(包括本地音频,远端音频,BGM等)录制到一个文件里。无论是否进房,调用该接口都生效。如果调用 exitRoom 时还在录音,录音会自动停止。 录音参数,请参考 TRTCAudioRecordingParams 0:成功;-1:录音已开始;-2:文件或目录创建失败;-3:后缀指定的音频格式不支持 4.11 启用或关闭音量大小提示 开启此功能后,SDK 会在 onUserVoiceVolume() 中反馈对每一路声音音量大小值的评估。我们在 Demo 中有一个音量大小的提示条,就是基于这个接口实现的。如希望打开此功能,请在 startLocalAudio() 之前调用。 设置 onUserVoiceVolume 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms 4.10 获取 SDK 播放音量 4.9 设置 SDK 播放音量。 该函数会控制最终交给系统播放的声音音量 会影响本地录制的音量大小。不会影响耳返的音量。 音量大小,取值0 - 100,默认值为100 4.8 获取 SDK 采集音量 4.7 设置 SDK 采集音量 音量大小,取值0 - 100,默认值为100 4.6 设置某个远程用户的播放音量 远程用户 ID 音量大小,100为原始音量,范围是:[0 ~ 150],默认值为100 4.5 静音/取消静音所有用户的声音 true:静音;false:取消静音 静音时会停止接收所有用户的远端音频流并停止播放,取消静音时会自动拉取所有用户的远端音频流并进行播放。 4.4 静音/取消静音指定的远端用户的声音 用户 ID true:静音;false:取消静音 静音时会停止接收该用户的远端音频流并停止播放,取消静音时会自动拉取该用户的远端音频流并进行播放。 4.3 静音/取消静音本地的音频 当静音本地音频后,房间里的其它成员会收到 onUserAudioAvailable(userId, false) 回调通知。当取消静音本地音频后,房间里的其它成员会收到 onUserAudioAvailable(userId, true) 回调通知。与 stopLocalAudio 不同之处在于,muteLocalAudio(true) 并不会停止发送音视频数据,而是继续发送码率极低的静音包。由于 MP4 等视频文件格式,对于音频的连续性是要求很高的,使用 stopLocalAudio 会导致录制出的 MP4 不易播放。因此在对录制质量要求很高的场景中,建议选择 muteLocalAudio,从而录制出兼容性更好的 MP4 文件。 true:静音;false:取消静音,默认值:false 4.2 关闭本地音频的采集和上行 当关闭本地音频的采集和上行,房间里的其它成员会收到 onUserAudioAvailable(false) 回调通知。 @} @name 音频相关接口函数 @{ 4.1 开启本地音频的采集和上行 该函数会启动麦克风采集,并将音频数据传输给房间里的其他用户。SDK 并不会默认开启本地的音频上行,也就说,如果您不调用这个函数,房间里的其他用户就听不到您的声音。 TRTC SDK 并不会默认打开本地的麦克风采集。 声音质量,参见 TRTCAudioQuality 3.19 视频画面截图 截取本地主路、本地辅路、远程主路和远端辅流的视频画面,并通过 ITRTCCloudCallback 的 onSnapshotComplete 回调返回截图画面的数据给您。 用户 ID,空字符串表示截取本地画面 视频流类型,支持摄像头画面({@link TRTCVideoStreamTypeBig})和屏幕分享画面({@link TRTCVideoStreamTypeSub}) 视频截图来源类型,Windows 端只支持 {@link TRTCSnapshotSourceTypeStream} 3.18 选定观看指定 userId 的大画面还是小画面 此功能需要该 userId 通过 enableEncSmallVideoStream 提前开启双路编码模式。如果该 userId 没有开启双路编码模式,则此操作无效。 用户 ID 视频流类型,即选择看大画面还是小画面,默认为 TRTCVideoStreamTypeBig 3.17 开启大小画面双路编码模式 如果当前用户是房间中的主要角色(例如主播、老师、主持人等),并且使用 PC 或者 Mac 环境,可以开启该模式。开启该模式后,当前用户会同时输出【高清】和【低清】两路视频流(但只有一路音频流)。对于开启该模式的当前用户,会占用更多的网络带宽,并且会更加消耗 CPU 计算资源。对于同一房间的远程观众而言:- 如果用户的下行网络很好,可以选择观看【高清】画面- 如果用户的下行网络较差,可以选择观看【低清】画面 是否开启小画面编码,默认值:false 小流的视频参数 3.16 设置编码器输出的画面镜像模式 该接口不改变本地摄像头的预览画面,但会改变另一端用户看到的(以及服务器录制的)画面效果。 是否开启远端镜像, true:远端画面镜像;false:远端画面非镜像。默认值:false 3.15 设置视频编码输出的画面方向,即设置远端用户观看到的和服务器录制的画面方向 目前支持 TRTCVideoRotation0 和 TRTCVideoRotation180 旋转角度,默认值:TRTCVideoRotation0 3.14 设置远端图像的渲染模式 对应的远端视频流用户ID 远端图像的视频流类型,详见 TRTCVideoStreamType 定义 远端图像的参数,详情请参考 TRTCTypeDef.h 中的 TRTCRenderParams 定义 3.13 设置本地图像(主流)的渲染参数 本地图像的参数,详情请参考 TRTCTypeDef.h 中的 TRTCRenderParams 定义 3.12 设置网络流控相关参数 该设置决定了 SDK 在各种网络环境下的调控策略(例如弱网下是“保清晰”还是“保流畅”) 网络流控参数,详情请参考 TRTCCloudDef.h 中 TRTCNetworkQosParam 的定义 3.11 设置视频编码器相关参数 该设置决定了远端用户看到的画面质量(同时也是云端录制出的视频文件的画面质量) 视频编码参数,详情请参考 TRTCCloudDef.h 中 TRTCVideoEncParam 的定义 3.10 暂停/恢复接收所有远端视频流 该接口仅暂停/恢复接收所有远端用户的视频流,但并不释放显示资源,所以如果暂停,视频画面会冻屏在 mute 前的最后一帧。 是否停止接收 3.9 暂停/恢复接收指定的远端视频流 该接口仅暂停/恢复接收指定的远端用户的视频流,但并不释放显示资源,所以如果暂停,视频画面会冻屏在 mute 前的最后一帧。 对方的用户标识 要暂停/恢复的视频流类型(仅支持 {@link TRTCVideoStreamTypeBig} 和 {@link TRTCVideoStreamTypeSub}) 是否暂停接收 该接口支持您在进入房间(enterRoom)前调用,暂停状态会在退出房间(exitRoom)在之后会被重置。 3.8 停止显示所有远端视频画面,同时不再拉取远端用户的视频数据流 如果有屏幕分享的画面在显示,则屏幕分享的画面也会一并被关闭 3.7 停止显示远端视频画面,同时不再拉取远端用户的视频数据流 调用此接口后,SDK 会停止接收该用户的远程视频流,同时会清理相关的视频显示资源。 指定远端用户的 userId 指定要停止观看的 userId 的视频流类型 3.6 更新远端视频渲染的窗口 对方的用户标识 要设置预览窗口的流类型(TRTCVideoStreamTypeBig、TRTCVideoStreamTypeSub) 承载预览画面的控件 3.5 开始拉取并显示指定用户的远端画面 该函数会拉取指定 userid 的视频流显示在您指定的 view 控件上,您可以通过 setRemoteRenderParams 设置显示模式。- 如果您提前知道房间中某个 userid 正在推流,可以直接调用 startRemoteView 显示该用户的远端画面。- 如果您不知道房间中有哪些用户开启了视频,可以在 enterRoom 后等待来自 SDK 的 onUserVideoAvailable(userId, true) 回调通知。调用 startRemoteView 只是启动拉取,此时画面还需要加载,当加载完毕后 ITRTCCloudCallback 会通过 onFirstVideoFrame(userId) 通知您。 指定远端用户的 userId 指定要观看 userId 的视频流类型: - 高清大画面:({@link TRTCVideoStreamTypeBig})- 低清小画面:({@link TRTCVideoStreamTypeSmall})- 辅流(屏幕分享):({@link TRTCVideoStreamTypeSub}) 承载视频画面的控件 注意几点规则需要您关注: 1. SDK 支持同时观看某 userid 的大画面和辅路,或者小画面和辅路,但不支持同时观看大画面和小画面。2. 只有当指定的 userid 通过 enableEncSmallVideoStream 开启双路编码后,才能观看该用户的小画面。3. 如果该用户的小画面不存在,则默认切换到大画面。 3.4 暂停/恢复推送本地的视频数据 当暂停推送本地视频后,房间里的其它成员将会收到 onUserVideoAvailable(userId, false) 回调通知当恢复推送本地视频后,房间里的其它成员将会收到 onUserVideoAvailable(userId, true) 回调通知 true:暂停;false:恢复,默认值:false 3.3 停止本地视频采集及预览 3.2 更新本地视频预览画面的窗口 承载预览画面的控件 @} @name 视频相关接口函数 @{ 3.1 开启本地视频的预览画面 这个接口会启动默认的摄像头,可以通过 setCurrentCameraDevice 接口选用其他摄像头 当开始渲染首帧摄像头画面时,您会收到 ITRTCCloudCallback 中的 onFirstVideoFrame(null) 回调。承载预览画面的控件 2.5 设置云端的混流转码参数 如果您在实时音视频 [控制台](https://console.cloud.tencent.com/trtc/) 中的功能配置页开启了“启用旁路推流”功能, 房间里的每一路画面都会有一个默认的直播 [CDN 地址](https://cloud.tencent.com/document/product/647/16826)。 一个直播间中可能有不止一位主播,而且每个主播都有自己的画面和声音,但对于 CDN 观众来说,他们只需要一路直播流, 所以您需要将多路音视频流混成一路标准的直播流,这就需要混流转码。 当您调用 setMixTranscodingConfig() 接口时,SDK 会向腾讯云的转码服务器发送一条指令,目的是将房间里的多路音视频流混合为一路, 您可以通过 mixUsers 参数来调整每一路画面的位置,以及是否只混合声音,也可以通过 videoWidth、videoHeight、videoBitrate 等参数控制混合音视频流的编码参数。 【画面1】=> 解码 ====> \ \ 【画面2】=> 解码 => 画面混合 => 编码 => 【混合后的画面】 / 【画面3】=> 解码 ====> / 【声音1】=> 解码 ====> \ \ 【声音2】=> 解码 => 声音混合 => 编码 => 【混合后的声音 / 【声音3】=> 解码 ====> / 参考文档:[云端混流转码](https://cloud.tencent.com/document/product/647/16827)。 关于云端混流的注意事项: - 云端转码会引入一定的 CDN 观看延时,大概会增加1 - 2秒。 - 调用该函数的用户,会将连麦中的多路画面混合到自己当前这路画面或者 config 中指定的 streamId 上。 - 请注意,若您还在房间中且不再需要混流,请务必传入 nullptr 进行取消,因为当您发起混流后,云端混流模块就会开始工作,不及时取消混流可能会引起不必要的计费损失。 - 请放心,您退房时会自动取消混流状态。 请参考 TRTCCloudDef.h 中关于 TRTCTranscodingConfig 的介绍。如果传入 NULL 取消云端混流转码。 2.4 停止向非腾讯云地址转推 2.3 开始向友商云的直播 CDN 转推 该接口跟 startPublishing() 类似,但 startPublishCDNStream() 支持向非腾讯云的直播 CDN 转推。使用 startPublishing() 绑定腾讯云直播 CDN 不收取额外的费用,但使用 startPublishCDNStream() 绑定非腾讯云直播 CDN 需要收取转推费用。 param param CDN 转推参数,请参考 TRTCTypeDef.h 中关于 TRTCPublishCDNParam 的介绍。 2.2 停止向腾讯云的直播 CDN 推流 @} @name CDN 相关接口函数 @{ 2.1 开始向腾讯云的直播 CDN 推流 该接口会指定当前用户的音视频流在腾讯云 CDN 所对应的 StreamId,进而可以指定当前用户的 CDN 播放地址。例如:如果我们采用如下代码设置当前用户的主画面 StreamId 为 user_stream_001,那么该用户主画面对应的 CDN 播放地址为:“http://yourdomain/live/user_stream_001.flv”,其中 yourdomain 为您自己备案的播放域名,您可以在直播[控制台](https://console.cloud.tencent.com/live) 配置您的播放域名,腾讯云不提供默认的播放域名。您也可以在设置 enterRoom 的参数 TRTCParams 时指定 streamId, 而且我们更推荐您采用这种方案。 ITRTCCloud trtcCloud = ITRTCCloud.getTRTCShareInstance(); trtcCloud.enterRoom(params, TRTCAppScene.TRTCAppSceneLIVE); trtcCloud.startLocalPreview(Intptr); trtcCloud.startLocalAudio(); trtcCloud.startPublishing("user_stream_001", TRTCVideoStreamType.TRTCVideoStreamTypeBig); 您需要先在实时音视频 [控制台](https://console.cloud.tencent.com/rav/) 中的功能配置页开启“启用旁路推流”才能生效。 - 若您选择“指定流旁路”,则您可以通过该接口将对应音视频流推送到腾讯云 CDN 且指定为填写的流 ID。 - 若您选择“全局自动旁路”,则您可以通过该接口调整默认的流 ID。 自定义流 ID仅支持 TRTCVideoStreamTypeBig 和 TRTCVideoStreamTypeSub。 1.9 销毁子房间示例 要销毁的子实例 1.8 创建子房间示例(用于多房间并发观看) TRTCCloud 一开始被设计成单例模式,限制了多房间并发观看的能力。通过调用该接口,您可以创建出多个 TRTCCloud 实例,以便同时进入多个不同的房间观看音视频流。但需要注意的是,由于摄像头和麦克风还是只有一份,因此您只能同时在一个 TRTCCloud 实例中以“主播”的身份存在,也就是您只能同时在一个 TRTCCloud 实例中发布自己的音视频流。该功能主要用于在线教育场景中一种被称为“超级小班课”的业务场景中,用于解决“每个 TRTC 的房间中最多只能有 50 人同时发布自己音视频流”的限制。示例代码如下:
    ITRTCCloud *mainCloud = getTRTCShareInstance();
    mainCloud->enterRoom(params1, TRTCAppSceneLIVE);
    //...
    //Switch the role from "anchor" to "audience" in your own room
    mainCloud->switchRole(TRTCRoleAudience);
    mainCloud->muteLocalVideo(true);
    mainCloud->muteLocalAudio(true);
    //...
    //Use subcloud to enter another room and switch the role from "audience" to "anchor"
    ITRTCCloud *subCloud = mainCloud->createSubCloud();
    subCloud->enterRoom(params2, TRTCAppSceneLIVE);
    subCloud->switchRole(TRTCRoleAnchor);
    subCloud->muteLocalVideo(false);
    subCloud->muteLocalAudio(false);
    //...
    //Exit from new room and release it.
    subCloud->exitRoom();
    mainCloud->destroySubCloud(subCloud);
1.7 设置音视频数据接收模式(需要在进房前设置才能生效) 为实现进房秒开的绝佳体验,SDK 默认进房后自动接收音视频。即在您进房成功的同时,您将立刻收到远端所有用户的音视频数据。若您没有调用 startRemoteView,视频数据将自动超时取消。若您主要用于语音聊天等没有自动接收视频数据需求的场景,您可以根据实际需求选择接收模式,以免产生预期之外的视频时长费用。 true:自动接收音频数据;false:需要调用 muteRemoteAudio 进行请求或取消。默认值:true true:自动接收视频数据;false:需要调用 startRemoteView/stopRemoteView 进行请求或取消。默认值:true 需要在进房前设置才能生效。 1.6 关闭跨房连麦 跨房通话的退出结果会通过 ITRTCCloudCallback 中的 onDisconnectOtherRoom 回调通知给您。 1.5 请求跨房通话(主播 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); JSON 字符串连麦参数,roomId 代表目标房间号,userId 代表目标用户 ID。 1.4 切换房间 调用该接口后,用户会先退出原来的房间并快速进入 TRTCSwitchRoomConfig 中指定的新房间:相比于直接调用 exitRoom + enterRoom 的方式,switchRoom 接口对主播更加友好,因为 switchRoom 不会停止主播端视频的采集和预览。接口调用结果会通过 ITRTCCloudCallback 中的 onSwitchRoom(errCode, errMsg) 回调通知给您。 房间切换参数,请参考 {@link TRTCSwitchRoomConfig} 1.3 切换角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom) 在直播场景下,一个用户可能需要在“观众”和“主播”之间来回切换。您可以在进房前通过 TRTCParams 中的 role 字段确定角色,也可以通过 switchRole 在进房后切换角色。 目标角色,默认为主播: - {@link TRTCRoleAnchor} 主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频。 - {@link TRTCRoleAudience} 观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限。 1.2 离开房间 调用 exitRoom() 接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源等。待资源释放完毕,SDK 会通过 TRTCCloudCallback 中的 onExitRoom() 回调通知您。如果您要再次调用 enterRoom() 或者切换到其他的音视频 SDK,请等待 onExitRoom() 回调到来后再执行相关操作。否则可能会遇到如摄像头、麦克风设备被强占等各种异常问题。 移除事件回调 事件回调 @} @name 设置 TRTCCloudCallback 回调 @{ 设置回调接口 ITRTCCloudCallback 您可以通过 ITRTCCloudCallback 获得来自 SDK 的各种状态通知,详见 ITRTCCloudCallback.h 中的定义事件回调 释放 ITRTCCloud 单例对象。 @name 创建与销毁 ITRTCCloud 单例 @{ 获取 ITRTCCloud 单例对象。 返回 ITRTCCloud 单例对象 析构函数,C# 代码中要求显示调用 Dispose 函数,来触发托管 C++ 类析构函数。 @defgroup ITRTCCloud_csharp ITRTCCloud 腾讯云视频通话功能的主要接口类 @{ Module: ITRTCCloud @ TXLiteAVSDK Function: 腾讯云视频通话功能的主要接口类 创建/使用/销毁 ITRTCCloud 对象的示例代码: ITRTCCloud trtcCloud = ITRTCCloud.getTRTCShareInstance(); if (trtcCloud != null) { string version = trtcCloud->getSDKVersion(); } 程序退出或者后续程序流程不需要使用 TRTCCloud 对象时,释放单例对象 ITRTCCloud ITRTCCloud.destroyTRTCShareInstance(); trtcCloud = null; 14.1 有日志打印时的回调 日志内容 日志等级 参见 TRTCLogLevel 暂无具体意义,目前为固定值 TXLiteAVSDK 日志相关回调 13.4 各路音频数据混合后送入喇叭播放的音频数据 - 请不要在此回调函数中做任何耗时操作,建议直接拷贝到另一线程进行处理,否则会导致各种声音问题。 - 此接口回调出的音频数据支持修改。- 此接口回调出的音频时间帧长固定为0.02s。 由时间帧长转化为字节帧长的公式为【采样率 × 时间帧长 × 声道数 × 采样点位宽】。 以SDK默认的音频播放格式48000采样率、双声道、16采样点位宽为例,字节帧长为【48000 × 0.02s × 2 × 16bit = 30720bit = 3840字节】。- 此接口回调出的音频数据是各路音频播放数据的混合,不包含耳返的音频数据。 PCM 格式的音频数据帧 13.3 混音前的每一路远程用户的音频数据(例如您要对某一路的语音进行文字转换,必须要使用这里的原始数据,而不是混音之后的数据) - 请不要在此回调函数中做任何耗时操作,建议直接拷贝到另一线程进行处理,否则会导致各种声音问题。 - 此接口回调出的音频数据是只读的,不支持修改。 PCM 格式的音频数据帧 用户标识 13.2 本地采集并经过音频模块前处理后的音频数据回调 当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理(ANS、AEC、AGC)之后的数据,以 PCM 格式的形式通过本接口回调给您。- 此接口回调出的音频时间帧长固定为0.02s,格式为 PCM 格式。- 由时间帧长转化为字节帧长的公式为【采样率 × 时间帧长 × 声道数 × 采样点位宽】。- 以 TRTC 默认的音频录制格式48000采样率、单声道、16采样点位宽为例,字节帧长为【48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。特殊说明:您可以通过设置接口中的 `TRTCAudioFrame.extraData` 字段,达到传输信令的目的。由于音频帧头部的数据块不能太大,建议您写入 `extraData` 时,尽量将信令控制在几个字节的大小,如果超过 100 个字节,写入的数据不会被发送。房间内其他用户可以通过 {@link TRTCAudioFrameDelegate} 中的 `onRemoteUserAudioFrame` 中的 `TRTCAudioFrame.extraData` 字段回调接收数据。 PCM 格式的音频数据帧 13.1 本地麦克风采集到的音频数据回调 - 请不要在此回调函数中做任何耗时操作,建议直接拷贝到另一线程进行处理,否则会导致各种声音问题。 - 此接口回调出的音频数据支持修改。- 此接口回调出的音频时间帧长固定为0.02s。 由时间帧长转化为字节帧长的公式为【采样率 × 时间帧长 × 声道数 × 采样点位宽】。 以SDK默认的音频录制格式48000采样率、单声道、16采样点位宽为例,字节帧长为【48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。- 此接口回调出的音频数据包含背景音、音效、混响等前处理效果。 PCM 格式的音频数据帧 声音数据帧的自定义处理回调(只读) 回调函数是在 SDK 内部线程同步抛出来的,请不要做耗时操作。 提示:请按需定义相关函数实现,减少不必要的性能损耗。 12.2 用于对接第三方美颜组件的视频处理回调 如果您选购了第三方美颜组件,就需要在 TRTCCloud 中设置第三方美颜回调,之后 TRTC 就会将原本要进行预处理的视频帧通过此回调接口抛送给您。之后您就可以将 TRTC 抛出的视频帧交给第三方美颜组件进行图像处理,由于抛出的数据是可读且可写的,因此第三方美颜的处理结果也可以同步给 TRTC 进行后续的编码和发送。 用于承载 TRTC 采集到的摄像头画面 用于接收第三方美颜处理过的视频画面 之后您就可以将 TRTC 抛出的视频帧交给第三方美颜组件进行图像处理,由于抛出的数据是可读且可写的,因此第三方美颜的处理结果也可以同步给 TRTC 进行后续的编码和发送。 12.1 自定义视频渲染回调 可以通过 setLocalVideoRenderCallback 和 setRemoteVideoRenderCallback 接口设置自定义渲染回调 用户标识 流类型:即摄像头还是屏幕分享 视频帧数据 视频数据帧的自定义处理回调 10.6 废弃接口:播放背景音乐结束 该接口已被废弃,不推荐使用 错误码 10.5 废弃接口:播放背景音乐的进度 该接口已被废弃,不推荐使用 已播放时间 总时间 10.4 废弃接口:开始播放背景音乐 该接口已被废弃,不推荐使用 错误码 10.3 废弃接口:播放音效结束回调 该接口已被废弃,不推荐使用 音效id 0表示播放正常结束;其他表示异常结束 10.2 废弃接口:有用户(主播)离开当前房间 该回调接口可以被看作是 onRemoteUserLeaveRoom 的废弃版本,不推荐使用。请使用 onUserVideoAvailable 或 onRemoteUserEnterRoom 进行替代。 该接口已被废弃,不推荐使用 用户标识 离开原因 @name 弃用接口回调 @{ 10.1 废弃接口:有主播加入当前房间 该回调接口可以被看作是 onRemoteUserEnterRoom 的废弃版本,不推荐使用。请使用 onUserVideoAvailable 或 onRemoteUserEnterRoom 进行替代。该接口已被废弃,不推荐使用用户标识 截图完成时回调 用户 ID,空字符串表示截取本地画面 视频流类型 截图数据,为 nullptr 表示截图失败 截图数据长度,对于BGRA32而言,length = width * height * 4 截图画面的宽度 截图画面的高度 截图数据格式,目前只支持 TRTCVideoPixelFormat_BGRA32 录制任务已结束 错误码 0:录制成功;-1:录制失败;-2:切换分辨率或横竖屏导致录制结束 录制文件存储路径 录制任务进行中 已经录制的累计时长,单位毫秒 录制文件存储路径 @} 录制任务已经开始 错误码 0:初始化录制成功;-1:初始化录制失败;-2: 文件后缀名有误录制文件存储路径 9.5 当屏幕分享窗口被遮挡无法正常捕获时,SDK 会通过此回调通知,可在此回调里通知用户移开遮挡窗口 9.4 当屏幕分享停止时,SDK 会通过此回调通知 停止原因,0:表示用户主动停止;1:表示屏幕分享窗口被关闭 9.3 当屏幕分享恢复时,SDK 会通过此回调通知 停止原因,0:表示用户主动恢复,1:表示屏幕分享参数设置完毕后自动恢复;2:表示屏幕分享窗口从最小化被恢复;3:表示屏幕分享窗口从隐藏被恢复 9.2 当屏幕分享暂停时,SDK 会通过此回调通知 停止原因,0:表示用户主动暂停;1:表示设置屏幕分享参数导致的暂停;2:表示屏幕分享窗口被最小化导致的暂停;3:表示屏幕分享窗口被隐藏导致的暂停 @} @name 屏幕分享回调 @{ 9.1 当屏幕分享开始时,SDK 会通过此回调通知 8.5 设置云端的混流转码参数的回调,对应于 TRTCCloud 中的 setMixTranscodingConfig() 接口 对应于 TRTCCloud 中的 setMixTranscodingConfig() 接口 0表示成功,其余值表示失败 具体错误原因 8.4 停止旁路推流到 CDN 完成的回调 对应于 TRTCCloud 中的 stopPublishCDNStream() 接口 错误码,参考 TXLiteAVCode.h 错误详细信息 8.3 启动旁路推流到 CDN 完成的回调 对应于 TRTCCloud 的 startPublishCDNStream() 接口 Start 回调如果成功,只能说明转推请求已经成功告知给腾讯云,如果目标 CDN 有异常,还是有可能会转推失败。 错误码,参考 TXLiteAVCode.h 错误详细信息 8.2 停止向腾讯云的直播 CDN 推流的回调,对应于 TRTCCloud 中的 stopPublishing() 接口 0表示成功,其余值表示失败 具体错误原因 @} @name CDN 旁路转推回调 @{ 8.1 开始向腾讯云的直播 CDN 推流的回调,对应于 TRTCCloud 中的 startPublishing() 接口 0表示成功,其余值表示失败具体错误原因 7.3 收到 SEI 消息的回调 当房间中的某个用户使用 sendSEIMsg 发送数据时,房间中的其它用户可以通过 onRecvSEIMsg 接口接收数据。 用户标识 数据 数据大小 7.2 自定义消息丢失回调 TRTC 所使用的传输通道为 UDP 通道,所以即使设置了 reliable,也做不到100%不丢失,只是丢消息概率极低,能满足常规可靠性要求。在过去的一段时间内(通常为5s),自定义消息在传输途中丢失的消息数量的统计,SDK 都会通过此回调通知出来。 只有在发送端设置了可靠传输(reliable),接收方才能收到消息的丢失回调 用户标识 命令 ID 错误码,当前版本为-1 丢失的消息数量 @} @name 自定义消息的接收回调 @{ 7.1 收到自定义消息回调 当房间中的某个用户使用 sendCustomCmdMsg 发送自定义消息时,房间中的其它用户可以通过 onRecvCustomCmdMsg 接口接收消息用户标识命令 ID消息序号消息数据消息数据大小 6.8 扬声器测试音量回调 扬声器测试接口 startSpeakerDeviceTest 会触发这个回调 音量值,取值范围0 - 100 6.7 麦克风测试音量回调 麦克风测试接口 startMicDeviceTest 会触发这个回调 音量值,取值范围0 - 100 6.6 当前音频播放设备音量变化通知 使用enableAudioVolumeEvaluation(interval>0)开启,(interval==0)关闭 音量值,取值范围0 - 100 当前音频播放设备是否被静音,true:静音;false:取消静音 6.5 当前音频采集设备音量变化通知 使用enableAudioVolumeEvaluation(interval>0)开启,(interval==0)关闭 音量值,取值范围0 - 100 当前采集音频设备是否被静音,true:静音;false:取消静音 6.4 本地设备通断回调 设备 ID 设备类型 事件类型 6.3 用于提示音量大小的回调,包括每个 userId 的音量和远端总音量 您可以通过调用 TRTCCloud 中的 enableAudioVolumeEvaluation 接口来开关这个回调。需要注意的是,调用 enableAudioVolumeEvaluation 开启音量回调后,无论频道内是否有人说话,都会按设置的时间间隔调用这个回调;如果没有人说话,则 userVolumes 为空,totalVolume 为0。 userId 为 null 时表示自己的音量,userVolumes 内仅包含正在说话(音量不为0)的用户音量信息。 所有正在说话的房间成员的音量,取值范围0 - 100。 房间成员数量 所有远端成员的总音量, 取值范围0 - 100。 6.2 麦克风准备就绪 @} @name 硬件设备事件回调 @{ 6.1 摄像头准备就绪 5.4 服务器测速的回调,SDK 对多个服务器 IP 做测速,每个 IP 的测速结果通过这个回调通知 当前完成的测速结果 已完成测速的服务器数量 需要测速的服务器总数量 5.3 SDK 跟服务器的连接恢复 5.2 SDK 尝试重新连接到服务器 @} @name 服务器事件回调 @{ 5.1 SDK 跟服务器的连接断开 4.2 技术指标统计回调 如果您是熟悉音视频领域相关术语,可以通过这个回调获取 SDK 的所有技术指标。如果您是首次开发音视频相关项目,可以只关注 onNetworkQuality 回调。 每2秒回调一次 统计数据,包括本地和远程的 @} @name 统计和质量回调 @{ 4.1 网络质量:该回调每2秒触发一次,统计当前网络的上行和下行质量 userId == null 代表自己当前的视频质量 上行网络质量下行网络质量的数组下行网络质量的数组大小 3.10 远端视频状态变化的事件回调 您可以通过此事件回调获取远端每一路画面的播放状态(包括 Playing、Loading 和 Stopped 三种状态),从而进行相应的 UI 展示。 用户标识 视频流类型:主路(Main)一般用于承载摄像头画面,辅路(Sub)一般用于承载屏幕分享画面。 视频状态:包括 Playing、Loading 和 Stopped 三种状态。 视频状态改变的原因 额外信息 3.9 首帧本地音频数据已经被送出 SDK 会在 enterRoom() 并 startLocalAudio() 成功后开始麦克风采集,并将采集到的声音进行编码。当 SDK 成功向云端送出第一帧音频数据后,会抛出这个回调事件。 3.8 首帧本地视频数据已经被送出 SDK 会在 enterRoom() 并 startLocalPreview() 成功后开始摄像头采集,并将采集到的画面进行编码。当 SDK 成功向云端送出第一帧视频数据后,会抛出这个回调事件。 视频流类型,大画面还是小画面或辅流画面(屏幕分享) 3.7 开始播放远程用户的首帧音频(本地声音暂不通知) 远程用户 ID 3.6 开始渲染本地或远程用户的首帧画面 如果 userId 为 null,代表开始渲染本地采集的摄像头画面,需要您先调用 startLocalPreview 触发。如果 userId 不为 null,代表开始渲染远程用户的首帧画面,需要您先调用 startRemoteView 触发。 只有当您调用 startLocalPreview()、startRemoteView() 或 startRemoteSubStreamView() 之后,才会触发该回调。 本地或远程用户 ID,如果 userId == null 代表本地,userId != null 代表远程。 视频流类型:摄像头或屏幕分享。 画面宽度 画面高度 3.5 用户是否开启音频上行 用户标识 声音是否开启 3.4 用户是否开启屏幕分享 用户标识 屏幕分享是否开启 3.3 用户是否开启摄像头视频 当您收到 onUserVideoAvailable(userId, YES) 通知时,代表该路画面已经有可用的视频数据帧到达。之后,您需要调用 startRemoteView(userId) 接口加载该用户的远程画面。再之后,您还会收到名为 onFirstVideoFrame(userId) 的首帧画面渲染回调。 当您收到了 onUserVideoAvailable(userId, NO) 通知时,代表该路远程画面已经被关闭,这可能是 由于该用户调用了 muteLocalVideo() 或 stopLocalPreview() 所致。 用户标识 画面是否开启 3.2 有用户离开当前房间 与 onRemoteUserEnterRoom 相对应,在两种不同的应用场景下,该通知的行为会有差别:- 通话场景(TRTCAppSceneVideoCall 和 TRTCAppSceneAudioCall):该场景下用户没有角色的区别,任何用户的离开都会触发该通知。- 直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom):只有主播离开房间时才会触发该通知,观众离开房间不会触发该通知。 用户标识 离开原因,0表示用户主动退出房间,1表示用户超时退出,2表示被踢出房间。 @} @name 成员事件回调 @{ 3.1 有用户加入当前房间 出于性能方面的考虑,在两种不同的应用场景下,该通知的行为会有差别:- 通话场景(TRTCAppSceneVideoCall 和 TRTCAppSceneAudioCall):该场景下用户没有角色的区别,任何用户进入房间都会触发该通知。- 直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom):该场景不限制观众的数量,如果任何用户进出都抛出回调会引起很大的性能损耗,所以该场景下只有主播进入房间时才会触发该通知,观众进入房间不会触发该通知。 注意 onRemoteUserEnterRoom 和 onRemoteUserLeaveRoom 只适用于维护当前房间里的“成员列表”,如果需要显示远程画面,建议使用监听 onUserVideoAvailable() 事件回调。 用户标识 2.6 结束跨房通话(主播 PK)的结果回调 错误码,ERR_NULL 代表切换成功,其他请参见 [错误码](https://cloud.tencent.com/document/product/647/32257)。 错误信息 2.5 请求跨房通话(主播 PK)的结果回调 调用 TRTCCloud 中的 connectOtherRoom() 接口会将两个不同房间中的主播拉通视频通话,也就是所谓的“主播PK”功能。 调用者会收到 onConnectOtherRoom() 回调来获知跨房通话是否成功, 如果成功,两个房间中的所有用户都会收到 PK 主播的 onUserVideoAvailable() 回调。 要 PK 的目标主播 userId。 错误码,ERR_NULL 代表切换成功,其他请参见 [错误码](https://cloud.tencent.com/document/product/647/32257)。 错误信息 2.4 切换房间 (switchRoom) 的结果回调 2.3 切换角色结果回调 调用 TRTCCloud 中的 switchRole() 接口会切换主播和观众的角色,该操作会伴随一个线路切换的过程, 待 SDK 切换完成后,会抛出 onSwitchRole() 事件回调。 错误码,ERR_NULL 代表切换成功,其他请参见 [错误码](https://cloud.tencent.com/document/product/647/32257)。 错误信息 2.2 离开房间的事件回调 调用 TRTCCloud 中的 exitRoom() 接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源等。 待资源释放完毕之后,SDK 会通过 onExitRoom() 回调通知到您。 如果您要再次调用 enterRoom() 或者切换到其他的音视频 SDK,请等待 onExitRoom() 回调到来之后再执行相关操作。 否则可能会遇到如摄像头、麦克风设备被强占等各种异常问题。 离开房间原因,0:主动调用 exitRoom 退房;1:被服务器踢出当前房间;2:当前房间整个被解散。 @} @name 房间事件回调 @{ 2.1 已加入房间的回调 调用 TRTCCloud 中的 enterRoom() 接口执行进房操作后,会收到来自 SDK 的 onEnterRoom(result) 回调:- 如果加入成功,result 会是一个正数(result > 0),代表加入房间的时间消耗,单位是毫秒(ms)。- 如果加入失败,result 会是一个负数(result < 0),代表进房失败的错误码。进房失败的错误码含义请参见 [错误码](https://cloud.tencent.com/document/product/647/32257)。 在 Ver6.6 之前的版本,只有进房成功会抛出 onEnterRoom(result) 回调,进房失败由 onError() 回调抛出。 在 Ver6.6 及之后改为:进房成功返回正的 result,进房失败返回负的 result,同时进房失败也会有 onError() 回调抛出。result > 0 时为进房耗时(ms),result < 0 时为进房错误码。 1.2 警告回调:用于告知您一些非严重性问题,例如出现了卡顿或者可恢复的解码失败。 错误码 警告信息 扩展信息字段,个别警告码可能会带额外的信息帮助定位问题 @name 错误事件和警告事件 @{ 1.1 错误回调,SDK 不可恢复的错误,一定要监听,并分情况给用户适当的界面提示。 错误码错误信息 扩展信息字段,个别错误码可能会带额外的信息帮助定位问题 @defgroup ITRTCCloudCallback_csharp ITRTCCloudCallback 腾讯云视频通话功能的回调接口类 @{ 腾讯云视频通话功能的回调接口类 数组 remoteStatisticsArray 的大小 远端成员的音视频统计信息,可能有主画面、小画面以及辅路画面等多路的情况,因此是一个数组 数组 localStatisticsArray 的大小 本地的音视频统计信息,可能有主画面、小画面以及辅路画面等多路的情况,因此是一个数组 总发送字节总数(包含信令和音视频) 总接收字节数(包含信令和音视频) 延迟(毫秒),指 SDK 到腾讯云服务器的一次网络往返时间,该值越小越好。 一般低于50ms的 rtt 相对理想,而高于100ms的 rtt 会引入较大的通话延时。由于数据上下行共享一条网络连接,所以 local 和 remote 的 rtt 相同。 当前系统的 CPU 使用率(%) 当前 App 的 CPU 使用率(%) S -> C 下行丢包率(%), 该值越小越好,例如,丢包率为0表示网络很好, 丢包率为30@%则意味着 SDK 向服务器发送的数据包中会有30@%丢失在下行传输中。 C -> S 上行丢包率(%), 该值越小越好,例如,丢包率为0表示网络很好, 丢包率为30@%则意味着 SDK 向服务器发送的数据包中会有30@%丢失在上行传输中。 统计数据 流类型(大画面 | 小画面 | 辅路画面) 音频码率(Kbps) 音频采样率(Hz) 视频码率(Kbps) 接收帧率(fps) 视频高度 视频宽度 该线路的总丢包率(%) 这个值越小越好,例如,丢包率为0表示网络很好。丢包率是该线路的 userId 从上行到服务器再到下行的总丢包率。如果 downLoss 为0,但是 finalLoss 不为0,说明该 userId 上行时出现了无法恢复的丢包。 用户 ID,指定是哪个用户的视频流 远端成员的音视频统计信息 流类型(大画面 | 小画面 | 辅路画面) 音频发送码率(Kbps) 音频采样率(Hz) 视频发送码率(Kbps) 帧率(fps) 视频高度 视频宽度 @addtogroup TRTCCloudDef_csharp @{ 自己本地的音视频统计信息 请求视频位成功 连接接口机服务器成功 拉取接口机服务器地址成功 音频状态位变化通知 视频状态位变化通知 退房通知 进房通知 自己进入房间失败 WiFi 切换到4G 会触发断线重连,此时需要重新进入房间(拉取最优的服务器地址) 下发房间成员列表(不包括自己) 退出房间 进入房间成功 TXLivePlayer 接收到http响应头中的 flvSessionKey 信息 音频设备的route发生改变,即当前的输入输出设备发生改变,比如耳机被拔出 释放麦克风占用 视频流MetaData事件 麦克风启动成功 音频首次播放(SDK 内部事件,不会对外抛出) 音频正在播放(SDK 内部事件,不会对外抛出) 音频正在加载(SDK 内部事件,不会对外抛出) 音频首次加载(SDK 内部事件,不会对外抛出) 软解码器启动成功(SDK 内部事件,不会对外抛出) 硬解码器启动成功(SDK 内部事件,不会对外抛出) 视频解码器缓存帧数过多,超过40帧(SDK 内部事件,不会对外抛出) 点播,视频播放 Seek 完成(SDK 内部事件,不会对外抛出) 点播,DNS 解析完成(SDK 内部事件,不会对外抛出) 点播,收到首帧数据(SDK 内部事件,不会对外抛出) 点播,TCP 连接成功(SDK 内部事件,不会对外抛出) 直播,切流成功(切流可以播放不同画面大小的视频) 点播,loading 结束 点播,视频加载完毕 消息事件 视频旋转角度发生改变 点播,获取点播文件信息成功 下行视频分辨率改变 解码器启动 视频播放 loading 视频播放结束 视频播放进度 视频播放开始 渲染首个视频数据包(IDR) 直播,已经与 RTMP 服务器握手完毕,开始拉流 直播,已经连接 RTMP 拉流服务器 本地录制状态通知 本地录制结果 软编码器启动成功 硬编码器启动成功 直播,与 RTMP 服务器连接后,收到 NetStream.Publish.Start 消息,表明流发布成功(SDK 内部事件,不会对外抛出) 关闭摄像头完成(Windows 和 Mac 版 SDK 使用) 摄像头设备重新可用(Windows 和 Mac 版 SDK 使用) 摄像头设备已被移出(Windows 和 Mac 版 SDK 使用) 一帧截图完成 编码器启动成功 首帧画面采集完成 码率动态调整 上行动态调整分辨率 录屏启动成功 打开摄像头成功 直播,已经与 RTMP 服务器握手完毕,开始推流 直播,已经连接 RTMP 推流服务器 网络状况不佳:上行带宽太小,上传数据受阻 网络断连,已启动自动重连 直播,连接失败,该流地址无视频(SDK 内部错误码,不会对外抛出) 直播,connect 服务器调用失败(SDK 内部错误码,不会对外抛出) 直播,超过30s 没有数据发送,主动断开连接 直播,RTMP 读失败(SDK 内部错误码,不会对外抛出) 直播,RTMP 写失败(SDK 内部错误码,不会对外抛出) 直播,RTMP 读/写失败,将会断开连接 直播,服务器主动断开 直播,与 RTMP 服务器握手失败 直播,服务器连接失败 直播,DNS 解析失败 网络来包不稳:可能是下行带宽不足,或由于主播端出流不均匀 直播,网络断连, 已启动自动重连(自动重连连续失败超过三次会放弃) 直播,网络断连, 已启动自动重连(自动重连连续失败超过三次会放弃) 网络状况不佳:上行带宽太小,上传数据受阻 当前是观众角色,忽略上行音视频数据 网络断开连接 音频录制写入文件失败 视频采集已开始 视频渲染失败 软解码器启动失败 当前流硬解第一个 I 帧失败,SDK 自动切软解 硬解启动失败,采用软解码 当前视频播放出现卡顿(用户直观感受) 当前音频帧解码失败 当前视频帧解码失败 音频播放设备不可用(例如被占用) 音频采集设备不可用(例如被占用) 用户未授权当前应用使用麦克风 没有检测到可用的扬声器设备 没有检测到可用的麦克风设备 用户未授权当前应用使用摄像头 没有检测到可用的摄像头设备 摄像头采集分辨率被降低,以满足当前帧率和性能最优解。 软编码启动失败 摄像头采集帧率不足,部分自带美颜算法的 Android 手机上会出现 视频编码器从软编码自动切换到硬编码,一般是由于 CPU 使用率过高触发的 硬编码启动失败,采用软编码 通过域名进行0x1请求 混流参数校验失败 userDefineRecordId错误 自定义流id错误 请求通用配置超时 服务器内部错误,请重试 创建账号数量超过已购买预付费数量限制 票据因过期原因校验失败 票据校验失败,请检查各项参数是否正确 sdkAppId 填写错误 登录状态无效,请使用 usersig 重新鉴权 安全原因被限制 usersig 已经失效,请重新生成,再次尝试 帐号已被拉入黑名单,请联系 TLS 帐号支持 QQ 3268519604 sdkAppId 未找到,请确认是否已经在腾讯云上配置 内部第三方票据验证超时,请重试,如多次重试不成功,请@TLS 帐号支持,QQ 3268519604 内部第三方票据验证超时,请重试,如多次重试不成功,请@TLS 帐号支持,QQ 3268519604 sig 中 sdkAppId 与请求时的 sdkAppId 不匹配,请检查登录时填写的 sdkAppId 与 sig 中的是否一致 sig 中 identifier 与请求时的 identifier 不匹配,请检查登录时填写的 identifier 与 sig 中的是否一致 sig 校验失败,可用工具自行验证生成的 sig 是否正确 用业务公钥验证 sig 失败,请确认生成的 usersig 使用的私钥和 sdkAppId 是否对应 sig 校验失败,可用工具自行验证生成的 sig 是否正确 sig 校验失败,可用工具自行验证生成的 sig 是否正确 sig 校验失败,可用工具自行验证生成的 sig 是否正确 sig 校验失败,可用工具自行验证生成的 sig 是否正确 sig 校验失败,请确认下 sig 内容是否被截断,如缓冲区长度不够导致的内容截断 sig 校验失败,请确认下 sig 内容是否被截断,如缓冲区长度不够导致的内容截断 sig 过期,请尝试重新生成。如果是刚生成,就过期,请检查有效期填写的是否过小,或者填的 0 Protobuf 序列化错误 无法保存用户自定义 recordId 代理机超出限制 未定义角色 未定义命令字 JSON 串解析失败 房间满员 房间号超过限制 房间号非法 请求 I 帧参数错误 请求 I 帧房间用户太多 请求 I 帧目标用户不存在 请求 I 帧包格式错误 请求 I 帧未知 opType 参数错误 没有权限请求视频 用户被删除状态 当前用户没有上行辅路 没有空闲路由表 没有权限上视频 辅路抢视频位、申请辅路请求类型参数错误 没有权限进入房间 没有权限创建房间 locationid 错误 频繁切换终端 查找用户失败 房间添加用户失败 房间不存在 签名过期 签名错误 创建房间失败 无效的房间 Id 后台错误 token里面的tinyid和进房信令tinyid不同 或是 进房信令没有token 后台用户位置标识 locationid 错误 后台房间标识 roomid 错误 房间不存在 签名超时 签名错误 token 超时 userSig 校验失败,请检查 TRTCParams.userSig 是否填写正确 生成公钥失败 无效请求, 分配接口机失败 非法SDKAppid 房间号非法 房间号转换出错 场景或角色错误 房间号错误 数据库查询失败(房间相关存储信息) HTTPS 请求时,生成 token 错误 HTTPS 请求时,生成加密 key 错误 权限位校验失败 无效的命令字 HTTPS token 超时 生成签名错误 分配接口机错误 TOKEN 错误 请求解包错误 请求发送Json 信令超时 请求接口机 IP 返回的列表为空的 请求 AES TOKEN 时,server 返回的内容是空的 请求 token 无效参数 请求接收视频项超时 请求关闭视频超时 请求状态上报超时 请求修改视频能力项超时 请求视频数据超时 请求视频位超时 请求 IP 和 sig 超时,请检查网络是否正常,或网络防火墙是否放行 UDP 访问下列 IP 和域名 query.tencent-cloud.com:8000 162.14.23.140:8000 162.14.7.49:8000 请求 token HTTPS 超时,请检查网络是否正常,或网络防火墙是否放行 HTTPS 访问 official.opensso.tencent-cloud.com:443 请求视频位失败 连接接口机服务器失败 拉取接口机服务器地址失败 心跳失败,客户端定时向服务器发送数据包,告诉服务器自己活着,这个错误通常是发包超时 直播,RTMPACC 低延时拉流失败,且经过多次重试无法恢复 直播,服务器拒绝连接请求 直播,切流失败(切流可以播放不同画面大小的视频) 点播,获取点播文件信息失败 点播,音视频流解密失败 H265 解码失败 播放的文件不存在 直播,获取加速拉流的地址失败 直播,网络断连,且经多次重连抢救无效,可以放弃治疗,更多重试请自行重启播放 直播,服务器拒绝连接请求,可能是该推流地址已经被占用,或者 TXSecret 校验失败,或者是过期了,或者是欠费了 直播,网络不可用,请确认 Wi-Fi、移动数据或者有线网络是否正常 直播,连接推流服务器失败(若支持智能选路,IP 全部失败) 直播,推流地址非法,例如不是 RTMP 协议的地址 直播,推流出现网络断开,且经过多次重试无法恢复 连麦请求序号错乱 被连麦用户达到资源上限 被连麦用户已被删除 被连麦用户不存在 被连麦房间达到连麦上限 被连麦房间不存在 取消跨房间连麦失败 跨房间连麦失败 本用户未发起连麦 本房间无连麦 跨房间连麦签名不匹配 跨房间连麦签名时间戳错误 跨房间连麦签名解析错误 未找到跨房间连麦签名解密密钥 跨房间连麦签名解密失败 跨房间连麦无签名 跨房间连麦请求格式错误 跨房间连麦请求超时 跨房间连麦重试次数耗尽 达到跨房间连麦上限 不支持跨房间连麦 当前是观众角色,不能请求或断开跨房连麦,需要先 switchRole() 到主播 无效参数 请求退出连麦超时 请求连麦超时 停止向腾讯云的直播 CDN 推流信令异常 停止向腾讯云的直播 CDN 推流信令超时 开始向腾讯云的直播 CDN 推流信令异常 开始向腾讯云的直播 CDN 推流信令超时 云端混流回包异常 旁路转推回包异常 云端混流请求超时 旁路转推请求超时 设置的 buffer type 不支持 设置的 pixel format 不支持 不支持的音频采样率 音频帧编码失败,例如传入自定义音频数据,SDK 无法处理 不支持的视频分辨率 视频帧编码失败,例如 iOS 设备切换到其他应用时,硬编码器可能被系统释放,再切换回来时,硬编码器重启前,可能会抛出 录屏被系统中止 其他用户正在上行辅路 没有权限上行辅路 录屏失败,在 Android 平台,需要5.0以上的系统,在 iOS 平台,需要11.0以上的系统 开始录屏失败,如果在移动设备出现,可能是权限被用户拒绝了,如果在 Windows 或 Mac 系统的设备出现,请检查录屏接口的参数是否符合要求 停止扬声器失败 扬声器设置参数失败 打开扬声器失败,例如在 Windows 或 Mac 设备,扬声器的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序 停止麦克风失败 麦克风正在被占用中,例如移动设备正在通话时,打开麦克风会失败 麦克风设置参数失败 麦克风设备未授权,通常在移动设备出现,可能是权限被用户拒绝了 打开麦克风失败,例如在 Windows 或 Mac 设备,麦克风的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序 摄像头正在被占用中,可尝试打开其他摄像头 摄像头参数设置出错(参数不支持或其它) 摄像头设备未授权,通常在移动设备出现,可能是权限被用户拒绝了 打开摄像头失败,例如在 Windows 或 Mac 设备,摄像头的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序 请求退房超时 服务不可用。请检查:套餐包剩余分钟数是否大于0,腾讯云账号是否欠费 请求进房超时,请检查网络 进房参数 userSig 不正确 进房参数 userID 不正确 进房参数 roomId 错误 进房参数 sdkAppId 错误 进房参数为空,请检查 enterRoom:appScene: 接口调用是否传入有效的 param 进入房间失败 无错误 Copyright (c) 2021 Tencent. All rights reserved. Module: TRTC 音视频设备管理模块 Function: 用于管理摄像头、麦克风和扬声器等音视频相关的硬件设备 end TRTCAudioFrameCallbackImpl end ITRTCVideoFrameCallbackImpl TRTCAudioFrameCallbackImpl end TRTCVideoRenderCallbackImpl ITRTCVideoFrameCallbackImpl end TRTCLogCallbackImpl TRTCVideoRenderCallbackImpl TRTCLogCallbackImpl end TRTCAudioFrameCallbackImpl end ITRTCVideoFrameCallbackImpl TRTCAudioFrameCallbackImpl end TRTCVideoRenderCallbackImpl ITRTCVideoFrameCallbackImpl end TRTCLogCallbackImpl TRTCVideoRenderCallbackImpl TRTCLogCallbackImpl 开启/关闭对音频采集数据的监听回调(可读写) 需要在 {@link V2TXLivePusher#startPush} 之前调用,才会生效。 是否开启。 【默认值】:false 设置回调出的 AudioFrame 的格式 设置 SDK sock5 代理配置 代理服务器的地址 代理服务器的端口 代理服务器的验证的用户名 代理服务器的验证的密码 设置 SDK 接入环境 目前支持 “default” 和 “GDPR” 两个参数 设置 Log 的配置信息 设置 V2TXLivePremier 回调接口 获取 SDK 版本号 销毁 V2TXLivePremier 实例 创建 V2TXLivePremier 实例 V2TXLivePremier 对象 本地麦克风采集到的音频数据回调 - 请不要在此回调函数中做任何耗时操作,建议直接拷贝到另一线程进行处理,否则会导致各种声音问题 - 此接口回调出的音频数据支持修改 - 此接口回调出的音频时间帧长固定为0.02s 由时间帧长转化为字节帧长的公式为【采样率 × 时间帧长 × 声道数 × 采样点位宽】。 以SDK默认的音频录制格式48000采样率、单声道、16采样点位宽为例,字节帧长为【48000 × 0.02s × 1 × 16bit - 此接口回调出的音频数据**不包含**背景音、音效、混响等前处理效果,延迟极低。 - 需要您调用 [enableAudioCaptureObserver](@ref V2TXLivePremier#enableAudioCaptureObserver) 开启回调开关 音频数据 自定义 Log 输出回调接口 日志级别 日志 本地麦克风采集到的音频数据回调 @param frame 音频数据 @note - 请不要在此回调函数中做任何耗时操作,建议直接拷贝到另一线程进行处理,否则会导致各种声音问题 - 此接口回调出的音频数据支持修改 - 此接口回调出的音频时间帧长固定为0.02s 由时间帧长转化为字节帧长的公式为【采样率 × 时间帧长 × 声道数 × 采样点位宽】。 以SDK默认的音频录制格式48000采样率、单声道、16采样点位宽为例,字节帧长为【48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】 - 此接口回调出的音频数据**不包含**背景音、音效、混响等前处理效果,延迟极低。 - 需要您调用 [enableAudioCaptureObserver](@ref V2TXLivePremier#enableAudioCaptureObserver) 开启回调开关 自定义 Log 输出回调接口 开启/关闭对音频采集数据的监听回调(可读写) @param enable 是否开启。 【默认值】:false @param format 设置回调出的 AudioFrame 的格式 @note 需要在 {@link V2TXLivePusher#startPush} 之前调用,才会生效。 设置 SDK sock5 代理配置 @param host sock5 代理服务器的地址 @param port sock5 代理服务器的端口 @param username sock5 代理服务器的验证的用户名 @param password sock5 代理服务器的验证的密码 设置 SDK 接入环境 @note 如您的应用无特殊需求,请不要调用此接口进行设置。 @param env 目前支持 “default” 和 “GDPR” 两个参数 - default:默认环境,SDK 会在全球寻找最佳接入点进行接入。 - GDPR:所有音视频数据和质量统计数据都不会经过中国大陆地区的服务器。 设置 Log 的配置信息 设置 V2TXLivePremier 回调接口 获取 SDK 版本号 销毁 V2TXLivePremier 实例(单例模式) 创建 V2TXLivePremier 实例(单例模式) @note 如果您使用 delete V2TXLivePremier* 会导致编译错误,请使用 destroyV2TXLivePremier 释放对象指针。 利用 C 函数获取 V2TXLivePremier 实例 你可以按照下列方式创建和销毁 V2TXLivePremier Instance
 V2TXLivePremier *pV2TXLivePremier = getV2TXLivePremierShareInstance();
 if(pV2TXLivePremier) {
     std::string version(pV2TXLivePremier->getSDKVersionStr());
 }
 destroyV2TXLivePremierShareInstance();
 pV2TXLivePremier = nullptr;
 
显示仪表盘 是否显示。【默认值】:false 设置屏幕分享参数,该方法在屏幕分享过程中也可以调用 如果您期望在屏幕分享的过程中,切换想要分享的窗口,可以再次调用这个函数而不需要重新开启屏幕分享。 支持如下四种情况: - 共享整个屏幕:sourceInfoList 中 type 为 Screen 的 source,captureRect 设为 { 0, 0, 0, 0 } - 共享指定区域:sourceInfoList 中 type 为 Screen 的 source,captureRect 设为非 nullptr,例如 { 100, 100, 300, 300 } - 共享整个窗口:sourceInfoList 中 type 为 Window 的 source,captureRect 设为 { 0, 0, 0, 0 } - 共享窗口区域:sourceInfoList 中 type 为 Window 的 source,captureRect 设为非 nullptr,例如 { 100, 100, 300, 300 } 指定分享源 指定捕获的区域 指定屏幕分享目标的属性,包括捕获鼠标,高亮捕获窗口等,详情参考 V2TXLiveScreenCaptureProperty 定义 返回值 {@link V2TXLiveCode} 枚举可分享的屏幕窗口 指定要获取的窗口缩略图大小,缩略图可用于绘制在窗口选择界面上 指定要获取的窗口图标大小 窗口列表包括屏幕 关闭系统声音采集 此接口目前仅适用于 Windows 、 Mac 平台 返回值 {@link V2TXLiveCode} 打开系统声音采集 开启后可以采集整个操作系统的播放声音(path 为空)或某一个播放器(path 不为空)的声音, 并将其混入到当前麦克风采集的声音中一起发送到云端。 - path 为空,代表采集整个操作系统的声音。(Windows 平台) - path 填写 exe 程序(如 QQ音乐)所在的路径,将会启动此程序并只采集此程序的声音。(Windows 平台,采集程序声音仅支持32位 SDK) - path 默认为空,其他值未定义。( Mac 平台) 返回值 {@link V2TXLiveCode} 停止屏幕采集 返回值 {@link V2TXLiveCode} 启动屏幕分享 startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个能上行,三者为覆盖关系。例如先调用 startCamera,后调用 startVirtualCamera。此时表现为暂停摄像头推流,开启图片推流 返回值 {@link V2TXLiveCode} 发送 SEI 消息 播放端 {@link V2TXLivePlayer} 通过 {@link V2TXLivePlayerObserver} 中的 `onReceiveSeiMessage` 回调来接收该消息。 数据类型,支持 5、242。推荐填:242 待发送的数据 数据大小 返回值 {@link V2TXLiveCode} 在自定义音频采集模式下,将采集的音频数据发送到SDK 在自定义音频采集模式下,将采集的音频数据发送到SDK,SDK不再采集麦克风数据,仅保留编码和发送功能。 向 SDK 发送的 音频帧数据 {@link V2TXLiveAudioFrame} 返回值 {@link V2TXLiveCode} 在自定义视频采集模式下,将采集的视频数据发送到SDK。 在自定义视频采集模式下,SDK不再采集摄像头数据,仅保留编码和发送功能。 向 SDK 发送的 视频帧数据 {@link V2TXLiveVideoFrame} 返回值 {@link V2TXLiveCode} 开启/关闭自定义音频采集 在自定义音频采集模式下,SDK 不再从麦克风采集声音,只保留编码和发送能力。 开启/关闭自定义音频采集。 需要在 [startPush]({@link V2TXLivePusher#startPush(String)}) 前调用才会生效。 开启自定义采集; false: 关闭自定义采集。【默认值】: false 返回值 {@link V2TXLiveCode} 设置本地视频自定义渲染回调 通过该方法,可以获取解码后的每一帧视频画面,进行自定义渲染处理,添加自定义显示效果。 是否开启自定义渲染。【默认值】:false 自定义渲染回调的视频像素格式 {@link V2TXLivePixelFormat}。 自定义渲染回调的视频数据格式 {@link V2TXLiveBufferType}。 返回值 {@link V2TXLiveCode} 开启/关闭视频自定义预处理 是否开启自定义视频预处理。【默认值】:false 自定义视频预处理回调的视频像素格式 {@link V2TXLivePixelFormat} 自定义视频预处理的视频数据格式 {@link V2TXLiveBufferType} 返回值 {@link V2TXLiveCode} 开启/关闭自定义视频采集。 在自定义视频采集模式下,SDK 不再从摄像头采集图像,只保留编码和发送能力。 需要在 [startPush](@ref V2TXLivePusher#startPush:) 之前调用,才会生效。 true:开启自定义采集;false:关闭自定义采集。【默认值】:false 返回值 {@link V2TXLiveCode} 启用采集音量大小提示 开启后可以在 {@link V2TXLivePusherObserver#onMicrophoneVolumeUpdate(int)} 回调中获取到 SDK 对音量大小值的评估。 intervalMs 决定了 onMicrophoneVolumeUpdate 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;【默认值】:0,不开启 返回值 {@link V2TXLiveCode} 设置推流器水印。默认情况下,水印不开启。 水印的位置是通过 x, y, scale 来指定的。 - x:水印的坐标,取值范围为0 - 1的浮点数。 - y:水印的坐标,取值范围为0 - 1的浮点数。 - scale:水印的大小比例,取值范围为0 - 1的浮点数。 水印图片文件路径,为 nullptr 则等同于关闭水印 水印显示的左上角 x 轴偏移 水印显示的左上角 y 轴偏移 水印显示的宽度占画面宽度比例(水印按该参数等比例缩放显示) 返回值 {@link V2TXLiveCode} 截取推流过程中的本地画面。 返回值 {@link V2TXLiveCode} 获取设备管理对象 {@link TXDeviceManager}。 通过设备管理,您可以使用以下功能: - 切换前后摄像头。 - 设置自动聚焦。 - 设置摄像头缩放倍数。 - 打开或关闭闪光灯。 - 切换耳机或者扬声器。 - 修改音量类型(媒体音量或者通话音量)。 获取音效管理对象 {@link TXAudioEffectManager} 通过音效管理,您可以使用以下功能: - 调整麦克风收集的人声音量。 - 设置混响和变声效果。 - 开启耳返,设置耳返音量。 - 添加背景音乐,调整背景音乐的播放效果。 返回值 {@link TXAudioEffectManager} 设置推流视频编码参数 视频编码参数 {@link V2TXLiveVideoEncoderParam} 返回值 {@link V2TXLiveCode} 设置推流音频质量 音频质量 {@link V2TXLiveAudioQuality} 返回值 {@link V2TXLiveCode} 当前推流器是否正在推流中 是否正在推流(1: 正在推流中,0: 已经停止推流) 停止推送音视频数据 返回值 {@link V2TXLiveCode} 开始音视频数据推流 推流的目标地址,支持任意推流服务端 返回值 {@link V2TXLiveCode} 恢复推流器的视频流 返回值 {@link V2TXLiveCode} 暂停推流器的视频流 返回值 {@link V2TXLiveCode} 恢复推流器的音频流 返回值 {@link V2TXLiveCode} 暂停推流器的音频流 返回值 {@link V2TXLiveCode} 关闭图片推流 返回值 {@link V2TXLiveCode} 开启图片推流 图片 返回值 {@link V2TXLiveCode} startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个能上行,三者为覆盖关系。例如先调用 startCamera,后调用 startVirtualCamera。此时表现为暂停摄像头推流,开启图片推流 关闭麦克风 返回值 {@link V2TXLiveCode} 打开麦克风 返回值 {@link V2TXLiveCode} 关闭本地摄像头 返回值 {@link V2TXLiveCode} 打开本地摄像头 摄像头标识 返回值 {@link V2TXLiveCode} startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个能上行,三者为覆盖关系。例如先调用 startCamera,后调用 startVirtualCamera。此时表现为暂停摄像头推流,开启图片推流 设置本地摄像头预览画面的旋转角度 rotation 预览画面的旋转角度 {@link V2TXLiveRotation} 返回值 {@link V2TXLiveCode} 设置视频编码镜像 是否镜像 编码镜像只影响观众端看到的视频效果。 设置本地摄像头预览镜像 摄像头镜像类型 {@link V2TXLiveMirrorType} 返回值 {@link V2TXLiveCode} 设置本地摄像头预览 View。 view 本地摄像头预览 View 返回值 {@link V2TXLiveCode} 设置推流器回调 推流器的回调目标对象,更多信息请查看 {@link V2TXLivePusherObserver} 释放 V2TXLivePlayer 单例对象。 用于动态加载 dll 时,获取 V2TXLivePlayer 对象指针 返回 V2TXLivePlayer 对象的指针,注意:请调用 releaseV2TXLivePlayer 析构 note 本接口适用于Windows、Mac、iOS平台 @defgroup V2TXLivePusher_csharp V2TXLivePusher 腾讯云直播推流器 @{ Module: V2TXLivePusher @ TXLiteAVSDK 主要负责将本地的音频和视频画面进行编码,并推送到指定的推流地址,支持任意的推流服务端。 推流器包含如下能力: - 自定义的视频采集,让您可以根据项目需要定制自己的音视频数据源; - Qos 流量控制技术,具备上行网络自适应能力,可以根据主播端网络的具体情况实时调节音视频数据量; - 脸形调整、动效挂件,支持基于优图 AI 人脸识别技术的大眼、瘦脸、隆鼻等脸形微调以及动效挂件效果,只需要购买 **优图 License** 就可以轻松实现丰富的直播效果。 当屏幕分享停止时,SDK 会通过此回调通知 停止原因 - 0:表示用户主动停止; - 1:表示屏幕分享窗口被关闭; - 2:表示屏幕分享的显示屏状态变更(如接口被拔出、投影模式变更等) 当屏幕分享开始时,SDK 会通过此回调通知 自定义视频预处理数据回调 处理前的视频帧 处理后的视频帧 - 0:成功,其他: 错误 自定义视频渲染回调 videoFrame 视频帧数据 {@link V2TXLiveVideoFrame} 截图回调 已截取的视频画面 截图数据长度,对于BGRA32而言,length = width * height * 4 截图画面的宽度 截图画面的高度 截图数据格式,目前只支持 V2TXLivePixelFormatBGRA32 直播推流器统计数据回调 推流器统计数据 {@link V2TXLivePusherStatistics} 麦克风采集音量值回调 音量大小 首帧视频采集完成的回调通知 首帧音频采集完成的回调通知 直播推流器警告通知 警告码 {@link V2TXLiveCode} 警告信息 扩展信息 直播推流器错误通知,推流器出现错误时,会回调该通知 错误码 {@link V2TXLiveCode} 错误信息 扩展信息 @defgroup ITRTCCloudCallback_csharp ITRTCCloudCallback 腾讯云直播推流的回调通知 @{ V2TXLivePusher 的一些回调事件,包括推流器状态,推流音量,统计信息,警告以及错误信息。 调用 V2TXLivePusher 的高级 API 接口。 @param key 高级 API 对应的 key, 详情请参考 {@link V2TXLiveProperty} 定义。 @param value 调用 key 所对应的高级 API 时,需要的参数。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_INVALID_PARAMETER: 操作失败,key 不允许为空 @note 该接口用于调用一些高级功能。 显示仪表盘。 @param isShow 是否显示。【默认值】:false 设置屏幕分享参数,该方法在屏幕分享过程中也可以调用 如果您期望在屏幕分享的过程中,切换想要分享的窗口,可以再次调用这个函数而不需要重新开启屏幕分享。 支持如下四种情况: - 共享整个屏幕:sourceInfoList 中 type 为 Screen 的 source,captureRect 设为 { 0, 0, 0, 0 } - 共享指定区域:sourceInfoList 中 type 为 Screen 的 source,captureRect 设为非 nullptr,例如 { 100, 100, 300, 300 } - 共享整个窗口:sourceInfoList 中 type 为 Window 的 source,captureRect 设为 { 0, 0, 0, 0 } - 共享窗口区域:sourceInfoList 中 type 为 Window 的 source,captureRect 设为非 nullptr,例如 { 100, 100, 300, 300 } @param source 指定分享源 @param captureRect 指定捕获的区域 @param property 指定屏幕分享目标的属性,包括捕获鼠标,高亮捕获窗口等,详情参考 V2TXLiveScreenCaptureProperty 定义 @note 设置高亮边框颜色、宽度参数在 Mac 平台不生效 枚举可分享的屏幕窗口 如果您要给您的 App 增加屏幕分享功能,一般需要先显示一个窗口选择界面,这样用户可以选择希望分享的窗口。 通过如下函数,您可以获得可分享窗口的 ID、类型、窗口名称以及缩略图。 拿到这些信息后,您就可以实现一个窗口选择界面,当然,您也可以使用我们在 Demo 源码中已经实现好的一个界面。 @param thumbSize 指定要获取的窗口缩略图大小,缩略图可用于绘制在窗口选择界面上 @param iconSize 指定要获取的窗口图标大小 @return 窗口列表包括屏幕 @note - 返回的列表中包括屏幕和应用窗口,屏幕会在列表的前面几个元素中。 - delete IV2TXLiveScreenCaptureSourceList* 指针会导致编译错误,SDK 维护 IV2TXLiveScreenCaptureSourceList 对象的生命周期。 - 获取完屏幕窗口列表后请手动调用 IV2TXLiveScreenCaptureSourceList 的 release 方法释放资源,否则可能会引起内存泄漏。 - Windows 平台 v8.3 版本后获取窗口列表默认携带最小化窗口,且最小化窗口的缩略图数据默认填充窗口图标数据。 关闭系统声音采集 @note 此接口目前仅适用于 Windows 、 Mac 平台 打开系统声音采集 开启后可以采集整个操作系统的播放声音(path 为空)或某一个播放器(path 不为空)的声音, 并将其混入到当前麦克风采集的声音中一起发送到云端。 @param path - path 为空,代表采集整个操作系统的声音。( Windows 平台) - path 填写 exe 程序(如 QQ音乐)所在的路径,将会启动此程序并只采集此程序的声音。( Windows 平台,采集程序声音仅支持32位 SDK ) - path 默认为空,其他值未定义。( Mac 平台) @note 此接口目前仅适用于 Windows 、 Mac 平台 停止屏幕采集 启动屏幕分享 @note startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个能上行,三者为覆盖关系。例如先调用 startCamera,后调用 startVirtualCamera。此时表现为暂停摄像头推流,开启图片推流 发送 SEI 消息 播放端 {@link V2TXLivePlayer} 通过 {@link V2TXLivePlayerObserver} 中的 `onReceiveSeiMessage` 回调来接收该消息。 @param payloadType 数据类型,支持 5、242。推荐填:242 @param data 待发送的数据 @param dataSize 数据大小 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 在自定义音频采集模式下,将采集的音频数据发送到SDK @info 在自定义音频采集模式下,将采集的音频数据发送到SDK,SDK不再采集麦克风数据,仅保留编码和发送功能。 @param audioFrame 向 SDK 发送的 音频帧数据 {@link V2TXLiveAudioFrame} @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_REFUSED: 发送失败,您必须先调用 enableCustomAudioCapture 开启自定义音频采集 @note 需要在 [startPush]({@link V2TXLivePusher#startPush(String)}) 之前调用 {@link enableCustomAudioCapture} 开启自定义采集。 在自定义视频采集模式下,将采集的视频数据发送到SDK。 在自定义视频采集模式下,SDK不再采集摄像头数据,仅保留编码和发送功能。 @param videoFrame 向 SDK 发送的 视频帧数据 {@link V2TXLiveVideoFrame} @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_INVALID_PARAMETER: 发送失败,视频帧数据不合法 - V2TXLIVE_ERROR_REFUSED: 发送失败,您必须先调用 enableCustomVideoCapture 开启自定义视频采集。 @note 需要在 {@link V2TXLivePusher#startPush(String)} 之前调用 {@link V2TXLivePusher#enableCustomVideoCapture(boolean)} 开启自定义采集。 开启/关闭自定义音频采集 @brief 开启/关闭自定义音频采集。
在自定义音频采集模式下,SDK 不再从麦克风采集声音,只保留编码和发送能力。 @param enable true: 开启自定义采集; false: 关闭自定义采集。【默认值】: false @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 @note 需要在 [startPush]({@link V2TXLivePusher#startPush(String)}) 前调用才会生效。
设置本地视频自定义渲染回调。 通过该方法,可以获取解码后的每一帧视频画面,进行自定义渲染处理,添加自定义显示效果。 @param enable 是否开启自定义渲染。【默认值】:false @param pixelFormat 自定义渲染回调的视频像素格式 {@link V2TXLivePixelFormat}。 @param bufferType 自定义渲染回调的视频数据格式 {@link V2TXLiveBufferType}。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 开启/关闭自定义视频采集。 在自定义视频采集模式下,SDK 不再从摄像头采集图像,只保留编码和发送能力。 @param enable true:开启自定义采集;false:关闭自定义采集。【默认值】:false @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 @note 需要在 [startPush](@ref V2TXLivePusher#startPush:) 之前调用,才会生效。 开启/关闭视频自定义预处理 @param enable 是否开启自定义视频预处理。【默认值】:false @param pixelFormat 自定义视频预处理回调的视频像素格式 {@link V2TXLivePixelFormat} @param bufferType 自定义视频预处理的视频数据格式 {@link V2TXLiveBufferType} 启用采集音量大小提示。 开启后可以在 {@link V2TXLivePusherObserver#onMicrophoneVolumeUpdate(int)} 回调中获取到 SDK 对音量大小值的评估。 @param intervalMs 决定了 onMicrophoneVolumeUpdate 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;【默认值】:0,不开启 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 设置推流器水印。默认情况下,水印不开启。 水印的位置是通过 x, y, scale 来指定的。 - x:水印的坐标,取值范围为0 - 1的浮点数。 - y:水印的坐标,取值范围为0 - 1的浮点数。 - scale:水印的大小比例,取值范围为0 - 1的浮点数。 @param watermarkPath 水印图片文件路径,为 nullptr 则等同于关闭水印 @param x 水印显示的左上角 x 轴偏移 @param y 水印显示的左上角 y 轴偏移 @param scale 水印显示的宽度占画面宽度比例(水印按该参数等比例缩放显示) @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 @note watermarkPath 1、在 iOS/Mac 坏境下,如果图片存放在 .xcassets 中,请直接传入文件名: self.pusher->setWatermark(“imageName”, 0.1, 0.1, 0.2); 2、在 Android 坏境,如果图片存放在 assets 目录下,请直接传入文件名或者路径名: self.pusher->setWatermark(“imageName.png”, 0.1, 0.1, 0.2); 其它没有列举到的情况,按照各平台的方式获取文件路径并传入即可。 截取推流过程中的本地画面。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_REFUSED: 已经停止推流,不允许调用截图操作 设置美颜、美白、红润等特效 SDK 内部集成了两套风格不同的磨皮算法: -“光滑”:算法比较激进,磨皮效果比较明显,适用于秀场直播。 -“自然”:算法更多地保留了面部细节,磨皮效果更加自然,适用于绝大多数直播场景。 @param style 磨皮算法,有“光滑”和“自然”两种算法。 @param beautyLevel 美颜级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。 @param whitenessLevel 美白级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。 @param ruddinessLevel 红润级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。 获取设备管理对象 {@link TXDeviceManager}。 通过设备管理,您可以使用以下功能: - 切换前后摄像头。 - 设置自动聚焦。 - 设置摄像头缩放倍数。 - 打开或关闭闪光灯。 - 切换耳机或者扬声器。 - 修改音量类型(媒体音量或者通话音量)。 获取音效管理对象 {@link TXAudioEffectManager}。 通过音效管理,您可以使用以下功能: - 调整麦克风收集的人声音量。 - 设置混响和变声效果。 - 开启耳返,设置耳返音量。 - 添加背景音乐,调整背景音乐的播放效果。 设置推流视频编码参数 @param param 视频编码参数 {@link V2TXLiveVideoEncoderParam} @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 设置推流音频质量。 @param quality 音频质量 {@link V2TXLiveAudioQuality} - V2TXLiveAudioQualityDefault 【默认值】: 通用 - V2TXLiveAudioQualitySpeech: 语音 - V2TXLiveAudioQualityMusic: 音乐 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_REFUSED: 推流过程中,不允许调整音质 当前推流器是否正在推流中。 @return 是否正在推流 - 1: 正在推流中 - 0: 已经停止推流 停止推送音视频数据。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 开始音视频数据推流。 @param url 推流的目标地址,支持任意推流服务端 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 操作成功,开始连接推流目标地址 - V2TXLIVE_ERROR_INVALID_PARAMETER: 操作失败,url 不合法 - V2TXLIVE_ERROR_INVALID_LICENSE: 操作失败,license 不合法,鉴权失败 - V2TXLIVE_ERROR_REFUSED: 操作失败,RTC 不支持同一设备上同时推拉同一个 StreamId 恢复推流器的视频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 暂停推流器的视频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 恢复推流器的音频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 暂停推流器的音频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 关闭图片推流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 开启图片推流。 @param image 图片 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 @note startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个能上行,三者为覆盖关系。例如先调用 startCamera,后调用 startVirtualCamera。此时表现为暂停摄像头推流,开启图片推流 关闭麦克风。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 打开麦克风。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 关闭本地摄像头。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 打开本地摄像头。 @param cameraId 摄像头标识 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 @note startVirtualCamera,startCamera,startScreenCapture,同一 Pusher 实例下,仅有一个能上行,三者为覆盖关系。例如先调用 startCamera,后调用 startVirtualCamera。此时表现为暂停摄像头推流,开启图片推流 设置本地摄像头预览画面的旋转角度。 @param rotation 预览画面的旋转角度 {@link V2TXLiveRotation} - V2TXLiveRotation0【默认值】: 0度, 不旋转 - V2TXLiveRotation90: 顺时针旋转90度 - V2TXLiveRotation180: 顺时针旋转180度 - V2TXLiveRotation270: 顺时针旋转270度 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 @note 只旋转本地预览画面,不影响推流出去的画面。 设置视频编码镜像。 @param mirror 是否镜像 - false【默认值】: 播放端看到的是非镜像画面 - true: 播放端看到的是镜像画面 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 @note 编码镜像只影响观众端看到的视频效果。 设置本地摄像头预览镜像。 本地摄像头分为前置摄像头和后置摄像头,系统默认情况下,是前置摄像头镜像,后置摄像头不镜像,这里可以修改前置后置摄像头的默认镜像类型。 @param mirrorType 摄像头镜像类型 {@link V2TXLiveMirrorType} - V2TXLiveMirrorTypeAuto 【默认值】: 默认镜像类型. 在这种情况下,前置摄像头的画面是镜像的,后置摄像头的画面不是镜像的 - V2TXLiveMirrorTypeEnable: 前置摄像头 和 后置摄像头,都切换为镜像模式 - V2TXLiveMirrorTypeDisable: 前置摄像头 和 后置摄像头,都切换为非镜像模式 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 设置本地摄像头预览 View。 本地摄像头采集到的画面,经过美颜、脸形调整、滤镜等多种效果叠加之后,最终会显示到传入的 View 上。 @param view 本地摄像头预览 View @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK:成功 设置推流器回调。 通过设置回调,可以监听 V2TXLivePusher 推流器的一些回调事件, 包括推流器状态、音量回调、统计数据、警告和错误信息等。 @param observer 推流器的回调目标对象,更多信息请查看 {@link V2TXLivePusherObserver} 析构 V2TXLivePusher 对象 @param pusher V2TXLivePusher 对象的指针 @name 创建与销毁 V2TXLivePusher 实例 @{ 用于动态加载 dll 时,获取 V2TXLivePusher 对象指针。 @return 返回 V2TXLivePusher 对象的指针,注意:需要调用 releaseV2TXLivePusher析构。 @param mode 推流协议,RTMP还是ROOM @note 本接口适用于Windows、Mac、iOS平台 @} @} 当屏幕分享停止时,SDK 会通过此回调通知 @param reason 停止原因 - 0:表示用户主动停止; - 1:iOS 表示录屏被系统中断;Mac、Windows 表示屏幕分享窗口被关闭; - 2:Windows 表示屏幕分享的显示屏状态变更(如接口被拔出、投影模式变更等);其他平台不抛出; 当屏幕分享开始时,SDK 会通过此回调通知 自定义视频预处理数据回调 @note 调用 {@link enableCustomVideoProcessing} 接口开启/关闭自定义视频处理回调 Windows 暂时只支持 YUV420 格式。 @param srcFrame 处理前的视频帧 @param dstFrame 处理后的视频帧 @return - 0: 成功 - 其他: 错误 自定义视频渲染回调 @note 调用 {@link enableCustomVideoRender} 开启本地视频自定义渲染之后,会收到这个回调通知 @param videoFrame 视频帧数据 {@link V2TXLiveVideoFrame} 截图回调 @note 调用 {@link snapshot} 截图之后,会收到这个回调通知 @param image 已截取的视频画面 @param length 截图数据长度,对于BGRA32而言,length = width * height * 4 @param width 截图画面的宽度 @param height 截图画面的高度 @param format 截图数据格式,目前只支持 V2TXLivePixelFormatBGRA32 直播推流器统计数据回调 @param statistics 推流器统计数据 {@link V2TXLivePusherStatistics} 推流器连接状态回调通知 @param status 推流器连接状态 {@link V2TXLivePushStatus} @param msg 连接状态信息 @param extraInfo 扩展信息 麦克风采集音量值回调 @param volume 音量大小 @note 调用 {@link enableVolumeEvaluation} 开启采集音量大小提示之后,会收到这个回调通知。 首帧视频采集完成的回调通知 首帧音频采集完成的回调通知 直播推流器警告通知 @param code 警告码 {@link V2TXLiveCode} @param msg 警告信息 @param extraInfo 扩展信息 直播推流器错误通知,推流器出现错误时,会回调该通知 @param code 错误码 {@link V2TXLiveCode} @param msg 错误信息 @param extraInfo 扩展信息 预期的下行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)。 预期的上行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)。 用户签名,请参考 {@link TRTCParams} 中的相关说明。 用户标识,请参考 {@link TRTCParams} 中的相关说明。 应用标识,请参考 {@link TRTCParams} 中的相关说明。 6.18 测速参数 您可以在用户进入房间前通过 startSpeedTest 接口测试网速(注意:请不要在通话中调用)。 视频画面镜像模式,默认值为 TRTCVideoMirrorType_Disable 视频画面填充模式,默认值为 TRTCVideoFillMode_Fit 视频画面旋转方向,默认值为 TRTCVideoRotation0 6.17 画面渲染参数 您可以通过设置此参数来控制画面的旋转、填充、镜像模式 【字段含义】房间签名 [选填],当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。 【推荐取值】仅建议有高级别安全需求的客户使用,更多详情请参见 [进房权限保护](https://cloud.tencent.com/document/product/647/32240)。 【字段含义】用户签名 [选填],当前 userId 对应的验证签名,相当于登录密码。不填时,SDK 会继续使用旧的 userSig, 但用户必须保证旧的 userSig 仍在有效期内,否则会造成进房失败等后果。 【推荐取值】具体计算方法请参见 [如何计算UserSig](https://cloud.tencent.com/document/product/647/17275)。 【字段含义】字符串房间号码 [选填],在同一个房间内的用户可以看到彼此并进行视频通话。 【特别说明】roomId 和 strRoomId 必须并且只能填一个。若两者都填,则优先选择 roomId。 【字段含义】数字房间号码 [选填],在同一个房间内的用户可以看到彼此并进行视频通话。 【推荐取值】取值范围:1 - 4294967294。 【特别说明】roomId 和 strRoomId 必须并且只能填一个。若两者都填,则优先选择 roomId。 6.16 切换房间参数 【字段含义】音效音量 【推荐取值】取值范围为0 - 100;默认值:100 【字段含义】音效是否上行 【推荐取值】YES:音效在本地播放的同时,会上行至云端,因此远端用户也能听到该音效;NO:音效不会上行 【字段含义】循环播放次数 【推荐取值】取值范围为0 - 任意正整数,默认值:0。0表示播放音效一次;1表示播放音效两次;以此类推 【字段含义】音效路径 【字段含义】音效 ID 【特别说明】SDK 允许播放多路音效,因此需要音效 ID 进行标记,用于控制音效的开始、停止、音量等 6.15 音效播放(已废弃) 【字段含义】音频录制内容类型。 【特别说明】默认录制所有本地和远端音频 【字段含义】文件路径(必填),录音文件的保存路径。该路径需要用户自行指定,请确保路径存在且可写。 【特别说明】该路径需精确到文件名及格式后缀,格式后缀决定录音文件的格式,目前支持的格式有 PCM、WAV 和 AAC。 例如,指定路径为 path/to/audio.aac,则会生成一个 AAC 格式的文件。 请指定一个有读写权限的合法路径,否则录音文件无法生成。 6.14 录音参数 请正确填写参数,确保录音文件顺利生成。 旁路转推的 URL 腾讯云直播 bizid,请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用,单击【帐号信息】,在“直播信息”中获取 腾讯云 AppID,请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用,单击【帐号信息】,在“直播信息”中获取 6.13 CDN 旁路推流参数 【字段含义】输出到 CDN 上的直播流 ID 如不设置该参数,SDK 会执行默认逻辑,即房间里的多路流会混合到该接口调用者的视频流上,也就是 A + B => A; 如果设置该参数,SDK 会将房间里的多路流混合到您指定的直播流 ID 上,也就是 A + B => C。 【推荐取值】默认值:null,即房间里的多路流会混合到该接口调用者的视频流上。 【字段含义】 数组 mixUsersArray 的大小 【字段含义】每一路子画面的位置信息 【字段含义】最终转码后的音频声道数 【推荐取值】默认值:1。取值范围为 [1,2] 中的整型。 【字段含义】最终转码后的音频码率。 【推荐取值】默认值:64kbps,取值范围是 [32,192]。 【字段含义】最终转码后的音频采样率。 【推荐取值】默认值:48000Hz。支持12000HZ、16000HZ、22050HZ、24000HZ、32000HZ、44100HZ、48000HZ。 【字段含义】混合后画面的背景图。 【推荐取值】默认值:null,即不设置背景图【特别说明】背景图需要您事先在 “[控制台](https://console.cloud.tencent.com/trtc) => 应用管理 => 功能配置 => 素材管理” 中上传, 上传成功后可以获得对应的“图片ID”,然后将“图片ID”转换成字符串类型并设置到 backgroundImage 里即可。 例如:假设“图片ID” 为 63,可以设置 backgroundImage = "63"; 【字段含义】混流背景颜色,格式为 0xRRGGBB。 【推荐取值】默认值:0x000000,黑色。 【字段含义】最终转码后的视频分辨率的关键帧间隔(又称为 GOP),单位秒 【推荐取值】默认值:2,单位为秒,取值范围是 [1,8]。 【字段含义】最终转码后的视频分辨率的帧率(FPS) 【推荐取值】默认值:15fps,取值范围是 (0,30]。 【字段含义】最终转码后的视频分辨率的码率(kbps) 【推荐取值】如果填0,后台会根据videoWidth和videoHeight来估算码率,您也可以参考枚举定义TRTCVideoResolution_640_480的注释。 【字段含义】最终转码后的视频分辨率的高度(px) 【推荐取值】推荐值:640px ,如果你是纯音频推流,请将 width × height 设为 0px × 0px,否则混流后会携带一条画布背景的视频流。 【字段含义】最终转码后的视频分辨率的宽度(px) 【推荐取值】推荐值:360px ,如果你是纯音频推流,请将 width × height 设为 0px × 0px,否则混流后会携带一条画布背景的视频流。 【字段含义】腾讯云直播 bizid 【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用,单击【帐号信息】后,在“直播信息”中获取 【字段含义】腾讯云直播 AppID 【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/rav) 选择已经创建的应用,单击【帐号信息】后,在“直播信息”中获取 【字段含义】转码 config 模式 6.12 云端混流(转码)配置 包括最终编码质量和各路画面的摆放位置 6.11 混流参数配置模式 目前暂仅支持手动配置这一种模式,即需要指定 TRTCTranscodingConfig 的全部参数。 屏幕分享模式,适用于在线教育场景等以屏幕分享为主的应用场景,仅支持 Windows 和 Mac 两个平台的 SDK。 SDK 会先根据您(通过 videoWidth 和 videoHeight 参数)设置的目标分辨率构建一张画布, 当老师未开启屏幕分享时,SDK 会将摄像头画面等比例拉伸绘制到该画布上;当老师开启屏幕分享之后,SDK 会将屏幕分享画面绘制到同样的画布上。 这样操作的目的是为了确保混流模块的输出分辨率一致,避免课程回放和网页观看的花屏问题(网页播放器不支持可变分辨率)。 由于教学模式下的视频内容以屏幕分享为主,因此同时传输摄像头画面和屏幕分享画面是非常浪费带宽的。 推荐的做法是直接将摄像头画面通过 setLocalVideoRenderCallback 接口自定义绘制到当前屏幕上。 在该模式下,您无需设置 TRTCTranscodingConfig 中的 mixUsers 参数,SDK 不会混合学生的画面,以免干扰屏幕分享的效果。 您可以将 TRTCTranscodingConfig 中的 width × height 设为 0px × 0px,SDK 会自动根据用户当前屏幕的宽高比计算出一个合适的分辨率: - 如果老师当前屏幕宽度 <= 1920px,SDK 会使用老师当前屏幕的实际分辨率。 - 如果老师当前屏幕宽度 > 1920px,SDK 会根据当前屏幕宽高比,选择 1920x1080(16:9)、1920x1200(16:10)、1920x1440(4:3) 三种分辨率中的一种。 预排版模式,通过占位符提前对各路画面进行排布 此模式下,您依然需要设置 mixUsers 参数,但可以将 userId 设置为占位符,可选的占位符有: - "$PLACE_HOLDER_REMOTE$" : 指代远程用户的画面,可以设置多个。 - "$PLACE_HOLDER_LOCAL_MAIN$" : 指代本地摄像头画面,只允许设置一个。 - "$PLACE_HOLDER_LOCAL_SUB$" : 指代本地屏幕分享画面,只允许设置一个。 但是您可以不需要监听 TRTCCloudDelegate 中的 onUserVideoAvailable() 和 onUserAudioAvailable() 回调进行实时调整, 只需要在进房成功后调用一次 setMixTranscodingConfig() 即可,之后 SDK 会自动将真实的 userId 补位到您设置的占位符上。 纯音频模式,适用于语音通话(AudioCall)和语音聊天室(VoiceChatRoom)等纯音频场景。 只需要在进房后通过 setMixTranscodingConfig() 接口设置一次,之后 SDK 就会自动把房间内所有上麦用户的声音混流到当前用户的直播流上。 此模式下,您无需设置 TRTCTranscodingConfig 中的 mixUsers 参数,只需设置 audioSampleRate、audioBitrate 和 audioChannels 等参数。 全手动模式,灵活性最高,可以自由组合出各种混流方案,但易用性最差。 此模式下,您需要填写 TRTCTranscodingConfig 中的所有参数,并需要监听 TRTCCloudDelegate 中的 onUserVideoAvailable() 和 onUserAudioAvailable() 回调, 以便根据当前房间中各个上麦用户的音视频状态不断地调整 mixUsers 参数,否则会导致混流失败。 非法值 【字段含义】该用户的输入流类型(该字段是对 pureAudio 字段的升级) 【推荐取值】 - 默认值:TRTCMixInputTypeUndefined - 如果您没有对 pureAudio 字段进行设置,您可以根据实际需要设置该字段 - 如果您已经设置了 pureAudio 为 YES,请设置该字段为 TRTCMixInputTypeUndefined 参与混合的是主路画面(TRTCVideoStreamTypeBig)或屏幕分享(TRTCVideoStreamTypeSub)画面 是否纯音频 图层层次(1 - 15)不可重复 图层位置坐标以及大小,左上角为坐标原点(0,0) (绝对像素值) 参与混流的 roomId,跨房流传入的实际 roomId,当前房间流传入 roomId = NULL 参与混流的 userId 6.10 云端混流中每一路子画面的位置信息 TRTCMixUser 用于指定每一路(即每一个 userId)视频画面的具体摆放位置 下坐标点 右坐标点 上坐标点 左坐标点 记录矩形的四个点坐标 为了兼容 c++ 使用的 RECT 类型 延迟(毫秒),指当前设备到腾讯云服务器的一次网络往返时间,该值越小越好,正常数值范围是10ms - 100ms 下行丢包率,范围是0 - 1.0,例如,0.2表示每从服务器收取10个数据包可能会在中途丢失2个。 上行丢包率,范围是0 - 1.0,例如,0.3表示每向服务器发送10个数据包可能会在中途丢失3个。 网络质量,内部通过评估算法测算出的网络质量,loss 越低,rtt 越小,得分便越高 服务器 IP 地址 6.9 网络测速结果 您可以在用户进入房间前通过 TRTCCloud 的 startSpeedTest 接口进行测速 (注意:请不要在通话中调用), 测速结果会每2 - 3秒钟返回一次,每次返回一个 IP 地址的测试结果。 - quality 是内部通过评估算法测算出的网络质量,loss 越低,rtt 越小,得分便越高。 - upLostRate 是指上行丢包率。例如,0.3表示每向服务器发送10个数据包可能会在中途丢失3个。- downLostRate 是指下行丢包率。例如,0.2表示每从服务器收取10个数据包可能会在中途丢失2个。- rtt 是指当前设备到腾讯云服务器的一次网络往返时间,该值越小越好,正常数值范围是10ms - 100ms。 时间戳,单位ms 声道数 采样率 音频数据的长度 音频数据 音频帧的格式 6.8 音频帧数据 画面旋转角度 时间戳,单位ms 画面的高度 画面的宽度 视频数据的长度,单位是字节,对于i420而言, length = width * height * 3 / 2,对于BGRA32而言, length = width * height * 4 视频纹理ID,字段bufferType是LiteAVVideoBufferType_Texture时生效 视频数据,字段bufferType是LiteAVVideoBufferType_Buffer时生效 视频数据结构类型 视频帧的格式 6.7 视频帧数据 【字段含义】视频纹理 ID。 6.6 视频纹理数据 说话者的音量, 取值范围0 - 100 说话者的 userId,字符编码格式为 UTF-8 6.5 音量大小 表示语音音量的评估大小,通过这个数值,您可以在 UI 界面上用图标表征 userId 是否有在说话。 视频质量 用户标识 6.4 视频质量 表示视频质量的好坏,通过这个数值,您可以在 UI 界面上用图标表征 userId 的通话线路质量 【字段含义】视频分辨率(云端控制 - 客户端控制) 【推荐取值】云端控制【特别说明】 - Server 模式(默认):云端控制模式,若无特殊原因,请直接使用该模式 - Client 模式:客户端控制模式,用于 SDK 开发内部调试,客户请勿使用 【字段含义】弱网下是“保清晰”或“保流畅” 【特别说明】 - 弱网下保流畅:在遭遇弱网环境时,画面会变得模糊,且出现较多马赛克,但可以保持流畅不卡顿 - 弱网下保清晰:在遭遇弱网环境时,画面会尽可能保持清晰,但可能容易出现卡顿 6.3 网络流控相关参数 网络流控相关参数,该设置决定了SDK在各种网络环境下的调控方向(例如弱网下是“保清晰”或“保流畅”) 【字段含义】是否允许调整分辨率 【推荐取值】 - 手机直播建议选择 NO。 - 视频通话模式,若更关注流畅性,建议选择 YES,此时若遇到带宽有限的弱网,SDK 会自动降低分辨率以保障更好的流畅度(仅针对 TRTCVideoStreamTypeBig 生效)。 - 默认值:NO。【特别说明】若有录制需求,选择 YES 时,请确保通话过程中,调整分辨率不会影响您的录制效果。 【字段含义】最低视频码率,SDK 会在网络不佳的情况下主动降低视频码率,最低会降至 minVideoBitrate 所设定的数值。 【推荐取值】 - 如果您追求“允许卡顿但要保持清晰”的效果,可以设置 minVideoBitrate 为 videoBitrate 的 60%; - 如果您追求“允许模糊但要保持流畅”的效果,可以设置 minVideoBitrate 为 200kbps; - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 的自适应调节能力; - 默认值:0,此时最低码率由 SDK 根据分辨率情况,自动设置合适的数值。【特别说明】 - 当您把分辨率设置的比较高时,minVideoBitrate 不适合设置的太低,否则会出现画面模糊和大范围的马赛克宏块。 比如把分辨率设置为 720p,把码率设置为 200kbps,那么编码出的画面将会出现大范围区域性马赛克。 【字段含义】目标视频码率,SDK 会按照目标码率进行编码,只有在网络不佳的情况下才会主动降低视频码率。 【推荐取值】请参考本 TRTCVideoResolution 在各档位注释的最佳码率,也可以在此基础上适当调高。 比如 TRTCVideoResolution_1280_720 对应 1200kbps 的目标码率,您也可以设置为 1500kbps 用来获得更好的清晰度观感。【特别说明】SDK 会努力按照 videoBitrate 指定的码率进行编码,只有在网络不佳的情况下才会主动降低视频码率,最低会降至 minVideoBitrate 所设定的数值。 如果您追求“允许卡顿但要保持清晰”的效果,可以设置 minVideoBitrate 为 videoBitrate 的 60%; 如果您追求“允许模糊但要保持流畅”的效果,可以设置 minVideoBitrate 为 200kbps; 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 的自适应调节能力。 【字段含义】视频采集帧率 【推荐取值】15fps 或 20fps。5fps以下,卡顿感明显。10fps以下,会有轻微卡顿感。20fps以上,则过于浪费(电影的帧率为24fps)。【特别说明】很多 Android 手机的前置摄像头并不支持15fps以上的采集帧率,部分过于突出美颜功能的 Android 手机前置摄像头的采集帧率可能低于10fps。 【字段含义】分辨率模式(横屏分辨率 - 竖屏分辨率) 【推荐取值】手机直播建议选择 Portrait,Window 和 Mac 建议选择 Landscape。【特别说明】如果 videoResolution 指定分辨率 640 × 360,resMode 指定模式为 Portrait,则最终编码出的分辨率为360 × 640。 【字段含义】 视频分辨率 【推荐取值】 - 视频通话建议选择360 × 640及以下分辨率,resMode 选择 Portrait。 - 手机直播建议选择540 × 960,resMode 选择 Portrait。 - Window 和 iMac 建议选择640 × 360 及以上分辨率,resMode 选择 Landscape。【特别说明】 TRTCVideoResolution 默认只有横屏模式的分辨率,例如640 × 360。 如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如640 × 360结合 Portrait 则为360 × 640。 6.2 视频编码参数 该设置决定了远端用户看到的画面质量(同时也是云端录制出的视频文件的画面质量)。 【字段含义】业务数据 [非必填],部分高级特性才需要使用该字段。 【推荐取值】不建议使用 【字段含义】房间签名 [非必填],当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。 【推荐取值】仅建议有高级别安全需求的客户使用,更多详情请参见 [进房权限保护](https://cloud.tencent.com/document/product/647/32240)。 【字段含义】设置云端录制完成后的回调消息中的 "userdefinerecordid" 字段内容,便于您更方便的识别录制回调。 【推荐取值】限制长度为64字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。【参考文档】[云端录制](https://cloud.tencent.com/document/product/647/16823)。 【字段含义】绑定腾讯云直播 CDN 流 ID[非必填],设置之后,您就可以在腾讯云直播 CDN 上通过标准直播方案(FLV或HLS)播放该用户的音视频流。 【推荐取值】限制长度为64字节,可以不填写,一种推荐的方案是使用 “sdkappid_roomid_userid_main” 作为 streamid,这样比较好辨认且不会在您的多个应用中发生冲突。【特殊说明】要使用腾讯云直播 CDN,您需要先在[控制台](https://console.cloud.tencent.com/trtc/) 中的功能配置页开启“启用旁路推流”开关。【参考文档】[CDN 旁路直播](https://cloud.tencent.com/document/product/647/16826)。 【字段含义】直播场景下的角色,仅适用于直播场景(TRTCAppSceneLIVE),视频通话场景下指定无效。 【推荐取值】默认值:主播(TRTCRoleAnchor) 【字段含义】房间号码 [必填],在同一个房间内的用户可以看到彼此并进行视频通话。 【推荐取值】您可以自定义设置该参数值,但不可重复。如果您的用户帐号 ID (userId)为数字类型,可直接使用创建者的用户 ID 作为 roomId。 【字段含义】用户签名 [必填],当前 userId 对应的验证签名,相当于登录密码。 【推荐取值】具体计算方法请参见 [如何计算UserSig](https://cloud.tencent.com/document/product/647/17275)。 【字段含义】用户标识 [必填],当前用户的 userId,相当于用户名,使用 UTF-8 编码。 【推荐取值】如果一个用户在您的帐号系统中的 ID 为“abc”,则 userId 即可设置为“abc”。 【字段含义】应用标识 [必填],腾讯视频云基于 sdkAppId 进行计费统计。 在 [实时音视频控制台](https://console.cloud.tencent.com/rav/) 创建应用后可在帐号信息页面中得到该 ID。 6.1 进房相关参数 只有该参数填写正确,才能顺利调用 enterRoom 进入 roomId 所指定的音视频房间。 遍历完窗口列表后,调用release释放资源。 窗口信息 窗口个数 5.7 屏幕窗口列表 interval 录制中事件(onLocalRecordDoing)的回调频率,单位毫秒,有效范围:1000-10000,默认为-1表示不回调 【字段含义】媒体录制类型,默认为同时录制音频和视频。 【字段含义】文件路径(必填),录制的文件地址,请自行指定,确保路径有读写权限且合法,否则录制文件无法生成。 【特别说明】该路径需精确到文件名及格式后缀,格式后缀决定录制文件的格式,目前支持的格式只有 mp4。 Windows建议在应用的私有数据目录中指定存放路径。 【示例代码】在 %appdata%\\test 目录下录制 example.mp4 文件 std::string filePath; std::wstring path; wchar_t fullPath[MAX_PATH] = { 0 }; ::SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, 0, fullPath); path=fullPath; path += L"\\test\\example.mp4"; filePath = txf_wstr2utf8(path); 5.7 本地录制参数 5.6 本地录制类型 同时录制音频、视频 仅录制视频 仅录制音频 指定高亮边框的宽度,传入0时采用默认描边宽度,默认宽度为 5,最大值为 50 指定高亮边框颜色,RGB格式,传入0时采用默认颜色,默认颜色为 #8CBF26 【字段含义】窗口采集时是否采集子窗口(需要子窗口与被采集窗口具有 Owner 或 Popup 属性),默认为 false。 是否开启高性能模式(只会在分享屏幕时会生效),开启后屏幕采集性能最佳,但无法过滤远端的高亮边框,默认为 true 是否高亮正在共享的窗口,默认为 true 是否采集目标内容时顺带采集鼠标,默认为 true 5.5 屏幕采集属性 5.4 记录 buffer 的长宽 为了兼容 c++ 使用的 SIZE 类型 【字段含义】是否为主显示屏(适用于多显示器的情况) 【字段含义】是否为最小化窗口 图标内容 缩略图内容 采集源名称,UTF8编码 采集源ID;对于窗口,该字段指示窗口句柄;对于屏幕,该字段指示屏幕ID 采集源类型 5.3 屏幕采集信息 图高 图宽 图缓存大小 图内容 5.2 图缓存 5.1 屏幕分享目标信息 您可以通过 getScreenCaptureSources() 枚举可共享的窗口列表,列表通过 ITRTCScreenCaptureSourceList 返回 该分享目标是整个Windows桌面 该分享目标是某一个Windows窗口 4.5 音频录制内容类型 该枚举类型用于音频录制接口{@link startAudioRecording},用于指定录制音频的内容。 【字段含义】 仅录制远端音频 【字段含义】 仅录制本地音频 【字段含义】 录制本地和远端所有音频 4.4 混流输入类型 【字段含义】 只混入音频 【字段含义】 只混入视频 【字段含义】 混入音视频 【字段含义】 不指定,根据pureAudio值决定混流类型 4.3 水印图片的源类型 【字段含义】 RGBA32格式内存块 【字段含义】 BGRA32格式内存块 【字段含义】 图片文件路径,支持 BMP、GIF、JPEG、PNG、TIFF、Exif、WMF 和 EMF 文件格式 4.2 设备操作 【字段含义】 设备已启用 【字段含义】 移除设备 【字段含义】 添加设备 4.1 Log 级别 【字段含义】 不输出任何 SDK Log 【字段含义】 只输出 FATAL 级别的 Log 【字段含义】 只输出ERROR 和 FATAL 级别的 Log 【字段含义】 只输出 WARNING,ERROR 和 FATAL 级别的 Log 【字段含义】 输出 INFO,WARNING,ERROR 和 FATAL 级别的 Log 【字段含义】 输出 DEBUG,INFO,WARNING,ERROR 和 FATAL 级别的 Log 【字段含义】 输出所有级别的 Log 3.3 音频自定义回调的格式参数 该参数用于在音频自定义回调相关的接口中,设置 SDK 回调出来的音频数据的相关格式(包括采样率、声道数等)。 3.2 声音音质 音频音质用来衡量声音的保真程度,TRTCAudioQualitySpeech 适用于通话场景,TRTCAudioQualityMusic 适用于高音质音乐场景。 【字段含义】 高音质:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,比如K歌、音乐直播等。 【字段含义】 默认音质:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。 【字段含义】 流畅音质:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话。 3.1 音频帧的格式 【字段含义】 PCM,每个采样点占16bit数据量。 2.4 画质偏好 指当 TRTC SDK 在遇到弱网络环境时,您期望“保清晰”或“保流畅”:- Smooth:弱网下保流畅。即在遭遇弱网环境时首先确保声音的流畅和优先发送,画面会变得模糊且会有较多马赛克,但可以保持流畅不卡顿。- Clear:弱网下保清晰。即在遭遇弱网环境时,画面会尽可能保持清晰,但可能会更容易出现卡顿。 弱网下保清晰 【字段含义】 【字段含义】 弱网下保流畅 2.3 流控模式 TRTC SDK 内部需要时刻根据网络情况调整内部的编解码器和网络模块,以便能够对网络的变化做出反应。为了支持快速算法升级,SDK 内部设置了两种不同的流控模式:- ModeServer: 云端控制,默认模式,推荐选择。- ModeClient: 本地控制,用于 SDK 开发内部调试,客户请勿使用。 推荐您使用云端控制,这样每当我们升级 Qos 算法时,您无需升级 SDK 即可体验更好的效果。 【字段含义】 云端控制 (默认) 【字段含义】 客户端控制(用于 SDK 开发内部调试,客户请勿使用) 2.2 角色,仅适用于直播场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom) 在直播场景中,多数用户仅为观众,个别用户是主播,这种角色区分有利于 TRTC 进行更好的定向优化。- Anchor:主播,可以上行视频和音频,一个房间里最多支持50个主播同时上行音视频。- Audience:观众,只能观看,不能上行视频和音频,一个房间里的观众人数没有上限。 【字段含义】观众 【字段含义】主播 2.1 应用场景 TRTC 可用于视频会议和在线直播等多种应用场景,针对不同的应用场景,TRTC SDK 的内部会进行不同的优化配置:- TRTCAppSceneVideoCall :视频通话场景,适合[1对1视频通话]、[300人视频会议]、[在线问诊]、[视频聊天]、[远程面试]等。- TRTCAppSceneLIVE :视频互动直播,适合[视频低延时直播]、[十万人互动课堂]、[视频直播 PK]、[视频相亲房]、[互动课堂]、[远程培训]、[超大型会议]等。- TRTCAppSceneAudioCall :语音通话场景,适合[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等。- TRTCAppSceneVoiceChatRoom:语音互动直播,适合:[语音低延时直播]、[语音直播连麦]、[语聊房]、[K 歌房]、[FM 电台]等。 语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。 适合:[语音低延时直播]、[语音直播连麦]、[语聊房]、[K 歌房]、[FM 电台]等。注意:此场景下,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。 语音通话场景,支持 48kHz,支持双声道。单个房间最多支持300人同时在线,最高支持50人同时发言。 适合:[1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀]等。 视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。 适合:[视频低延时直播]、[十万人互动课堂]、[视频直播 PK]、[视频相亲房]、[互动课堂]、[远程培训]、[超大型会议]等。注意:此场景下,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。 视频通话场景,支持720P、1080P高清画质,单个房间最多支持300人同时在线,最高支持50人同时发言。 适合:[1对1视频通话]、[300人视频会议]、[在线问诊]、[视频聊天]、[远程面试]等。 1.13 视频状态类型 该枚举类型用于视频状态变化回调接口{@link onRemoteVideoStatusUpdated},用于指定当前的视频状态。 【字段含义】远端视频流停止(或中断) 【字段含义】远端视频流开始(或继续) 【字段含义】本地停止视频流播放 【字段含义】本地启动视频流播放 【字段含义】结束缓冲 【字段含义】网络缓冲 【字段含义】缺省值 1.12 视频状态类型 该枚举类型用于视频状态变化回调接口{@link onRemoteVideoStatusUpdated},用于指定当前的视频状态。 【字段含义】正在加载 【字段含义】正在播放 【字段含义】停止播放 1.11 视频截图来源 【字段含义】从渲染 View 上截取视频画面 【字段含义】从视频流上截取视频画面 1.10 画面渲染镜像类型 TRTC 的画面镜像提供下列设置模式 【字段含义】所有画面均不镜像 【字段含义】所有画面均镜像 1.9 视频数据包装格式 【字段含义】纹理类型 【字段含义】二进制Buffer类型 【字段含义】未知类型 1.8 视频像素格式 TRTC SDK 提供针对视频的自定义采集和自定义渲染功能,在自定义采集功能中,您可以用下列枚举值描述您采集的视频像素格式。在自定义渲染功能中,您可以指定您期望 SDK 回调的视频像素格式。 【字段含义】RGBA32 【字段含义】BGRA32 【字段含义】OpenGL 2D 纹理 【字段含义】I420 【字段含义】未知类型 1.7 美颜(磨皮)算法 TRTC SDK 内置多种不同的磨皮算法,您可以选择最适合您产品定位的方案。 自然,磨皮算法更多地保留了面部细节,主观感受上会更加自然。 光滑,适用于美女秀场,效果比较明显。 1.6 视频画面旋转方向 TRTC SDK 提供了对本地和远程画面的旋转角度设置 API,下列的旋转角度都是指顺时针方向的。 顺时针旋转270度 顺时针旋转180度 顺时针旋转90度 顺时针旋转0度 1.5 视频画面填充模式 如果画面的显示分辨率不等于画面的原始分辨率,就需要您设置画面的填充模式:- TRTCVideoFillMode_Fill,超出显示视窗的视频部分将被裁剪,画面显示可能不完整。- TRTCVideoFillMode_Fit,图像长边填满屏幕,短边区域会被填充黑色,但画面的内容肯定是完整的。 图像长边填满屏幕,短边区域会被填充黑色 图像铺满屏幕,超出显示视窗的视频部分将被裁剪 1.4 画质级别 TRTC SDK 对画质定义了六种不同的级别,Excellent 表示最好,Down 表示不可用。 不可用 很差 一般 最好 未定义 1.3 视频流类型 TRTC 内部有三种不同的音视频流,分别为:-主画面:最常用的一条线路,一般用来传输摄像头的视频数据。-小画面:跟主画面的内容相同,但是分辨率和码率更低。-辅流画面:一般用于屏幕分享或远程播片(例如老师播放视频给学生观看)。 - 如果主播的上行网络和性能比较好,则可以同时送出大小两路画面。 - SDK 不支持单独开启小画面,小画面必须依附于主画面而存在。 辅流(屏幕分享) 小画面视频流 主画面视频流 1.2 视频分辨率模式 - 横屏分辨率:TRTCVideoResolution_640_360 + TRTCVideoResolutionModeLandscape = 640 × 360- 竖屏分辨率:TRTCVideoResolution_640_360 + TRTCVideoResolutionModePortrait = 360 × 640 竖屏分辨率 横屏分辨率 @defgroup TRTCCloudDef_csharp 关键类型定义 腾讯云视频通话功能的关键类型定义 @{ 1.1 视频分辨率 此处仅定义横屏分辨率,如需使用竖屏分辨率(例如360 × 640),需要同时指定 TRTCVideoResolutionMode 为 Portrait。 屏幕分享 - 建议码率2000kbps 摄像头采集 - 建议码率1200kbps 屏幕分享 - 建议码率 低清:1000kbps 高清:1600kbps 建议码率850kbps 建议码率550kbps 建议码率350kbps 建议码率250kbps 建议码率200kbps 建议码率150kbps 建议码率1000kbps 建议码率600kbps 建议码率400kbps 建议码率300kbps 建议码率250kbps 建议码率200kbps 建议码率150kbps 建议码率100kbps 建议码率350kbps 建议码率200kbps 建议码率100kbps 建议码率80kbps 结束向TRTC发布辅路音频流 结束向TRTC发布辅路视频流 开始向TRTC发布辅路音频流 开始向TRTC发布辅路视频流 将当前vodPlayer和TRTC分离 将当前vodPlayer附着至TRTC @param trtcCloud TRTC 实例指针 @note 用于辅流推送,绑定后音频播放由TRTC接管 设置画面镜像 设置播放速率 @param rate 播放速度(0.5-2.0) 设置音量大小 @param volume 音量大小,100为原始音量,范围是:[0 ~ 150],默认值为100 设置静音 设置画面的裁剪模式 @param mode 填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:TRTCVideoFillMode_Fit @note 用于窗口渲染模式 设置画面的方向 @info 设置本地图像的顺时针旋转角度 @param rotation 支持 TRTCVideoRotation90 、 TRTCVideoRotation180 以及 TRTCVideoRotation270 旋转角度,默认值:TRTCVideoRotation0 @note 用于窗口渲染模式 视频高度 视频宽度 获取视频总时长 播放跳转到音视频流某个时间 继续播放 暂停播放 停止播放音视频流 启动从指定URL播放,此接口的全平台版本没有参数 @note 10.7版本开始,需要通过 {@link TXLiveBase#setLicence} 设置 Licence 后方可成功播放, 否则将播放失败(黑屏),全局仅设置一次即可。直播 Licence、短视频 Licence 和视频播放 Licence 均可使用,若您暂未获取上述 Licence ,可[快速免费申请测试版 Licence](https://cloud.tencent.com/act/event/License) 以正常播放,正式版 License 需[购买](https://cloud.tencent.com/document/product/881/74588#.E8.B4.AD.E4.B9.B0.E5.B9.B6.E6.96.B0.E5.BB.BA.E6.AD.A3.E5.BC.8F.E7.89.88-license)。 开始多媒体文件播放 注意此接口的全平台版本没有参数 支持的视频格式包括:mp4、avi、mkv、wmv、m4v。 支持的音频格式包括:mp3、wav、wma、aac。 setupContainView 创建Video渲染View,该控件承载着视频内容的展示。 视频渲染回调。 仅硬解支持,全平台接口软解硬解均支持 事件回调 析构ITXVodPlayer对象 用于动态加载dll时,导出TXVodPlayer C++对象。 @param mediaFile 媒体文件名称 @param repeat 是否需要重复播放 true:此媒体文件将重复播放 false:媒体文件仅播放一次,结束后自动停止 @return ITXVodPlayer对象指针,注意:delete ITXVodPlayer*会编译错误,需要调用destroyTXVodPlayer释放。 Vod 音频帧回调 Vod视频帧回调 当多媒体文件播放出错时,SDK会通过此回调通知 当多媒体文件播放停止时,SDK会通过此回调通知 @param reason 停止原因,0表示用户主动停止,1表示文件播放完,2表示视频断流 当多媒体文件播放恢复时,SDK会通过此回调通知 当多媒体文件播放暂停时,SDK会通过此回调通知 当多媒体文件播放进度改变时,SDK会通过此回调通知 @param msPos 多媒体文件播放进度,单位毫秒 当多媒体文件播放开始时,SDK会通过此回调通知 @param msLength 多媒体文件总长度,单位毫秒 VOD 播放器错误码 文件打开失败 格式不支持 文件不存在 调用 V2TXLivePlayer 的高级 API 接口。 @note 该接口用于调用一些高级功能。 高级 API 对应的 key。 调用 key 所对应的高级 API 时,需要的参数 返回值 {@link V2TXLiveCode} 是否显示播放器状态信息的调试浮层 是否显示。【默认值】:false 开启接收 SEI 消息 true: 开启接收 SEI 消息; false: 关闭接收 SEI 消息。【默认值】: false 指定接收 SEI 消息的 payloadType,支持 5、242,请与发送端的 payloadType 保持一致。 返回值 {@link V2TXLiveCode} 开启/关闭对视频帧的监听回调。 SDK 在您开启次此开关后将不再渲染视频画面,您可以通过 V2TXLivePlayerObserver 获得视频帧,并执行自定义的渲染逻辑。 是否开启自定义渲染。【默认值】:false 自定义渲染回调的视频像素格式 {@link V2TXLivePixelFormat}。 自定义渲染回调的视频数据格式 {@link V2TXLiveBufferType}。 返回值 {@link V2TXLiveCode} 截取播放过程中的视频画面 返回值 {@link V2TXLiveCode} 启用播放音量大小提示 开启后可以在 {@link V2TXLivePlayerObserver} 回调中获取到 SDK 对音量大小值的评估。 intervalMs 决定了 onPlayoutVolumeUpdate 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;【默认值】:0,不开启 直播流无缝切换,支持 FLV 和 LEB。 newUrl 新的拉流地址。 返回值 {@link V2TXLiveCode} 设置播放器缓存自动调整的最小和最大时间 ( 单位:秒 )。 缓存自动调整的最小时间,取值需要大于0。【默认值】:1 缓存自动调整的最大时间,取值需要大于0。【默认值】:5 返回值 {@link V2TXLiveCode} 设置播放器音量 音量大小,取值范围0 - 100。【默认值】: 100 返回值 {@link V2TXLiveCode} 恢复播放器的视频流 返回值 {@link V2TXLiveCode} 暂停播放器的视频流 返回值 {@link V2TXLiveCode} 恢复播放器的音频流 返回值 {@link V2TXLiveCode} 暂停播放器的音频流 返回值 {@link V2TXLiveCode} 播放器是否正在播放中 是否正在播放(1: 正在播放中,0: 已经停止播放) 停止播放音视频流 返回值 {@link V2TXLiveCode} 开始播放音视频流 url 音视频流的播放地址,支持 RTMP, HTTP-FLV, TRTC 返回值 {@link V2TXLiveCode} 设置画面的填充模式 mode 画面填充模式 {@link V2TXLiveFillMode} 返回值 {@link V2TXLiveCode} 设置播放器画面的旋转角度。 rotation 旋转角度 {@link V2TXLiveRotation} 返回值 {@link V2TXLiveCode} 设置播放器的视频渲染 View。 该控件负责显示视频内容。 播放器渲染 View 返回值 {@link V2TXLiveCode} 设置播放器回调。 通过设置回调,可以监听 V2TXLivePlayer 播放器的一些回调事件, 包括播放器状态、播放音量回调、音视频首帧回调、统计数据、警告和错误信息等。 播放器的回调目标对象 释放 V2TXLivePlayer 单例对象。 用于动态加载 dll 时,获取 V2TXLivePlayer 对象指针 返回 V2TXLivePlayer 对象的指针,注意:请调用 releaseV2TXLivePlayer 析构 note 本接口适用于Windows、Mac、iOS平台 @defgroup V2TXLivePlayer_csharp V2TXLivePlayer 腾讯云直播播放器 @{ Module: V2TXLivePlayer @ TXLiteAVSDK 主要负责从指定的直播流地址拉取音视频数据,并进行解码和本地渲染播放。 播放器包含如下能力: - 支持RTMP, HTTP-FLV,TRTC; - 延时调节,可以设置播放器缓存自动调整的最小和最大时间; - 自定义的视频数据处理,让您可以根据项目需要处理直播流中的视频数据后,进行渲染以及播放。 收到 SEI 消息的回调,发送端通过 {@link V2TXLivePusher} 中的 `sendSeiMessage` 来发送 SEI 消息。 回调该通知的播放器对象 收到 SEI 消息的 payloadType 数据 数据大小 自定义视频渲染回调 回调该通知的播放器对象 视频帧数据 {@link V2TXLiveVideoFrame} 截图回调 回调该通知的播放器对象 已截取的视频画面 截图数据长度,对于BGRA32而言,length = width * height * 4 截图画面的宽度 截图画面的高度 截图数据格式,目前只支持 V2TXLivePixelFormatBGRA32 直播播放器统计数据回调 回调该通知的播放器对象 播放器统计数据 {@link V2TXLivePlayerStatistics} 播放器音量大小回调 回调该通知的播放器对象 音量大小 音频加载事件 回调该通知的播放器对象 扩展信息 视频加载事件 回调该通知的播放器对象 扩展信息 音频播放事件 回调该通知的播放器对象 第一次播放标志 扩展信息 视频播放事件 回调该通知的播放器对象 第一次播放标志 扩展信息 已经成功连接到服务器 回调该通知的播放器对象 扩展信息 直播播放器分辨率变化通知 回调该通知的播放器对象 视频宽 视频高 直播播放器警告通知 回调该通知的播放器对象 警告码 {@link V2TXLiveCode} 警告信息 扩展信息 直播播放器错误通知,播放器出现错误时,会回调该通知 回调该通知的播放器对象 错误码 {@link V2TXLiveCode} 错误信息 扩展信息 @defgroup ITRTCCloudCallback_csharp ITRTCCloudCallback 腾讯云直播的播放器回调通知 @{ 可以接收 V2TXLivePlayer 播放器的一些回调通知,包括播放器状态、播放音量回调、音视频首帧回调、统计数据、警告和错误信息等。 【字段含义】音频码率(Kbps) 【字段含义】视频码率(Kbps) 【字段含义】帧率(fps) 【字段含义】视频高度 【字段含义】视频宽度 【字段含义】当前系统的 CPU 使用率(%) 【字段含义】当前 App 的 CPU 使用率(%) 推流器的统计数据 直播流的连接状态 重连服务器中 连接服务器成功 正在连接服务器 与服务器断开连接 【字段含义】音频码率(Kbps) 【字段含义】视频码率(Kbps) 【字段含义】帧率(fps) 【字段含义】视频高度 【字段含义】视频宽度 【字段含义】当前系统的 CPU 使用率(%) 【字段含义】当前 App 的 CPU 使用率(%) 播放器的统计数据 【字段含义】采样点数 【推荐取值】取值必须是 sampleRate/100 的整数倍。 【字段含义】声道数 【推荐取值】默认值:1,代表单声道。可设定的数值只有两个数字:1-单声道,2-双声道。 【字段含义】采样率 【推荐取值】默认值:48000Hz。支持 16000, 32000, 44100, 48000。 音频帧回调格式 【字段含义】设置本地 Log 的存储目录,默认 Log 存储位置: Windows:%appdata%/liteav/log 【字段含义】是否启用本地 Log 文件 【特殊说明】如非特殊需要,请不要关闭本地 Log 文件,否则腾讯云技术团队将无法在出现问题时进行跟踪和定位。 【推荐取值】默认值:true 【字段含义】是否允许 SDK 在编辑器(XCoder、Android Studio、Visual Studio 等)的控制台上打印 Log 【推荐取值】默认值:false 【字段含义】是否通过 V2TXLivePremierObserver 接收要打印的 Log 信息 【特殊说明】如果您希望自己实现 Log 写入,可以打开此开关,Log 信息会通过 V2TXLivePremierObserver#onLog 回调给您。 【推荐取值】默认值:false 【字段含义】设置 Log 级别 【推荐取值】默认值:V2TXLiveLogLevelAll Log配置 日志级别枚举值 不输出任何 sdk log 只输出 FATAL 级别的 log 只输出 ERROR 和 FATAL 级别的 log 只输出 WARNING,ERROR 和 FATAL 级别的 log 输出 INFO,WARNING,ERROR 和 FATAL 级别的 log 输出 DEBUG,INFO,WARNING,ERROR 和 FATAL 级别的 log 输出所有级别的 log 区域 大小 窗口采集时是否采集子窗口(与采集窗口具有 Owner 或 Popup 属性),默认为 false 指定高亮边框的宽度,传入0时采用默认描边宽度,默认宽度为 5,最大值为 50 指定高亮边框颜色,RGB 格式,传入 0 时采用默认颜色,默认颜色为 #8CBF26 是否开启高性能模式(只会在分享屏幕时会生效),开启后屏幕采集性能最佳,但无法过滤远端的高亮边框,默认为 true 是否高亮正在共享的窗口,默认为 true 是否采集目标内容时顺带采集鼠标,默认为 true 屏幕分享参数 遍历完窗口列表后,调用release释放资源。 窗口信息 窗口个数 屏幕分享窗口列表 是否为主屏,是否为主屏,仅采集源类型为 Screen 时才可用 是否为最小化窗口,通过 getScreenCaptureSources 获取列表时的窗口状态,仅采集源为 Window 时才可用 图标内容 缩略图内容 采集源名称,UTF8 编码 采集源 ID;对于窗口,该字段指示窗口句柄;对于屏幕,该字段指示屏幕 ID 采集源类型 屏幕分享窗口信息 屏幕分享有关的定义 自定义窗口类型 该分享目标是整个桌面 该分享目标是某一个窗口 未知 【字段含义】声道数 【字段含义】采样率 【字段含义】音频数据的长度 【字段含义】音频数据 音频帧数据 【字段含义】视频帧的顺时针旋转角度 【字段含义】视频高度 【字段含义】视频宽度 【字段含义】视频数据的长度,单位是字节 【字段含义】bufferType 为 V2TXLiveBufferTypeByteBuffer 时的视频数据。 【字段含义】视频数据包装格式 【字段含义】视频帧像素格式 【字段含义】最低视频码率,SDK 会在网络不佳的情况下主动降低视频码率以保持流畅度,最低会降至 minVideoBitrate 所设定的数值。 【推荐取值】您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围: - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。 【字段含义】目标视频码率,SDK 会按照目标码率进行编码,只有在弱网络环境下才会主动降低视频码率。 【推荐取值】请参考 V2TXLiveVideoResolution 在各档位注释的最佳码率,也可以在此基础上适当调高。 比如:V2TXLiveVideoResolution1280x720 对应 1200kbps 的目标码率,您也可以设置为 1500kbps 用来获得更好的观感清晰度。 【特别说明】您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围: - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。 【字段含义】视频采集帧率 【推荐取值】15fps 或 20fps。5fps 以下,卡顿感明显。10fps 以下,会有轻微卡顿感。20fps 以上,会浪费带宽(电影的帧率为 24fps)。 【字段含义】分辨率模式(横屏分辨率 or 竖屏分辨率) 【推荐取值】桌面平台(Windows、Mac)建议选择 Landscape。 【特别说明】如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如: 640 × 360 + Portrait = 360 × 640。 【字段含义】 视频分辨率 【特别说明】如需使用竖屏分辨率,请指定 videoResolutionMode 为 Portrait,例如: 640 × 360 + Portrait = 360 × 640。 【推荐取值】 - 桌面平台(Win + Mac):建议选择 640 × 360 及以上分辨率,videoResolutionMode 选择 Landscape,即横屏分辨率。 视频编码参数, 该设置决定远端用户看到的画面质量 视频宽高比模式 竖屏模式 横屏模式 图片数据的长度;单位字节 图片高度,默认为0(图片数据类型为V2TXLiveImageTypeFile,忽略该参数) 图片宽度,默认为0(图片数据类型为V2TXLiveImageTypeFile,忽略该参数) 图片数据类型,默认为V2TXLiveImageFile {@link V2TXLiveImageType} V2TXLiveImageTypeFile: 图片路径; 其他类型:图片内容 图片信息 视频分辨率 分辨率 1920*1080,码率范围:2500Kbps ~ 3000Kbps,帧率:15fps 分辨率 1280*720,码率范围:1000Kbps ~ 1800Kbps,帧率:15fps 分辨率 960*540,码率范围:800Kbps ~ 1500Kbps,帧率:15fps 分辨率 640*360,码率范围:500Kbps ~ 900Kbps,帧率:15fps 分辨率 480*270,码率范围:350Kbps ~ 550Kbps,帧率:15fps 分辨率 320*180,码率范围:250Kbps ~ 400Kbps,帧率:15fps 分辨率 640*480,码率范围:600Kbps ~ 900Kbps,帧率:15fps 分辨率 480*360,码率范围:400Kbps ~ 600Kbps,帧率:15fps 分辨率 320*240,码率范围:250Kbps ~ 375Kbps,帧率:15fps 分辨率 480*480,码率范围:350Kbps ~ 525Kbps,帧率:15fps 分辨率 270*270,码率范围:200Kbps ~ 300Kbps,帧率:15fps 分辨率 160*160,码率范围:100Kbps ~ 150Kbps,帧率:15fps 声音音质 音乐音质:采样率:48k;双声道 + 全频带;音频码率:128kbps;适合需要高保真传输音乐的场景,比如K歌、音乐直播等 默认音质:采样率:48k;单声道;音频码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之 语音音质:采样率:16k;单声道;音频码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话 图片类型 RGBA32格式内存块 BGRA32格式内存块 图片文件路径,支持 GIF、JPEG、PNG文件格式 本地摄像头镜像类型 前置摄像头和后置摄像头,都切换为非镜像模式 前置摄像头和后置摄像头,都切换为镜像模式 系统默认镜像类型,前置摄像头镜像,后置摄像头不镜像 视频数据包装格式 @info 视频数据包装格式。 @note 在自定义采集和自定义渲染功能,您需要用到下列枚举值来指定您希望以什么样的格式来包装视频数据。 二进制Buffer类型 未知 视频帧的像素格式 BGRA8888 YUV420P I420 未知 视频画面填充模式 图像拉伸铺满,因此长度和宽度可能不会按比例变化 图像长边填满屏幕,短边区域会被填充黑色,画面的内容完整 图像铺满屏幕,超出显示视窗的视频部分将被裁剪,画面显示可能不完整 视频画面顺时针旋转角度 顺时针旋转270度 顺时针旋转180度 顺时针旋转90度 不旋转 支持协议 支持协议: TRTC 支持协议: RTMP 关闭minidump生成功能 开启minidump生成功能,发生崩溃时,自动生成minidump转储文件,用于分析崩溃原因 获取 Windows 系统音量合成器中当前进程的静音状态 true:操作成功 设置 Windows 系统音量合成器中当前进程的静音状态 0:操作成功 是否静音 获取 Windows 系统音量合成器中当前进程的音量 返回音量 设置 Windows 系统音量合成器中当前进程的音量 0:操作成功 播放音量 设置摄像头采集偏好 采集参数,width height mode 详见TXCameraCaptureParam定义 设置 onDeviceChanged 事件回调 回调 停止扬声器测试 0:操作成功 负数:失败 开始扬声器测试 该方法播放指定的音频文件测试播放设备是否能正常工作。如果能听到声音,说明播放设备能正常工作。 声音文件的路径 0:操作成功 负数:失败 结束麦克风测试 0:操作成功 负数:失败 开始麦克风测试 音量回调间隔 0:操作成功 负数:失败 结束摄像头测试 0:操作成功 负数:失败 开始摄像头测试 预览控件所在的父控件 0:操作成功 负数:失败 在测试过程中可以使用 setCurrentCameraDevice 接口切换摄像头。 查询当前设备是否静音 设备类型,根据设备类型获取当前设备状态。详见TRTCDeviceType定义。 true : 当前设备已静音;false : 当前设备未静音 type 只支持 TRTCDeviceTypeMic、TRTCDeviceTypeSpeaker 设置当前设备是否静音 设备类型,根据设备类型设置当前设备状态。详见TRTCDeviceType定义。 是否静音/禁画 0:操作成功 负数:失败 type 只支持 TRTCDeviceTypeMic、TRTCDeviceTypeSpeaker 获取当前设备的音量 设备类型,根据设备类型获取当前设备音量。详见TRTCDeviceType定义。 type 只支持 TRTCDeviceTypeMic、TRTCDeviceTypeSpeaker 设置当前设备的音量 设备类型,根据设备类型获取当前设备音量。详见TRTCDeviceType定义。 音量大小 0:操作成功 负数:失败 type 只支持 TRTCDeviceTypeMic、TRTCDeviceTypeSpeaker 获取当前使用的设备 设备类型,根据设备类型获取当前设备信息。详见 TRTCDeviceType 定义 ITRTCDeviceInfo 设备信息,能获取设备 ID 和设备名称 指定当前设备 设备类型,根据设备类型指定当前设备。详见 TRTCDeviceType 定义。 从 getDevicesList 中得到的设备 ID 0:操作成功 负数:失败 type 只支持 TRTCDeviceTypeMic、TRTCDeviceTypeSpeaker、TRTCDeviceTypeCamera 获取设备列表 设备类型,指定需要获取哪种设备的列表。详见TRTCDeviceType定义。 - SDK 会维护 ITXDeviceCollection 对象的生命周期,使用完毕后请调用 release 方法释放资源。 - type 只支持 TRTCDeviceTypeMic、TRTCDeviceTypeSpeaker、TRTCDeviceTypeCamera 【字段含义】采集图像宽度 【字段含义】采集图像长度 【字段含义】摄像头采集偏好 摄像头采集参数 该设置能决定本地预览图像画质。 摄像头采集偏好 该枚举类型用于摄像头采集参数设置。 允许用户设置本地摄像头采集的视频宽高。 优先保证视频预览质量。 SDK选择较高的摄像头输出参数,从而提高预览视频的质量。在这种情况下,会消耗更多的 CPU 及内存做视频前处理。 优先保证设备性能。 SDK 根据用户设置编码器的分辨率和帧率,选择最接近的摄像头输出参数,从而保证设备性能。 自动调整采集参数。 SDK 根据实际的采集设备性能及网络情况,选择合适的摄像头输出参数,在设备性能及视频预览质量之间,维持平衡。 本地设备的通断状态发生变化(仅适用于桌面系统) 当本地设备(包括摄像头、麦克风以及扬声器)被插入或者拔出时,SDK 便会抛出此事件回调 设备操作 设备已启用 设备已被移除 设备已被插入 设备类型(仅适用于桌面平台) 获取完设备信息后,调用release释放资源。 设备PID,字符编码格式是UTF-8 设备名称,字符编码格式是UTF-8 设备Item信息 【获取SDK当前使用设备信息 ITRTCDeviceInfo】您可以通过 setCurrentCameraDevice()/getCurrentMicDevice()/getCurrentSpeakerDevice 获取当前使用设备。 遍历完设备后,调用release释放资源。 设备PID,字符编码格式是UTF-8 设备名称,字符编码格式是UTF-8 设备个数 @defgroup ITXDeviceManager_csharp ITXDeviceManager 腾讯云视频通话功能的设备管理接口类 @{ 设备列表 【获取SDK设备信息接口 ITRTCDeviceCollection】您可以通过 getMicDevicesList()/getSpeakerDevicesList()/getMicDevicesList 枚举硬件设备列表,列表通过 ITRTCDeviceCollection 返回 析构ITXNetworkProxy对象 @param pTXNetworkProxy 传入需要释放的对象指针地址 用于动态加载dll时,导出TXNetworkProxy C++对象。 @return TXNetworkProxy对象指针,注意:delete ITXNetworkProxy*会编译错误,需要调用destroyTXNetworkProxy释放。 @} @} 调用 V2TXLivePlayer 的高级 API 接口。 @note 该接口用于调用一些高级功能。 @param key 高级 API 对应的 key。 @param value 调用 key 所对应的高级 API 时,需要的参数。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_INVALID_PARAMETER: 操作失败,key 不允许为 null 是否显示播放器状态信息的调试浮层。 @param isShow 是否显示。【默认值】:false 开启接收 SEI 消息 @param enable true: 开启接收 SEI 消息; false: 关闭接收 SEI 消息。【默认值】: false @param payloadType 指定接收 SEI 消息的 payloadType,支持 5、242,请与发送端的 payloadType 保持一致。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 开启/关闭对视频帧的监听回调。 SDK 在您开启次此开关后将不再渲染视频画面,您可以通过 V2TXLivePlayerObserver 获得视频帧,并执行自定义的渲染逻辑。 @param enable 是否开启自定义渲染。【默认值】:false @param pixelFormat 自定义渲染回调的视频像素格式 {@link V2TXLivePixelFormat}。 @param bufferType 自定义渲染回调的视频数据格式 {@link V2TXLiveBufferType}。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_NOT_SUPPORTED: 像素格式或者数据格式不支持 截取播放过程中的视频画面。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_REFUSED: 播放器处于停止状态,不允许调用截图操作 启用播放音量大小提示。 开启后可以在 {@link V2TXLivePlayerObserver} 回调中获取到 SDK 对音量大小值的评估。 @param intervalMs 决定了 onPlayoutVolumeUpdate 回调的触发间隔,单位为ms,最小间隔为100ms,如果小于等于0则会关闭回调,建议设置为300ms;【默认值】:0,不开启 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 直播流无缝切换,支持 FLV 和 LEB。 @param newUrl 新的拉流地址。 设置播放器缓存自动调整的最小和最大时间 ( 单位:秒 )。 @param minTime 缓存自动调整的最小时间,取值需要大于0。【默认值】:1 @param maxTime 缓存自动调整的最大时间,取值需要大于0。【默认值】:5 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 - V2TXLIVE_ERROR_INVALID_PARAMETER: 操作失败,minTime 和 maxTime 需要大于0 - V2TXLIVE_ERROR_REFUSED: 播放器处于播放状态,不支持修改缓存策略 设置播放器音量。 @param volume 音量大小,取值范围0 - 100。【默认值】: 100 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 恢复播放器的视频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 暂停播放器的视频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 恢复播放器的音频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 暂停播放器的音频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 播放器是否正在播放中。 @return 是否正在播放 - 1: 正在播放中 - 0: 已经停止播放 停止播放音视频流。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 开始播放音视频流。 @param url 音视频流的播放地址,支持 RTMP, HTTP-FLV, TRTC。 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK:操作成功,开始连接并播放 - V2TXLIVE_ERROR_INVALID_PARAMETER:操作失败,url 不合法 - V2TXLIVE_ERROR_REFUSED:RTC 不支持同一设备上同时推拉同一个 StreamId 设置画面的填充模式。 @param mode 画面填充模式 {@link V2TXLiveFillMode}。 - V2TXLiveFillModeFill 【默认值】: 图像铺满屏幕,不留黑边,如果图像宽高比不同于屏幕宽高比,部分画面内容会被裁剪掉 - V2TXLiveFillModeFit: 图像适应屏幕,保持画面完整,但如果图像宽高比不同于屏幕宽高比,会有黑边的存在 - V2TXLiveFillModeScaleFill: 图像拉伸铺满,因此长度和宽度可能不会按比例变化 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 设置播放器画面的旋转角度。 @param rotation 旋转角度 {@link V2TXLiveRotation} - V2TXLiveRotation0【默认值】: 0度, 不旋转 - V2TXLiveRotation90: 顺时针旋转90度 - V2TXLiveRotation180: 顺时针旋转180度 - V2TXLiveRotation270: 顺时针旋转270度 @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK: 成功 设置播放器的视频渲染 View。 该控件负责显示视频内容。 @param view 播放器渲染 View @return 返回值 {@link V2TXLiveCode} - V2TXLIVE_OK:成功 设置播放器回调。 通过设置回调,可以监听 V2TXLivePlayer 播放器的一些回调事件, 包括播放器状态、播放音量回调、音视频首帧回调、统计数据、警告和错误信息等。 @param observer 播放器的回调目标对象,更多信息请查看 {@link V2TXLivePlayerObserver} 析构 V2TXLivePlayer 对象 @param player V2TXLivePlayer 对象的指针 @name 创建与销毁 V2TXLivePlayer 实例 @{ 用于动态加载 dll 时,获取 V2TXLivePlayer 对象指针 @return 返回 V2TXLivePlayer 对象的指针,注意:请调用 releaseV2TXLivePlayer 析构 @note 本接口适用于Windows、Mac、iOS平台 收到 SEI 消息的回调,发送端通过 {@link V2TXLivePusher} 中的 `sendSeiMessage` 来发送 SEI 消息。 @note 调用 {@link V2TXLivePlayer} 中的 `enableReceiveSeiMessage` 开启接收 SEI 消息之后,会收到这个回调通知 @param player 回调该通知的播放器对象 @param payloadType 收到 SEI 消息的 payloadType @param data 数据 @param dataSize 数据大小 自定义视频渲染回调 @param player 回调该通知的播放器对象 @param videoFrame 视频帧数据 {@link V2TXLiveVideoFrame} @note 需要您调用 {@link enableObserveVideoFrame} 开启回调开关 截图回调 @note 调用 {@link snapshot} 截图之后,会收到这个回调通知 @param player 回调该通知的播放器对象 @param image 已截取的视频画面 @param length 截图数据长度,对于BGRA32而言,length = width * height * 4 @param width 截图画面的宽度 @param height 截图画面的高度 @param format 截图数据格式,目前只支持 V2TXLivePixelFormatBGRA32 直播播放器统计数据回调 @param player 回调该通知的播放器对象 @param statistics 播放器统计数据 {@link V2TXLivePlayerStatistics} 播放器音量大小回调 @param player 回调该通知的播放器对象 @param volume 音量大小 @note 调用 {@link V2TXLivePlayer#enableVolumeEvaluation(int)} 开启播放音量大小提示之后,会收到这个回调通知。 音频加载事件 @param player 回调该通知的播放器对象 @param extraInfo 扩展信息 视频加载事件 @param player 回调该通知的播放器对象 @param extraInfo 扩展信息 音频播放事件 @param player 回调该通知的播放器对象 @param firstPlay 第一次播放标志 @param extraInfo 扩展信息 视频播放事件 @param player 回调该通知的播放器对象 @param firstPlay 第一次播放标志 @param extraInfo 扩展信息 已经成功连接到服务器 @param player 回调该通知的播放器对象 @param extraInfo 扩展信息 直播播放器分辨率变化通知 @param player 回调该通知的播放器对象 @param width 视频宽 @param height 视频高 直播播放器警告通知 @param player 回调该通知的播放器对象 @param code 警告码 {@link V2TXLiveCode} @param msg 警告信息 @param extraInfo 扩展信息 直播播放器错误通知,播放器出现错误时,会回调该通知 @param player 回调该通知的播放器对象 @param code 错误码 {@link V2TXLiveCode} @param msg 错误信息 @param extraInfo 扩展信息 区域 大小 窗口采集时是否采集子窗口(与采集窗口具有 Owner 或 Popup 属性),默认为 false 指定高亮边框的宽度,传入0时采用默认描边宽度,默认宽度为 5,最大值为 50 指定高亮边框颜色,RGB 格式,传入 0 时采用默认颜色,默认颜色为 #8CBF26 是否开启高性能模式(只会在分享屏幕时会生效),开启后屏幕采集性能最佳,但无法过滤远端的高亮边框,默认为 true 是否高亮正在共享的窗口,默认为 true 是否采集目标内容时顺带采集鼠标,默认为 true 屏幕分享参数 您可以通过设置结构体内的参数控制屏幕分享边框的颜色、宽度、是否采集鼠标等参数 @info 遍历完窗口列表后,调用 release 释放资源。 窗口信息 窗口个数 屏幕分享窗口列表 是否为主屏,是否为主屏,仅采集源类型为 Screen 时才可用 是否为最小化窗口,通过 getScreenCaptureSources 获取列表时的窗口状态,仅采集源为 Window 时才可用 图标内容 缩略图内容 采集源名称,UTF8 编码 采集源 ID;对于窗口,该字段指示窗口句柄;对于屏幕,该字段指示屏幕 ID 采集源类型 屏幕分享窗口信息 您可以通过 getScreenCaptureSources() 枚举可共享的窗口列表,列表通过 IV2TXLiveScreenCaptureSourceList 返回 @} 屏幕分享有关的定义 自定义窗口类型 该分享目标是整个桌面 该分享目标是某一个窗口 未知 图片数据的长度;单位字节 图片高度,默认为0(图片数据类型为V2TXLiveImageTypeFile,忽略该参数) 图片宽度,默认为0(图片数据类型为V2TXLiveImageTypeFile,忽略该参数) 图片数据类型,默认为V2TXLiveImageFile {@link V2TXLiveImageType} V2TXLiveImageTypeFile: 图片路径; 其他类型:图片内容 图片信息 @} 图片类型. RGBA32格式内存块 BGRA32格式内存块 图片文件路径,支持 GIF、JPEG、PNG文件格式 【字段含义】设置本地 Log 的存储目录,默认 Log 存储位置: Windows:%appdata%/liteav/log 【字段含义】是否启用本地 Log 文件 【特殊说明】如非特殊需要,请不要关闭本地 Log 文件,否则腾讯云技术团队将无法在出现问题时进行跟踪和定位。 【推荐取值】默认值:true 【字段含义】是否允许 SDK 在编辑器(XCoder、Android Studio、Visual Studio 等)的控制台上打印 Log 【推荐取值】默认值:false 【字段含义】是否通过 V2TXLivePremierObserver 接收要打印的 Log 信息 【特殊说明】如果您希望自己实现 Log 写入,可以打开此开关,Log 信息会通过 V2TXLivePremierObserver#onLog 回调给您。 【推荐取值】默认值:false 【字段含义】设置 Log 级别 【推荐取值】默认值:V2TXLiveLogLevelAll Log配置 @} @name 公共配置组件有关的枚举值的定义 @{ 日志级别枚举值 不输出任何 sdk log 只输出 FATAL 级别的 log 只输出 ERROR 和 FATAL 级别的 log 只输出 WARNING,ERROR 和 FATAL 级别的 log 输出 INFO,WARNING,ERROR 和 FATAL 级别的 log 输出 DEBUG,INFO,WARNING,ERROR 和 FATAL 级别的 log 输出所有级别的 log @} @name 连接状态相关枚举值定义 @{ 直播流的连接状态 重连服务器中 连接服务器成功 正在连接服务器 与服务器断开连接 【字段含义】从 SDK 到云端的往返延时(ms),注:仅支持前缀为 [trtc://] 或 [webrtc://] 的播放地址 【字段含义】视频播放卡顿率,单位(%) 【字段含义】视频播放的累计卡顿时长(ms) 【字段含义】音频播放卡顿率,单位(%) 【字段含义】音频播放的累计卡顿时长(ms) 【字段含义】播放延迟(ms) 【字段含义】网络视频丢包率(%),注:仅支持前缀为 [trtc://] 或 [webrtc://] 的播放地址 【字段含义】网络音频丢包率(%),注:仅支持前缀为 [trtc://] 或 [webrtc://] 的播放地址 【字段含义】音频码率(Kbps) 【字段含义】视频码率(Kbps) 【字段含义】帧率(fps) 【字段含义】视频高度 【字段含义】视频宽度 【字段含义】当前系统的 CPU 使用率(%) 【字段含义】当前 App 的 CPU 使用率(%) 播放器的统计数据 【字段含义】音频码率(Kbps) 【字段含义】视频码率(Kbps) 【字段含义】帧率(fps) 【字段含义】视频高度 【字段含义】视频宽度 【字段含义】当前系统的 CPU 使用率(%) 【字段含义】当前 App 的 CPU 使用率(%) @} @name 推流器和播放器的一些统计指标数据定义 @{ 推流器的统计数据 【字段含义】采样点数 【推荐取值】取值必须是 sampleRate/100 的整数倍。 【字段含义】声道数 【推荐取值】默认值:1,代表单声道。可设定的数值只有两个数字:1-单声道,2-双声道。 【字段含义】采样率 【推荐取值】默认值:48000Hz。支持 16000, 32000, 44100, 48000。 音频帧回调格式 【字段含义】声道数 【字段含义】采样率 【字段含义】音频数据的长度 【字段含义】音频数据 音频帧数据 @} @name 音频相关类型定义 @{ 声音音质 音乐音质:采样率:48k;双声道 + 全频带;音频码率:128kbps;适合需要高保真传输音乐的场景,比如K歌、音乐直播等 默认音质:采样率:48k;单声道;音频码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之 语音音质:采样率:16k;单声道;音频码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话 【字段含义】视频帧的顺时针旋转角度 【字段含义】视频高度 【字段含义】视频宽度 【字段含义】视频数据的长度,单位是字节 【字段含义】bufferType 为 V2TXLiveBufferTypeByteBuffer 时的视频数据。 【字段含义】视频数据包装格式 【字段含义】视频帧像素格式 视频帧信息 @info 视频帧信息。 V2TXLiveVideoFrame 用来描述一帧视频画面的裸数据,它可以是一帧编码前的画面,也可以是一帧解码后的画面。 @note 自定义采集和自定义渲染时使用。自定义采集时,需要使用 V2TXLiveVideoFrame 来包装待发送的视频帧;自定义渲染时,会返回经过 V2TXLiveVideoFrame 包装的视频帧。 美颜(磨皮)算法 TRTC 内置多种不同的磨皮算法,您可以选择最适合您产品定位的方案。 自然,算法更多地保留了面部细节,磨皮效果更加自然,适用于绝大多数直播场景。 光滑,算法比较激进,磨皮效果比较明显,适用于秀场直播。 视频数据包装格式 @info 视频数据包装格式。 @note 在自定义采集和自定义渲染功能,您需要用到下列枚举值来指定您希望以什么样的格式来包装视频数据。 二进制Buffer类型 未知 视频帧的像素格式 BGRA8888 YUV420P I420 未知 视频画面顺时针旋转角度 顺时针旋转270度 顺时针旋转180度 顺时针旋转90度 不旋转 视频画面填充模式 图像拉伸铺满,因此长度和宽度可能不会按比例变化 图像长边填满屏幕,短边区域会被填充黑色,画面的内容完整 图像铺满屏幕,超出显示视窗的视频部分将被裁剪,画面显示可能不完整 本地摄像头镜像类型 前置摄像头和后置摄像头,都切换为非镜像模式 前置摄像头和后置摄像头,都切换为镜像模式 系统默认镜像类型,前置摄像头镜像,后置摄像头不镜像 【字段含义】最低视频码率,SDK 会在网络不佳的情况下主动降低视频码率以保持流畅度,最低会降至 minVideoBitrate 所设定的数值。 【推荐取值】您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围: - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。 【字段含义】目标视频码率,SDK 会按照目标码率进行编码,只有在弱网络环境下才会主动降低视频码率。 【推荐取值】请参考 V2TXLiveVideoResolution 在各档位注释的最佳码率,也可以在此基础上适当调高。 比如:V2TXLiveVideoResolution1280x720 对应 1200kbps 的目标码率,您也可以设置为 1500kbps 用来获得更好的观感清晰度。 【特别说明】您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围: - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。 【字段含义】视频采集帧率 【推荐取值】15fps 或 20fps。5fps 以下,卡顿感明显。10fps 以下,会有轻微卡顿感。20fps 以上,会浪费带宽(电影的帧率为 24fps)。 【字段含义】分辨率模式(横屏分辨率 or 竖屏分辨率) 【推荐取值】桌面平台(Windows、Mac)建议选择 Landscape。 【特别说明】如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如: 640 × 360 + Portrait = 360 × 640。 【字段含义】 视频分辨率 【特别说明】如需使用竖屏分辨率,请指定 videoResolutionMode 为 Portrait,例如: 640 × 360 + Portrait = 360 × 640。 【推荐取值】 - 桌面平台(Win + Mac):建议选择 640 × 360 及以上分辨率,videoResolutionMode 选择 Landscape,即横屏分辨率。 视频编码参数。 该设置决定远端用户看到的画面质量。 视频宽高比模式 @info 视频宽高比模式 @note - 横屏模式下的分辨率: V2TXLiveVideoResolution640x360 + V2TXLiveVideoResolutionModeLandscape = 640 × 360 - 竖屏模式下的分辨率: V2TXLiveVideoResolution640x360 + V2TXLiveVideoResolutionModePortrait = 360 × 640 竖屏模式 横屏模式 @name 视频相关类型定义 @{ 视频分辨率 分辨率 1920*1080,码率范围:2500Kbps ~ 3000Kbps,帧率:15fps 分辨率 1280*720,码率范围:1000Kbps ~ 1800Kbps,帧率:15fps 分辨率 960*540,码率范围:800Kbps ~ 1500Kbps,帧率:15fps 分辨率 640*360,码率范围:500Kbps ~ 900Kbps,帧率:15fps 分辨率 480*270,码率范围:350Kbps ~ 550Kbps,帧率:15fps 分辨率 320*180,码率范围:250Kbps ~ 400Kbps,帧率:15fps 分辨率 640*480,码率范围:600Kbps ~ 900Kbps,帧率:15fps 分辨率 480*360,码率范围:400Kbps ~ 600Kbps,帧率:15fps 分辨率 320*240,码率范围:250Kbps ~ 375Kbps,帧率:15fps 分辨率 480*480,码率范围:350Kbps ~ 525Kbps,帧率:15fps 分辨率 270*270,码率范围:200Kbps ~ 300Kbps,帧率:15fps 分辨率 160*160,码率范围:100Kbps ~ 150Kbps,帧率:15fps 支持协议 支持协议: TRTC 支持协议: RTMP @} V2 错误码和警告码 录屏被系统中断 开始录屏失败,如果在移动设备出现,可能是权限被用户拒绝了 屏幕分享相关警告码 当前系统不支持屏幕分享 麦克风设备未授权,通常在移动设备出现,可能是权限被用户拒绝了 麦克风正在被占用中,例如移动设备正在通话时,打开麦克风会失败 麦克风相关的警告码 麦克风打开失败 摄像头设备未授权,通常在移动设备出现,可能是权限被用户拒绝了 摄像头正在被占用中,可尝试打开其他摄像头 摄像头相关的警告码 摄像头打开失败 当前视频播放出现卡顿 网络相关的警告码 网络状况不佳:上行带宽太小,上传数据受阻 找不到可用的 HEVC 解码器 连接断开 服务器无法处理您的请求 请求服务器超时 license 不合法,调用失败 当前 API 不支持调用 API 调用被拒绝 调用 API 时,传入的参数不合法 暂未归类的通用错误 没有错误 2.13 获取景音乐文件的总时长(单位:毫秒) 音乐文件路径,如果 path 为空,那么返回当前正在播放的 music 时长。 成功返回时长,失败返回-1 2.12 设置背景音乐的播放进度(单位:毫秒) 每个音乐都需要您指定具体的 ID,您可以通过该 ID 对音乐的开始、停止、音量等进行设置。 请尽量避免频繁地调用该接口,因为该接口可能会再次读写音乐文件,耗时稍高。 当配合进度条使用时,请在进度条拖动完毕的回调中调用,而避免在拖动过程中实时调用。 音乐 ID 单位: 毫秒 2.11 获取背景音乐当前的播放进度(单位:毫秒) 音乐 ID 成功返回当前播放时间,单位:毫秒,失败返回-1 2.10 调整背景音乐的变速效果 音乐 ID 速度,默认值是1.0f,范围是:[0.5 ~ 2] 之间的浮点数; 2.9 调整背景音乐的音调高低 音乐 ID 音调,默认值是0.0f,范围是:[-1 ~ 1] 之间的浮点数; 2.8 设置全局背景音乐的本地和远端音量的大小 音量大小,100为正常音量,取值范围为0 - 100;默认值:100 2.7 设置背景音乐的本地音量大小,即主播可以通过此接口设置主播自己本地的背景音乐的音量大小。 音乐 ID 音量大小,100为正常音量,取值范围为0 - 100;默认值:100 2.6 设置背景音乐的远端音量大小,即主播可以通过此接口设置远端观众能听到的背景音乐的音量大小。 音乐 ID 音量大小,100为正常音量,取值范围为0 - 100;默认值:100 2.5 恢复播放背景音乐 音乐 ID 2.4 暂停播放背景音乐 音乐 ID 2.3 停止播放背景音乐 音乐 ID 2.2 开始播放背景音乐 每个音乐都需要您指定具体的 ID,您可以通过该 ID 对音乐的开始、停止、音量等进行设置。 若您想同时播放多个音乐,请分配不同的 ID 进行播放。 如果使用同一个 ID 播放不同音乐,SDK 会先停止播放旧的音乐,再播放新的音乐。 音乐参数 @} @name 背景音乐特效函数 @{ 2.1 设置背景音乐的播放进度回调接口 音乐 ID具体参考 ITXMusicPlayObserver 中定义接口 1.2 设置麦克风采集人声的音量 音量大小,100为正常音量,取值范围为0 - 100;默认值:100 @name 人声相关特效函数 @{ 设置人声的混响效果(KTV、小房间、大会堂、低沉、洪亮...) 背景音乐已播放完毕 背景音乐的播放进度 背景音乐开始播放 磁性 洪亮 低沉 大会堂 小房间 KTV 关闭混响 【字段含义】音乐结束播放时间点,单位毫秒,0表示播放至文件结尾。 【字段含义】音乐开始播放时间点,单位毫秒 【字段含义】播放的是否为短音乐文件 【推荐取值】YES:需要重复播放的短音乐文件;NO:正常的音乐文件。默认值:NO 【字段含义】是否将音乐传到远端 【推荐取值】YES:音乐在本地播放的同时,会上行至云端,因此远端用户也能听到该音乐;NO:音乐不会上行至云端,因此只能在本地听到该音乐。默认值:NO 【字段含义】音乐循环播放的次数 【推荐取值】取值范围为0 - 任意正整数,默认值:0。0表示播放音乐一次;1表示播放音乐两次;以此类推 【字段含义】音乐文件的绝对路径 【字段含义】音乐 ID 【特殊说明】SDK 允许播放多路音乐,因此需要音乐 ID 进行标记,用于控制音乐的开始、停止、音量等 @defgroup ITXAudioEffectManager_csharp ITXAudioEffectManager 腾讯云视频通话功能音乐和人声设置接口 @{ 13.9 调用实验性接口 13.7 显示仪表盘 “仪表盘”是位于视频渲染控件之上的一个半透明的调试信息浮层,用于展示音视频信息和事件信息,便于对接和调试。 @param showType 0:不显示;1:显示精简版(仅显示音视频信息);2:显示完整版(包含音视频信息和事件信息)。 13.6 设置日志回调 13.5 设置本地日志的保存路径 通过该接口您可以更改 SDK 本地日志的默认存储路径,SDK 默认的本地日志的存储位置: - Windows 平台:在 C:/Users/[系统用户名]/AppData/Roaming/liteav/log,即 %appdata%/liteav/log 下。 - iOS 或 Mac 平台:在 sandbox Documents/log 下。 - Android 平台:在 /app私有目录/files/log/liteav/ 下。 @note 请务必在所有其他接口之前调用,并且保证您指定的目录是存在的,并且您的应用程序拥有对该目录的读写权限。 @param path 存储日志的路径 13.4 启用/禁用日志的本地压缩 开启压缩后,Log 存储体积明显减小,但需要腾讯云提供的 Python 脚本解压后才能阅读。 禁用压缩后,Log 采用明文存储,可以直接用记事本打开阅读,但占用空间较大。 @param enabled 指定是否启用,默认为启动状态 13.3 启用/禁用控制台日志打印 @param enabled 指定是否启用,默认:禁止状态。 13.2 设置 Log 输出级别 @param level 参见 {@link TRTCLogLevel},默认值:{@link TRTCLogLevelNone} 13.1 获取 SDK 版本信息 12.2 停止网络测速 11.2 使用 SEI 通道发送自定义消息给房间内所有用户 该接口可以让您借助 TRTC 的 SEI 通道,向当前房间里的其他用户广播自定义数据,已达到传输信令的目的。 视频帧的头部有一个叫做 SEI 的头部数据块,该接口的原理就是利用这个被称为 SEI 的头部数据块,将您要发送的自定义信令嵌入其中,使其同视频帧一并发送出去。 因此,与 {@link sendCustomCmdMsg} 相比,SEI 通道传输的信令具有更好的兼容性:信令可以伴随着视频帧一直传输到直播 CDN 上。 不过,由于视频帧头部的数据块不能太大,建议您使用该接口时,尽量将信令控制在几个字节的大小。 最常见的用法是把自定义的时间戳(timestamp)用本接口嵌入视频帧中,实现消息和画面的完美对齐(比如:教育场景下的课件和视频信号的对齐)。 房间中的其他用户可以通过 {@link ITRTCCloudCallback} 中的 onRecvSEIMsg 回调接收消息。 @param data 待发送的数据,最大支持 1KB(1000字节)的数据大小 @param repeatCount 发送数据次数 @return true:消息已通过限制,等待后续视频帧发送;false:消息被限制发送 @note 本接口有以下限制: 1. 数据在接口调用完后不会被即时发送出去,而是从下一帧视频帧开始带在视频帧中发送。 2. 发送消息到房间内所有用户,每秒最多能发送 30 条消息(与 sendCustomCmdMsg 共享限制)。 3. 每个包最大为 1KB,若发送大量数据,会导致视频码率增大,可能导致视频画质下降甚至卡顿(与 sendCustomCmdMsg 共享限制)。 4. 每个客户端每秒最多能发送总计8KB数据(与 sendCustomCmdMsg 共享限制)。 5. 若指定多次发送(repeatCount > 1),则数据会被带在后续的连续 repeatCount 个视频帧中发送出去,同样会导致视频码率增大。 6. 如果 repeatCount > 1,多次发送,接收消息 onRecvSEIMsg 回调也可能会收到多次相同的消息,需要去重。 11.1 使用 UDP 通道发送自定义消息给房间内所有用户 该接口可以让您借助 TRTC 的 UDP 通道,向当前房间里的其他用户广播自定义数据,以达到传输信令的目的。 房间中的其他用户可以通过 {@link ITRTCCloudCallback} 中的 onRecvCustomCmdMsg 回调接收消息。 @param cmdID 消息 ID,取值范围为1 - 10。 @param data 待发送的消息,单个消息的最大长度被限制为 1KB。 @param reliable 是否可靠发送,可靠发送可以获得更高的发送成功率,但可靠发送比不可靠发送会带来更大的接收延迟。 @param ordered 是否要求有序,即是否要求接收端的数据包顺序和发送端的数据包顺序一致(这会带来一定的接收延时)。 @return true:消息已经发出;false:消息发送失败。 @note 1. 发送消息到房间内所有用户(暂时不支持 Web/小程序端),每秒最多能发送30条消息。 2. 每个包最大为 1KB,超过则很有可能会被中间路由器或者服务器丢弃。 3. 每个客户端每秒最多能发送总计 8KB 数据。 4. 请将 reliable 和 ordered 同时设置为 true 或同时设置为 false,暂不支持交叉设置。 5. 强烈建议您将不同类型的消息设定为不同的 cmdID,这样可以在要求有序的情况下减小消息时延。 6. 目前仅支持主播身份。 10.17 获取可播放的音频数据 调用该接口之前,您需要先通过 {@link enableCustomAudioRendering} 开启音频自定义播放。 参数 {@link TRTCAudioFrame} 推荐下列填写方式(其他字段不需要填写): - sampleRate:采样率,必填,支持 16000、24000、32000、44100、48000。 - channel:声道数,必填,单声道请填1,双声道请填2,双声道时数据是交叉的。 - data:用于获取音频数据的 buffer。需要您根据一帧音频帧的帧长度分配好 data 的内存大小。获取的 PCM 数据支持 10ms 或 20ms 两种帧长,推荐使用 20ms 的帧长。 计算公式为:采样率 x 播放时长 x 声道数量 x 2(每个样点的字节数), 例如: 48000采样率、单声道、且播放时长为 20ms 的一帧音频帧的 buffer 大小为 48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节。 @param audioFrame 音频数据帧。 @note 1. 参数 audioFrame 中的 sampleRate、channel 需提前设置好,同时分配好所需读取帧长的 data 空间。 2. SDK 内部会根据 sampleRate 和 channel 自动填充 data 数据。 3. 建议由系统的音频播放线程直接驱动该函数的调用,在播放完一帧音频之后,即调用该接口获取下一帧可播放的音频数据。 10.16 开启音频自定义播放 如果您需要外接一些特定的音频设备,或者希望自己掌控音频的播放逻辑,您可以通过该接口启用音频自定义播放。 启用音频自定义播放后,SDK 将不再调用系统的音频接口播放数据,您需要通过 {@link getCustomAudioRenderingFrame} 获取 SDK 要播放的音频帧并自行播放。 @param enable 是否启用音频自定义播放,默认为关闭状态。 @note 需要您在进入房间前设置才能生效,暂不支持进入房间后再设置。 10.12 设置音频数据自定义回调 设置该回调之后,SDK 内部会把音频数据(PCM 格式)回调出来,包括: - {@link onCapturedRawAudioFrame}:本地麦克风采集到的原始音频数据回调 - {@link onLocalProcessedAudioFrame}:本地采集并经过音频模块前处理后的音频数据回调 - {@link onRemoteUserAudioFrame}:混音前的每一路远程用户的音频数据 - {@link onMixedPlayAudioFrame}:将各路音频混合之后并最终要由系统播放出的音频数据回调 @note 设置回调为空即代表停止自定义音频回调,反之,设置回调不为空则代表启动自定义音频回调。 10.8 生成自定义采集时的时间戳 本接口仅适用于自定义采集模式,用于解决音视频帧的采集时间(capture time)和投送时间(send time)不一致所导致的音画不同步问题。 当您通过 {@link sendCustomVideoData} 或 {@link sendCustomAudioData} 等接口进行自定义视频或音频采集时,请按照如下操作使用该接口: 1. 首先,在采集到一帧视频或音频帧时,通过调用本接口获得当时的 PTS 时间戳。 2. 之后可以将该视频或音频帧送入您使用的前处理模块(如第三方美颜组件,或第三方音效组件)。 3. 在真正调用 {@link sendCustomVideoData} 或 {@link sendCustomAudioData} 进行投送时,请将该帧在采集时记录的 PTS 时间戳赋值给 {@link TRTCVideoFrame} 或 {@link TRTCAudioFrame} 中的 timestamp 字段。 @return 时间戳(单位:ms) 10.7 设置推流时混入外部音频的推流音量和播放音量 @param publishVolume 设置的推流音量大小,范围0 - 100,-1表示不改变。 @param playoutVolume 设置的播放音量大小,范围0 - 100,-1表示不改变。 10.5 启用/关闭自定义音轨 开启后,您可以通过本接口向 SDK 混入一条自定义的音轨。通过两个布尔型参数,您可以控制该音轨是否要在远端和本地播放。 @param enablePublish 控制混入的音轨是否要在远端播放,默认值:false。 @param enablePlayout 控制混入的音轨是否要在本地播放,默认值:false。 @note 如果您指定参数 enablePublish 和 enablePlayout 均为 false,代表完全关闭您的自定义音轨。 10.4 向 SDK 投送自己采集的音频数据 参数 {@link TRTCAudioFrame} 推荐下列填写方式(其他字段不需要填写): - audioFormat:音频数据格式,仅支持 TRTCAudioFrameFormatPCM。 - data:音频帧 buffer。音频帧数据只支持 PCM 格式,支持[5ms ~ 100ms]帧长,推荐使用 20ms 帧长,长度计算方法:【48000采样率、单声道的帧长度:48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。 - sampleRate:采样率,支持:16000、24000、32000、44100、48000。 - channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。 - timestamp:时间戳,单位为毫秒(ms),请使用音频帧在采集时被记录下来的时间戳(可以在采集到一帧音频帧之后,通过调用 {@link generateCustomPTS} 获取时间戳)。 参考文档:[自定义采集和渲染](https://cloud.tencent.com/document/product/647/34066)。 @param frame 音频数据 @note 请您精准地按每帧时长的间隔调用本接口,数据投送间隔不均匀时极易触发声音卡顿。 10.3 启用音频自定义采集模式 开启该模式后,SDK 不在运行原有的音频采集流程,即不再继续从麦克风采集音频数据,而是只保留音频编码和发送能力。 您需要通过 {@link sendCustomAudioData} 不断地向 SDK 塞入自己采集的音频数据。 @param enable 是否启用,默认值:false。 @note 由于回声抵消(AEC)需要严格的控制声音采集和播放的时间,所以开启自定义音频采集后,AEC 能力可能会失效。 10.2 向 SDK 投送自己采集的视频帧 使用此接口可以向 SDK 投送自己采集的视频帧,SDK 会将视频帧进行编码并通过自身的网络模块传输出去。 参数 {@link TRTCVideoFrame} 推荐下列填写方式(其他字段不需要填写): - pixelFormat:Windows 和 Android 平台仅支持 {@link TRTCVideoPixelFormat_I420},iOS 和 Mac平台支持 {@link TRTCVideoPixelFormat_I420} 和 {@link TRTCVideoPixelFormat_BGRA32}。 - bufferType:推荐选择 {@link TRTCVideoBufferType_Buffer}。 - data:用于承载视频帧数据的 buffer。 - length:视频帧数据长度,如果 pixelFormat 设定为 I420 格式,length 可以按照如下公式计算:length = width × height × 3 / 2。 - width:视频图像的宽度,如 640 px。 - height:视频图像的高度,如 480 px。 - timestamp:时间戳,单位为毫秒(ms),请使用视频帧在采集时被记录下来的时间戳(可以在采集到一帧视频帧之后,通过调用 {@link generateCustomPTS} 获取时间戳)。 参考文档:[自定义采集和渲染](https://cloud.tencent.com/document/product/647/34066)。 @param streamType 用于指定视频流类型,{@link TRTCVideoStreamTypeBig}: 高清大画面;{@link TRTCVideoStreamTypeSub}: 辅路画面。 @param frame 视频数据,支持 I420 格式数据。 @note 1. 推荐您在采集到的一帧视频帧后,即调用 {@link generateCustomPTS} 接口获取该帧的 timestamp 数值,这样可以获得最佳的音画同步效果。 2. SDK 最终编码出的视频帧率并不是由您调用本接口的频率决定的,而是由您在 {@link setVideoEncoderParam} 中所设置的 FPS 决定的。 3. 请尽量保持本接口的调用间隔是均匀的,否则会导致编码器输出帧率不稳或者音画不同步等问题。 4. iOS 和 Mac平台目前支持传入 {@link TRTCVideoPixelFormat_I420} 或 {@link TRTCVideoPixelFormat_BGRA32} 格式的视频帧。 5. Windows 和 Android 平台目前仅支持传入 {@link TRTCVideoPixelFormat_I420} 格式的视频帧。 10.1 启用/关闭视频自定义采集模式 开启该模式后,SDK 不在运行原有的视频采集流程,即不再继续从摄像头采集数据和美颜,而是只保留视频编码和发送能力。 您需要通过 {@link sendCustomVideoData} 不断地向 SDK 塞入自己采集的视频画面。 @param streamType 用于指定视频流类型,{@link TRTCVideoStreamTypeBig}:高清大画面;{@link TRTCVideoStreamTypeSub}:辅路画面。 @param enable 是否启用,默认值:false。 9.14 将全部窗口从屏幕分享的包含列表中移除(该接口仅支持桌面系统) 该接口只有在 {@link TRTCScreenCaptureSourceInfo} 中的 type 指定为 {@link TRTCScreenCaptureSourceTypeWindow} 时生效。 即只有在分享窗口内容时,额外包含指定窗口的功能才生效。 9.13 将指定窗口从屏幕分享的包含列表中移除(该接口仅支持桌面系统) 该接口只有在 {@link TRTCScreenCaptureSourceInfo} 中的 type 指定为 {@link TRTCScreenCaptureSourceTypeWindow} 时生效。 即只有在分享窗口内容时,额外包含指定窗口的功能才生效。 @param windowID 希望被分享出去的窗口(Mac 平台:窗口 ID;Windows 平台:HWND) 9.12 将指定窗口加入屏幕分享的包含列表中(该接口仅支持桌面系统) 该接口只有在 {@link TRTCScreenCaptureSourceInfo} 中的 type 指定为 {@link TRTCScreenCaptureSourceTypeWindow} 时生效。即只有在分享窗口内容时,额外包含指定窗口的功能才生效。 您在 {@link startScreenCapture} 之前和之后调用均可。 @param windowID 希望被分享出去的窗口(Windows 平台下为窗口句柄: HWND) @note 通过该方法添加到包含列表中的窗口,会在退出房间后被 SDK 自动清除。 9.11 将所有窗口从屏幕分享的排除列表中移除(该接口仅支持桌面系统) 9.10 将指定窗口从屏幕分享的排除列表中移除(该接口仅支持桌面系统) @param windowID 要排除的窗口 id。 9.9 将指定窗口加入屏幕分享的排除列表中(该接口仅支持桌面系统) 加入排除列表中的窗口不会被分享出去,常见的用法是将某个应用的窗口加入到排除列表中以避免隐私问题。 支持启动屏幕分享前设置过滤窗口,也支持屏幕分享过程中动态添加过滤窗口。 @param windowID 不希望分享出去的窗口 @note 1. 该接口只有在 {@link TRTCScreenCaptureSourceInfo} 中的 type 指定为 {@link TRTCScreenCaptureSourceTypeScreen} 时生效,即只有在分享整个屏幕内容时,排除指定窗口的功能才生效。 2. 使用该接口添加到排除列表中的窗口会在退出房间后被 SDK 自动清除。 3. Mac 平台下请传入窗口 ID(即 CGWindowID),您可以通过 {@link TRTCScreenCaptureSourceInfo} 中的 sourceId 成员获得。 9.8 设置屏幕分享时的混音音量大小(该接口仅支持桌面系统) 这个数值越高,屏幕分享音量的占比就越高,麦克风音量占比就越小,所以不推荐设置得太大,否则麦克风的声音就被压制了。 @param volume 设置的混音音量大小,范围0 - 100。 9.7 设置屏幕分享(即辅路)的视频编码参数(桌面系统和移动系统均已支持) 该接口可以设定远端用户所看到的屏幕分享(即辅路)的画面质量,同时也能决定云端录制出的视频文件中屏幕分享的画面质量。 请注意如下两个接口的差异: - {@link setVideoEncoderParam} 用于设置主路画面({@link TRTCVideoStreamTypeBig},一般用于摄像头)的视频编码参数。 - {@link setSubStreamEncoderParam} 用于设置辅路画面({@link TRTCVideoStreamTypeSub},一般用于屏幕分享)的视频编码参数。 @param param 辅流编码参数,详情请参见 {@link TRTCVideoEncParam}。 @note 即使您使用主路传输屏幕分享(在调用 startScreenCapture 时设置 type = TRTCVideoStreamTypeBig),依然要使用 {@link setSubStreamEncoderParam} 设定屏幕分享的编码参数,而不要使用 {@link setVideoEncoderParam} 。 9.6 选取要分享的屏幕或窗口(该接口仅支持桌面系统) 当您通过 getScreenCaptureSources 获取到可以分享的屏幕和窗口之后,您可以调用该接口选定期望分享的目标屏幕或目标窗口。 在屏幕分享的过程中,您也可以随时调用该接口以切换分享目标。 支持如下四种情况: - 共享整个屏幕:sourceInfoList 中 type 为 Screen 的 source,captureRect 设为 { 0, 0, 0, 0 } - 共享指定区域:sourceInfoList 中 type 为 Screen 的 source,captureRect 设为非 nullptr,例如 { 100, 100, 300, 300 } - 共享整个窗口:sourceInfoList 中 type 为 Window 的 source,captureRect 设为 { 0, 0, 0, 0 } - 共享窗口区域:sourceInfoList 中 type 为 Window 的 source,captureRect 设为非 nullptr,例如 { 100, 100, 300, 300 } @param source 指定分享源 @param captureRect 指定捕获的区域 @param property 指定屏幕分享目标的属性,包括捕获鼠标,高亮捕获窗口等,详情参考TRTCScreenCaptureProperty 定义 @note 设置高亮边框颜色、宽度参数在 Mac 平台不生效。 9.5 枚举可分享的屏幕和窗口(该接口仅支持桌面系统) 当您在对接桌面端系统的屏幕分享功能时,一般都需要展示一个选择分享目标的界面,这样用户能够使用这个界面选择是分享整个屏幕还是某个窗口。 通过本接口,您就可以查询到当前系统中可用于分享的窗口的 ID、名称以及缩略图。我们在 Demo 中提供了一份默认的界面实现供您参考。 @param thumbnailSize 指定要获取的窗口缩略图大小,缩略图可用于绘制在窗口选择界面上。 @param iconSize 指定要获取的窗口图标大小。 @return 窗口列表包括屏幕。 @note 1. 返回的列表中包含屏幕和应用窗口,屏幕是列表中的第一个元素。如果用户有多个显示器,那么每个显示器都是一个分享目标。 2. 请不要使用 delete ITRTCScreenCaptureSourceList* 删除 SourceList,这很容易导致崩溃,请使用 ITRTCScreenCaptureSourceList 中的 release 方法释放列表。 9.4 恢复屏幕分享 9.3 暂停屏幕分享 9.2 停止屏幕分享 9.1 开始桌面端屏幕分享(该接口仅支持桌面系统) 该接口可以抓取整个 Mac OS 系统的屏幕内容,或抓取您指定的某个应用的窗口内容,并将其分享给同房间中的其他用户。 @param view 渲染控件所在的父控件,可以设置为空值,表示不显示屏幕分享的预览效果。 @param streamType 屏幕分享使用的线路,可以设置为主路(TRTCVideoStreamTypeBig)或者辅路(TRTCVideoStreamTypeSub),推荐使用辅路。 @param encParam 屏幕分享的画面编码参数,SDK 会优先使用您通过此接口设置的编码参数: - 如果您设置 encParam 为 nil,且您已通过 setSubStreamEncoderParam 设置过辅路视频编码参数,SDK 将使用您设置过的辅路编码参数进行屏幕分享。 - 如果您设置 encParam 为 nil,且您未通过 setSubStreamEncoderParam 设置过辅路视频编码参数,SDK 将自动选择一个最佳的编码参数进行屏幕分享。 @note 1. 同一个用户同时最多只能发布一路主路({@link TRTCVideoStreamTypeBig})画面和一路辅路({@link TRTCVideoStreamTypeSub})画面。 2. 默认情况下,屏幕分享使用辅路画面。如果使用主路做屏幕分享,您需要提前停止摄像头采集({@link stopLocalPreview})以避免相互冲突。 3. 同一个房间中同时只能有一个用户使用辅路做屏幕分享,也就是说,同一个房间中同时只允许一个用户开启辅路。 4. 当房间中已经有其他用户在使用辅路分享屏幕时,此时调用该接口会收到来自 {@link ITRTCCloudCallback} 的 onError(ERR_SERVER_CENTER_ANOTHER_USER_PUSH_SUB_VIDEO) 回调。 8.4 设置系统声音的采集音量 @param volume 设置的音量大小,范围是:[0 ~ 150],默认值为100。 8.3 停止系统声音采集(仅适用于桌面系统和 Android 系统) 8.2 开启系统声音采集(仅适用于桌面系统) 该接口会从电脑的声卡中采集音频数据,并将其混入到 SDK 当前的音频数据流中,从而使房间中的其他用户也能听到主播的电脑所播放出的声音。 在线教育场景中,老师可以使用此功能让 SDK 采集教学影片中的声音,并广播给同房间中的学生。 音乐直播场景中,主播可以使用此功能让 SDK 采集音乐播放器中的音乐,从而为自己的直播间增加背景音乐。 @param deviceName 您可以指定该参数为空置(nullptr),代表让 SDK 采集整个系统的声音。 @note 在 Windows 平台下,您也可以将参数 deviceName 设置为某个应用程序的可执行文件(如 QQMuisc.exe)的绝对路径,此时 SDK 只会采集该应用程序的声音(仅支持 32 位版本的 SDK)。 您也可以指定该参数为某个扬声器设备的名称来采集特定扬声器声音(通过接口 {@link TXDeviceManager} 中的 getDevicesList 接口,可以获取类型为 {@link TXMediaDeviceTypeSpeaker} 的扬声器设备)。 8.1 获取音效管理类(TXAudioEffectManager) TXAudioEffectManager 是音效管理接口,您可以通过该接口实现如下功能: - 背景音乐:支持在线音乐和本地音乐,支持变速、变调等特效、支持原生和伴奏并播放和循环播放。 - 耳机耳返:麦克风捕捉的声音实时通过耳机播放,常用于音乐直播。 - 混响效果:KTV、小房间、大会堂、低沉、洪亮...。 - 变声特效:萝莉、大叔、重金属...。 - 短音效:鼓掌声、欢笑声等简短的音效文件(对于小于10秒的文件,请将 isShortFile 参数设置为 true)。 7.2 添加水印 水印的位置是通过 xOffset, yOffset, fWidthRatio 来指定的。 - xOffset:水印的坐标,取值范围为0 - 1的浮点数。 - yOffset:水印的坐标,取值范围为0 - 1的浮点数。 - fWidthRatio:水印的大小比例,取值范围为0 - 1的浮点数。 @param streamType 要设置水印的流类型(TRTCVideoStreamTypeBig、TRTCVideoStreamTypeSub)。 @param srcData 水印图片源数据(传 nullptr 表示去掉水印)。 @param srcType 水印图片源数据类型。 @param nWidth 水印图片像素宽度(源数据为文件路径时忽略该参数)。 @param nHeight 水印图片像素高度(源数据为文件路径时忽略该参数)。 @param xOffset 水印显示的左上角 x 轴偏移。 @param yOffset 水印显示的左上角 y 轴偏移。 @param fWidthRatio 水印显示的宽度占画面宽度比例(水印按该参数等比例缩放显示)。 @param isVisibleOnLocalPreview true:本地预览显示水印;false:本地预览不显示水印,仅在win/mac下生效。 @note 本接口只支持给主路视频添加图片水印。 7.1 设置美颜、美白、红润等特效 SDK 内部集成了两套风格不同的磨皮算法: -“光滑”:算法比较激进,磨皮效果比较明显,适用于秀场直播。 -“自然”:算法更多地保留了面部细节,磨皮效果更加自然,适用于绝大多数直播场景。 @param style 磨皮算法,有“光滑”和“自然”两种算法。 @param beautyLevel 美颜级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。 @param whitenessLevel 美白级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。 @param ruddinessLevel 红润级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。 6.1 获取设备管理类(TXDeviceManager) 5.22 设置指定用户所发出声音的可被接收范围 设置该范围大小之后,该指定用户的声音将在该范围内可被听见,超出该范围将被衰减为 0。 @param userId 指定远端用户的 ID。 @param range 声音最大可被接收范围。 5.21 设置 3D 音效中远端用户坐标信息 更新远端用户在世界坐标系中的位置,SDK 会根据自身和远端用户之间的相对位置,进而渲染出空间音效。注意参数为长度等于 3 的数组。 @param userId 指定远端用户的 ID。 @param position 该远端用户在世界坐标系中的坐标,三个值依次表示前、右、上坐标值。 @note 请适当限制调用频率,推荐同一远端用户两次坐标设置至少间隔 100ms。 5.20 设置 3D 音效中自身坐标及朝向信息 更新自身在世界坐标系中的位置和朝向, SDK 会根据该方法参数计算自身和远端用户之间的相对位置,进而渲染出空间音效。注意各参数应分别传入长度为 3 的数组。 @param position 自身在世界坐标系中的坐标,三个值依次表示前、右、上坐标值。 @param axisForward 自身坐标系前轴在世界坐标系中的单位向量,三个值依次表示前、右、上坐标值。 @param axisRight 自身坐标系右轴在世界坐标系中的单位向量,三个值依次表示前、右、上坐标值。 @param axisUp 自身坐标系上轴在世界坐标系中的单位向量,三个值依次表示前、右、上坐标值。 @note 请适当限制调用频率,推荐两次坐标设置至少间隔 100ms。 5.19 启用 3D 音效 启用 3D 音效。注意需使用流畅音质 {@link TRTCAudioQualitySpeech} 或默认音质 {@link TRTCAudioQualityDefault}。 @param enabled 是否启用 3D 音效,默认为关闭状态。 5.18 设置远端音频流智能并发播放策略 设置远端音频流智能并发播放策略,适用于上麦人数比较多的场景。 @param params 音频并发参数,请参见 {@link TRTCAudioParallelParams}。 5.16 停止本地媒体录制 如果录制任务在退出房间前尚未通过本接口停止,则退出房间后录音任务会自动被停止。 5.15 开启本地媒体录制 开启后把直播过程中的音视和视频内容录制到本地的一个文件中。 @param params 录制参数,请参见 {@link TRTCLocalRecordingParams}。 5.14 停止录音 如果录制任务在退出房间前尚未通过本接口停止,则退出房间后录音任务会自动被停止。 5.13 开始录音 当您调用该接口后, SDK 会将本地和远端的所有音频(包括本地音频,远端音频,背景音乐和音效等)混合并录制到一个本地文件中。 该接口在进入房间前后调用均可生效,如果录制任务在退出房间前尚未通过 stopAudioRecording 停止,则退出房间后录制任务会自动被停止。 @param param 录音参数,请参见 {@link TRTCAudioRecordingParams}。 @return 0:成功;-1:录音已开始;-2:文件或目录创建失败;-3:后缀指定的音频格式不支持。 5.12 启用音量大小提示 开启此功能后,SDK 会在 {@link ITRTCCloudCallback} 中的 {@link onUserVoiceVolume} 回调中反馈本地推流用户和远端用户音频的音量大小以及远端用户的最大音量。 @param interval 设置 onUserVoiceVolume 回调的触发间隔,单位为 ms,最小间隔为 100ms,如果小于等于 0 则会关闭回调,建议设置为300ms。 @param enable_vad true:打开本地人声检测 ;false:关闭本地人声检测。 @note 如需打开此功能,请在 startLocalAudio 之前调用才可以生效。 5.11 获取远端音频的播放音量 5.10 设定远端音频的播放音量 该接口会控制 SDK 最终交给系统播放的声音音量,调节效果会影响到本地音频录制文件的音量大小,但不会影响到耳返的音量大小。 @param volume 音量大小,取值范围为0 - 100,默认值:100。 @note 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。 5.9 获取本地音频的采集音量 5.8 设定本地音频的采集音量 @param volume 音量大小,取值范围为0 - 100;默认值:100。 @note 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。 5.7 设定某一个远端用户的声音播放音量 您可以通过 setRemoteAudioVolume(userId, 0) 将某一个远端用户的声音静音。 @param userId 用于指定远端用户的 ID。 @param volume 音量大小,取值范围为0 - 100,默认值:100。 @note 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。 5.5 暂停/恢复播放所有远端用户的音频流 当您静音所有用户的远端音频时,SDK 会停止播放所有来自远端的音频流,同时也会停止拉取所有用户的音频数据。 @param mute true:静音;false:取消静音。 @note 在进入房间(enterRoom)之前或之后调用本接口均生效,静音状态在退出房间(exitRoom) 之后会被重置为 false。 5.4 暂停/恢复播放远端的音频流 当您静音某用户的远端音频时,SDK 会停止播放指定用户的声音,同时也会停止拉取该用户的音频数据数据。 @param userId 用于指定远端用户的 ID。 @param mute true:静音;false:取消静音。 @note 在进入房间(enterRoom)之前或之后调用本接口均生效,静音状态在退出房间(exitRoom) 之后会被重置为 false。 5.3 暂停/恢复发布本地的音频流 当您暂停发布本地音频流之后,房间中的其他他用户会收到 {@link onUserAudioAvailable}(userId, false) 的通知。 当您恢复发布本地音频流之后,房间中的其他他用户会收到 {@link onUserAudioAvailable}(userId, true) 的通知。 与 {@link stopLocalAudio} 的不同之处在于,muteLocalAudio(true) 并不会释放麦克风权限,而是继续发送码率极低的静音包。 这对于需要云端录制的场景非常适用,因为 MP4 等格式的视频文件,对于音频数据的连续性要求很高,使用 {@link stopLocalAudio} 会导致录制出的 MP4 文件不易播放。 因此在对录制文件的质量要求较高的场景中,建议选择 muteLocalAudio 而不建议使用 stopLocalAudio。 @param mute true:静音;false:恢复。 5.2 停止本地音频的采集和发布 停止本地音频的采集和发布后,房间中的其他用户会收到 {@link onUserAudioAvailable}(userId, false) 的通知。 5.1 开启本地音频的采集和发布 SDK 默认不开启麦克风,当用户需要发布本地音频时,需要调用该接口开启麦克风采集,并将音频编码并发布到当前的房间中。 开启本地音频的采集和发布后,房间中的其他用户会收到 {@link onUserAudioAvailable}(userId, true) 的通知。 @param quality 声音音质 - {@link TRTCAudioQualitySpeech},流畅:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话。 - {@link TRTCAudioQualityDefault},默认:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。 - {@link TRTCAudioQualityMusic},高音质:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,比如在线K歌、音乐直播等。 @note 该函数会检查麦克风的使用权限,如果当前 App 没有麦克风权限,SDK 会自动向用户申请麦克风使用权限。 4.22 视频画面截图 您可以通过本接口截取本地的视频画面,远端用户的主路画面以及远端用户的辅路(屏幕分享)画面。 @param userId 用户 ID,如指定空置表示截取本地的视频画面。 @param streamType 视频流类型,可选择截取主路画面({@link TRTCVideoStreamTypeBig},常用于摄像头)或辅路画面({@link TRTCVideoStreamTypeSub},常用于屏幕分享)。 @param sourceType 画面来源,可选择截取视频流画面({@link TRTCSnapshotSourceTypeStream})或视频渲染画面({@link TRTCSnapshotSourceTypeView}),前者一般更清晰。 @note Windows 平台目前仅支持截取 {@link TRTCSnapshotSourceTypeStream} 来源的视频画面。 4.21 切换指定远端用户的大小画面 当房间中某个主播开启了双路编码之后,房间中其他用户通过 {@link startRemoteView} 订阅到的画面默认会是【高清大画面】。 您可以通过此接口选定希望订阅的画面是大画面还是小画面,该接口在 {@link startRemoteView} 之前和之后调用均可生效。 @param userId 指定远端用户的 ID。 @param streamType 视频流类型,即选择看大画面还是小画面,默认为大画面。 @note 此功能需要目标用户已经通过 {@link enableEncSmallVideoStream} 提前开启了双路编码模式,否则此调用无实际效果。 4.20 开启大小画面双路编码模式 开启双路编码模式后,当前用户的编码器会同时输出【高清大画面】和【低清小画面】两路视频流(但只有一路音频流)。 如此以来,房间中的其他用户就可以根据自身的网络情况或屏幕大小选择订阅【高清大画面】或是【低清小画面】。 @param enable 是否开启小画面编码,默认值:false。 @param smallVideoEncParam 小流的视频参数。 @return 0:成功;-1:当前大画面已被设置为较低画质,开启双路编码已无必要。 @note 双路编码开启后,会消耗更多的 CPU 和 网络带宽,所以 Mac、Windows 或者高性能 Pad 可以考虑开启,不建议手机端开启。 4.18 设置编码器输出的画面镜像模式 该设置不影响本地画面的镜像模式,但会影响房间中其他用户所观看到(以及云端录制文件)的镜像模式。 @param mirror 是否开启远端镜像,true:开启远端画面镜像;false:关闭远端画面镜像,默认值:false。 4.17 设置视频编码器输出的画面方向 该设置不影响本地画面的预览方向,但会影响房间中其他用户所观看到(以及云端录制文件)的画面方向。 当用户将手机或 Pad 上下颠倒时,由于摄像头的采集方向没有变,所以房间中其他用户所看到的画面会变成上下颠倒的, 在这种情况下,您可以通过调用该接口将 SDK 编码出的画面方向旋转180度,如此一来,房间中其他用户所看到的画面可保持正常的方向。 如果您希望实现上述这种友好的交互体验,我们更推荐您直接调用 {@link setGSensorMode} 实现更加智能的方向适配,无需您手动调用本接口。 @param rotation 目前支持 0、90、180、270 两个旋转角度,默认值:TRTCVideoRotation_0,即不旋转。 4.16 设置远端画面的渲染模式 可设置的参数包括有:画面的旋转角度、填充模式以及左右镜像等。 @param userId 指定远端用户的 ID。 @param streamType 可以设置为主路画面({@link TRTCVideoStreamTypeBig})或辅路画面({@link TRTCVideoStreamTypeSub})。 @param params 画面渲染参数,详情请参见 {@link TRTCRenderParams}。 4.15 设置本地画面的渲染参数 可设置的参数包括有:画面的旋转角度、填充模式以及左右镜像等。 @param params 画面渲染参数,详情请参见 {@link TRTCRenderParams}。 4.14 设置网络质量控制的相关参数 该设置决定在差网络环境下的质量调控策略,如“画质优先”或“流畅优先”等策略。 @param param 用于设置网络质量控制的相关参数,详情请参见 {@link TRTCNetworkQosParam}。 4.13 设置视频编码器的编码参数 该设置能够决定远端用户看到的画面质量,同时也能决定云端录制出的视频文件的画面质量。 @param param 用于设置视频编码器的相关参数,详情请参见 {@link TRTCVideoEncParam}。 4.12 暂停/恢复订阅所有远端用户的视频流 该接口仅暂停/恢复接收所有用户的视频流,但并不释放显示资源,视频画面会被冻屏在接口调用时的最后一帧。 @param mute 是否暂停接收。 @note 该接口支持您在进入房间(enterRoom)前调用,暂停状态会在退出房间(exitRoom)在之后会被重置。 4.11 暂停/恢复订阅远端用户的视频流 该接口仅暂停/恢复接收指定用户的视频流,但并不释放显示资源,视频画面会被冻屏在接口调用时的最后一帧。 @param userId 指定远端用户的 ID。 @param streamType 要暂停/恢复的视频流类型。 - 高清大画面:{@link TRTCVideoStreamTypeBig}。 - 低清小画面:{@link TRTCVideoStreamTypeSmall}。 - 辅流画面(常用于屏幕分享):{@link TRTCVideoStreamTypeSub}。 @param mute 是否暂停接收。 @note 该接口支持您在进入房间(enterRoom)前调用,暂停状态会在退出房间(exitRoom)在之后会被重置。 4.10 停止订阅所有远端用户的视频流,并释放全部渲染资源 调用此接口会让 SDK 停止接收所有来自远端的视频流,并释放全部的解码和渲染资源。 @note 如果当前有正在显示的辅路画面(屏幕分享)也会一并被停止。 4.9 停止订阅远端用户的视频流,并释放渲染控件 调用此接口会让 SDK 停止接收该用户的视频流,并释放该路视频流的解码和渲染资源。 @param userId 指定远端用户的 ID。 @param streamType 指定要观看 userId 的视频流类型。 - 高清大画面:{@link TRTCVideoStreamTypeBig}。 - 低清小画面:{@link TRTCVideoStreamTypeSmall}。 - 辅流画面(常用于屏幕分享):{@link TRTCVideoStreamTypeSub}。 4.8 更新远端用户的视频渲染控件 该接口可用于更新远端视频画面的渲染控件,常被用于切换显示区域的交互场景中。 @param view 承载视频画面的控件。 @param streamType 要设置预览窗口的流类型(仅支持 {@link TRTCVideoStreamTypeBig} 和 {@link TRTCVideoStreamTypeSub})。 @param userId 指定远端用户的 ID。 4.7 订阅远端用户的视频流,并绑定视频渲染控件 调用该接口可以让 SDK 拉取指定 userid 的视频流,并渲染到参数 view 指定的渲染控件上。您可以通过 {@link setRemoteRenderParams} 设置画面的显示模式。 - 如果您已经知道房间中有视频流的用户的 userid,可以直接调用 startRemoteView 订阅该用户的画面。 - 如果您不知道房间中有哪些用户在发布视频,您可以在 enterRoom 之后等待来自 {@link onUserVideoAvailable} 的通知。 调用本接口只是启动视频流的拉取,此时画面还需要加载和缓冲,当缓冲完毕后您会收到来自 {@link onFirstVideoFrame} 的通知。 @param userId 指定远端用户的 ID。 @param streamType 指定要观看 userId 的视频流类型。 - 高清大画面:{@link TRTCVideoStreamTypeBig}。 - 低清小画面:{@link TRTCVideoStreamTypeSmall}(需要远端用户通过 {@link enableEncSmallVideoStream} 开启双路编码后才有效果)。 - 辅流画面(常用于屏幕分享):{@link TRTCVideoStreamTypeSub}。 @param view 用于承载视频画面的渲染控件。 @note 注意几点规则需要您关注: 1. SDK 支持同时观看某 userid 的大画面和辅路画面,或者同时观看某 userid 的小画面和辅路画面,但不支持同时观看大画面和小画面。 2. 只有当指定的 userid 通过 {@link enableEncSmallVideoStream} 开启双路编码后,才能观看该用户的小画面。 3. 当指定的 userid 的小画面不存在时,SDK 默认切换到该用户的大画面。 4.6 设置本地画面被暂停期间的替代图片 当您调用 muteLocalVideo(true) 暂停本地画面时,您可以通过调用本接口设置一张替代图片,设置后,房间中的其他用户会看到这张替代图片,而不是黑屏画面。 @param image 设置替代图片,空值代表在 muteLocalVideo 之后不再发送视频流数据,默认值为空。 @param fps 设置替代图片帧率,最小值为5,最大值为10,默认5。 4.5 暂停/恢复发布本地的视频流 该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己画面。 该接口在指定 TRTCVideoStreamTypeBig 时等效于 start/stopLocalPreview 这两个接口,但具有更好的响应速度。 因为 start/stopLocalPreview 需要打开和关闭摄像头,而打开和关闭摄像头都是硬件设备相关的操作,非常耗时。 相比之下,muteLocalVideo 只需要在软件层面对数据流进行暂停或者放行即可,因此效率更高,也更适合需要频繁打开关闭的场景。 当暂停/恢复发布指定 TRTCVideoStreamTypeBig 后,同一房间中的其他用户将会收到 onUserVideoAvailable 回调通知。 当暂停/恢复发布指定 TRTCVideoStreamTypeSub 后,同一房间中的其他用户将会收到 onUserSubStreamAvailable 回调通知。 @param streamType 要暂停/恢复的视频流类型(仅支持 {@link TRTCVideoStreamTypeBig} 和 {@link TRTCVideoStreamTypeSub})。 @param mute true:暂停;false:恢复。 4.4 停止摄像头预览 4.3 更新本地摄像头的预览画面 4.1 开启本地摄像头的预览画面(移动端) 在 enterRoom 之前调用此函数,SDK 只会开启摄像头,并一直等到您调用 enterRoom 之后才开始推流。 在 enterRoom 之后调用此函数,SDK 会开启摄像头并自动开始视频推流。当开始渲染首帧摄像头画面时,您会收到 {@link ITRTCCloudCallback} 中的 onCameraDidReady 回调通知。 @param frontCamera true:前置摄像头;false:后置摄像头。 @param view 承载视频画面的控件。 @note 如果希望开播前预览摄像头画面并通过 BeautyManager 调节美颜参数,您可以: - 方案一:在调用 enterRoom 之前调用 startLocalPreview。 - 方案二:在调用 enterRoom 之后调用 startLocalPreview + muteLocalVideo(true)。 4.2 开启本地摄像头的预览画面(桌面端) 在调用该接口之前,您可以先调用 setCurrentCameraDevice 选择使用 Mac 自带摄像头或外接摄像头。 在 enterRoom 之前调用此函数,SDK 只会开启摄像头,并一直等到您调用 enterRoom 之后才开始推流。 在 enterRoom 之后调用此函数,SDK 会开启摄像头并自动开始视频推流。 当开始渲染首帧摄像头画面时,您会收到 {@link TRTCCloudDelegate} 中的 onCameraDidReady 回调通知。 @param view 承载视频画面的控件。 @note 如果希望开播前预览摄像头画面并通过 BeautyManager 调节美颜参数,您可以: - 方案一:在调用 enterRoom 之前调用 startLocalPreview。 - 方案二:在调用 enterRoom 之后调用 startLocalPreview + muteLocalVideo(true)。 3.8 停止发布媒体流 该接口会向 TRTC 服务器发送指令,停止通过 {@link startPublishMediaStream} 启动的媒体流 @param taskId 通过回调 {@link onStartPublishMediaStream} 带给您后台启动的任务标识(即 taskId) @note 1. 若您的业务后台并没有保存该 taskId,在您的主播异常退房重进后,如果您需要重新获取 taskId,您可以再次调用 {@link startPublishMediaStream} 启动任务。此时 TRTC 后台会返回任务启动失败,同时带给您上一次启动的 taskId 2. 若 taskId 填空字符串,将会停止所有通过 {@link startPublishMediaStream} 启动的媒体流,如果您只启动了一个媒体流或者想停止所有启动的媒体流,推荐使用这种方式。 3.7 更新发布媒体流 该接口会向 TRTC 服务器发送指令,更新通过 {@link startPublishMediaStream} 启动的媒体流 @param taskId 通过回调 {@link onStartPublishMediaStream} 带给您后台启动的任务标识(即 taskId) @param target 媒体流发布的目标地址,具体配置参考 {@link TRTCPublishTarget}。支持转推/转码到腾讯或者第三方 CDN,也支持转码回推到 TRTC 房间中。 @param params 媒体流编码输出参数,具体配置参考 {@link TRTCStreamEncoderParam}。转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码输出参数。在转推时,为了更好的转推稳定性和 CDN 兼容性,也建议您进行配置。 @param config 媒体流转码配置参数。具体配置参考 {@link TRTCStreamMixingConfig}。转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码配置参数。转推模式下则无效。 @note 1. 您可以通过本接口来更新发布的 CDN URL(支持增删,最多同时 10 个),但您使用时需要注意不要多个任务同时往相同的 URL 地址推送,以免引起异常推流状态。 2. 您可以通过 taskId 来更新调整转推/转码任务。例如在 pk 业务中,您可以先通过 {@link startPublishMediaStream} 发起转推,接着在主播发起 pk 时,通过 taskId 和本接口将转推更新为转码任务。此时,CDN 播放将连续并且不会发生断流(您需要保持媒体流编码输出参数 param 一致)。 3. 同一个任务不支持纯音频、音视频、纯视频之间的切换。 3.6 开始发布媒体流 该接口会向 TRTC 服务器发送指令,要求其将当前用户的音视频流转推/转码到直播 CDN 或者回推到 TRTC 房间中您可以通过 {@link TRTCPublishTarget} 配置中的 {@link TRTCPublishMode} 指定具体的发布模式 @param target 媒体流发布的目标地址,具体配置参考 {@link TRTCPublishTarget}。支持转推/转码到腾讯或者第三方 CDN,也支持转码回推到 TRTC 房间中。 @param params 媒体流编码输出参数,具体配置参考 {@link TRTCStreamEncoderParam}。转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码输出参数。在转推时,为了更好的转推稳定性和 CDN 兼容性,也建议您进行配置。 @param config 媒体流转码配置参数。具体配置参考 {@link TRTCStreamMixingConfig}。转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码配置参数。转推模式下则无效。 @note 1. SDK 会通过回调 {@link onStartPublishMediaStream} 带给您后台启动的任务标识(即 taskId)。 2. 同一个任务(TRTCPublishMode 与 TRTCPublishCdnUrl 均相同)仅支持启动一次。若您后续需要更新或者停止该项任务,需要记录并使用返回的 taskId,通过 {@link updatePublishMediaStream} 或者 {@link stopPublishMediaStream} 来操作。 3. target 支持同时配置多个 CDN URL(最多同时 10 个)。若您的同一个转推/转码任务需要发布至多路 CDN,则仅需要在 target 中配置多个 CDN URL 即可。同一个转码任务即使有多个转推地址,对应的转码计费仍只收取一份。 4. 使用时需要注意不要多个任务同时往相同的 URL 地址推送,以免引起异常推流状态。一种推荐的方案是 URL 中使用 “sdkappid_roomid_userid_main” 作为区分标识,这中命名方式容易辨认且不会在您的多个应用中发生冲突。 3.5 设置云端混流的排版布局和转码参数 在一个直播间中可能同时会有多个主播发布自己的音视频流,但对于直播 CDN 上的观众而言,只需要观看一条 HTTP-FLV 或 HLS 格式的视频流即可。 当您调用本接口函数时,SDK 会向腾讯云的 TRTC 混流服务器发送一条指令,混流服务器会将房间里的多路音视频流混合成一路。 您可以通过 {@link TRTCTranscodingConfig} 参数来调整每一路画面的排版布局,也可以设置混合后的音视频流的各项编码参数。 参考文档:[云端混流转码](https://cloud.tencent.com/document/product/647/16827)。 ![](https://qcloudimg.tencent-cloud.cn/raw/c9e87b2e5799db9da4f50af3c0f2e7a9.png) @param config 如果 config 不为空,则开启云端混流,如果 config 为空则停止云端混流。详情请参见 {@link TRTCTranscodingConfig} 。 @note 关于云端混流的注意事项: - 混流转码为收费功能,调用接口将产生云端混流转码费用,详见 [云端混流转码计费说明](https://cloud.tencent.com/document/product/647/49446) 。 - 调用该接口的用户,如果没设定 config 参数中的 streamId 字段,TRTC 会将房间中的多路画面混合到当前用户所对应的音视频流上,即 A + B => A。 - 调用该接口的用户,如果设定了 config 参数中的 streamId 字段,TRTC 会将房间中的多路画面混合到您指定的 streamId 上,即 A + B => streamId。 - 请注意,若您还在房间中且不再需要混流,请务必再次调用本接口并将 config 设置为空以进行取消,不及时取消混流可能会引起不必要的计费损失。 - 请放心,当您退房时 TRTC 会自动取消混流状态。 3.4 停止向非腾讯云 CDN 上发布音视频流 3.3 开始向非腾讯云 CDN 上发布音视频流 该接口跟 startPublishing 功能类似,不同之处在于,startPublishing 仅支持向腾讯云的 CDN 发布,而本接口支持向非腾讯云的直播 CDN 上转推音视频流。 @param param CDN 转推参数,详情请参见 {@link TRTCPublishCDNParam} @note - 使用 startPublishing 接口向腾讯云的直播 CDN 上发布音视频流不会收取额外费用。 - 使用 startPublishCDNStream 接口向非腾讯云的直播 CDN 上发布音视频流,需要收取额外的转推带宽费用。 3.2 停止向腾讯云直播 CDN 上发布音视频流 3.1 开始向腾讯云直播 CDN 上发布音视频流 该接口会向 TRTC 服务器发送指令,要求其将当前用户的音视频流旁路到直播 CDN 上。您可以通过参数 streamId 设定直播流的 StreamId,从而可以指定该用户的音视频流对应在直播 CDN 上的播放地址。 例如:您可以通过该接口将当前用户的直播流 ID 指定为 user_stream_001,那么该用户音视频流对应的 CDN 播放地址为: “http://yourdomain/live/user_stream_001.flv”,其中 yourdomain 为您自己备案的播放域名, 您可以在[直播控制台](https://console.cloud.tencent.com/live) 配置您的播放域名,腾讯云不提供默认的播放域名。 您也可以在设置 enterRoom 的参数 TRTCParams 时指定 streamId, 而且我们更推荐您采用这种方案。 @param streamId 自定义流 ID。 @param streamType 仅支持 {@link TRTCVideoStreamTypeBig} 和 {@link TRTCVideoStreamTypeSub}。 @note 您需要提前在 [实时音视频控制台](https://console.cloud.tencent.com/trtc/) 中的功能配置页面上开启“启用旁路推流”才能生效。 - 若您选择“指定流旁路”,则您可以通过该接口将对应音视频流推送到腾讯云 CDN 且指定为填写的流 ID。 - 若您选择“全局自动旁路”,则您可以通过该接口调整默认的流 ID。 2.10 销毁子房间实例 @param subCloud 子房间实例 2.9 创建子房间实例(用于多房间并发观看) TRTCCloud 一开始被设计成单例模式,限制了多房间并发观看的能力。 通过调用该接口,您可以创建出多个 TRTCCloud 实例,以便同时进入多个不同的房间观看音视频流。 但需要注意的是,由于摄像头和麦克风还是只有一份,因此您只能同时在一个 TRTCCloud 实例中以“主播”的身份存在,也就是您只能同时在一个 TRTCCloud 实例中发布自己的音视频流。 该功能主要用于在线教育场景中一种被称为“超级小班课”的业务场景中,用于解决“每个 TRTC 的房间中最多只能有 50 人同时发布自己音视频流”的限制。 示例代码如下:
     ITRTCCloud *mainCloud = getTRTCShareInstance();
     mainCloud->enterRoom(params1, TRTCAppSceneLIVE);
     //...
     //Switch the role from "anchor" to "audience" in your own room
     mainCloud->switchRole(TRTCRoleAudience);
     mainCloud->muteLocalVideo(true);
     mainCloud->muteLocalAudio(true);
     //...
     //Use subcloud to enter another room and switch the role from "audience" to "anchor"
     ITRTCCloud *subCloud = mainCloud->createSubCloud();
     subCloud->enterRoom(params2, TRTCAppSceneLIVE);
     subCloud->switchRole(TRTCRoleAnchor);
     subCloud->muteLocalVideo(false);
     subCloud->muteLocalAudio(false);
     //...
     //Exit from new room and release it.
     subCloud->exitRoom();
     mainCloud->destroySubCloud(subCloud);
 
@note - 同一个用户,可以使用同一个 userId 进入多个不同 roomId 的房间。 - 两台不同的终端设备不可以同时使用同一个 userId 进入同一个 roomId 的房间。 - 同一个用户,同时只能在一个 TRTCCloud 实例中推流,在不同房间同时推流会引发云端的状态混乱,导致各种 bug。 - 通过 createSubCloud 接口创建出来的 TRTCCloud 实例有一个能力限制:不能调用子实例中与本地音视频相关的接口(除 switchRole、muteLocalVideo 和 muteLocalAudio 之外), 设置美颜等接口请使用原 TRTCCloud 实例对象。 @return 子 TRTCCloud 实例
2.8 设置订阅模式(需要在进入房前设置才能生效) 您可以通过该接口在“自动订阅”和“手动订阅”两种模式下进行切换: - 自动订阅:默认模式,用户在进入房间后会立刻接收到该房间中的音视频流,音频会自动播放,视频会自动开始解码(依然需要您通过 {@link startRemoteView} 接口绑定渲染控件)。 - 手动订阅:在用户进入房间后,需要手动调用 {@link startRemoteView} 接口才能启动视频流的订阅和解码,需要手动调用 {@link muteRemoteAudio} (false) 接口才能启动声音的播放。 在绝大多数场景下,用户进入房间后都会订阅房间中所有主播的音视频流,因此 TRTC 默认采用了自动订阅模式,以求得最佳的“秒开体验”。 如果您的应用场景中每个房间同时会有很多路音视频流在发布,而每个用户只想选择性地订阅其中的 1-2 路,则推荐使用“手动订阅”模式以节省流量费用。 @param autoRecvAudio true:自动订阅音频;false:需手动调用 muteRemoteAudio(false) 订阅音频。默认值:true。 @param autoRecvVideo true:自动订阅视频;false:需手动调用 startRemoteView 订阅视频。默认值:true。 @note 1. 需要在进入房间前调用该接口进行设置才能生效。 2. 在自动订阅模式下,如果用户在进入房间后没有调用 {@link startRemoteView} 订阅视频流,SDK 会自动停止订阅视频流,以便达到节省流量的目的。 2.7 退出跨房通话 退出结果会通过 {@link ITRTCCloudCallback} 中的 {@link onDisconnectOtherRoom} 回调通知给您。 2.6 请求跨房通话 默认情况下,只有同一个房间中的用户之间可以进行音视频通话,不同的房间之间的音视频流是相互隔离的。 但您可以通过调用该接口,将另一个房间中某个主播音视频流发布到自己所在的房间中,与此同时,该接口也会将自己的音视频流发布到目标主播的房间中。 也就是说,您可以使用该接口让身处两个不同房间中的主播进行跨房间的音视频流分享,从而让每个房间中的观众都能观看到这两个主播的音视频。该功能可以用来实现主播之间的 PK 功能。 跨房通话的请求结果会通过 {@link ITRTCCloudCallback} 中的 {@link onConnectOtherRoom} 回调通知给您。 例如:当房间“101”中的主播 A 通过 connectOtherRoom() 跟房间“102”中的主播 B 建立跨房通话后, - 房间“101”中的用户都会收到主播 B 的 onRemoteUserEnterRoom(B) 和 onUserVideoAvailable(B,true) 这两个事件回调,即房间“101”中的用户都可以订阅主播 B 的音视频。 - 房间“102”中的用户都会收到主播 A 的 onRemoteUserEnterRoom(A) 和 onUserVideoAvailable(A,true) 这两个事件回调,即房间“102”中的用户都可以订阅主播 A 的音视频。 ![](https://qcloudimg.tencent-cloud.cn/raw/c5e6c72fc163ad5c0b6b7b00e1da55b5.png) 跨房通话的参数考虑到后续扩展字段的兼容性问题,暂时采用了 JSON 格式的参数: **情况一:数字房间号** 如果房间“101”中的主播 A 要跟房间“102”中的主播 B 连麦,那么主播 A 调用该接口时需要传入:{"roomId": 102, "userId": "userB"} 示例代码如下:
   Json::Value jsonObj;
   jsonObj["roomId"] = 102;
   jsonObj["userId"] = "userB";
   Json::FastWriter writer;
   std::string params = writer.write(jsonObj);
   trtc.ConnectOtherRoom(params.c_str());
 
**情况二:字符串房间号** 如果您使用的是字符串房间号,务必请将 json 中的 “roomId” 替换成 “strRoomId”: {"strRoomId": "102", "userId": "userB"} 示例代码如下:
   Json::Value jsonObj;
   jsonObj["strRoomId"] = "102";
   jsonObj["userId"] = "userB";
   Json::FastWriter writer;
   std::string params = writer.write(jsonObj);
   trtc.ConnectOtherRoom(params.c_str());
 
@param param 需要你传入 JSON 格式的字符串参数,roomId 代表数字格式的房间号,strRoomId 代表字符串格式的房间号,userId 代表目标主播的用户 ID。
2.5 切换房间 使用该接口可以让用户可以快速从一个房间切换到另一个房间。 - 如果用户的身份是“观众”,该接口的调用效果等同于 exitRoom(当前房间) + enterRoom(新的房间)。 - 如果用户的身份是“主播”,该接口在切换房间的同时还会保持自己的音视频发布状态,因此在房间切换过程中,摄像头的预览和声音的采集都不会中断。 该接口适用于在线教育场景中,监课老师在多个房间中进行快速切换的场景。在该场景下使用 switchRoom 可以获得比 exitRoom+enterRoom 更好的流畅性和更少的代码量。 接口调用结果会通过 {@link ITRTCCloudCallback} 中的 onSwitchRoom(errCode, errMsg) 回调。 @param config 房间参数,详情请参见 {@link TRTCSwitchRoomConfig}。 @note 由于对老版本 SDK 兼容的需求,参数 config 中同时包含 roomId 与 strRoomId 两个参数,这两个参数的填写格外讲究,请注意如下事项: 1. 若您选用 strRoomId,则 roomId 需要填写为0。若两者都填,将优先选用 roomId。 2. 所有房间需要同时使用 strRoomId 或同时使用 roomId,不可混用,否则将会出现很多预期之外的 bug。 2.4 切换角色(支持设置权限位) 调用本接口可以实现用户在`主播`和`观众`两种角色之间来回切换。 由于视频直播和语音聊天室需要支持多达10万名观众同时观看,所以设定了“只有主播才能发布自己的音视频”的规则。 因此,当有些观众希望发布自己的音视频流(以便能跟主播互动)时,就需要先把自己的角色切换成“主播”。 您可以在进入房间时通过 {@link TRTCParams} 中的 role 字段事先确定用户的角色,也可以在进入房间后通过 switchRole 接口动态切换角色。 @param role 角色,默认为“主播”: - {@link TRTCRoleAnchor} :主播,可以发布自己的音视频,同一个房间里最多支持50个主播同时发布音视频。 - {@link TRTCRoleAudience} :观众,不能发布自己的音视频流,只能观看房间中其他主播的音视频。如果要发布自己的音视频,需要先通过 {@link switchRole} 切换成“主播”,同一个房间内同时最多可以容纳 10 万名观众。 @param privateMapKey 用于权限控制的权限票据,当您希望某个房间只能让特定的 userId 进入或者上行视频时,需要使用 privateMapKey 进行权限保护。 - 仅建议有高级别安全需求的客户使用,更多详情请参见 [开启高级权限控制](https://cloud.tencent.com/document/product/647/32240)。 @note 1. 该接口仅适用于视频直播({@link TRTCAppSceneLIVE})和语音聊天室({@link TRTCAppSceneVoiceChatRoom})这两个场景。 2. 如果您在 {@link enterRoom} 时指定的 scene 为 {@link TRTCAppSceneVideoCall} 或 {@link TRTCAppSceneAudioCall},请不要调用这个接口。 2.3 切换角色 调用本接口可以实现用户在`主播`和`观众`两种角色之间来回切换。 由于视频直播和语音聊天室需要支持多达10万名观众同时观看,所以设定了 **只有主播才能发布自己的音视频** 的规则。因此,当有些观众希望发布自己的音视频流(以便能跟主播互动)时,就需要先把自己的角色切换成 **主播**。 您可以在进入房间时通过 {@link TRTCParams} 中的 role 字段事先确定用户的角色,也可以在进入房间后通过 switchRole 接口动态切换角色。 @param role 角色,默认为 **主播**。 - {@link TRTCRoleAnchor} :主播,可以发布自己的音视频,同一个房间里最多支持50个主播同时发布音视频。 - {@link TRTCRoleAudience} :观众,不能发布自己的音视频流,只能观看房间中其他主播的音视频。如果要发布自己的音视频,需要先通过 {@link switchRole} 切换成 **主播**,同一个房间内同时最多可以容纳 10 万名观众。 @note 1. 该接口仅适用于视频直播({@link TRTCAppSceneLIVE})和语音聊天室({@link TRTCAppSceneVoiceChatRoom})这两个场景。 2. 如果您在 {@link enterRoom} 时指定的 scene 为 {@link TRTCAppSceneVideoCall} 或 {@link TRTCAppSceneAudioCall},请不要调用这个接口。 2.2 离开房间 调用该接口会让用户离开自己所在的音视频房间,并释放摄像头、麦克风、扬声器等设备资源。 等资源释放完毕之后,SDK 会通过 {@link ITRTCCloudCallback} 中的 {@link onExitRoom} 回调向您通知。 如果您要再次调用 {@link enterRoom} 或者切换到其他的供应商的 SDK,建议等待 {@link onExitRoom} 回调到来之后再执行之后的操作,以避免摄像头或麦克风被占用的问题。 1.4 移除 TRTC 事件回调 @param callback 回调指针 1.3 设置 TRTC 事件回调 您可以通过 {@link ITRTCCloudCallback} 获得来自 SDK 的各类事件通知(比如:错误码,警告码,音视频状态参数等)。 @param listener 回调实例。 1.2 销毁 TRTCCloud 实例(单例模式) 1.1 创建 TRTCCloud 实例(单例模式) @param context 仅适用于 Android 平台,SDK 内部会将其转化为 Android 平台的 ApplicationContext 用于调用 Androud System API。 如果传入的 context 参数为空,SDK 内部会自动获取当前进程的 ApplicationContext。 @note 1. 如果您使用 delete ITRTCCloud* 会导致编译错误,请使用 destroyTRTCCloud 释放对象指针。 2. 在 Windows、Mac 和 iOS 平台上,请调用 getTRTCShareInstance() 接口。 3. 在 Android 平台上,请调用 getTRTCShareInstance(void *context) 接口。 利用 C 函数获取 TRTC 实例 你可以按照下列方式创建和销毁 TRTC Instance
 ITRTCCloud *trtcCloud = getTRTCShareInstance();
 if(trtcCloud) {
     std::string version(trtcCloud->getSDKVersion());
 }
 destroyTRTCShareInstance();
 trtcCloud = nullptr;
 
设置 NTP 校时事件回调。 @param callback onUpdateNetworkTime回调指针。 设置外部解码器 获取 NTP 时间戳(毫秒),请在收到 onUpdateNetworkTime 回调后使用 @return NTP 时间戳(毫秒),若返回 0:未启动 NTP 校时或校时失败,请重启校时 设置 liteav SDK 接入的环境。 腾讯云在全球各地区部署的环境,按照各地区政策法规要求,需要接入不同地区接入点。 @param env_config 需要接入的环境,SDK 默认接入的环境是:默认正式环境。 @return 0:成功;其他:错误 @note 目标市场为中国大陆的客户请不要调用此接口,如果目标市场为海外用户,请通过技术支持联系我们,了解 env_config 的配置方法,以确保 App 遵守 GDPR 标准。 @name SDK 导出基础功能接口 @{ \brief 获取 SDK 版本号 \return 返回 UTF-8 编码的版本号。 NTP 校时事件回调接口 @brief NTP 校时回调,调用 TXLiveBase updateNetworkTime 后会触发 @param errCode 0:表示校时成功且偏差在30ms以内,1:表示校时成功但偏差可能在 30ms 以上,-1:表示校时失败 开始应用内的屏幕分享(iOS) @deprecated v8.6 版本开始不推荐使用,建议使用 {@link startScreenCaptureInApp} 接口替代之。 停止进行扬声器测试 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link stopSpeakerDeviceTest} 接口替代之。 开始进行扬声器测试 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link startSpeakerDeviceTest} 接口替代之。 开始进行麦克风测试 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link stopMicDeviceTest} 接口替代之。 开始进行麦克风测试 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link startMicDeviceTest} 接口替代之。 停止进行摄像头测试 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link stopCameraDeviceTest} 接口替代之。 开始进行摄像头测试 开始进行摄像头测试 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link startCameraDeviceTest} 接口替代之。 设置系统当前扬声器设备的静音状态 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link setCurrentDeviceMute} 接口替代之。 获取系统当前扬声器设备是否静音 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getCurrentDeviceMute} 接口替代之。 设置当前扬声器的设备音量 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link setCurrentDeviceVolume} 接口替代之。 获取当前扬声器的设备音量 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getCurrentDeviceVolume} 接口替代之。 设置要使用的扬声器 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link setCurrentDevice} 接口替代之。 获取当前的扬声器设备 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getCurrentDevice} 接口替代之。 获取扬声器设备列表 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getDevicesList} 接口替代之。 获取系统当前麦克风设备是否静音 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getCurrentDeviceMute} 接口替代之。 设置系统当前麦克风设备的静音状态 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link setCurrentDeviceMute} 接口替代之。 设置当前麦克风的设备音量 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link setCurrentDeviceVolume} 接口替代之。 获取当前麦克风的设备音量 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getCurrentDeviceVolume} 接口替代之。 选定当前使用的麦克风 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link setCurrentDevice} 接口替代之。 获取当前的麦克风设备 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getCurrentDevice} 接口替代之。 获取麦克风设备列表 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getDevicesList} 接口替代之。 获取当前使用的摄像头 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getCurrentDevice} 接口替代之。 选定当前要使用的摄像头 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link setCurrentDevice} 接口替代之。 获取摄像头设备列表 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link TXDeviceManager} 中的 {@link getDevicesList} 接口替代之。 启动屏幕分享 @deprecated v7.2 版本开始不推荐使用,建议使用 {@link startScreenCapture} 替代之。 开始进行网络测速(进入房间前使用) @deprecated v9.2 版本开始不推荐使用,建议使用 {@link startSpeedTest}(params) 接口替代之。 暂停 / 恢复订阅远端用户的视频流 @deprecated v8.9 版本开始不推荐使用,建议使用 {@link muteRemoteVideoStream}(userId, streamType, mute) 接口替代之。 暂停/恢复发布本地的视频流 @deprecated v8.9 版本开始不推荐使用,建议使用 {@link muteLocalVideo}(streamType, mute) 接口替代之。 投送自己采集的视频数据 @deprecated v8.5 版本开始不推荐使用,建议使用 {@link sendCustomVideoData}(streamType, TRTCVideoFrame) 接口替代之。 启用视频自定义采集模式 @deprecated v8.5 版本开始不推荐使用,建议使用 {@link enableCustomVideoCapture}(streamType, enable) 接口替代之。 暂停音效 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link resumePlayMusic} 替代之。 暂停音效 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link pauseAudioEffect} 替代之。 设置所有音效音量 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link setMusicPublishVolume} 和{@link setMusicPlayoutVolume} 替代之。 停止所有音效 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link stopPlayMusic} 替代之。 停止播放音效 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link stopPlayMusic} 替代之。 设置音效音量 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link setMusicPublishVolume} 和 {@link setMusicPlayoutVolume} 替代之。 播放音效 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link startPlayMusic} 替代之。 设置背景音乐的远端播放音量 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link setBGMPublishVolume} 替代之。 设置背景音乐的本地播放音量 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link setMusicPlayoutVolume} 替代之。 设置背景音乐的音量大小 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link setMusicVolume} 替代之。 设置背景音乐的播放进度 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link seekMusicToPosInMS} 替代之。 获取背景音乐总时长(单位:毫秒) @deprecated v7.3 版本开始不推荐使用,建议使用 {@link TXAudioEffectManager} 中的 {@link getMusicDurationInMS} 替代之。 停止播放背景音乐 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link getAudioEffectManager} 替代之。 停止播放背景音乐 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link getAudioEffectManager} 替代之。 停止播放背景音乐 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link getAudioEffectManager} 替代之。 启动播放背景音乐 @deprecated v7.3 版本开始不推荐使用,建议使用 {@link getAudioEffectManager} 替代之。 设置麦克风音量大小 设定优先观看大画面还是小画面 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link startRemoteView}:streamType:view: 替代之。 设置音频质量 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link startLocalAudio} 替代之。 设置辅路画面的顺时针旋转角度 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link setRemoteRenderParams}:streamType:params: 替代之。 设置辅路画面的填充模式 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link setRemoteRenderParams} 替代之。 停止显示远端用户的辅路画面 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link stopRemoteView} 替代之。 开始显示远端用户的辅路画面 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link startRemoteView} 替代之。 设置远端图像的顺时针旋转角度 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link setRemoteRenderParams} 替代之。 设置远端图像的渲染模式 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link setRemoteRenderParams} 替代之。 设置本地摄像头预览画面的镜像模式 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link setLocalRenderParams} 替代之。 设置本地图像的顺时针旋转角度 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link setLocalRenderParams} 替代之。 设置本地图像的渲染模式 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link setLocalRenderParams} 替代之。 停止显示远端视频画面,同时不再拉取该远端用户的视频数据流 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link stopRemoteView} 替代之。 开始显示远端视频画面 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link startRemoteView} 替代之。 设置音频质量 @deprecated v8.0 版本开始不推荐使用,建议使用 {@link startLocalAudio} 替代之。 启用音量大小提示 @deprecated v10.1 版本开始不推荐使用,建议使用 {@link enableAudioVolumeEvaluation}(interval, enable_vad) 替代之。 2.15 预加载背景音乐 每个音乐都需要您指定具体的 ID,您可以通过该 ID 对音乐的开始、停止、音量等进行设置。 @param preloadParam 预加载音乐参数。 @note 1. 预先加载最多同时支持2个不同 ID 的预加载,且预加载时长不超过10分钟,使用完需 stopPlayMusic,否则内存不释放。 2. 若该ID对应的音乐正在播放中,预加载会失败,需先调用 stopPlayMusic。 3. 当 musicParam 和传入 startPlayMusic 的 musicParam 完全相同时,预加载有效。 2.14 设置预加载事件回调 请在预加载背景音乐之前使用该接口设置回调,以便感知背景音乐的预加载进度。 @param observer 具体参考 ITXMusicPreloadObserver 中定义接口。 2.13 调整搓碟的变速效果 @param id 音乐 ID。 @param scratchSpeedRate 搓碟速度,默认值是1.0f,范围是:[-12.0 ~ 12.0] 之间的浮点数, 速度值正/负表示方向正/反,绝对值大小表示速度快慢。 @note 前置条件 preloadMusic 成功。 2.12 设置背景音乐的播放进度(单位:毫秒) @param id 音乐 ID。 @param pts 单位: 毫秒。 @note 请尽量避免过度频繁地调用该接口,因为该接口可能会再次读写音乐文件,耗时稍高。 因此,当用户拖拽音乐的播放进度条时,请在用户完成拖拽操作后再调用本接口。 因为 UI 上的进度条控件往往会以很高的频率反馈用户的拖拽进度,如不做频率限制,会导致较差的用户体验。 2.11 获取背景音乐的总时长(单位:毫秒) @param path 音乐文件路径。 @return 成功返回时长,失败返回 -1。 2.10 获取背景音乐的播放进度(单位:毫秒) @param id 音乐 ID。 @return 成功返回当前播放时间,单位:毫秒,失败返回 -1。 2.9 调整背景音乐的变速效果 @param id 音乐 ID。 @param speedRate 速度,默认值是1.0f,范围是:[0.5 ~ 2] 之间的浮点数。 2.8 调整背景音乐的音调高低 @param id 音乐 ID。 @param pitch 音调,默认值是0.0f,范围是:[-1 ~ 1] 之间的浮点数。 2.7 设置某一首背景音乐的本地音量的大小 该接口可以细粒度地控制每一首背景音乐的本地音量,也就是主播本地可以听到的背景音乐的音量大小。 @param id 音乐 ID。 @param volume 音量大小,取值范围为0 - 100,默认值:100。 @note 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。 2.6 设置某一首背景音乐的远端音量的大小 该接口可以细粒度地控制每一首背景音乐的远端音量,也就是观众端可听到的背景音乐的音量大小。 @param id 音乐 ID。 @param volume 音量大小,取值范围为0 - 100;默认值:100。 @note 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。 2.5 设置所有背景音乐的本地音量和远端音量的大小 该接口可以设置所有背景音乐的本地音量和远端音量。 - 本地音量:即主播本地可以听到的背景音乐的音量大小。 - 远端音量:即观众端可以听到的背景音乐的音量大小。 @param volume 音量大小,取值范围为0 - 100,默认值:100。 @note 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。 2.4 恢复播放背景音乐 @param id 音乐 ID。 2.3 暂停播放背景音乐 @param id 音乐 ID。 2.2 停止播放背景音乐 @param id 音乐 ID。 2.1 开始播放背景音乐 每个音乐都需要您指定具体的 ID,您可以通过该 ID 对音乐的开始、停止、音量等进行设置。 @param musicParam 音乐参数。 @param startBlock 播放开始回调。 @param progressBlock 播放进度回调。 @param completeBlock 播放结束回调。 @note 1. 如果要多次播放同一首背景音乐,请不要每次播放都分配一个新的 ID,我们推荐使用相同的 ID。 2. 若您希望同时播放多首不同的音乐,请为不同的音乐分配不同的 ID 进行播放。 3. 如果使用同一个 ID 播放不同音乐,SDK 会先停止播放旧的音乐,再播放新的音乐。 2.0 设置背景音乐的事件回调接口 请在播放背景音乐之前使用该接口设置播放事件回调,以便感知背景音乐的播放进度。 @param musicId 音乐 ID。 @param observer 具体参考 ITXMusicPlayObserver 中定义接口。 @note 1. 如果要该ID不需要使用,observer 可设置为 NULL 彻底释放。 1.6 设置语音音调 该接口可以设置语音音调,用于实现变调不变速的目的。 @param pitch 音调,取值范围为-1.0f~1.0f,默认值:0.0f。 1.5 设置语音音量 该接口可以设置语音音量的大小,一般配合音乐音量的设置接口 {@link setAllMusicVolume} 协同使用,用于调谐语音和音乐在混音前各自的音量占比。 @param volume 音量大小,取值范围为0 - 100,默认值:100。 @note 如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。 1.4 设置人声的变声特效 通过该接口您可以设置人声的变声特效,具体特效请参见枚举定义 {@link TXVoiceChangeType}。 @note 设置的效果在退出房间后会自动失效,如果下次进房还需要对应特效,需要调用此接口再次进行设置。 1.3 设置人声的混响效果 通过该接口您可以设置人声的混响效果,具体特效请参见枚举定义 {@link TXVoiceReverbType}。 @note 设置的效果在退出房间后会自动失效,如果下次进房还需要对应特效,需要调用此接口再次进行设置。 【字段含义】音乐结束播放时间点,单位毫秒,0表示播放至文件结尾。 【字段含义】音乐开始播放时间点,单位:毫秒。 【字段含义】播放的是否为短音乐文件。 【推荐取值】true:需要重复播放的短音乐文件;false:正常的音乐文件。默认值:false。 【字段含义】是否将音乐传到远端。 【推荐取值】true:音乐在本地播放的同时,远端用户也能听到该音乐;false:主播只能在本地听到该音乐,远端观众听不到。默认值:false。 【字段含义】音乐循环播放的次数。 【推荐取值】取值范围为0 - 任意正整数,默认值:0。0 表示播放音乐一次;1 表示播放音乐两次;以此类推。 【字段含义】音效文件的完整路径或 URL 地址。支持的音频格式包括 MP3、AAC、M4A、WAV。 【字段含义】音乐 ID。 【特殊说明】SDK 允许播放多路音乐,因此需要使用 ID 进行标记,用于控制音乐的开始、停止、音量等。 背景音乐的播放控制信息 该信息用于在接口 {@link startPlayMusic} 中指定背景音乐的相关信息,包括播放 ID、文件路径和循环次数等: 1. 如果要多次播放同一首背景音乐,请不要每次播放都分配一个新的 ID,我们推荐使用相同的 ID。 2. 若您希望同时播放多首不同的音乐,请为不同的音乐分配不同的 ID 进行播放。 3. 如果使用同一个 ID 播放不同音乐,SDK 会先停止播放旧的音乐,再播放新的音乐。 背景音乐已经播放完毕 在背景音乐播放完毕或播放错误时调用。 @param id 音乐 ID。 @param errCode 错误码。0: 播放结束;-4002: 解码失败,如音频文件损坏,网络音频文件服务器无法访问等。 背景音乐的播放进度 背景音乐开始播放 在背景音乐开始播放成功或者失败时调用。 @param id 音乐 ID。 @param errCode 错误码。0: 开始播放成功;-4001: 打开文件失败,如音频文件格式不支持,本地音频文件不存在,网络音频文件无法访问等。 背景音乐预加载出错 @param errorCode -4001:打开打开文件失败,如音频文件格式不支持,本地音频文件不存在,网络音频文件无法访问等;-4002:解码失败,如音频文件损坏,网络音频文件服务器无法访问等;-4003:预加载数量超上限,请先调用 stopPlayMusic 释放无用的预加载。 背景音乐预加载进度 1.2 变声特效 变声特效可以作用于人声之上,通过声学算法对人声进行二次处理,以获得与原始声音所不同的音色,目前支持如下几种变声特效: 0:关闭;1:熊孩子;2:萝莉;3:大叔;4:重金属;5:感冒;6:外语腔;7:困兽;8:肥宅;9:强电流;10:重机械;11:空灵。 空灵 重机械 强电流 肥宅 困兽 外语腔 感冒 重金属 大叔 萝莉 熊孩子 关闭 1.1 混响特效 混响特效可以作用于人声之上,通过声学算法对声音进行叠加处理,模拟出各种不同环境下的临场感受,目前支持如下几种混响效果: 0:关闭;1:KTV;2:小房间;3:大会堂;4:低沉;5:洪亮;6:金属声;7:磁性;8:空灵;9:录音棚;10:悠扬。 悠扬 录音棚 空灵 磁性 金属声 洪亮 低沉 大会堂 小房间 KTV 关闭特效 本地 LOG 的打印回调 如果您希望捕获 SDK 的本地日志打印行为,可以通过设置日志回调,让 SDK 将要打印的日志都通过本回调接口抛送给您。 @param log 日志内容。 @param level 日志等级请参见 TRTC_LOG_LEVEL。 @param module 保留字段,暂无具体意义,目前为固定值 TXLiteAVSDK。 将各路待播放音频混合之后并在最终提交系统播放之前的数据回调 当您设置完音频数据自定义回调之后,SDK 内部会把各路待播放的音频混合之后的音频数据,在提交系统播放之前,以 PCM 格式的形式通过本接口回调给您。 - 此接口回调出的音频时间帧长固定为0.02s,格式为 PCM 格式。 - 由时间帧长转化为字节帧长的公式为 `采样率 × 时间帧长 × 声道数 × 采样点位宽`。 - 以 TRTC 默认的音频录制格式48000采样率、单声道、16采样点位宽为例,字节帧长为 `48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节`。 @param frame PCM 格式的音频数据帧。 @note 1. 请不要在此回调函数中做任何耗时操作,由于 SDK 每隔 20ms 就要处理一帧音频数据,如果您的处理时间超过 20ms,就会导致声音异常。 2. 此接口回调出的音频数据是可读写的,也就是说您可以在回调函数中同步修改音频数据,但请保证处理耗时。 3. 此接口回调出的是对各路待播放音频数据的混合,但其中并不包含耳返的音频数据。 混音前的每一路远程用户的音频数据 当您设置完音频数据自定义回调之后,SDK 内部会把远端的每一路原始数据,在最终混音之前,以 PCM 格式的形式通过本接口回调给您。 - 此接口回调出的音频时间帧长固定为0.02s,格式为 PCM 格式。 - 由时间帧长转化为字节帧长的公式为`采样率 × 时间帧长 × 声道数 × 采样点位宽`。 - 以 TRTC 默认的音频录制格式48000采样率、单声道、16采样点位宽为例,字节帧长为`48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节`。 @param frame PCM 格式的音频数据帧。 @param userId 用户标识。 @note 此接口回调出的音频数据是只读的,不支持修改。 本地采集并经过音频模块前处理、音效处理和混 BGM 后的音频数据回调 当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理、音效处理和混 BGM 之后的数据,在最终进行网络编码之前,以 PCM 格式的形式通过本接口回调给您。 - 此接口回调出的音频时间帧长固定为0.02s,格式为 PCM 格式。 - 由时间帧长转化为字节帧长的公式为`采样率 × 时间帧长 × 声道数 × 采样点位宽`。 - 以 TRTC 默认的音频录制格式48000采样率、单声道、16采样点位宽为例,字节帧长为`48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节`。 特殊说明: 您可以通过设置接口中的 `TRTCAudioFrame.extraData` 字段,达到传输信令的目的。由于音频帧头部的数据块不能太大,建议您写入 `extraData` 时,尽量将信令控制在几个字节的大小,如果超过 100 个字节,写入的数据不会被发送。 房间内其他用户可以通过 {@link ITRTCAudioFrameCallback} 中的 `onRemoteUserAudioFrame` 中的 `TRTCAudioFrame.extraData` 字段回调接收数据。 @param frame PCM 格式的音频数据帧。 @note 1. 请不要在此回调函数中做任何耗时操作,由于 SDK 每隔 20ms 就要处理一帧音频数据,如果您的处理时间超过 20ms,就会导致声音异常。 2. 此接口回调出的音频数据是可读写的,也就是说您可以在回调函数中同步修改音频数据,但请保证处理耗时。 3. 此接口回调出的数据已经经过了前处理(ANS、AEC、AGC)、音效和混 BGM 处理,声音的延迟相比于 {@link onCapturedRawAudioFrame} 要高一些。 本地采集并经过音频模块前处理后的音频数据回调 当您设置完音频数据自定义回调之后,SDK 内部会把刚采集到并经过前处理(ANS、AEC、AGC)之后的数据,以 PCM 格式的形式通过本接口回调给您。 - 此接口回调出的音频时间帧长固定为0.02s,格式为 PCM 格式。 - 由时间帧长转化为字节帧长的公式为 `采样率 × 时间帧长 × 声道数 × 采样点位宽`。 - 以 TRTC 默认的音频录制格式48000采样率、单声道、16采样点位宽为例,字节帧长为 `48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节`。 @param frame PCM 格式的音频数据帧。 @note 1. 请不要在此回调函数中做任何耗时操作,由于 SDK 每隔 20ms 就要处理一帧音频数据,如果您的处理时间超过 20ms,就会导致声音异常。 2. 此接口回调出的音频数据是可读写的,也就是说您可以在回调函数中同步修改音频数据,但请保证处理耗时。 3. 此接口回调出的音频数据已经经过了前处理(ANS、AEC、AGC),但**不包含**背景音、音效、混响等前处理效果,延迟较低。 用于对接第三方美颜组件的视频处理回调 如果您选购了第三方美颜组件,就需要在 TRTCCloud 中设置第三方美颜回调,之后 TRTC 就会将原本要进行预处理的视频帧通过此回调接口抛送给您。 之后您就可以将 TRTC 抛出的视频帧交给第三方美颜组件进行图像处理,由于抛出的数据是可读且可写的,因此第三方美颜的处理结果也可以同步给 TRTC 进行后续的编码和发送。 情况一:美颜组件自身会产生新的纹理。 如果您使用的美颜组件会在处理图像的过程中产生一帧全新的纹理(用于承载处理后的图像),那请您在回调函数中将 dstFrame.textureId 设置为新纹理的 ID:
 uint32_t onProcessVideoFrame(TRTCVideoFrame * srcFrame, TRTCVideoFrame *dstFrame) {
     dstFrame->textureId = mFURenderer.onDrawFrameSingleImput(srcFrame->textureId);
     return 0;
 }
 
情况二:美颜组件需要您提供目标纹理。 如果您使用的第三方美颜模块并不生成新的纹理,而是需要您设置给该模块一个输入纹理和一个输出纹理,则可以考虑如下方案:
 int onProcessVideoFrame(TRTCVideoFrame *srcFrame, TRTCVideoFrame *dstFrame) {
     thirdparty_process(srcFrame->textureId, srcFrame->width, srcFrame->height, dstFrame->textureId);
     return 0;
 }
 
@param srcFrame 用于承载 TRTC 采集到的摄像头画面。 @param dstFrame 用于接收第三方美颜处理过的视频画面。 @note 目前仅支持 OpenGL 纹理方案( PC 仅支持 TRTCVideoBufferType_Buffer 格式)。
自定义视频渲染回调 当您设置了本地或者远端的视频自定义渲染回调之后,SDK 就会将原本要交给渲染控件进行渲染的视频帧通过此回调接口抛送给您,以便于您进行自定义渲染。 @param frame 待渲染的视频帧信息。 @param userId 视频源的 userId,如果是本地视频回调(setLocalVideoRenderDelegate),该参数可以忽略。 @param streamType 频流类型:主路(Main)一般用于承载摄像头画面,辅路(Sub)一般用于承载屏幕分享画面。 服务器测速的结果回调(已废弃) @deprecated 新版本开始不推荐使用,建议使用 {@link onSpeedTestResult} 接口替代之。 背景音乐播放已经结束(已废弃) @deprecated 新版本开始不推荐使用,建议使用 {@link ITXMusicPlayObserver} 接口替代之。 新的接口中不再区分背景音乐和音效,而是统一用 {@link startPlayMusic} 取代之。 背景音乐的播放进度回调(已废弃) @deprecated 新版本开始不推荐使用,建议使用 {@link ITXMusicPlayObserver} 接口替代之。 新的接口中不再区分背景音乐和音效,而是统一用 {@link startPlayMusic} 取代之。 开始播放背景音乐(已废弃) @deprecated 新版本开始不推荐使用,建议使用 {@link ITXMusicPlayObserver} 接口替代之。 新的接口中不再区分背景音乐和音效,而是统一用 {@link startPlayMusic} 取代之。 音效播放已结束(已废弃) @deprecated 新版本开始不推荐使用,建议使用 {@link ITXAudioEffectManager} 接口替代之。 新的接口中不再区分背景音乐和音效,而是统一用 {@link startPlayMusic} 取代之。 有主播离开当前房间(已废弃) @deprecated 新版本开始不推荐使用,建议使用 {@link onRemoteUserLeaveRoom} 替代之。 有主播加入当前房间(已废弃) @deprecated 新版本开始不推荐使用,建议使用 {@link onRemoteUserEnterRoom} 替代之。 10.4 本地截图完成的事件回调 @param userId 用户标识,如果 userId 为空字符串,则代表截取的是本地画面。 @param type 视频流类型。 @param data 截图数据,为 nullptr 表示截图失败。 @param length 截图数据长度,对于BGRA32而言,length = width * height * 4。 @param width 截图画面的宽度。 @param height 截图画面的高度。 @param format 截图数据格式,目前只支持 TRTCVideoPixelFormat_BGRA32。 @param bmp 截图结果,如果 bmp 为 null 代表本次截图操作失败。 @note 全平台 C++ 接口和 Java 接口在参数上是不一样的,C++ 接口用 7 个参数描述一个截图画面,Java 接口只用一个 Bitmap 描述一个截图画面。 10.3 本地录制任务已经结束的事件回调 当您调用 {@link stopLocalRecording} 停止本地媒体录制任务时,SDK 会抛出该事件回调,用于通知您录制任务的最终结果。 @param errCode 错误码 0:录制成功;-1:录制失败;-2:切换分辨率或横竖屏导致录制结束;-3:音频数据或者视频数据一直没有到达导致没有开始正式录制。 @param storagePath 录制文件存储路径。 10.2 本地录制任务正在进行中的进展事件回调 当您调用 {@link startLocalRecording} 成功启动本地媒体录制任务后,SDK 变会定时地抛出本事件回调。 您可通过捕获该事件回调来获知录制任务的健康状况。 您可以在 {@link startLocalRecording} 时设定本事件回调的抛出间隔。 @param duration 已经录制的累计时长,单位毫秒。 @param storagePath 录制文件存储路径。 10.1 本地录制任务已经开始的事件回调 当您调用 {@link startLocalRecording} 启动本地媒体录制任务时,SDK 会抛出该事件回调,用于通知您录制任务是否已经顺利启动。 @param errCode 错误码 0:初始化录制成功;-1:初始化录制失败;-2: 文件后缀名有误。 @param storagePath 录制文件存储路径。 9.5 屏幕分享的目标窗口被遮挡的事件回调(仅适用于 Windows 操作系统) 当屏幕分享的目标窗口被遮挡无法正常捕获时,SDK 会抛出此事件回调,你可以在捕获到该事件回调后,通过 UI 上的一些变化来提示用户移开遮盖窗口。 9.4 屏幕分享停止的事件回调 当您通过 {@link stopScreenCapture} 停止屏幕分享时,SDK 便会抛出此事件回调。 @param reason 停止原因,0:用户主动停止;1:屏幕窗口关闭导致停止;2:表示屏幕分享的显示屏状态变更(如接口被拔出、投影模式变更等)。 9.3 屏幕分享恢复的事件回调 当您通过 {@link resumeScreenCapture} 恢复屏幕分享时,SDK 便会抛出此事件回调。 @param reason 恢复原因。 - 0:用户主动恢复。 - 1:注意此字段的含义在 MAC 和 Windows 平台有稍微差异。屏幕窗口恢复可见从而恢复分享(Mac)。屏幕分享参数设置完毕后自动恢复(Windows)。 - 2:表示屏幕分享窗口从最小化被恢复(仅 Windows)。 - 3:表示屏幕分享窗口从隐藏被恢复(仅 Windows)。 9.2 屏幕分享暂停的事件回调 当您通过 {@link pauseScreenCapture} 暂停屏幕分享时,SDK 便会抛出此事件回调。 @param reason 原因。 - 0:用户主动暂停。 - 1:注意此字段的含义在 MAC 和 Windows 平台有稍微差异。屏幕窗口不可见暂停(Mac)。表示设置屏幕分享参数导致的暂停(Windows)。 - 2:表示屏幕分享窗口被最小化导致的暂停(仅 Windows)。 - 3:表示屏幕分享窗口被隐藏导致的暂停(仅 Windows)。 9.1 屏幕分享开启的事件回调 当您通过 {@link startScreenCapture} 等相关接口启动屏幕分享时,SDK 便会抛出此事件回调。 8.9 RTMP/RTMPS 推流状态发生改变回调 当您调用 {@link startPublishMediaStream} 开始向 TRTC 后台服务发布媒体流时,SDK 会立刻将这一指令同步给云端服务。 若您在目标推流配置 ({@link TRTCPublishTarget}) 设置了向腾讯或者第三方 CDN 上发布音视频流的 URL 配置,则具体 RTMP 或者 RTMPS 推流状态将通过此回调同步给您。 @param cdnUrl 您调用 {@link startPublishMediaStream} 时通过目标推流配置 ({@link TRTCPublishTarget}) 传入的 url,在推流状态变更时,会通过此回调同步给您。 @param status 推流状态。 - 0:推流未开始或者已结束。在您调用 {@link stopPublishMediaStream} 时会返回该状态。 - 1:正在连接 TRTC 服务器和 CDN 服务器。若无法立刻成功,TRTC 后台服务会多次重试尝试推流,并返回该状态(5s回调一次)。如成功进行推流,则进入状态 2;如服务器出错或 60 秒内未成功推流,则进入状态 4。 - 2:CDN 推流正在进行。在成功推流后,会返回该状态。 - 3:TRTC 服务器和 CDN 服务器推流中断,正在恢复。当 CDN 出现异常,或推流短暂中断时,TRTC 后台服务会自动尝试恢复推流,并返回该状态(5s回调一次)。如成功恢复推流,则进入状态 2;如服务器出错或 60 秒内未成功恢复,则进入状态 4。 - 4:TRTC 服务器和 CDN 服务器推流中断,且恢复或连接超时。即此时推流失败,你可以再次调用 {@link updatePublishMediaStream} 尝试推流。 - 5:正在断开 TRTC 服务器和 CDN 服务器。在您调用 {@link stopPublishMediaStream} 时,TRTC 后台服务会依次同步状态 5 和状态 0。 @param code 推流结果,0 表示成功,其余值表示出错。 @param message 具体推流信息。 @param extraInfo 扩展信息字段,个别错误码可能会带额外的信息帮助定位问题。 8.8 停止媒体流的事件回调 当您调用停止发布媒体流 ({@link stopPublishMediaStream}) 开始向 TRTC 后台服务停止媒体流时,SDK 会立刻将这一指令同步给云端服务器,随后 SDK 会收到来自云端服务器的处理结果,并将指令的执行结果通过本事件回调通知给您。 @param taskId 您调用停止发布媒体流 ({@link stopPublishMediaStream}) 时传入的 taskId,会通过此回调再带回给您,用于标识该回调属于哪一次停止请求。 @param code 回调结果,0 表示成功,其余值表示失败。 @param message 具体回调信息。 @param extraInfo 扩展信息字段,个别错误码可能会带额外的信息帮助定位问题。 8.7 更新媒体流的事件回调 当您调用媒体流发布接口 ({@link updatePublishMediaStream}) 开始向 TRTC 后台服务更新媒体流时,SDK 会立刻将这一指令同步给云端服务器,随后 SDK 会收到来自云端服务器的处理结果,并将指令的执行结果通过本事件回调通知给您。 @param taskId 您调用媒体流发布接口 ({@link updatePublishMediaStream}) 时传入的 taskId,会通过此回调再带回给您,用于标识该回调属于哪一次更新请求。 @param code 回调结果,0 表示成功,其余值表示失败。 @param message 具体回调信息。 @param extraInfo 扩展信息字段,个别错误码可能会带额外的信息帮助定位问题。 8.6 开始发布媒体流的事件回调 当您调用 {@link startPublishMediaStream} 开始向 TRTC 后台服务发布媒体流时,SDK 会立刻将这一指令同步给云端服务器,随后 SDK 会收到来自云端服务器的处理结果,并将指令的执行结果通过本事件回调通知给您。 @param taskId 当请求成功时,TRTC 后台会在回调中提供给您这项任务的 taskId,后续您可以通过该 taskId 结合 {@link updatePublishMediaStream} 和 {@link stopPublishMediaStream} 进行更新和停止。 @param code 回调结果,0 表示成功,其余值表示失败。 @param message 具体回调信息。 @param extraInfo 扩展信息字段,个别错误码可能会带额外的信息帮助定位问题。 8.5 设置云端混流的排版布局和转码参数的事件回调 当您调用 {@link setMixTranscodingConfig} 调整云端混流的排版布局和转码参数时,SDK 会立刻将这一调整指令同步给云端服务器。随后 SDK 会收到来自云端服务器的处理结果,并将指令的执行结果通过本事件回调通知给您。 @param err 错误码:0表示成功,其余值表示失败。 @param errMsg 具体的错误原因。 8.4 停止向非腾讯云 CDN 上发布音视频流的事件回调 当您调用 {@link stopPublishCDNStream} 开始向非腾讯云直播 CDN 上发布音视频流时,SDK 会立刻将这一指令同步给云端服务器。随后 SDK 会收到来自云端服务器的处理结果,并将指令的执行结果通过本事件回调通知给您。 @param err 0表示成功,其余值表示失败。 @param errMsg 具体错误原因。 8.3 开始向非腾讯云 CDN 上发布音视频流的事件回调 当您调用 {@link startPublishCDNStream} 开始向非腾讯云直播 CDN 上发布音视频流时,SDK 会立刻将这一指令同步给云端服务器。随后 SDK 会收到来自云端服务器的处理结果,并将指令的执行结果通过本事件回调通知给您。 @param err 0表示成功,其余值表示失败。 @param errMsg 具体错误原因。 @note 当您收到成功的事件回调时,只是说明您的发布指令已经同步到腾讯云后台服务器,但如果目标 CDN 厂商的服务器不接收该条视频流,依然可能导致发布失败。 8.2 停止向腾讯云直播 CDN 上发布音视频流的事件回调 当您调用 {@link stopPublishing} 停止向腾讯云直播 CDN 上发布音视频流时,SDK 会立刻将这一指令同步给云端服务器。 随后 SDK 会收到来自云端服务器的处理结果,并将指令的执行结果通过本事件回调通知给您。 @param err 0表示成功,其余值表示失败。 @param errMsg 具体错误原因。 8.1 开始向腾讯云直播 CDN 上发布音视频流的事件回调 当您调用 {@link startPublishing} 开始向腾讯云直播 CDN 上发布音视频流时,SDK 会立刻将这一指令同步给云端服务器。 随后 SDK 会收到来自云端服务器的处理结果,并将指令的执行结果通过本事件回调通知给您。 @param err 0表示成功,其余值表示失败。 @param errMsg 具体错误原因。 7.3 收到 SEI 消息的回调 当房间中的某个用户使用 {@link sendSEIMsg} 借助视频数据帧发送 SEI 消息时,房间中的其它用户可以通过 onRecvSEIMsg 事件回调接收到该条消息。 @param userId 用户标识。 @param message 数据。 7.2 自定义消息丢失的事件回调 当您使用 {@link sendCustomCmdMsg} 发送自定义 UDP 消息时,即使设置了可靠传输(reliable),也无法确保100@%不丢失,只是丢消息概率极低,能满足常规可靠性要求。 在发送端设置了可靠运输(reliable)后,SDK 都会通过此回调通知过去时间段内(通常为5s)传输途中丢失的自定义消息数量统计信息。 @param userId 用户标识。 @param cmdID 命令 ID。 @param errCode 错误码。 @param missed 丢失的消息数量。 @note 只有在发送端设置了可靠传输(reliable),接收方才能收到消息的丢失回调。 7.1 收到自定义消息的事件回调 当房间中的某个用户使用 {@link sendCustomCmdMsg} 发送自定义 UDP 消息时,房间中的其它用户可以通过 onRecvCustomCmdMsg 事件回调接收到该条消息。 @param userId 用户标识。 @param cmdID 命令 ID。 @param seq 消息序号。 @param message 消息数据。 6.10 测试扬声器时的音量回调 当您调用 {@link startSpeakerDeviceTest} 测试扬声器是否正常工作时,SDK 会不断地抛出此回调。 参数中的 volume 代表的是 SDK 提交给系统扬声器去播放的声音的音量值大小,如果该数值持续变化,但用户反馈听不到声音,则说明扬声器状态异常。 @param volume SDK 提交给扬声器去播放的声音的音量,取值范围0 - 100。 6.8 系统声音采集是否被成功开启的事件回调(仅适用于 Mac 系统) 在 Mac 系统上,您可以通过调用 {@link startSystemAudioLoopback} 为当前系统安装一个音频驱动,并让 SDK 通过该音频驱动捕获当前 Mac 系统播放出的声音。 当用于播片教学或音乐直播中,比如老师端可以使用此功能,让 SDK 能够采集老师所播放的电影中的声音,使同房间的学生端也能听到电影中的声音。 SDK 会将统声音采集是否被成功开启的结果,通过本事件回调抛出,需要您关注参数中的错误码。 @param err ERR_NULL 表示成功,其余值表示失败。 6.9 测试麦克风时的音量回调 当您调用 {@link startMicDeviceTest} 测试麦克风是否正常工作时,SDK 会不断地抛出此回调,参数中的 volume 代表当前麦克风采集到的音量大小。 如果在测试期间 volume 出现了大小波动的情况,说明麦克风状态健康;如果 volume 的数值始终是 0,说明麦克风的状态异常,需要提示用户进行更换。 @param volume 麦克风采集到的音量值,取值范围0 - 100。 6.7 当前系统的播放音量发生变化 在 Mac 或 Windows 这样的桌面操作系统上,用户可以在设置中心找到声音相关的设置面板,并设置系统的播放音量大小。 在有些型号的键盘以及笔记本电脑上,用户还可以通过按下“静音”按钮(图标是一个喇叭上叠加了一道代表禁用的斜线)来将系统静音。 当用户通过系统设置界面或者通过键盘上的快捷键设定操作系统的播放音量时,SDK 便会抛出此事件。 @param volume 系统播放音量,取值范围 0 - 100,用户可以在系统的声音设置面板上进行拖拽调整。 @param muted 系统是否被用户静音了:true 被静音,false 已恢复。 @note 您需要调用 {@link enableAudioVolumeEvaluation} 接口并设定 interval 大于 0 开启次事件回调,设定 interval 等于 0 关闭此事件回调。 6.6 当前麦克风的系统采集音量发生变化 在 Mac 或 Windows 这样的桌面操作系统上,用户可以在设置中心找到声音相关的设置面板,并设置麦克风的采集音量大小。 用户将麦克风的采集音量设置得越大,麦克风采集到的声音的原始音量也就会越大,反之就会越小。 在有些型号的键盘以及笔记本电脑上,用户还可以通过按下“禁用麦克风”按钮(图标是一个话筒上上叠加了一道代表禁用的斜线)来将麦克风静音。 当用户通过系统设置界面或者通过键盘上的快捷键设定操作系统的麦克风采集音量时,SDK 便会抛出此事件。 @param volume 系统采集音量,取值范围 0 - 100,用户可以在系统的声音设置面板上进行拖拽调整。 @param muted 麦克风是否被用户禁用了:true 被禁用,false 被启用。 @note 您需要调用 {@link enableAudioVolumeEvaluation} 接口并设定 interval 大于 0 开启次事件回调,设定 interval 等于 0 关闭此事件回调。 6.5 本地设备的通断状态发生变化(仅适用于桌面系统) 当本地设备(包括摄像头、麦克风以及扬声器)被插入或者拔出时,SDK 便会抛出此事件回调。 @param deviceId 设备 ID。 @param deviceType 设备类型。 @param state 通断状态,0:设备已添加;1:设备已被移除;1:设备已启用。 6.4 音量大小的反馈回调 SDK 可以评估每一路音频的音量大小,并每隔一段时间抛出该事件回调,您可以根据音量大小在 UI 上做出相应的提示,比如`波形图`或`音量槽`。 要完成这个功能, 您需要先调用 {@link enableAudioVolumeEvaluation} 开启这个能力并设定事件抛出的时间间隔。 需要补充说明的是,无论当前房间中是否有人说话,SDK 都会按照您设定的时间间隔定时抛出此事件回调。 @param userVolumes 是一个数组,用于承载所有正在说话的用户的音量大小,取值范围 0 - 100。 @param totalVolume 所有远端用户的总音量大小, 取值范围 0 - 100。 @note userVolumes 为一个数组,对于数组中的每一个元素,当 userId 为空时表示本地麦克风采集的音量大小,当 userId 不为空时代表远端用户的音量大小。 6.2 麦克风准备就绪 当您调用 {@link startLocalAudio} 之后,SDK 会尝试启动麦克风,如果麦克风能够启动成功就会抛出本事件。 如果启动失败,大概率是因为当前应用没有获得访问麦克风的权限,或者麦克风当前正在被其他程序独占使用中。 您可以通过捕获 {@link onError} 事件回调获知这些异常情况并通过 UI 界面提示用户。 6.1 摄像头准备就绪 当您调用 {@link startLocalPreivew} 之后,SDK 会尝试启动摄像头,如果摄像头能够启动成功就会抛出本事件。 如果启动失败,大概率是因为当前应用没有获得访问摄像头的权限,或者摄像头当前正在被其他程序独占使用中。 您可以通过捕获 {@link onError} 事件回调获知这些异常情况并通过 UI 界面提示用户。 5.3 SDK 与云端的连接已经恢复 SDK 会在跟云端的连接断开时抛出 {@link onConnectionLost},之后会努力跟云端重新建立连接并抛出 {@link onTryToReconnect},连接恢复后会抛出本事件回调。 5.2 SDK 正在尝试重新连接到云端 SDK 会在跟云端的连接断开时抛出 {@link onConnectionLost},之后会努力跟云端重新建立连接并抛出本事件,连接恢复后会抛出 {@link onConnectionRecovery}。 5.1 SDK 与云端的连接已经断开 SDK 会在跟云端的连接断开时抛出此事件回调,导致断开的原因大多是网络不可用或者网络切换所致,比如用户在通话中走进电梯时就可能会遇到此事件。 在抛出此事件之后,SDK 会努力跟云端重新建立连接,重连过程中会抛出 {@link onTryToReconnect},连接恢复后会抛出 {@link onConnectionRecovery} 。 所以,SDK 会在如下三个连接相关的事件中按如下规律切换: ![](https://qcloudimg.tencent-cloud.cn/raw/fb3c40a4fca55b0010d385cf3b2472cd.png) 4.3 网速测试的结果回调 该统计回调由 {@link startSpeedTest:} 触发。 @param result 网速测试数据数据,包括丢包、往返延迟、上下行的带宽速率,详情请参见 {@link TRTCSpeedTestResult}。 4.2 音视频技术指标的实时统计回调 该统计回调每间隔2秒抛出一次,用于通知 SDK 内部音频、视频以及网络相关的专业技术指标,这些信息在 {@link TRTCStatistics} 均有罗列: - 视频统计信息:视频的分辨率(resolution)、帧率(FPS)和比特率(bitrate)等信息。 - 音频统计信息:音频的采样率(samplerate)、声道(channel)和比特率(bitrate)等信息。 - 网络统计信息:SDK 和云端一次往返(SDK > Cloud > SDK)的网络耗时(rtt)、丢包率(loss)、上行流量(sentBytes)和下行流量(receivedBytes)等信息。 @param statistics 统计数据,包括自己本地的统计信息和远端用户的统计信息,详情请参考 {@link TRTCStatistics}。 @note 如果您只需要获知当前网络质量的好坏,并不需要花太多时间研究本统计回调,更推荐您使用 {@link onNetworkQuality} 来解决问题。 4.1 网络质量的实时统计回调 该统计回调每间隔2秒抛出一次,用于通知 SDK 感知到的当前网络的上行和下行质量。 SDK 会使用一组内嵌的自研算法对当前网络的延迟高低、带宽大小以及稳定情况进行评估,并计算出一个的评估结果: 如果评估结果为 1(Excellent) 代表当前的网络情况非常好,如果评估结果为 6(Down)代表当前网络无法支撑 TRTC 的正常通话。 @param localQuality 上行网络质量。 @param remoteQuality 下行网络质量。 @note 回调参数 localQuality 和 remoteQuality 中的 userId 如果为空置,代表本组数据统计的是自己本地的网络质量,否则是代表远端用户的网络质量。 3.12 用户视频大小发生改变回调 当您收到 onUserVideoSizeChanged(userId, streamtype, newWidth, newHeight) 通知时,表示该路画面大小发生了调整,调整的原因可能是该用户调用了 setVideoEncoderParam 或者 setSubStreamEncoderParam 重新设置了画面尺寸。 @param userId 用户标识。 @param streamType 视频流类型:主路(Main)一般用于承载摄像头画面,辅路(Sub)一般用于承载屏幕分享画面。 @param newWidth 视频流的宽度(像素)。 @param newHeight 视频流的高度(像素)。 3.11 远端音频状态变化的事件回调 您可以通过此事件回调获取远端每一路音频的播放状态(包括 Playing、Loading 和 Stopped 三种状态),从而进行相应的 UI 展示。 @param userId 用户标识。 @param status 音频状态:包括 Playing、Loading 和 Stopped 三种状态。 @param reason 音频状态改变的原因。 @param extrainfo 额外信息。 3.10 远端视频状态变化的事件回调 您可以通过此事件回调获取远端每一路画面的播放状态(包括 Playing、Loading 和 Stopped 三种状态),从而进行相应的 UI 展示。 @param userId 用户标识。 @param streamType 视频流类型:主路(Main)一般用于承载摄像头画面,辅路(Sub)一般用于承载屏幕分享画面。 @param status 视频状态:包括 Playing、Loading 和 Stopped 三种状态。 @param reason 视频状态改变的原因。 @param extrainfo 额外信息。 3.9 自己本地的首个音频帧已被发布出去 当您成功进入房间并通过 {@link startLocalAudio} 开启本地音频采集之后(开启采集和进入房间的先后顺序无影响),SDK 就会开始进行音频编码,并通过自身的网络模块向云端发布自己本地的音频数据。当 SDK 成功地向云端送出自己的第一帧音频数据帧以后,就会抛出 onSendFirstLocalAudioFrame 事件回调。 3.8 自己本地的首个视频帧已被发布出去 当您成功进入房间并通过 {@link startLocalPreview} 或 {@link startScreenCapture} 开启本地视频采集之后(开启采集和进入房间的先后顺序无影响),SDK 就会开始进行视频编码,并通过自身的网络模块向云端发布自己本地的视频数据。当 SDK 成功地向云端送出自己的第一帧视频数据帧以后,就会抛出 onSendFirstLocalVideoFrame 事件回调。 @param streamType 视频流类型:主路(Main)一般用于承载摄像头画面,辅路(Sub)一般用于承载屏幕分享画面。 3.7 SDK 开始播放远端用户的首帧音频 SDK 会在播放远端用户的首帧音频时抛出该事件,本地音频的首帧事件暂不抛出。 @param userId 远端用户的用户标识。 3.6 SDK 开始渲染自己本地或远端用户的首帧画面 SDK 会在渲染自己本地或远端用户的首帧画面时抛出该事件,您可以通过回调事件中的 userId 参数来判断事件来自于“本地”还是来自于“远端”。 - 如果 userId 为空值,代表 SDK 已经开始渲染自己本地的视频画面,不过前提是您已经调用了 {@link startLocalPreview} 或 {@link startScreenCapture}。 - 如果 userId 不为空,代表 SDK 已经开始渲染远端用户的视频画面,不过前提是您已经调用了 {@link startRemoteView} 订阅了该用户的视频画面。 @param userId 本地或远端的用户标识,如果 userId 为空值代表自己本地的首帧画面已到来,userId 不为空则代表远端用户的首帧画面已到来。 @param streamType 视频流类型:主路(Main)一般用于承载摄像头画面,辅路(Sub)一般用于承载屏幕分享画面。 @param width 画面的宽度。 @param height 画面的高度。 @note 1. 只有当您调用了 {@link startLocalPreview} 或 {@link startScreenCapture} 之后,才会触发自己本地的首帧画面事件回调。 2. 只有当您调用了 {@link startRemoteView} 或 {@link startRemoteSubStreamView} 之后,才会触发远端用户的首帧画面事件回调。 3.5 某远端用户发布/取消了自己的音频 当您收到 onUserAudioAvailable(userId, true) 通知时,表示该用户发布了自己的声音,此时 SDK 的表现为: - 在自动订阅模式下,您无需做任何操作,SDK 会自动播放该用户的声音。 - 在手动订阅模式下,您可以通过 {@link muteRemoteAudio}(userid, false) 来播放该用户的声音。 @param userId 远端用户的用户标识。 @param available 该用户是否发布(或取消发布)了自己的音频,true: 发布;false:取消发布。 @note SDK 默认使用自动订阅模式,您可以通过 {@link setDefaultStreamRecvMode} 设置为手动订阅,但需要在您进入房间之前调用才生效。 3.4 某远端用户发布/取消了辅路视频画面 “辅路画面”一般被用于承载屏幕分享的画面。当您收到 onUserSubStreamAvailable(userId, true) 通知时,表示该路画面已经有可播放的视频帧到达。 此时,您需要调用 {@link startRemoteSubStreamView} 接口订阅该用户的远程画面,订阅成功后,您会继续收到该用户的首帧画面渲染回调 onFirstVideoFrame(userid)。 @param userId 远端用户的用户标识。 @param available 该用户是否发布(或取消发布)了辅路视频画面,true: 发布;false:取消发布。 @note 显示辅路画面使用的函数是 {@link startRemoteSubStreamView} 而非 {@link startRemoteView}。 3.3 某远端用户发布/取消了主路视频画面 **主路画面** 一般被用于承载摄像头画面。当您收到 onUserVideoAvailable(userId, true) 通知时,表示该路画面已经有可播放的视频帧到达。 此时,您需要调用 {@link startRemoteView} 接口订阅该用户的远程画面,订阅成功后,您会继续收到该用户的首帧画面渲染回调 onFirstVideoFrame(userid)。 当您收到 onUserVideoAvailable(userId, false) 通知时,表示该路远程画面已经被关闭,关闭的原因可能是该用户调用了 {@link muteLocalVideo} 或 {@link stopLocalPreview}。 @param userId 远端用户的用户标识。 @param available 该用户是否发布(或取消发布)了主路视频画面,true:发布;false:取消发布。 3.2 有用户离开当前房间 与 onRemoteUserEnterRoom 相对应,在两种不同的应用场景(即 AppScene,在 enterRoom 时通过第二个参数指定)下,该通知的行为会有差别: - 直播类场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom):只有主播离开房间时才会触发该通知,观众离开房间不会触发该通知。 - 通话类场景(TRTCAppSceneVideoCall 和 TRTCAppSceneAudioCall):该场景下用户没有角色的区别,任何用户的离开都会触发该通知。 @param userId 远端用户的用户标识。 @param reason 离开原因,0表示用户主动退出房间,1表示用户超时退出,2表示被踢出房间。 3.1 有用户加入当前房间 出于性能方面的考虑,在 TRTC 两种不同的应用场景(即 AppScene,在 enterRoom 时通过第二个参数指定)下,该通知的行为会有差别: - 直播类场景(TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom):该场景下的用户区分主播和观众两种角色,只有主播进入房间时才会触发该通知,观众进入房间时不会触发该通知。 - 通话类场景(TRTCAppSceneVideoCall 和 TRTCAppSceneAudioCall):该场景下的用户没有角色的区分(可认为都是主播),任何用户进入房间都会触发该通知。 @param userId 远端用户的用户标识。 @note 1. 事件回调 onRemoteUserEnterRoom 和 onRemoteUserLeaveRoom 只适用于维护当前房间里的“用户列表”,有此事件回调不代表一定有视频画面。 2. 如果需要显示远程画面,请监听代表某个用户是否有视频画面的 onUserVideoAvailable() 事件回调。 2.6 结束跨房通话的结果回调 2.5 请求跨房通话的结果回调 调用 TRTCCloud 中的 connectOtherRoom() 接口会将两个不同房间中的主播拉通视频通话,也就是所谓的“主播PK”功能。 调用者会收到 onConnectOtherRoom() 回调来获知跨房通话是否成功, 如果成功,两个房间中的所有用户都会收到来自另一个房间中的 PK 主播的 onUserVideoAvailable() 回调。 @param userId 要跨房通话的另一个房间中的主播的用户 ID。 @param errCode 错误码,ERR_NULL 代表切换成功,其他请参见[错误码](https://cloud.tencent.com/document/product/647/32257)。 @param errMsg 错误信息。 2.4 切换房间的结果回调 调用 TRTCCloud 中的 switchRoom() 接口可以让用户快速地从一个房间切换到另一个房间,待 SDK 切换完成后,会抛出 onSwitchRoom() 事件回调。 @param errCode 错误码,ERR_NULL 代表切换成功,其他请参见[错误码](https://cloud.tencent.com/document/product/647/32257)。 @param errMsg 错误信息。 2.3 切换角色的事件回调 调用 TRTCCloud 中的 switchRole() 接口会切换主播和观众的角色,该操作会伴随一个线路切换的过程,待 SDK 切换完成后,会抛出 onSwitchRole() 事件回调。 @param errCode 错误码,ERR_NULL 代表切换成功,其他请参见[错误码](https://cloud.tencent.com/document/product/647/32257)。 @param errMsg 错误信息。 2.2 离开房间的事件回调 调用 TRTCCloud 中的 exitRoom 接口会执行退出房间的相关逻辑,例如释放音视频设备资源和编解码器资源等。 待 SDK 占用的所有资源释放完毕后,SDK 会抛出 onExitRoom() 回调通知到您。 如果您要再次调用 enterRoom 或者切换到其他的音视频 SDK,请等待 onExitRoom 回调到来后再执行相关操作。否则可能会遇到例如摄像头、麦克风设备被强占等各种异常问题。 @param reason 离开房间原因,0:主动调用 exitRoom 退出房间;1:被服务器踢出当前房间;2:当前房间整个被解散。 1.2 警告事件回调 警告事件,表示 SDK 抛出的提示性问题,比如视频出现卡顿或 CPU 使用率太高等。 参考文档:[错误码表](https://cloud.tencent.com/document/product/647/32257) @param warningCode 警告码 @param warningMsg 警告信息 @param extInfo 扩展信息字段,个别警告码可能会带额外的信息帮助定位问题 1.1 错误事件回调 错误事件,表示 SDK 抛出的不可恢复的错误,比如进入房间失败或设备开启失败等。 参考文档:[错误码表](https://cloud.tencent.com/document/product/647/32257) @param errCode 错误码 @param errMsg 错误信息 @param extInfo 扩展信息字段,个别错误码可能会带额外的信息帮助定位问题 【字段含义】数组 remoteStatisticsArray 的大小。 【字段含义】远端的音视频统计信息 因为同时可能有多个远端用户,而且每个远端用户同时可能有多路音视频流(即高清大画面,低清小画面,以及辅流画面),因此远端的音视频统计信息是一个数组。 【字段含义】数组 localStatisticsArray 的大小 【字段含义】本地的音视频统计信息 由于本地可能有三路音视频流(即高清大画面,低清小画面,以及辅流画面),因此本地的音视频统计信息是一个数组。 【字段含义】总接收字节数(包含信令数据和音视频数据),单位:字节数(Bytes)。 【字段含义】总发送字节数(包含信令数据和音视频数据),单位:字节数(Bytes)。 【字段含义】从云端到 SDK 的下行丢包率,单位 (%) 该数值越小越好,如果 downLoss 为 0%,则意味着下行链路的网络质量很好,从云端接收的数据包基本不发生丢失。 如果 downLoss 为 30%,则意味着云端向 SDK 传输的音视频数据包中,会有 30% 丢失在传输链路中。 【字段含义】从 SDK 到云端的上行丢包率,单位 (%) 该数值越小越好,如果 upLoss 为 0%,则意味着上行链路的网络质量很好,上传到云端的数据包基本不发生丢失。 如果 upLoss 为 30%,则意味着 SDK 向云端发送的音视频数据包中,会有 30% 丢失在传输链路中。 【字段含义】当前系统的 CPU 使用率,单位 (%),Android 8.0 以上不支持。 【字段含义】当前应用的 CPU 使用率,单位 (%),Android 8.0 以上不支持。 网络和性能的汇总统计指标 【字段含义】视频流类型(高清大画面|低清小画面|辅流画面)。 【字段含义】该路音视频流的总丢包率(%)。已废弃,不推荐使用;建议使用 audioPacketLoss、videoPacketLoss 替代。 【字段含义】视频播放卡顿率,单位 (%) 视频播放卡顿率(videoBlockRate) = 视频播放的累计卡顿时长(videoTotalBlockTime) / 视频播放的总时长。 【字段含义】视频播放的累计卡顿时长,单位 ms 【字段含义】音频播放卡顿率,单位 (%) 音频播放卡顿率(audioBlockRate) = 音频播放的累计卡顿时长(audioTotalBlockTime) / 音频播放的总时长 【字段含义】音频播放的累计卡顿时长,单位 ms 【字段含义】端到端延迟,单位 ms point2PointDelay 代表 “主播=>云端=>观众” 的延迟,更准确地说,它代表了“采集=>编码=>网络传输=>接收=>缓冲=>解码=>播放” 全链路的延迟。 point2PointDelay 需要本地和远端的 SDK 均为 8.5 及以上的版本才生效,若远端用户为 8.5 以前的版本,此数值会一直为0,代表无意义。 【字段含义】播放延迟,单位 ms 为了避免网络抖动和网络包乱序导致的声音和画面卡顿,TRTC 会在播放端管理一个播放缓冲区,用于对接收到的网络数据包进行整理,该缓冲区的大小会根据当前的网络质量进行自适应调整,该缓冲区的大小折算成以毫秒为单位的时间长度,也就是 jitterBufferDelay。 【字段含义】本地音频的码率,单位 Kbps 【字段含义】本地音频的采样率,单位 Hz。 【字段含义】远端视频的码率,单位 Kbps。 【字段含义】远端视频的帧率,单位:FPS。 【字段含义】远端视频的高度,单位 px。 【字段含义】远端视频的宽度,单位 px。 【字段含义】该路视频流的总丢包率(%)。 videoPacketLoss 代表该路视频流历经`主播>云端>观众`这样一条完整的传输链路后,最终在观众端统计到的丢包率。 videoPacketLoss 越小越好,丢包率为0即表示该路视频流的所有数据均已经完整地到达了观众端。 如果出现了 downLoss == 0 但 videoPacketLoss != 0 的情况,说明该路视频流在`云端>观众`这一段链路上没有出现丢包,但是在`主播>云端`这一段链路上出现了不可恢复的丢包。 【字段含义】音频流的总丢包率(%)。 audioPacketLoss 代表音频流历经`主播>云端>观众`这样一条完整的传输链路后,最终在观众端统计到的丢包率。 audioPacketLoss 越小越好,丢包率为0即表示该路音频流的所有数据均已经完整地到达了观众端。 如果出现了 downLoss == 0 但 audioPacketLoss != 0 的情况,说明该路音频流在“云端=>观众”这一段链路上没有出现丢包,但是在`主播>云端`这一段链路上出现了不可恢复的丢包。 【字段含义】用户 ID 远端的音视频统计指标 【字段含义】音频设备采集状态(用于检测音频外设的健康度)。 0:采集设备状态正常;1:检测到长时间静音;2:检测到破音;3:检测到声音异常间断。 【字段含义】视频流类型(高清大画面|低清小画面|辅流画面)。 【字段含义】本地音频的码率,即每秒钟新产生音频数据的多少,单位 Kbps。 【字段含义】本地音频的采样率,单位 Hz。 【字段含义】本地视频的码率,即每秒钟新产生视频数据的多少,单位 Kbps。 【字段含义】本地视频的帧率,即每秒钟会有多少视频帧,单位:FPS。 【字段含义】本地视频的高度,单位 px。 【字段含义】本地视频的宽度,单位 px。 本地的音视频统计指标 警告码 前是观众角色,不支持发布音视频,需要先切换成主播角色 录制音频时监测到啸叫 音频录制写入文件失败 当前音频帧解码失败 音频播放设备不可用(例如被占用或者PC判定无效设备) 音频采集设备不可用(例如被占用或者PC判定无效设备) 用户未授权当前应用使用麦克风 没有检测到可用的扬声器设备 没有检测到可用的麦克风设备 视频渲染失败 软解码器启动失败 当前流硬解第一个 I 帧失败,SDK 自动切软解 硬解启动失败,采用软解码 当前视频帧解码失败 用户未授权当前应用使用屏幕录制 用户未授权当前应用使用摄像头 没有检测到可用的摄像头设备 摄像头采集分辨率被降低,以满足当前帧率和性能最优解。 软编码启动失败 摄像头采集帧率不足,部分自带美颜算法的 Android 手机上会出现 当前 CPU 使用率太高,无法满足软件编码需求,自动切换到硬件编码 表示编码器发生改变,可以通过 onWarning 函数的扩展信息中的 type 字段来获取当前的编码格式。 其中 1 代表 265 编码,0 代表 264 编码。注意 Windows 端不支持此错误码的扩展信息。 硬编码启动出现问题,自动切换到软编码 错误码 当前是观众角色,不能请求或断开跨房连麦,需要先 `switchRole` 到主播 无效参数 请求退出连麦超时 请求连麦超时 停止向腾讯云的直播 CDN 推流信令异常 停止向腾讯云的直播 CDN 推流信令超时 开始向腾讯云的直播 CDN 推流信令异常 开始向腾讯云的直播 CDN 推流信令超时 云端混流回包异常 旁路转推回包异常 云端混流请求超时 旁路转推请求超时 UserSig 校验失败,请检查参数 TRTCParams.userSig 是否填写正确,或是否已经过期。 您可参考 [UserSig 生成与校验](https://cloud.tencent.com/document/product/647/50686) 进行校验 服务不可用。请检查:套餐包剩余分钟数是否大于0,腾讯云账号是否欠费。 您可参考 [套餐包管理](https://cloud.tencent.com/document/product/647/50492) 进行查看与配置 您开启了高级权限控制,但参数 TRTCParams.privateMapKey 校验失败, 您可参考 [高级权限控制](https://cloud.tencent.com/document/product/647/32240) 进行检查 进房请求被拒绝,请检查是否连续调用 enterRoom 进入相同 Id 的房间 进房参数 userSig 不正确,请检查 TRTCParams.userSig 是否为空 进房参数 userId 不正确,请检查 TRTCParams.userId 是否为空 进房参数 roomId 错误,请检查 TRTCParams.roomId 或 TRTCParams.strRoomId 是否为空,注意 roomId 和 strRoomId 不可混用 进房参数 sdkAppId 错误,请检查 TRTCParams.sdkAppId 是否为空 进房参数为空,请检查: enterRoom:appScene: 接口调用是否传入有效的 param 请求进房超时,请检查是否断网或者是否开启vpn,您也可以切换4G进行测试确认 请求 IP 和 sig 超时,请检查网络是否正常,或网络防火墙是否放行 UDP。 可尝试访问下列 IP:162.14.22.165:8000 162.14.6.105:8000 和域名:default-query.trtc.tencent-cloud.com:8000 进入房间失败,请查看 onError 中的 -3301 对应的 msg 提示确认失败原因 不支持的音频采样率 音频帧编码失败,例如传入自定义音频数据,SDK 无法处理 安装虚拟声卡插件成功,但首次安装后功能暂时不可用,此为 Mac 系统限制,请在收到此错误码后提示用户重启当前 APP 安装音频驱动插件失败 安装音频驱动插件未授权 开启系统声音录制失败,例如音频驱动插件不可用 停止扬声器失败 扬声器设置参数失败 打开扬声器失败,例如在 Windows 或 Mac 设备,扬声器的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序 停止麦克风失败 麦克风正在被占用中,例如移动设备正在通话时,打开麦克风会失败 麦克风设置参数失败 麦克风设备未授权,通常在移动设备出现,可能是权限被用户拒绝了 打开麦克风失败,例如在 Windows 或 Mac 设备,麦克风的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序 找不到可用的 HEVC 解码器 自定视频采集:设置的 buffer type 不支持 自定视频采集:设置的 pixel format 不支持 不支持的视频分辨率 视频帧编码失败,例如 iOS 设备切换到其他应用时,硬编码器可能被系统释放,再切换回来时,硬编码器重启前,可能会抛出 其他用户正在上行辅路 没有权限上行辅路 录屏被系统中止 录屏失败,在 Android 平台,需要5.0以上的系统,在 iOS 平台,需要11.0以上的系统 开始录屏失败,如果在移动设备出现,可能是权限被用户拒绝了,如果在 Windows 或 Mac 系统的设备出现,请检查录屏接口的参数是否符合要求 摄像头正在被占用中,可尝试打开其他摄像头 摄像头参数设置出错(参数不支持或其它) 摄像头设备未授权,通常在移动设备出现,可能是权限被用户拒绝了 打开摄像头失败,例如在 Windows 或 Mac 设备,摄像头的配置程序(驱动程序)异常,禁用后重新启用设备,或者重启机器,或者更新配置程序 断开连接 服务器无法处理您的请求 请求服务器超时 license 不合法,调用失败 当前 API 不支持调用 API 调用被拒绝 调用 API 时,传入的参数不合法 暂未归类的通用错误 无错误 【字段含义】 数组 watermarkList 的元素个数。 【字段含义】指定混合画面的中每一路水印画面的位置、大小、图层等信息。 【推荐取值】该字段是一个 TRTCWatermark 类型的数组,数组中的每一个元素都用来代表每一路水印的信息。 【字段含义】 数组 audioMixUserList 的元素个数。 【字段含义】指定转码流中的每一路输入音频的信息。 【推荐取值】该字段是一个 TRTCUser 类型的数组,数组中的每一个元素都用来代表每一路输入音频的信息。 【特别说明】用户信息支持不填写(即 audioMixUserList 为空)。此时若设置了 TRTCStreamEncoderParam 中音频相关编码输出参数,TRTC 后台服务器将自动将所有主播的音频混合输出(当前仅支持最高 16 路音视频输入)。 【字段含义】 数组 videoLayoutList 的元素个数。 【字段含义】指定混合画面的中每一路视频画面的位置、大小、图层以及流类型等信息。 【推荐取值】该字段是一个 TRTCVideoLayout 类型的数组,数组中的每一个元素都用来代表每一路画面的信息。 【字段含义】指定混合画面的背景图 URL,腾讯云的后台服务器会将该 URL 地址指定的图片混合到最终的画面中。 【推荐取值】默认值:空值,即不设置背景图片。 【特别说明】 - URL 链接长度限制为 512 字节。图片大小限制不超过 2MB。 - 图片格式支持 png、jpg、jpeg、bmp 格式,推荐使用 png 格式的半透明图片作为背景图。 【字段含义】指定混合画面的底色颜色。 【推荐取值】默认值:0x000000 代表黑色。格式为十六进制数字,比如:“0x61B9F1” 代表 RGB 分别为 (97、158、241)。 5.31 媒体流转码配置参数 该配置用于媒体流发布接口({@link startPublishMediaStream})。 用于指定转码时各路画面的排版位置信息和输入的音频信息。 【字段含义】指定媒体发布流的目标音频编码类型。 【推荐取值】默认值:0,代表LC-AAC。可设定的数值只有三个数字:0 - LC-AAC,1 - HE-AAC,2 - HE-AACv2。 【特别说明】HE-AAC 和 HE-AACv2 支持的输出流音频采样率范围为[48000, 44100, 32000, 24000, 16000]。 【特别说明】当音频编码设置为 HE-AACv2 时,只支持输出流音频声道数为双声道。 【字段含义】指定媒体发布流的目标音频码率(kbps)。 【推荐取值】默认值:50kbps,取值范围是 [32,192]。 【字段含义】指定媒体发布流的目标音频声道数。 【推荐取值】默认值:1,代表单声道。可设定的数值只有两个数字:1-单声道,2-双声道。 【字段含义】指定媒体发布流的目标音频采样率。 【推荐取值】默认值:48000Hz。取值为 [48000, 44100, 32000, 24000, 16000, 8000],单位是 Hz。 【字段含义】指定媒体发布流的目标视频码率(kbps)。 【推荐取值】如果填 0,TRTC 会根据 videoEncodedWidth 和 videoEncodedHeight 估算出一个合理的码率值,您也可以参考视频分辨率枚举定义中所推荐的码率值(见注释部分)。 【字段含义】指定媒体发布流的目标视频关键帧间隔(GOP)。 【推荐取值】推荐值:3,单位为秒,取值范围是 [1,5]。 【字段含义】指定媒体发布流的目标视频帧率(FPS)。 【推荐取值】推荐值:20fps,取值范围是 (0,30]。 【字段含义】指定媒体发布流的目标分辨率(高度)。 【推荐取值】单位:像素值,推荐值:640,如果你只混合音频流,请将 width 和 height 均设置为 0,否则混流转码后的直播流中会有黑色背景。 【字段含义】指定媒体发布流的目标分辨率(宽度)。 【推荐取值】单位:像素值,推荐值:368,如果你只混合音频流,请将 width 和 height 均设置为 0,否则混流转码后的直播流中会有黑色背景。 5.30 媒体流编码输出参数 【字段含义】该配置用于媒体流发布接口({@link startPublishMediaStream})。 【特别说明】当您的发布目标({@link TRTCPublishTarget})中的 mode 配置为 TRTCPublish_MixStream_ToCdn 或者 TRTCPublish_MixStream_ToRoom 时,该参数为必填。 【特别说明】当您使用转推服务(mode 为 TRTCPublish_BigStream_ToCdn 或者 TRTCPublish_SubStream_ToCdn)时,为了更好的转推稳定性以及更好的 CDN 播放兼容性,也建议您填写该配置的具体参数。 【字段含义】指定该路水印画面的层级(取值范围:0 - 15,不可重复)。 【字段含义】指定该路水印画面的坐标区域(单位:像素)。 【字段含义】水印 URL,腾讯云的后台服务器会将该 URL 地址指定的图片混合到最终的画面中。 【特别说明】 - URL 链接长度限制为 512 字节。图片大小限制不超过 2MB。 - 图片格式支持 png、jpg、jpeg、bmp 格式,推荐使用 png 格式的半透明图片作为水印。 5.29 水印布局 该配置用于媒体流发布接口 ({@link startPublishMediaStream}) 中的转码配置 ({@link TRTCStreamMixingConfig}) 【字段含义】指定该路画面是主路画面({@link TRTCVideoStreamTypeBig})还是辅路画面({@link TRTCVideoStreamTypeSub})。 【字段含义】参与转码的用户信息。 【特别说明】用户信息 ({@link TRTCUser}) 支持不填写(即 userId、intRoomId 和 strRoomId 均不填写)。此时当发起混流的房间中有主播上行音视频数据时,TRTC 后台服务器将自动将对应主播音视频填充到您指定的布局中。 【字段含义】占位图 URL,即当指定用户暂时仅上行音频时,腾讯云的后台服务器会将该 URL 地址指定的图片混合到最终的画面中。 【推荐取值】默认值:空值,即不设置占位图。 【特别说明】此时需要您指定用户信息 fixedVideoUser 中的 userId。 【特别说明】 - URL 链接长度限制为 512 字节。图片大小限制不超过 2MB。 - 图片格式支持 png、jpg、jpeg、bmp 格式,推荐使用 png 格式的半透明图片作为占位图。 【字段含义】指定混合画面的底色颜色。 【推荐取值】默认值:0x000000 代表黑色。格式为十六进制数字,比如:“0x61B9F1” 代表 RGB 分别为 (97,158,241)。 【字段含义】画面填充模式。 【推荐取值】填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:{@link TRTCVideoFillMode_Fill}。 【字段含义】指定该路画面的层级(取值范围:0 - 15,不可重复)。 【字段含义】指定该路画面的坐标区域(单位:像素)。 5.28 转码视频布局 该配置用于媒体流发布接口({@link startPublishMediaStream})中的转码配置({@link TRTCStreamMixingConfig})。 用于指定转码流中每一路视频画面的位置、大小、图层以及流类型等信息。 【字段含义】回推房间机器人信息。 【特别说明】仅当您的 mode 选择为 TRTCPublishMixStreamToRoom 时,您需要设置该参数。 【特别说明】设置后,该路转码音视频数据将回推到您指定的房间中。建议设置为特殊的 userId,以避免难以区分回推机器人和您通过 TRTC SDK 进房的主播。 【特别说明】当您进房前设置的订阅模式({@link setDefaultStreamRecvMode}) 均为手动时,您需要自行管理您想要拉取的音视频流(通常当您拉取回推房间的转码流时,您应该取消订阅参与转码的对应音视频单流)。 【特别说明】当您进房前设置的订阅模式({@link setDefaultStreamRecvMode}) 均为自动时,不参与转码的用户将自动收到后台下发的转码流并不再继续接收参与转码的音视频单流。除非您明确进行取消订阅({@link muteRemoteVideoStream} 和 {@link muteRemoteAudio}),否则转码流数据将持续下发。 【特别说明】为了减少订阅复杂性,全量订阅接口({@link muteAllRemoteAudio} 和 {@link muteAllRemoteVideoStreams})对回推房间机器人的下发数据不生效。 【特别说明】参与混流的用户不支持订阅该转码流。 【字段含义】数组 cdnUrlList 的元素个数。 【特别说明】若您的 mode 选择为 TRTCPublishMixStreamToRoom,此时您不需要设置该参数。 【字段含义】发布至腾讯或者第三方直播服务商的推流地址(RTMP 格式)。 【特别说明】若您的 mode 选择为 TRTCPublishMixStreamToRoom,此时您不需要设置该参数。 【字段含义】媒体流发布模式。 【推荐取值】请根据您的业务场景要求自行选择,TRTC 支持转推、转码和回推到 RTC 房间的模式。 【特别说明】若您的业务场景需要多个发布模式,您可以通过多次调用媒体流发布接口 ({@link startPublishMediaStream}) 并分别设置不同的 TRTCPublishTarget。 【特别说明】同一个 mode 请对应一个媒体流发布接口 ({@link startPublishMediaStream}),并在后续需要调整时,使用 {@link updatePublishCDNStream} 进行更新。 5.27 目标推流配置 该配置用于媒体流发布接口 {@link startPublishMediaStream}。 【字段含义】指定该路音视频流是否发布至腾讯云。 【推荐取值】默认值:true。 【特别说明】若您的目标直播服务商为腾讯,请将此参数设置为 true,此时后台计费系统不会对此计算转推服务费。 【字段含义】指定该路音视频流在腾讯或者第三方直播服务商的推流地址(RTMP 格式)。 【推荐取值】各家服务商的推流地址规则差异较大,请根据目标服务商的要求填写合法的推流 URL,TRTC 的后台服务器会按照您填写的 URL 向第三方服务商推送标准格式音视频流。 【特别说明】推流 URL 必须为 RTMP 格式,必须符合您的目标直播服务商的规范要求,否则目标服务商会拒绝来自 TRTC 后台服务的推流请求。 5.26 向腾讯或者第三方 CDN 上发布音视频流时需设置的 url 配置 该配置用于媒体流发布接口 {@link startPublishMediaStream} 中的目标推流配置 ({@link TRTCPublishTarget}) 【字段含义】数字房间号,需要和您的进房参数 ({@link TRTCParams}) 中的房间号类型相匹配。 【推荐取值】取值范围:1 - 4294967294。 【特别说明】intRoomId 与 strRoomId 是互斥的,若您进房参数中选用 strRoomId,则 intRoomId 需要填写为0。若两者都填,SDK 将优先选用 intRoomId。 【字段含义】用户标识,当前用户的 userId,相当于用户名,使用 UTF-8 编码。 【推荐取值】如果一个用户在您的帐号系统中的 ID 为“mike”,则 userId 即可设置为“mike”。 5.25 媒体流发布相关配置的用户信息 您可以通过设置该参数,配合媒体流目标发布参数 ({@link TRTCPublishTarget}) 和混流转码参数 ({@link TRTCStreamMixingConfig}),将您指定的多路音视频流进行转码并发布到您填写的目标发布地址中 【字段含义】指定用户必定能并发播放。 【特殊说明】指定必定并发播放的用户 ID 列表。这些用户不参与智能选择。 includeUsers 的数量必须小于 maxCount,否则本次并发播放设置失效。 includeUsers 仅在 maxCount > 0 时有效。当 includeUsers 生效时,参与智能并发选择的最大播放数 = maxCount - 有效 includeUsers 的数量。 【字段含义】最大并发播放数。默认值:0。 - 如果 maxCount > 0,且实际人数 > maxCount,会实时智能选出 maxCount 路数据进行播放,这会极大的降低性能消耗。 - 如果 maxCount = 0,SDK 不限制并发播放数,在上麦人数比较多的房间可能会引发性能问题。 5.24 远端音频流智能并发播放策略的参数 该参数用于设置远端音频流智能并发播放策略。 【字段含义】窗口采集时是否采集子窗口(需要子窗口与被采集窗口具有 Owner 或 Popup 属性),默认为 false。 【字段含义】指定高亮边框的宽度,传入0时采用默认描边宽度,默认宽度为 5px,您可以设置的最大值为 50。 【字段含义】指定高亮边框的颜色,RGB 格式,传入 0 时代表采用默认颜色,默认颜色为 #8CBF26。 【字段含义】是否开启高性能模式(只会在分享屏幕时会生效),默认为 true。 【特殊说明】开启后屏幕采集性能最佳,但会丧失抗遮挡能力,如果您同时开启 enableHighLight + enableHighPerformance,远端用户可以看到高亮的边框。 【字段含义】是否高亮正在共享的窗口(在被分享目标周围绘制一个边框),默认为 true。 【字段含义】是否采集目标内容的同时采集鼠标,默认为 true。 5.23 屏幕分享的进阶控制参数 该参数用于屏幕分享相关的接口{@link selectScreenCaptureTarget},用于在指定分享目标时设定一系列进阶控制参数。 比如:是否采集鼠标、是否要采集子窗口、是否要在被分享目标周围绘制一个边框等。 【字段含义】是否为主显示屏(适用于多显示器的情况)。 【字段含义】是否为最小化窗口。 【字段含义】分享窗口的图标。 【字段含义】分享窗口的缩略图。 【字段含义】采集源名称(采用 UTF8 编码)。 【字段含义】采集源的ID,对于窗口,该字段代表窗口的 ID;对于屏幕,该字段代表显示器的 ID。 【字段含义】采集源类型(是分享整个屏幕?还是分享某个窗口?)。 5.21 屏幕分享的目标信息(仅适用于桌面系统) 在用户进行屏幕分享时,可以选择抓取整个桌面,也可以仅抓取某个程序的窗口。 TRTCScreenCaptureSourceInfo 用于描述待分享目标的信息,包括 ID、名称、缩略图等,该结构体中的字段信息均是只读的。 图像的高度。 图像的宽度。 图像数据的大小。 图像存储的内容,一般为 BGRA 结构。 5.20 TRTC 屏幕分享图标信息以及 mute image 垫片 【字段含义】回调数据读写模式 【推荐取值】TRTCAudioFrameOperationModeReadOnly:仅从回调中获取音频数据。可设定的模式有 TRTCAudioFrameOperationModeReadOnly,TRTCAudioFrameOperationModeReadWrite。 【字段含义】采样点数。 【推荐取值】取值必须是 sampleRate/100 的整数倍。 【字段含义】声道数。 【推荐取值】默认值:1,代表单声道。可设定的数值只有两个数字:1-单声道,2-双声道。 【字段含义】采样率。 【推荐取值】默认值:48000Hz。支持 16000, 32000, 44100, 48000。 5.19 音频自定义回调的格式参数 该参数用于在音频自定义回调相关的接口中,设置 SDK 回调出来的音频数据的相关格式(包括采样率、声道数等)。 【字段含义】用于权限控制的权限票据(选填),当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。 【推荐取值】仅建议有高级别安全需求的客户使用,更多详情请参见 [进房权限保护](https://cloud.tencent.com/document/product/647/32240)。 【字段含义】用户签名 [选填],当前 userId 对应的验证签名,相当于登录密码。 如果您在切换房间时不指定新计算出的 userSig,SDK 会继续使用您在进入房间时(enterRoom)时所指定的 userSig。 这就需要您必须保证旧的 userSig 在切换房间的那一刻仍在签名允许的效期内,否则会导致房间切换失败。 【推荐取值】具体计算方法请参见 [如何计算UserSig](https://cloud.tencent.com/document/product/647/17275)。 【字段含义】字符串房间号码 [选填],在同一个房间内的用户可以看到彼此并能够进行音视频通话。 【特别说明】roomId 和 strRoomId 必须并且只能填一个。若两者都填,则优先选择 roomId。 【字段含义】数字房间号码 [选填],在同一个房间内的用户可以看到彼此并能够进行音视频通话。 【推荐取值】取值范围:1 - 4294967294。 【特别说明】roomId 和 strRoomId 必须并且只能填一个。若两者都填,则优先选择 roomId。 5.18 房间切换参数 该参数用于切换房间接口{@link switchRoom},可以让用户从一个房间快速切换到另一个房间。 【字段含义】音效音量。 【推荐取值】取值范围为0 - 100;默认值:100。 【字段含义】音效是否上行。 【推荐取值】true:音效在本地播放的同时,会上行至云端,因此远端用户也能听到该音效;false:音效不会上行至云端,因此只能在本地听到该音效。默认值:false。 【字段含义】循环播放次数。 【推荐取值】取值范围为0 - 任意正整数,默认值:0,表示播放音效一次;1表示播放音效两次;以此类推。 【字段含义】音效文件路径,支持的文件格式:aac、mp3、m4a。 【字段含义】音效 ID 【特别说明】SDK 允许播放多路音效,因此需要音效 ID 进行标记,用于控制音效的开始、停止、音量等。 5.17 音效参数(已废弃) TRTC 中的“音效”特指一些短暂的音频文件,通常仅有几秒钟的播放时间,比如“鼓掌声”、“欢笑声”等。 该参数用于在早期版本的音效播放接口 {@link playAudioEffect} 中指定音效文件(即短音频文件)的路径和播放次数等。 在 7.3 版本以后,音效接口已被新的接口 {@link startPlayMusic} 所取代。 您在指定 startPlayMusic 的参数 {@link TXAudioMusicParam} 时,如果将 “isShortFile” 设置为 true,即为“音效”文件。 【字段含义】interval 录制信息更新频率,单位毫秒,有效范围:1000-10000。默认值为-1,表示不回调。 【字段含义】媒体录制类型,默认值:TRTCRecordTypeBoth,即同时录制音频和视频。 【字段含义】录制的文件地址(必填),请确保路径有读写权限且合法,否则录制文件无法生成。 【特别说明】该路径需精确到文件名及格式后缀,格式后缀用于决定录制出的文件格式,目前支持的格式暂时只有 MP4。 例如:假如您指定路径为 "mypath/record/test.mp4",代表您希望 SDK 生成一个 MP4 格式的本地视频文件。 请您指定一个有读写权限的合法路径,否则录制文件无法生成。 5.16 本地媒体文件的录制参数 该参数用于在本地媒体文件的录制接口 {@link startLocalRecording} 中指定录制相关参数。 接口 startLocalRecording 是接口 startAudioRecording 的能力加强版本,前者可以录制视频文件,后者只能录制音频文件。 【字段含义】音频录制内容类型。 【特别说明】默认录制所有本地和远端音频。 【字段含义】录音文件的保存路径(必填)。 【特别说明】该路径需精确到文件名及格式后缀,格式后缀用于决定录音文件的格式,目前支持的格式有 PCM、WAV 和 AAC。 例如:假如您指定路径为 "mypath/record/audio.aac",代表您希望 SDK 生成一个 AAC 格式的音频录制文件。 请您指定一个有读写权限的合法路径,否则录音文件无法生成。 5.15 本地音频文件的录制参数 该参数用于在音频录制接口 {@link startAudioRecording} 中指定录制参数。 【字段含义】需要转推的 streamId。 【推荐取值】默认值:空值。如果不填写,则默认转推调用者的旁路流。 【字段含义】指定该路音视频流在第三方直播服务商的推流地址(RTMP 格式)。 【推荐取值】各家服务商的推流地址规则差异较大,请根据目标服务商的要求填写合法的推流 URL,TRTC 的后台服务器会按照您填写的 URL 向第三方服务商推送标准格式音视频流。 【特别说明】推流 URL 必须为 RTMP 格式,必须符合您的目标直播服务商的规范要求,否则目标服务商会拒绝来自 TRTC 后台服务的推流请求。 【字段含义】腾讯云直播服务的 bizid。 【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/trtc) 依次单击【应用管理】=>【应用信息】,并在【旁路直播信息】中获取 bizid。 【字段含义】腾讯云直播服务的 AppID。 【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/trtc) 依次单击【应用管理】=>【应用信息】,并在【旁路直播信息】中获取 appid。 5.14 向非腾讯云 CDN 上发布音视频流时需设置的转推参数 TRTC 的后台服务支持通过标准 RTMP 协议,将其中的音视频流发布到第三方直播 CDN 服务商。 如果您使用腾讯云直播 CDN 服务,可无需关注此参数,直接使用 {@link startPublish} 接口即可。 【字段含义】输出到 CDN 上的直播流 ID。 【推荐取值】默认值:空值,即房间里的多路音视频流最终会混合到接口调用者的那一路音视频流上。 - 如不设置该参数,SDK 会执行默认逻辑,即房间里的多路音视频流会混合到该接口调用者的那一路音视频流上,也就是 A + B => A。 - 如您设置该参数,SDK 会将房间里的多路音视频流混合到您指定的直播流上,也就是 A + B => C(C 代表您指定的 streamId)。 【字段含义】 数组 mixUsersArray 的元素个数。 【字段含义】指定云端混流中每一路视频画面的位置、大小、图层以及流类型等信息。 【推荐取值】该字段是一个 TRTCMixUser 类型的数组,数组中的每一个元素都用来代表每一路画面的信息。 【字段含义】指定云端转码的输出流音频编码类型。 【推荐取值】默认值:0,代表LC-AAC。可设定的数值只有三个数字:0 - LC-AAC,1 - HE-AAC,2 - HE-AACv2。 【特别说明】HE-AAC 和 HE-AACv2 支持的输出流音频采样率范围为[48000, 44100, 32000, 24000, 16000]。 【特别说明】当音频编码设置为 HE-AACv2 时,只支持输出流音频声道数为双声道。 【特别说明】HE-AAC 和 HE-AACv2 取值仅在输出流为您额外设置的 streamId 上时才生效。 【字段含义】指定云端转码的音频声道数。 【推荐取值】默认值:1,代表单声道。可设定的数值只有两个数字:1-单声道,2-双声道。 【字段含义】指定云端转码的目标音频码率。 【推荐取值】默认值:64kbps,取值范围是 [32,192]。 【字段含义】指定云端转码的目标音频采样率。 【推荐取值】默认值:48000Hz。支持12000HZ、16000HZ、22050HZ、24000HZ、32000HZ、44100HZ、48000HZ。 【字段含义】指定混合画面的背景图片。 【推荐取值】默认值:空值,即不设置背景图片。 【特别说明】 - 您可以将 image 设置为控制台中的某一个素材 ID,这需要您事先在 “[控制台](https://console.cloud.tencent.com/trtc) => 应用管理 => 功能配置 => 素材管理” 中单击 [新增图片] 按钮进行上传。 - 上传成功后可以获得对应的“图片ID”,然后将“图片ID”转换成字符串类型并设置给 image 字段即可(比如假设“图片ID” 为 63,可以设置 image = @"63")。 - 您也可以将 image 设置为图片的 URL 地址,腾讯云的后台服务器会将该 URL 地址指定的图片混合到最终的画面中。 - URL 链接长度限制为 512 字节。图片大小限制不超过 2MB。 - 图片格式支持 png、jpg、jpeg、bmp 格式。 【字段含义】指定混合画面的底色颜色。 【推荐取值】默认值:0x000000 代表黑色。格式为十六进制数字,比如:“0x61B9F1” 代表 RGB 分别为(97,158,241)。 【字段含义】指定云端转码的目标视频关键帧间隔(GOP)。 【推荐取值】默认值:2,单位为秒,取值范围是 [1,8]。 【字段含义】指定云端转码的目标视频帧率(FPS)。 【推荐取值】默认值:15fps,取值范围是 (0,30]。 【字段含义】指定云端转码的目标视频码率(kbps)。 【推荐取值】如果填0,TRTC 会根据 videoWidth 和 videoHeight 估算出一个合理的码率值,您也可以参考视频分辨率枚举定义中所推荐的码率值(见注释部分)。 【字段含义】指定云端转码的目标分辨率(高度)。 【推荐取值】单位:像素值,推荐值:640,如果你只混合音频流,请将 width 和 height 均设置为 0,否则混流转码后的直播流中会有黑色背景。 【字段含义】指定云端转码的目标分辨率(宽度)。 【推荐取值】单位:像素值,推荐值:360,如果你只混合音频流,请将 width 和 height 均设置为 0,否则混流转码后的直播流中会有黑色背景。 【字段含义】腾讯云直播服务的 bizid。 【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/trtc) 依次单击【应用管理】=>【应用信息】,并在【旁路直播信息】中获取 bizid。 【字段含义】腾讯云直播服务的 AppID。 【推荐取值】请在 [实时音视频控制台](https://console.cloud.tencent.com/trtc) 依次单击【应用管理】=>【应用信息】,并在【旁路直播信息】中获取 appid。 【字段含义】排版模式。 【推荐取值】请根据您的业务场景要求自行选择,预排版模式是适用性较好的一种模式。 5.13 云端混流的排版布局和转码参数 用于指定混流时各路画面的排版位置信息和云端转码的编码参数。 【字段含义】占位图或水印图 - 占位图是指当对应 userId 混流内容为纯音频时,混合后的画面中显示的是占位图片。 - 水印图是指一张贴在混合后画面中的半透明图片,这张图片会一直覆盖于混合后的画面上。 - 当指定 inputType 为 TRTCMixInputTypePureAudio 时,image 为占位图,此时需要您指定 userId。 - 当指定 inputType 为 TRTCMixInputTypeWatermark 时,image 为水印图,此时不需要您指定 userId。 【推荐取值】默认值:空值,即不设置占位图或者水印图。 【特别说明】 - 您可以将 image 设置为控制台中的某一个素材 ID,这需要您事先在 “[控制台](https://console.cloud.tencent.com/trtc) => 应用管理 => 功能配置 => 素材管理” 中单击 [新增图片] 按钮进行上传。 - 上传成功后可以获得对应的“图片ID”,然后将“图片ID”转换成字符串类型并设置给 image 字段即可(比如假设“图片ID” 为 63,可以设置 image = @"63")。 - 您也可以将 image 设置为图片的 URL 地址,腾讯云的后台服务器会将该 URL 地址指定的图片混合到最终的画面中。 - URL 链接长度限制为 512 字节。图片大小限制不超过 2MB。 - 图片格式支持 png、jpg、jpeg、bmp 格式,推荐使用 png 格式的半透明图片作为水印。 - image 仅在 inputType 为 TRTCMixInputTypePureAudio 或者 TRTCMixInputTypeWatermark 时才生效。 【字段含义】该路音频参与混音时的音量等级(取值范围:0 - 100)。 【默认取值】默认值:100。 【字段含义】该画面在输出时的显示模式。 【推荐取值】默认值:视频流默认为0。0为裁剪,1为缩放,2为缩放并显示黑底。 【特别说明】水印图和占位图暂时不支持设置 renderMode,默认强制拉伸处理。 【字段含义】指定该路流的混合内容(只混音频、只混视频、混合音视频、混入水印)。 【默认取值】默认值:TRTCMixInputTypeUndefined。 【特别说明】 - 当指定 inputType 为 TRTCMixInputTypeUndefined 并设置 pureAudio 为 YES 时,等效于设置 inputType 为 TRTCMixInputTypePureAudio。 - 当指定 inputType 为 TRTCMixInputTypeUndefined 并设置 pureAudio 为 NO 时,等效于设置 inputType 为 TRTCMixInputTypeAudioVideo。 - 当指定 inputType 为 TRTCMixInputTypeWatermark 时,您可以不指定 userId 字段,但需要指定 image 字段。 【字段含义】指定该路流是不是只混合声音。 【推荐取值】默认值:false。 【特别说明】已废弃,推荐使用8.5版本开始新引入的字段:inputType。 【字段含义】指定该路画面是主路画面({@link TRTCVideoStreamTypeBig})还是辅路画面({@link TRTCVideoStreamTypeSub})。 【字段含义】指定该路画面的层级(取值范围:1 - 15,不可重复)。 【字段含义】指定该路画面的坐标区域(单位:像素)。 【字段含义】该路音视频流所在的房间号(设置为空值代表当前用户所在的房间号)。 【字段含义】用户 ID 5.12 云端混流中各路画面的描述信息 TRTCMixUser 用于指定云端混流中每一路视频画面的位置、大小、图层以及流类型等信息。 【字段含义】音频消息数据的长度。 【字段含义】音频额外数据,远端用户通过 `onLocalProcessedAudioFrame` 写入的数据会通过该字段回调。 【字段含义】时间戳,单位ms。 【字段含义】声道数。 【字段含义】采样率。 【字段含义】音频数据的长度。 【字段含义】音频数据。 【字段含义】音频帧的格式。 5.11 音频帧数据 【字段含义】视频像素的顺时针旋转角度。 【字段含义】视频帧的时间戳,单位毫秒。 【推荐取值】自定义视频采集时可以设置为0。若该参数为0,SDK 会自定填充 timestamp 字段,但请“均匀”地控制 sendCustomVideoData 的调用间隔。 【字段含义】视频高度。 【字段含义】视频宽度。 【字段含义】视频数据的长度,单位是字节。对于 i420 而言:length = width * height * 3 / 2;对于 BGRA32 而言:length = width * height * 4。 【字段含义】bufferType 为 {@link TRTCVideoBufferType_Buffer} 时的视频数据,承载用于 C++ 层的内存数据块。 【字段含义】bufferType 为 {@link TRTCVideoBufferType_Texture} 时的视频数据,承载用于 OpenGL 渲染的纹理数据。 【字段含义】视频数据结构类型。 【字段含义】视频的像素格式。 5.10 视频帧信息 TRTCVideoFrame 用来描述一帧视频画面的裸数据,也就是编码前或者解码后的视频画面数据。 【字段含义】视频纹理 ID。 5.9 视频纹理数据 下行带宽(kbps,-1:无效值)。 上行带宽(kbps,-1:无效值)。 延迟(毫秒),指当前设备到 TRTC 服务器的一次网络往返时间,该值越小越好,正常数值范围是10ms - 100ms。 下行丢包率,取值范围是 [0 - 1.0],例如 0.2 表示每从服务器收取 10 个数据包可能会在中途丢失 2 个。 上行丢包率,取值范围是 [0 - 1.0],例如 0.3 表示每向服务器发送 10 个数据包可能会在中途丢失 3 个。 内部通过评估算法测算出的网络质量,更多信息请参见 {@link TRTCQuality}。 服务器 IP 地址。 带宽测试错误信息。 测试是否成功。 5.8 网络测速结果 您可以在用户进入房间前通过 {@link startSpeedTest} 接口进行测速(注意:请不要在通话中调用)。 预期的下行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)。 预期的上行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)。 用户签名,请参见 {@link TRTCParams} 中的相关说明。 用户标识,请参见 {@link TRTCParams} 中的相关说明。 应用标识,请参见 {@link TRTCParams} 中的相关说明。 5.7 测速参数 您可以在用户进入房间前通过 {@link startSpeedTest} 接口测试网速(注意:请不要在通话中调用)。 是否检测到人声,0:非人声 1:人声。 说话者的音量大小, 取值范围[0 - 100]。 说话者的 userId, 如果 userId 为空则代表是当前用户自己。 5.6 音量大小 表征语音音量的评估值,您可以通过该数值在用户界面上展示每个用户的音量大小。 网络质量 用户 ID 5.5 网络质量 表征网络质量的好坏,您可以通过该数值在用户界面上展示每个用户的网络质量。 【字段含义】画面镜像模式。 【推荐取值】默认值:{@link TRTCVideoMirrorType_Auto}。 【字段含义】画面填充模式。 【推荐取值】填充(画面可能会被拉伸裁剪)或适应(画面可能会有黑边),默认值:{@link TRTCVideoFillMode_Fill}。 【字段含义】图像的顺时针旋转角度。 【推荐取值】支持 90、180 以及 270 旋转角度,默认值:{@link TRTCVideoRotation0}。 5.4 视频画面的渲染参数 您可以通过设置此参数来控制画面的旋转角度、填充模式和左右镜像模式。 【字段含义】流控模式(已废弃)。 【推荐取值】云端控制。 【特别说明】请设置为云端控制模式(TRTCQosControlModeServer)。 【字段含义】清晰优先还是流畅优先。 【推荐取值】清晰优先。 【特别说明】该参数主要影响 TRTC 在较差网络环境下的音视频表现: - 流畅优先:即当前网络不足以传输既清晰又流畅的画面时,优先保证画面的流畅性,代价就是画面会比较模糊且伴随有较多的马赛克。 - 清晰优先(默认值):即当前网络不足以传输既清晰又流畅的画面时,优先保证画面的清晰度,代价就是画面会比较卡顿。 5.3 网络流控(Qos)参数集 网络流控相关参数,该设置决定 SDK 在弱网络环境下的调控策略(例如:“清晰优先”或“流畅优先”)。 【字段含义】是否允许动态调整分辨率(开启后会对云端录制产生影响)。 【推荐取值】该功能适用于不需要云端录制的场景,开启后 SDK 会根据当前网络情况,智能选择出一个合适的分辨率,避免出现“大分辨率+小码率”的低效编码模式。 【特别说明】默认值:关闭。如有云端录制的需求,请不要开启此功能,因为如果视频分辨率发生变化后,云端录制出的 MP4 在普通的播放器上无法正常播放。 【字段含义】最低视频码率,SDK 会在网络不佳的情况下主动降低视频码率以保持流畅度,最低会降至 minVideoBitrate 所设定的数值。 【特别说明】 默认值:0,此时最低码率由 SDK 会根据您指定的分辨率,自动计算出合适的数值。 【推荐取值】您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围: - 如果您追求`弱网络下允许卡顿但要保持清晰`的效果,可以设置 minVideoBitrate 为 videoBitrate 的 60%。 - 如果您追求`弱网络下允许模糊但要保持流畅`的效果,可以设置 minVideoBitrate 为一个较低的数值(比如 100kbps)。 - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。 【字段含义】目标视频码率,SDK 会按照目标码率进行编码,只有在弱网络环境下才会主动降低视频码率。 【推荐取值】请参见本 TRTCVideoResolution 在各档位注释的最佳码率,也可以在此基础上适当调高。比如:TRTCVideoResolution_1280_720 对应 1200kbps 的目标码率,您也可以设置为 1500kbps 用来获得更好的观感清晰度。 【特别说明】您可以通过同时设置 videoBitrate 和 minVideoBitrate 两个参数,用于约束 SDK 对视频码率的调整范围: - 如果您追求“弱网络下允许卡顿但要保持清晰”的效果,可以设置 minVideoBitrate 为 videoBitrate 的 60%。 - 如果您追求“弱网络下允许模糊但要保持流畅”的效果,可以设置 minVideoBitrate 为一个较低的数值(比如 100kbps)。 - 如果您将 videoBitrate 和 minVideoBitrate 设置为同一个值,等价于关闭 SDK 对视频码率的自适应调节能力。 【字段含义】视频采集帧率。 【推荐取值】15fps或20fps。5fps以下,卡顿感明显。10fps以下,会有轻微卡顿感。20fps以上,会浪费带宽(电影的帧率为24fps)。 【特别说明】部分 Android 手机的前置摄像头并不支持15fps以上的采集帧率,部分主打美颜功能的 Android 手机的前置摄像头的采集帧率可能低于10fps。 【字段含义】分辨率模式(横屏分辨率 or 竖屏分辨率)。 【推荐取值】手机平台(iOS、Android)建议选择 Portrait,桌面平台(Windows、Mac)建议选择 Landscape。 【特别说明】如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如: 640 × 360 + Portrait = 360 × 640。 【字段含义】视频分辨率。 【特别说明】如需使用竖屏分辨率,请指定 resMode 为 Portrait,例如: 640 × 360 + Portrait = 360 × 640。 【推荐取值】 - 手机视频通话:建议选择 360 × 640 及以下分辨率,resMode 选择 Portrait,即竖屏分辨率。 - 手机在线直播:建议选择 540 × 960,resMode 选择 Portrait,即竖屏分辨率。 - 桌面平台(Win + Mac):建议选择 640 × 360 及以上分辨率,resMode 选择 Landscape,即横屏分辨率。 5.2 视频编码参数 该设置决定远端用户看到的画面质量,同时也决定了云端录制出的视频文件的画面质量。 【字段含义】业务数据字段(选填),部分高级特性才需要用到此字段。 【推荐取值】请不要自行设置该字段。 【字段含义】用于权限控制的权限票据(选填),当您希望某个房间只能让特定的 userId 进入时,需要使用 privateMapKey 进行权限保护。 【推荐取值】仅建议有高级别安全需求的客户使用,更多详情请参见 [进房权限保护](https://cloud.tencent.com/document/product/647/32240)。 【字段含义】云端录制开关(选填),用于指定是否要在云端将该用户的音视频流录制下来。 【参考文档】[云端录制](https://cloud.tencent.com/document/product/647/16823)。 【推荐取值】限制长度为64字节,只允许包含大小写英文字母(a-zA-Z)、数字(0-9)及下划线和连词符。 方案一:手动录制方案: 1. 在 [控制台](https://console.cloud.tencent.com/trtc)>应用管理>云端录制配置 中开启云端录制。 2. 设置 `录制形式` 为 `手动录制`。 3. 设置手动录制后,在一个 TRTC 房间中只有设置了 userDefineRecordId 参数的用户才会在云端录制出视频文件,不指定该参数的用户不会产生录制行为。 4. 云端会以 “userDefineRecordId_起始时间_结束时间” 的格式命名录制下来的文件。 方案二:自动录制方案: 1. 需要在 [控制台](https://console.cloud.tencent.com/trtc)>应用管理>云端录制配置 中开启云端录制。 2. 设置`录制形式`为`自动录制`。 3. 设置自动录制后,在一个 TRTC 房间中的任何一个有音视频上行的用户,均会在云端录制出视频文件。 4. 文件会以 `userDefineRecordId_起始时间_结束时间` 的格式命名,如果不指定 userDefineRecordId,则文件会以 `streamId_起始时间_结束时间` 命名。 【字段含义】用于指定在腾讯云直播平台上的 streamId(选填),设置之后,您可以在腾讯云直播 CDN 上通过标准拉流方案(FLV 或 HLS)播放该用户的音视频流。 【推荐取值】限制长度为64字节,可以不填写,一种推荐的方案是使用 `sdkappid_roomid_userid_main` 作为 streamid,这中命名方式容易辨认且不会在您的多个应用中发生冲突。 【特殊说明】要使用腾讯云直播 CDN,您需要先在 [控制台](https://console.cloud.tencent.com/trtc/) 中的功能配置页开启“启动自动旁路直播”开关。 【参考文档】[CDN 旁路直播](https://cloud.tencent.com/document/product/647/16826)。 【字段含义】直播场景下的角色,仅适用于直播场景({@link TRTCAppSceneLIVE} 和 {@link TRTCAppSceneVoiceChatRoom}),通话场景下指定该参数是无效的。 【推荐取值】默认值:主播({@link TRTCRoleAnchor})。 【字段含义】数字房间号,在同一个房间里的用户(userId)可以彼此看到对方并进行音视频通话。 【推荐取值】取值范围:1 - 4294967294。 【特别说明】roomId 与 strRoomId 是互斥的,若您选用 strRoomId,则 roomId 需要填写为 0。若两者都填,SDK 将优先选用 roomId。 【请您注意】不要混用 roomId 和 strRoomId,因为它们之间是不互通的,比如数字 123 和字符串 `123` 在 TRTC 看来是两个完全不同的房间。 【字段含义】用户签名(必填),当前 userId 对应的验证签名,相当于使用云服务的登录密码。 【推荐取值】具体计算方法请参见 [如何计算UserSig](https://cloud.tencent.com/document/product/647/17275)。 【字段含义】用户标识(必填),当前用户的 userId,相当于用户名,使用 UTF-8 编码。 【推荐取值】如果一个用户在您的帐号系统中的 ID 为“mike”,则 userId 即可设置为“mike”。 【字段含义】应用标识(必填),腾讯云基于 sdkAppId 完成计费统计。 【推荐取值】在 [实时音视频控制台](https://console.cloud.tencent.com/rav/) 创建应用后可以在账号信息页面中得到该 ID。 5.1 进房参数 作为 TRTC SDK 的进房参数,只有该参数填写正确,才能顺利进入 roomId 或者 strRoomId 所指定的音视频房间。 由于历史原因,TRTC 支持数字和字符串两种类型的房间号,分别是 roomId 和 strRoomId。 请注意:不要混用 roomId 和 strRoomId,因为它们之间是不互通的,比如数字 123 和字符串 “123” 在 TRTC 看来是两个完全不同的房间。 4.12 媒体流发布模式 该枚举类型用于媒体流发布接口 {@link startPublishMediaStream} TRTC 的媒体流发布服务能够将房间中的多路音视频流混合成一路发布至 CDN 或者回推到房间内,也可以将您当前的这路音视频发布到腾讯或者第三方 CDN 因此您需要指定对应媒体流的发布模式,我们提供了如下几种模式。 您可以通过设置该参数,配合媒体流编码输出参数 ({@link TRTCStreamEncoderParam}) 和混流转码参数 ({@link TRTCStreamMixingConfig}),将您指定的多路音视频流进行转码并发布到您指定的房间中。 - 通过 {@link TRTCPublishTarget} 中的 TRTCUser 进行指定回推房间的机器人信息。 您可以通过设置该参数,配合编码输出参数 ({@link TRTCStreamEncoderParam}) 和混流转码参数 ({@link TRTCStreamMixingConfig}),将您指定的多路音视频流进行转码并发布到腾讯或者第三方直播 CDN 服务商(仅支持标准 RTMP 协议)。 您可以通过设置该参数将您房间内的辅路流({@link TRTCVideoStreamTypeSub})发布到腾讯或者第三方直播 CDN 服务商(仅支持标准 RTMP 协议)。 您可以通过设置该参数将您房间内的主路流({@link TRTCVideoStreamTypeBig})发布到腾讯或者第三方直播 CDN 服务商(仅支持标准 RTMP 协议)。 未定义。 4.11 音频录制内容类型 该枚举类型用于音频录制接口 {@link startAudioRecording},用于指定录制音频的内容。 仅录制远端音频。 仅录制本地音频。 录制本地和远端所有音频。 4.9 设备操作 该枚举值用于本地设备的状态变化通知{@link onDeviceChange}。 4.8 水印图片的源类型 RGBA32格式内存块。 BGRA32格式内存块 图片文件路径,支持 BMP、GIF、JPEG、PNG、TIFF、Exif、WMF 和 EMF 文件格式。 4.7 设备类型(仅适用于桌面平台) 该枚举值用于定义三种类型的音视频设备,即摄像头、麦克风和扬声器,以便让一套设备管理接口可以操控三种不同类型的设备。 自 Ver8.0 版本开始,TRTC 在 TXDeviceManager 中重新定义了 `TXMediaDeviceType` 用于替换老版本中的 `TRTCMediaDeviceType`,此处仅保留 `TRTCMediaDeviceType` 的定义,用于兼容老版本的客户代码。 4.6 混流输入类型 混入水印,此时您无需指定 userId 字段,但需要指定 image 字段,推荐使用 png 格式的图片。 只混入音频。 只混入视频。 混入音频和视频。 默认值,考虑到针对老版本的兼容性,如果您指定了 inputType 为 Undefined,SDK 会根据另一个参数 pureAudio 的数值决定混流输入类型。 4.5 媒体录制类型 该枚举类型用于本地媒体录制接口 {@link startLocalRecording},用于指定是录制音视频文件还是纯音频文件。 同时录制音频和视频。 仅录制视频。 仅录制音频。 4.4 云端混流的排版模式 TRTC 的云端混流服务能够将房间中的多路音视频流混合成一路,因此您需要指定画面的排版方案,我们提供了如下几种排版模式。 预排版模式。 最受欢迎的排版模式,因为该模式支持您通过占位符提前对各路画面的位置进行设定,之后 SDK 会自动根据房间中画面的路数动态进行适配调整。 此模式下,您依然需要设置 mixUsers 参数,但可以将 userId 设置为“占位符”,可选的占位符有: - "$PLACE_HOLDER_REMOTE$" : 指代远程用户的画面,可以设置多个。 - "$PLACE_HOLDER_LOCAL_MAIN$" : 指代本地摄像头画面,只允许设置一个。 - "$PLACE_HOLDER_LOCAL_SUB$" : 指代本地屏幕分享画面,只允许设置一个。 此模式下,您不需要监听 TRTCCloudDelegate 中的 onUserVideoAvailable 和 onUserAudioAvailable 回调进行实时调整,只需要在进房成功后调用一次 setMixTranscodingConfig 即可,之后 SDK 会自动将真实的 userId 补位到您设置的占位符上。 纯音频模式。 该模式适用于语音通话(AudioCall)和语音聊天室(VoiceChatRoom)等纯音频的应用场景。 - 您只需要在进入房间后,通过 setMixTranscodingConfig 接口设置一次,之后 SDK 就会自动把房间内所有上麦用户的声音混流到当前用户的直播流上。 - 您无需设置 TRTCTranscodingConfig 中的 mixUsers 参数,只需设置 audioSampleRate、audioBitrate 和 audioChannels 等参数即可。 全手动排版模式。 该模式下,您需要指定每一路画面的精确排版位置。该模式的自由度最高,但易用性也最差: - 您需要填写 TRTCTranscodingConfig 中的所有参数,包括每一路画面(TRTCMixUser)的位置坐标。 - 您需要监听 TRTCCloudDelegate 中的 onUserVideoAvailable() 和 onUserAudioAvailable() 事件回调,并根据当前房间中各个麦上用户的音视频状态不断地调整 mixUsers 参数。 未定义。 4.3 屏幕分享的目标类型(仅适用于桌面端) 该分享目标是用户自定义的数据源。 该分享目标是某一台显示器的屏幕。 该分享目标是某一个应用的窗口。 未定义。 4.1 Log 级别 不同的日志等级定义了不同的详实程度和日志数量,推荐一般情况下将日志等级设置为:TRTCLogLevelInfo。 不输出任何 SDK Log。 仅输出 FATAL 级别的 Log。 输出ERROR 和 FATAL 级别的 Log。 输出WARNING,ERROR 和 FATAL 级别的 Log。 输出 INFO,WARNING,ERROR 和 FATAL 级别的 Log。 输出 DEBUG,INFO,WARNING,ERROR 和 FATAL 级别的 Log。 输出所有级别的 Log。 3.9 音频回调数据读写模式 TRTC 提供了两种音频回调数据的操作模式。 - 读写模式(ReadWrite):可以获取并修改回调的音频数据,默认模式。 - 只读模式(ReadOnly):仅从回调中获取音频数据。 只读模式:仅从回调中获取音频数据。 读写模式:可以获取并修改回调的音频数据。 3.7 音频帧的内容格式 PCM 格式的音频数据。 None 3.2 声音音质 TRTC 提供了三种精心校调好的模式,用来满足各种垂直场景下对音质的差异化追求: - 人声模式(Speech):适用于以人声沟通为主的应用场景,该模式下音频传输的抗性较强,TRTC 会通过各种人声处理技术保障在弱网络环境下的流畅度最佳。 - 音乐模式(Music):适用于对声乐要求很苛刻的场景,该模式下音频传输的数据量很大,TRTC 会通过各项技术确保音乐信号在各频段均能获得高保真的细节还原度。 - 默认模式(Default):介于 Speech 和 Music 之间的档位,对音乐的还原度比人声模式要好,但传输数据量比音乐模式要低很多,对各种场景均有不错的适应性。 音乐模式:采样率:48k;全频带立体声;编码码率:128kbps;适合需要高保真传输音乐的场景,比如在线K歌、音乐直播等。 默认模式:采样率:48k;单声道;编码码率:50kbps;介于 Speech 和 Music 之间的档位,SDK 默认档位,推荐选择。 人声模式:采样率:16k;单声道;编码码率:16kbps;具备几个模式中最强的网络抗性,适合语音通话为主的场景,比如在线会议,语音通话等。 2.7 视频状态变化原因类型 该枚举类型用于视频状态变化回调接口 {@link onRemoteVideoStatusUpdated} ,用于指定当前的视频状态原因。 远端视频流停止(或中断)。 远端视频流开始(或继续)。 本地停止视频流播放。 本地启动视频流播放。 结束缓冲。 网络缓冲。 缺省值。 2.6 视频状态类型 该枚举类型用于视频状态变化回调接口{@link onRemoteVideoStatusUpdated},用于指定当前的视频状态。 正在加载。 正在播放。 停止播放。 2.5 网络质量 TRTC 会每隔两秒对当前的网络质量进行评估,评估结果为六个等级:Excellent 表示最好,Down 表示最差。 当前网络不满足 TRTC 的最低要求。 当前网络很差。 当前网络较差。 当前网络一般。 当前网络比较好。 当前网络非常好。 未定义。 2.4 画质偏好 TRTC 在弱网络环境下有两种调控模式:“优先保证画面清晰”或“优先保证画面流畅”,两种模式均会优先保障声音数据的传输。 清晰优先(默认值):即当前网络不足以传输既清晰又流畅的画面时,优先保证画面的清晰度,代价就是画面会比较卡顿。 流畅优先:即当前网络不足以传输既清晰又流畅的画面时,优先保证画面的流畅性,代价就是画面会比较模糊且伴随有较多的马赛克。 2.3 流控模式(已废弃) 云端控制,默认模式,推荐选择。 本地控制,用于 SDK 开发内部调试,客户请勿使用。 2.2 角色 仅适用于直播类场景(即 TRTCAppSceneLIVE 和 TRTCAppSceneVoiceChatRoom),把用户区分成两种不同的身份: - 主播:可以随时发布自己的音视频流,但人数有限制,同一个房间中最多只允许 50 个主播同时发布自己的音视频流。 - 观众:只能观看其他用户的音视频流,要发布音视频流,需要先通过 {@link switchRole} 切换成主播,同一个房间中最多能容纳10万观众。 观众:只能观看其他用户的音视频流,要发布音视频流,需要先通过 {@link switchRole} 切换成主播,同一个房间中最多能容纳10万观众。 主播:可以随时发布自己的音视频流,但人数有限制,同一个房间中最多只允许 50 个主播同时发布自己的音视频流。 2.1 应用场景 TRTC 针对常见的音视频应用场景都进行了定向优化,以满足各种垂直场景下的差异化要求,主要场景可以分为如下两类: - 直播(LIVE)场景:包括 LIVE 和 VoiceChatRoom,前者是音频+视频,后者是纯音频。 直播场景下,用户被分成“主播”和“观众”两种角色,单个房间中同时最多支持10万人在线,适合于观众人数众多的直播场景。 - 实时(RTC)场景:包括 VideoCall 和 AudioCall,前者是音频+视频,后者是纯音频。 实时场景下,用户没有角色的差异,但单个房间中同时最多支持 300 人在线,适合于小范围实时通信的场景。 语音互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于 300ms;支持十万级别观众同时播放,播放延时低至 1000ms。 适用于 [语音俱乐部]、[在线K歌房]、[音乐直播间]、[FM电台] 等业务场景。 @note 此场景下,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。 语音通话场景,默认采用 SPEECH 音质,单个房间最多支持300人同时在线,最高支持50人同时发言。 适用于 [1对1语音通话]、[300人语音会议]、[语音聊天]、[语音会议]、[在线狼人杀] 等业务场景。 视频互动直播,支持平滑上下麦,切换过程无需等待,主播延时小于300ms;支持十万级别观众同时播放,播放延时低至1000ms。 适用于[低延时互动直播]、[大班课]、[主播PK]、[视频相亲]、[在线互动课堂]、[远程培训]、[超大型会议]等业务场景。 @note 此场景下,您必须通过 TRTCParams 中的 role 字段指定当前用户的角色。 视频通话场景,支持720P、1080P高清画质,单个房间最多支持300人同时在线,最高支持50人同时发言。 适用于[1对1视频通话]、[300人视频会议]、[在线问诊]、[教育小班课]、[远程面试]等业务场景。 1.10 本地视频截图的数据源 SDK 支持从如下两种数据源中截取图片并保存成本地文件: - 视频流:从视频流中截取原生的视频内容,截取的内容不受渲染控件的显示控制。 - 渲染层:从渲染控件中截取显示的视频内容,可以做到用户所见即所得的效果,但如果显示区域过小,截取出的图片也会很小。 从渲染控件中截取显示的视频内容,可以做到用户所见即所得的效果,但如果显示区域过小,截取出的图片也会很小。 从视频流中截取原生的视频内容,截取的内容不受渲染控件的显示控制。 1.9 视频的镜像类型 视频的镜像是指对视频内容进行左右翻转,尤其是对本地的摄像头预览视频,开启镜像后能给主播带来熟悉的“照镜子”体验。 强制关闭镜像,不论当前使用的是前置摄像头还是后置摄像头。 自动模式:如果正使用前置摄像头则开启镜像,如果是后置摄像头则不开启镜像(仅适用于移动设备)。 强制开启镜像,不论当前使用的是前置摄像头还是后置摄像头。 1.8 视频数据传递方式 在自定义采集和自定义渲染功能,您需要用到下列枚举值来指定您希望以什么方式传递视频数据: - 方案一:使用内存 Buffer 传递视频数据,该方案在 iOS 效率尚可,但在 Android 系统上效率较差,Windows 暂时仅支持内存 Buffer 的传递方式。 - 方案二:使用 Texture 纹理传递视频数据,该方案在 iOS 和 Android 系统下均有较高的效率,Windows 暂不支持,需要您有一定的 OpenGL 编程基础。 使用 Texture 纹理传递视频数据。 使用内存 Buffer 传递视频数据,iOS:PixelBuffer;Android:用于 JNI 层的 Direct Buffer;Win:内存数据块。 未定义的传递方式。 1.7 视频像素格式 TRTC 提供针对视频的自定义采集和自定义渲染功能: - 在自定义采集功能中,您可以用下列枚举值描述您采集的视频像素格式。 - 在自定义渲染功能中,您可以指定您期望 SDK 回调出的视频像素格式。 RGBA 格式。 NV21 格式。 BGRA 格式 OpenGL 2D 纹理格式。 YUV420P(I420) 格式。 未定义的格式。 1.6 美颜(磨皮)算法 TRTC 内置多种不同的磨皮算法,您可以选择最适合您产品定位的方案。 自然,算法更多地保留了面部细节,磨皮效果更加自然,适用于绝大多数直播场景。 光滑,算法比较激进,磨皮效果比较明显,适用于秀场直播。 1.5 视频画面旋转方向 TRTC 提供了对本地和远程画面的旋转角度设置 API,下列的旋转角度都是指顺时针方向的。 顺时针旋转270度。 顺时针旋转180度。 顺时针旋转90度。 不旋转。 1.4 视频画面填充模式 如果视频显示区域的宽高比不等于视频内容的宽高比时,需要指定画面的填充模式。 适应模式:即按画面长边进行缩放以适应显示区域,短边部分会被填充为黑色,此模式下图像完整但可能留有黑边。 填充模式:即将画面内容居中等比缩放以充满整个显示区域,超出显示区域的部分将会被裁剪掉,此模式下画面可能不完整。 1.3 视频流类型 TRTC 内部有三种不同的视频流,分别是: - 高清大画面:一般用来传输摄像头的视频数据。 - 低清小画面:小画面和大画面的内容相互,但是分辨率和码率都比大画面低,因此清晰度也更低。 - 辅流画面:一般用于屏幕分享,同一时间在同一个房间中只允许一个用户发布辅流视频,其他用户必须要等该用户关闭之后才能发布自己的辅流。 @note 不支持单独开启低清小画面,小画面必须依附于大画面而存在,SDK 会自动设定低清小画面的分辨率和码率。 辅流画面:一般用于屏幕分享,同一时间在同一个房间中只允许一个用户发布辅流视频,其他用户必须要等该用户关闭之后才能发布自己的辅流。 低清小画面:小画面和大画面的内容相互,但是分辨率和码率都比大画面低,因此清晰度也更低。 高清大画面,一般用来传输摄像头的视频数据。 1.2 视频宽高比模式 TRTCVideoResolution 中仅定义了横屏分辨率(如 640 × 360),如需使用竖屏分辨率(如360 × 640),需要同时指定 TRTCVideoResolutionMode 为 Portrait。 竖屏分辨率,例如:TRTCVideoResolution_640_360 + TRTCVideoResolutionModePortrait = 360 × 640。 横屏分辨率,例如:TRTCVideoResolution_640_360 + TRTCVideoResolutionModeLandscape = 640 × 360。 1.1 视频分辨率 此处仅定义横屏分辨率(如 640 × 360),如需使用竖屏分辨率(如360 × 640),需要同时指定 TRTCVideoResolutionMode 为 Portrait。 宽高比 16:9;分辨率 1920x1080;建议码率(VideoCall)2000kbps; 建议码率(LIVE)3000kbps。 宽高比 16:9;分辨率 1280x720;建议码率(VideoCall)1200kbps; 建议码率(LIVE)1800kbps。 宽高比 16:9;分辨率 960x540;建议码率(VideoCall)850kbps; 建议码率(LIVE)1300kbps。 宽高比 16:9;分辨率 640x360;建议码率(VideoCall)500kbps; 建议码率(LIVE)900kbps。 宽高比 16:9;分辨率 480x270;建议码率(VideoCall)350kbps; 建议码率(LIVE)550kbps。 宽高比 16:9;分辨率 320x180;建议码率(VideoCall)250kbps; 建议码率(LIVE)400kbps。 宽高比 16:9;分辨率 256x144;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。 宽高比 16:9;分辨率 160x90;建议码率(VideoCall)150kbps; 建议码率(LIVE)250kbps。 宽高比 4:3;分辨率 960x720;建议码率(VideoCall)1000kbps; 建议码率(LIVE)1500kbps。 宽高比 4:3;分辨率 640x480;建议码率(VideoCall)600kbps; 建议码率(LIVE)900kbps。 宽高比 4:3;分辨率 480x360;建议码率(VideoCall)400kbps; 建议码率(LIVE)600kbps。 宽高比 4:3;分辨率 400x300;建议码率(VideoCall)300kbps; 建议码率(LIVE)450kbps。 宽高比 4:3;分辨率 320x240;建议码率(VideoCall)250kbps; 建议码率(LIVE)375kbps。 宽高比 4:3;分辨率 280x210;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。 宽高比 4:3;分辨率 240x180;建议码率(VideoCall)150kbps; 建议码率(LIVE)250kbps。 宽高比4:3;分辨率 160x120;建议码率(VideoCall)100kbps; 建议码率(LIVE)150kbps。 宽高比 1:1;分辨率 480x480;建议码率(VideoCall)350kbps; 建议码率(LIVE)500kbps。 宽高比 1:1;分辨率 270x270;建议码率(VideoCall)200kbps; 建议码率(LIVE)300kbps。 宽高比 1:1 分辨率 160x160;建议码率(VideoCall)100kbps; 建议码率(LIVE)150kbps。 宽高比 1:1;分辨率 120x120;建议码率(VideoCall)80kbps; 建议码率(LIVE)120kbps。 2.23 设置 onDeviceChanged 事件回调 2.22 设置摄像头采集偏好 2.21 获取 Windows 系统音量合成器中当前进程的静音状态(仅适用于 Windows 系统) 2.20 设置 Windows 系统音量合成器中当前进程的静音状态(仅适用于 Windows 系统) 2.19 获取 Windows 系统音量合成器中当前进程的音量(仅适用于 Windows 系统) 2.18 设置 Windows 系统音量合成器中当前进程的音量(仅适用于 Windows 系统) 2.16 开始摄像头测试(仅适用于桌面端) 该接口支持自定义渲染,即您可以通过接 ITRTCVideoRenderCallback 回调接口接管摄像头的渲染画面。 2.15 结束扬声器测试(仅适用于桌面端) 2.14 开始扬声器测试(仅适用于桌面端) 该接口通过播放指定的音频文件,用于测试播放设备是否能正常工作。如果用户在测试时能听到声音,说明播放设备能正常工作。 @param filePath 声音文件的路径 2.13 结束麦克风测试(仅适用于桌面端) 2.12 开始麦克风测试(仅适用于桌面端) 该接口可以测试麦克风是否能正常工作,测试到的麦克风采集音量的大小,会以回调的形式通知给您,其中 volume 的取值范围为0 - 100。 @param interval 麦克风音量的回调间隔。 @param playback 是否开启回播麦克风声音,开启后用户测试麦克风时会听到自己的声音。 2.11 开始麦克风测试(仅适用于桌面端) 该接口可以测试麦克风是否能正常工作,测试到的麦克风采集音量的大小,会以回调的形式通知给您,其中 volume 的取值范围为0 - 100。 @param interval 麦克风音量的回调间隔。 @note 该接口调用后默认会回播麦克风录制到的声音到扬声器中。 2.10 结束摄像头测试(仅适用于桌面端) 2.9 开始摄像头测试(仅适用于桌面端) @note 在测试过程中可以使用 {@link setCurrentDevice} 接口切换摄像头。 2.8 设置 SDK 使用的音频设备根据跟随系统默认设备(仅适用于桌面端) 仅支持设置麦克风和扬声器类型,摄像头暂不支持跟随系统默认设备 @param type 设备类型,详见 TXMediaDeviceType 定义。 @param enable 是否跟随系统默认的音频设备。 - true:跟随。当系统默认音频设备发生改变时,SDK 立即切换音频设备。 - false:不跟随。只有当 SDK 使用的音频设备被移除后或插入新的音频设备为系统默认设备时,SDK 才切换至系统默认的音频设备。 2.7 获取当前设备的静音状态(仅适用于桌面端) 这里的音量指的是麦克风和扬声器,摄像头是不支持静音操作的。 2.6 设置当前设备的静音状态(仅适用于桌面端) 这里的音量指的是麦克风和扬声器,摄像头是不支持静音操作的。 2.5 获取当前设备的音量(仅适用于桌面端) 这里的音量指的是麦克风的采集音量或者扬声器的播放音量,摄像头是不支持获取音量的。 2.4 设置当前设备的音量(仅适用于桌面端) 这里的音量指的是麦克风的采集音量或者扬声器的播放音量,摄像头是不支持设置音量的。 @param volume 音量大小,取值范围为0 - 100,默认值:100。 2.3 获取当前正在使用的设备(仅适用于桌面端) 2.2 设置当前要使用的设备(仅适用于桌面端) @param type 设备类型,详见 TXMediaDeviceType 定义。 @param deviceId 设备ID,您可以通过接口 {@link getDevicesList} 获得设备 ID。 @return 0:操作成功;负数:操作失败。 1.1 判断当前是否为前置摄像头(仅适用于移动端) 2.1 获取设备列表(仅适用于桌面端) @param type 设备类型,指定需要获取哪种设备的列表。详见 TXMediaDeviceType 定义。 @note - 使用完毕后请调用 release 方法释放资源,这样可以让 SDK 维护 ITXDeviceCollection 对象的生命周期。 - 不要使用 delete 释放返回的 Collection 对象,delete ITXDeviceCollection* 指针会导致异常崩溃。 - type 只支持 TXMediaDeviceTypeMic、TXMediaDeviceTypeSpeaker、TXMediaDeviceTypeCamera。 - 此接口只支持 Mac 和 Windows 平台。 本地设备的通断状态发生变化(仅适用于桌面系统) 当本地设备(包括摄像头、麦克风以及扬声器)被插入或者拔出时,SDK 便会抛出此事件回调。 @param deviceId 设备 ID @param type 设备类型 @param state 通断状态,0:设备已添加;1:设备已被移除;2:设备已启用。 释放设备列表,请不要使用 delete 释放资源 !!! 设备信息(JSON 格式) @note 示例:{"SupportedResolution":[{"width":640,"height":480},{"width":320,"height":240}]} param index 设备索引,值为 [0,getCount),return 返回 JSON 格式的设备信息 设备唯一标识 (UTF-8) index 为设备索引,值为 [0,getCount) 设备名字 (UTF-8),index 为设备索引,值为 [0,getCount)。返回值为设备名称 (UTF-8) 设备数量 设备名称 (UTF-8) 设备 ID (UTF-8) 音视频设备的相关信息(仅适用于桌面平台) 该结构体用于描述一个音视频设备的关键信息,比如设备 ID、设备名称等等,以便用户能够在用户界面上选择自己期望使用的音视频设备。 **字段含义** 采集图像宽度 **字段含义:** 采集图像长度 **字段含义:** 摄像头采集偏好 摄像头采集参数 该设置能决定本地预览图像画质。 摄像头采集偏好 该枚举类型用于摄像头采集参数设置。 允许用户设置本地摄像头采集的视频宽高。 优先保证视频预览质量。 SDK选择较高的摄像头输出参数,从而提高预览视频的质量。在这种情况下,会消耗更多的 CPU 及内存做视频前处理。 优先保证设备性能。 SDK 根据用户设置编码器的分辨率和帧率,选择最接近的摄像头输出参数,从而保证设备性能。 自动调整采集参数。 SDK 根据实际的采集设备性能及网络情况,选择合适的摄像头输出参数,在设备性能及视频预览质量之间,维持平衡。 设备操作 该枚举值用于本地设备的状态变化通知 {@link onDeviceChanged}。 设备已启用 设备已被移除 设备已被插入 设备类型(仅适用于桌面平台) 该枚举值用于定义三种类型的音视频设备,即摄像头、麦克风和扬声器,以便让一套设备管理接口可以操控三种不同类型的设备。 摄像头类型设备 扬声器类型设备 麦克风类型设备 未定义的设备类型 音频路由(即声音的播放模式) 音频路由,即声音是从手机的扬声器还是从听筒中播放出来,因此该接口仅适用于手机等移动端设备。 手机有两个扬声器:一个是位于手机顶部的听筒,一个是位于手机底部的立体声扬声器。 - 设置音频路由为听筒时,声音比较小,只有将耳朵凑近才能听清楚,隐私性较好,适合用于接听电话。 - 设置音频路由为扬声器时,声音比较大,不用将手机贴脸也能听清,因此可以实现“免提”的功能。 Earpiece:使用听筒播放,听筒位于手机顶部,声音偏小,适合需要保护隐私的通话场景。 Speakerphone:使用扬声器播放(即“免提”),扬声器位于手机底部,声音偏大,适合外放音乐。 系统音量类型(仅适用于移动设备) @deprecated v9.5 版本开始不推荐使用。 现代智能手机中一般都具备两套系统音量类型,即“通话音量”和“媒体音量”。 - 通话音量:手机专门为接打电话所设计的音量类型,自带回声抵消(AEC)功能,并且支持通过蓝牙耳机上的麦克风进行拾音,缺点是音质比较一般。 当您通过手机侧面的音量按键下调手机音量时,如果无法将其调至零(也就是无法彻底静音),说明您的手机当前出于通话音量。 - 媒体音量:手机专门为音乐场景所设计的音量类型,无法使用系统的 AEC 功能,并且不支持通过蓝牙耳机的麦克风进行拾音,但具备更好的音乐播放效果。 当您通过手机侧面的音量按键下调手机音量时,如果能够将手机音量调至彻底静音,说明您的手机当前出于媒体音量。 SDK 目前提供了三种系统音量类型的控制模式:自动切换模式、全程通话音量模式、全程媒体音量模式。 全程通话音量 全程媒体音量 自动切换模式