tencent cloud

文档反馈

ITRTCCloud

最后更新时间:2024-06-06 15:26:15
    Copyright (c) 2021 Tencent. All rights reserved.
    
    Module: TRTCCloud @ TXLiteAVSDK
    Function: 腾讯云 TRTC 主功能接口
    Version: 11.9
    
    ITRTCCloud

    ITRTCCloud

    函数列表
    描述
    创建 TRTCCloud 实例(单例模式)
    销毁 TRTCCloud 实例(单例模式)
    添加 TRTC 事件回调
    移除 TRTC 事件回调
    进入房间
    离开房间
    切换角色
    切换角色(支持设置权限位)
    切换房间
    请求跨房通话
    退出跨房通话
    设置订阅模式(需要在进入房前设置才能生效)
    创建子房间实例(用于多房间并发观看)
    销毁子房间实例
    更改跨房主播在本房间的上行能力
    开始向腾讯云直播 CDN 上发布音视频流
    停止向腾讯云直播 CDN 上发布音视频流
    开始向非腾讯云 CDN 上发布音视频流
    停止向非腾讯云 CDN 上发布音视频流
    设置云端混流的排版布局和转码参数
    开始发布媒体流
    更新发布媒体流
    停止发布媒体流
    开启本地摄像头的预览画面(移动端)
    开启本地摄像头的预览画面(桌面端)
    更新本地摄像头的预览画面
    停止摄像头预览
    暂停/恢复发布本地的视频流
    设置本地画面被暂停期间的替代图片
    订阅远端用户的视频流,并绑定视频渲染控件
    更新远端用户的视频渲染控件
    停止订阅远端用户的视频流,并释放渲染控件
    停止订阅所有远端用户的视频流,并释放全部渲染资源
    暂停/恢复订阅远端用户的视频流
    暂停/恢复订阅所有远端用户的视频流
    设置视频编码器的编码参数
    设置网络质量控制的相关参数
    设置本地画面的渲染参数
    设置远端画面的渲染模式
    开启大小画面双路编码模式
    切换指定远端用户的大小画面
    视频画面截图
    设置重力感应的适配模式(11.7 及以上版本)
    开启本地音频的采集和发布
    停止本地音频的采集和发布
    暂停/恢复发布本地的音频流
    暂停/恢复播放远端的音频流
    暂停/恢复播放所有远端用户的音频流
    设定某一个远端用户的声音播放音量
    设定本地音频的采集音量
    获取本地音频的采集音量
    设定远端音频的播放音量
    获取远端音频的播放音量
    启用音量大小提示
    开始录音
    停止录音
    开启本地媒体录制
    停止本地媒体录制
    设置远端音频流智能并发播放策略
    启用 3D 音效
    设置 3D 音效中自身坐标及朝向信息
    设置 3D 音效中远端用户坐标信息
    设置指定用户所发出声音的可被接收范围
    获取设备管理类(TXDeviceManager)
    设置美颜、美白、红润等特效
    添加水印
    获取音效管理类(TXAudioEffectManager)
    开启系统声音采集(iOS 端暂未支持)
    停止系统声音采集(iOS 端暂未支持)
    设置系统声音的采集音量
    启动屏幕分享
    停止屏幕分享
    暂停屏幕分享
    恢复屏幕分享
    枚举可分享的屏幕和窗口(该接口仅支持桌面系统)
    选取要分享的屏幕或窗口(该接口仅支持桌面系统)
    设置屏幕分享(即辅路)的视频编码参数(桌面系统和移动系统均已支持)
    设置屏幕分享时的混音音量大小(该接口仅支持桌面系统)
    将指定窗口加入屏幕分享的排除列表中(该接口仅支持桌面系统)
    将指定窗口从屏幕分享的排除列表中移除(该接口仅支持桌面系统)
    将所有窗口从屏幕分享的排除列表中移除(该接口仅支持桌面系统)
    将指定窗口加入屏幕分享的包含列表中(该接口仅支持桌面系统)
    将指定窗口从屏幕分享的包含列表中移除(该接口仅支持桌面系统)
    将全部窗口从屏幕分享的包含列表中移除(该接口仅支持桌面系统)
    启用/关闭视频自定义采集模式
    向 SDK 投送自己采集的视频帧
    启用音频自定义采集模式
    向 SDK 投送自己采集的音频数据
    启用/关闭自定义音轨
    向 SDK 混入自定义音轨
    设置推流时混入外部音频的推流音量和播放音量
    生成自定义采集时的时间戳
    .1 开启视频第三方美颜
    .2 设置第三方美颜的视频数据回调
    设置本地视频自定义渲染回调
    设置远端视频自定义渲染回调
    设置音频数据自定义回调
    设置本地麦克风采集出的音频帧回调格式
    设置经过前处理后的本地音频帧回调格式
    设置最终要由系统播放出的音频帧回调格式
    开启音频自定义播放
    获取可播放的音频数据
    使用 UDP 通道发送自定义消息给房间内所有用户
    使用 SEI 通道发送自定义消息给房间内所有用户
    开始进行网速测试(进入房间前使用)
    停止网络测速
    获取 SDK 版本信息
    设置 Log 输出级别
    启用/禁用控制台日志打印
    启用/禁用日志的本地压缩
    设置本地日志的保存路径
    设置日志回调
    显示仪表盘
    调用实验性接口
    开启或关闭媒体流私有加密

    getTRTCShareInstance

    getTRTCShareInstance
    ITRTCCloud* getTRTCShareInstance
    (void *context)

    创建 TRTCCloud 实例(单例模式)

    参数
    描述
    context
    仅适用于 Android 平台,SDK 内部会将其转化为 Android 平台的 ApplicationContext 用于调用 Android System API。
    如果传入的 context 参数为空,SDK 内部会自动获取当前进程的 ApplicationContext。
    注意
    1. 如果您使用 delete ITRTCCloud* 会导致编译错误,请使用 destroyTRTCCloud 释放对象指针。
    2. 在 Windows、Mac 和 iOS 平台上,请调用 getTRTCShareInstance() 接口。
    3. 在 Android 平台上,请调用 getTRTCShareInstance(void *context) 接口。

    destroyTRTCShareInstance

    destroyTRTCShareInstance

    销毁 TRTCCloud 实例(单例模式)

    addCallback

    addCallback
    void addCallback
    (ITRTCCloudCallback* callback)

    添加 TRTC 事件回调

    您可以通过 ITRTCCloudCallback 获得来自 SDK 的各类事件通知(比如:错误码,警告码,音视频状态参数等)。

    removeCallback

    removeCallback
    void removeCallback
    (ITRTCCloudCallback* callback)

    移除 TRTC 事件回调

    enterRoom

    enterRoom
    void enterRoom
    (const TRTCParams& param
    
    TRTCAppScene scene)

    进入房间

    TRTC 的所有用户都需要进入房间才能“发布”或“订阅”音视频流,“发布”是指将自己的音频和视频推送到云端,“订阅”是指从云端拉取房间里其他用户的音视频流。
    调用该接口时,您需要指定您的应用场景 TRTCAppScene 以获取最佳的音视频传输体验,这些场景可以分成两大类:
    
    实时通话:
    包括 TRTCAppSceneVideoCallTRTCAppSceneAudioCall 两个可选项,分别是视频通话和语音通话,该模式适合 1对1 的音视频通话,或者参会人数在 300 人以内的在线会议。
    
    在线直播:
    包括 TRTCAppSceneLIVETRTCAppSceneVoiceChatRoom 两个可选项,分别是视频直播和语音直播,该模式适合十万人以内的在线直播场景,但需要您在接下来介绍的 TRTCParams 参数中指定 角色(role) 这个字段,也就是将房间中的用户区分为 主播 (TRTCRoleAnchor) 和 观众 (TRTCRoleAudience) 两种不同的角色。
    
    调用该接口后,您会收到来自 ITRTCCloudCallback 中的 onEnterRoom(result) 回调:
    如果进房成功,参数 result 会是一个正数(result > 0),表示从函数调用到进入房间所花费的时间,单位是毫秒(ms)。
    如果进房失败,参数 result 会是一个负数(result < 0),表示进房失败的错误码
    参数
    描述
    param
    进房参数,用于指定用户的身份、角色和安全票据等信息,详情请参见 TRTCParams
    scene
    应用场景,用于指定您的业务场景,同一个房间内的所有用户需要设定相同的 TRTCAppScene
    注意
    1. 同一个房间内的所有用户需要设定相同的 scene。不同的 scene 会导致偶现的异常问题。
    2. 当您指定参数 scene 为 TRTCAppSceneLIVETRTCAppSceneVoiceChatRoom 时,您必须通过 TRTCParams 中的 “role” 字段为当前用户设定他/她在房间中的角色。
    3. 请您尽量保证 enterRoomexitRoom 前后配对使用,即保证”先退出前一个房间再进入下一个房间”,否则会导致很多异常问题。

    exitRoom

    exitRoom

    离开房间

    调用该接口会让用户离开自己所在的音视频房间,并释放摄像头、麦克风、扬声器等设备资源。
    等资源释放完毕之后,SDK 会通过 ITRTCCloudCallback 中的 onExitRoom 回调向您通知。
    
    如果您要再次调用 enterRoom 或者切换到其他的供应商的 SDK,建议等待 onExitRoom 回调到来之后再执行之后的操作,以避免摄像头或麦克风被占用的问题。

    switchRole

    switchRole
    void switchRole
    (TRTCRoleType role)

    切换角色

    调用本接口可以实现用户在 主播 观众 两种角色之间来回切换。
    
    由于视频直播和语音聊天室需要支持多达10万名观众同时观看,所以设定了 只有主播才能发布自己的音视频 的规则。因此,当有些观众希望发布自己的音视频流(以便能跟主播互动)时,就需要先把自己的角色切换成 主播
    
    您可以在进入房间时通过 TRTCParams 中的 role 字段事先确定用户的角色,也可以在进入房间后通过 switchRole 接口动态切换角色。
    参数
    描述
    role
    角色,默认为 主播
    TRTCRoleAnchor :主播,可以发布自己的音视频,同一个房间里最多支持50个主播同时发布音视频。
    TRTCRoleAudience :观众,不能发布自己的音视频流,只能观看房间中其他主播的音视频。如果要发布自己的音视频,需要先通过 switchRole 切换成 主播,同一个房间内同时最多可以容纳 10 万名观众。
    注意
    1. 该接口仅适用于视频直播(TRTCAppSceneLIVE)和语音聊天室(TRTCAppSceneVoiceChatRoom)这两个场景。
    2. 如果您在 enterRoom 时指定的 scene 为 TRTCAppSceneVideoCallTRTCAppSceneAudioCall,请不要调用这个接口。

    switchRole

    switchRole
    void switchRole
    (TRTCRoleType role
    
    const char* privateMapKey)

    切换角色(支持设置权限位)

    调用本接口可以实现用户在 主播 观众 两种角色之间来回切换。
    
    由于视频直播和语音聊天室需要支持多达10万名观众同时观看,所以设定了“只有主播才能发布自己的音视频”的规则。
    因此,当有些观众希望发布自己的音视频流(以便能跟主播互动)时,就需要先把自己的角色切换成“主播”。
    您可以在进入房间时通过 TRTCParams 中的 role 字段事先确定用户的角色,也可以在进入房间后通过 switchRole 接口动态切换角色。
    参数
    描述
    privateMapKey
    用于权限控制的权限票据,当您希望某个房间只能让特定的 userId 进入或者上行视频时,需要使用 privateMapKey 进行权限保护。
    仅建议有高级别安全需求的客户使用,更多详情请参见 开启高级权限控制
    role
    角色,默认为“主播”:
    TRTCRoleAnchor :主播,可以发布自己的音视频,同一个房间里最多支持50个主播同时发布音视频。
    TRTCRoleAudience :观众,不能发布自己的音视频流,只能观看房间中其他主播的音视频。如果要发布自己的音视频,需要先通过 switchRole 切换成“主播”,同一个房间内同时最多可以容纳 10 万名观众。
    注意
    1. 该接口仅适用于视频直播(TRTCAppSceneLIVE)和语音聊天室(TRTCAppSceneVoiceChatRoom)这两个场景。
    2. 如果您在 enterRoom 时指定的 scene 为 TRTCAppSceneVideoCallTRTCAppSceneAudioCall,请不要调用这个接口。

    switchRoom

    switchRoom
    void switchRoom
    (const TRTCSwitchRoomConfig& config)

    切换房间

    使用该接口可以让用户可以快速从一个房间切换到另一个房间。
    如果用户的身份是“观众”,该接口的调用效果等同于 exitRoom(当前房间) + enterRoom(新的房间)。
    如果用户的身份是“主播”,该接口在切换房间的同时还会保持自己的音视频发布状态,因此在房间切换过程中,摄像头的预览和声音的采集都不会中断。
    
    该接口适用于在线教育场景中,监课老师在多个房间中进行快速切换的场景。在该场景下使用 switchRoom 可以获得比 exitRoom+enterRoom 更好的流畅性和更少的代码量。
    接口调用结果会通过 ITRTCCloudCallback 中的 onSwitchRoom(errCode, errMsg) 回调。
    参数
    描述
    config
    房间参数,详情请参见 TRTCSwitchRoomConfig
    注意
    由于对老版本 SDK 兼容的需求,参数 config 中同时包含 roomId 与 strRoomId 两个参数,这两个参数的填写格外讲究,请注意如下事项:
    1. 若您选用 strRoomId,则 roomId 需要填写为0。若两者都填,将优先选用 roomId。
    2. 所有房间需要同时使用 strRoomId 或同时使用 roomId,不可混用,否则将会出现很多预期之外的 bug。

    connectOtherRoom

    connectOtherRoom
    void connectOtherRoom
    (const char* param)

    请求跨房通话

    默认情况下,只有同一个房间中的用户之间可以进行音视频通话,不同的房间之间的音视频流是相互隔离的。
    但您可以通过调用该接口,将另一个房间中某个主播音视频流发布到自己所在的房间中,与此同时,该接口也会将自己的音视频流发布到目标主播的房间中。
    
    也就是说,您可以使用该接口让身处两个不同房间中的主播进行跨房间的音视频流分享,从而让每个房间中的观众都能观看到这两个主播的音视频。该功能可以用来实现主播之间的 PK 功能。
    
    跨房通话的请求结果会通过 ITRTCCloudCallback 中的 onConnectOtherRoom 回调通知给您。
    
    例如:当房间“101”中的主播 A 通过 connectOtherRoom() 跟房间“102”中的主播 B 建立跨房通话后,
    房间“101”中的用户都会收到主播 B 的 onRemoteUserEnterRoom(B) 和 onUserVideoAvailable(B,true) 这两个事件回调,即房间“101”中的用户都可以订阅主播 B 的音视频。
    房间“102”中的用户都会收到主播 A 的 onRemoteUserEnterRoom(A) 和 onUserVideoAvailable(A,true) 这两个事件回调,即房间“102”中的用户都可以订阅主播 A 的音视频。
    
    
    跨房通话的参数考虑到后续扩展字段的兼容性问题,暂时采用了 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
    需要你传入 JSON 格式的字符串参数,roomId 代表数字格式的房间号,strRoomId 代表字符串格式的房间号,userId 代表目标主播的用户 ID。

    disconnectOtherRoom

    disconnectOtherRoom

    退出跨房通话

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

    setDefaultStreamRecvMode

    setDefaultStreamRecvMode
    void setDefaultStreamRecvMode
    (bool autoRecvAudio
    
    bool autoRecvVideo)

    设置订阅模式(需要在进入房前设置才能生效)

    您可以通过该接口在“自动订阅”和“手动订阅”两种模式下进行切换:
    自动订阅:默认模式,用户在进入房间后会立刻接收到该房间中的音视频流,音频会自动播放,视频会自动开始解码(依然需要您通过 startRemoteView 接口绑定渲染控件)。
    手动订阅:在用户进入房间后,需要手动调用 startRemoteView 接口才能启动视频流的订阅和解码,需要手动调用 muteRemoteAudio (false) 接口才能启动声音的播放。
    
    在绝大多数场景下,用户进入房间后都会订阅房间中所有主播的音视频流,因此 TRTC 默认采用了自动订阅模式,以求得最佳的“秒开体验”。
    如果您的应用场景中每个房间同时会有很多路音视频流在发布,而每个用户只想选择性地订阅其中的 1-2 路,则推荐使用“手动订阅”模式以节省流量费用。
    参数
    描述
    autoRecvAudio
    true:自动订阅音频;false:需手动调用 muteRemoteAudio(false) 订阅音频。默认值:true。
    autoRecvVideo
    true:自动订阅视频;false:需手动调用 startRemoteView 订阅视频。默认值:true。
    注意
    1. 需要在进入房间前调用该接口进行设置才能生效。
    2. 在自动订阅模式下,如果用户在进入房间后没有调用 startRemoteView 订阅视频流,SDK 会自动停止订阅视频流,以便达到节省流量的目的。

    createSubCloud

    createSubCloud

    创建子房间实例(用于多房间并发观看)

    TRTCCloud 一开始被设计成单例模式,限制了多房间并发观看的能力。
    通过调用该接口,您可以创建出多个 TRTCCloud 实例,以便同时进入多个不同的房间观看音视频流。
    
    但需要注意的是,您在多个 TRTCCloud 实例中发布音视频流的能力会受到一定限制。
    
    该功能主要用于在线教育场景中一种被称为“超级小班课”的业务场景中,用于解决“每个 TRTC 的房间中最多只能有 50 人同时发布自己音视频流”的限制。
    
    示例代码如下:
    //In the small room that needs interaction, enter the room as an anchor and push audio and video streams
    ITRTCCloud *mainCloud = getTRTCShareInstance();
    TRTCParams mainParams;
    //Fill your params
    mainParams.role = TRTCRoleAnchor;
    mainCloud->enterRoom(mainParams, TRTCAppSceneLIVE);
    //...
    mainCloud->startLocalAudio(TRTCAudioQualityDefault);
    mainCloud->startLocalPreview(renderView);
    //In the large room that only needs to watch, enter the room as an audience and pull audio and video streams
    ITRTCCloud *subCloud = mainCloud->createSubCloud();
    TRTCParams subParams;
    //Fill your params
    subParams.role = TRTCRoleAudience;
    subCloud->enterRoom(subParams, TRTCAppSceneLIVE);
    //...
    subCloud->startRemoteView(userId, TRTCVideoStreamTypeBig, renderView);
    //...
    //Exit from new room and release it.
    subCloud->exitRoom();
    mainCloud->destroySubCloud(subCloud);
    注意
    同一个用户,可以使用同一个 userId 进入多个不同 roomId 的房间。
    两台不同的终端设备不可以同时使用同一个 userId 进入同一个 roomId 的房间。
    您可以分别为不同实例分别设置 ITRTCCloudCallback 获取各自的事件通知。
    同一个用户可以在多个 TRTCCloud 实例中推流,也可以调用子实例中与本地音视频相关的接口。但需要注意:
    多实例的音频需要同时为麦克风采集或自定义采集,而且与音频设备相关的接口调用会以最后一次为准;
    与摄像头相关的调用会以最后一次为准:startLocalPreview

    返回值说明:

    子 TRTCCloud 实例

    destroySubCloud

    destroySubCloud
    void destroySubCloud
    (ITRTCCloud *subCloud)

    销毁子房间实例

    参数
    描述
    subCloud
    子房间实例

    updateOtherRoomForwardMode

    updateOtherRoomForwardMode
    void updateOtherRoomForwardMode
    (const char* param)

    更改跨房主播在本房间的上行能力

    通常情况下,在调用 connectOtherRoom 接口与另一个房间的主播进行跨房通话后,本房间内的所有观众都将收到该主播发布的音视频流。
    您可以通过调用该接口,限制跨房主播在本房间内的上行能力,禁止或允许跨房主播发布音频/主路视频/辅路视频,该行为会影响房间内的所有用户。
    在禁用跨房主播某种上行能力后,本房间内所有用户将无法收到对应音视频流,且无法再订阅对应的音视频。
    
    需要注意的是,该接口只能由进行跨房通话的主播调用,且通过该接口设置的限制会因为跨房通话的中断或对应主播退房重置。
    
    该接口的调用结果会通过 ITRTCCloudCallback 中的 onUpdateOtherRoomForwardMode 回调通知给您。
    
    例如:
    房间“101”中有主播 A 与观众 B,房间“102”中有主播 C,主播 C 正常发布音视频流。主播 A 通过 connectOtherRoom() 跟主播 C 建立跨房通话。
    此时,主播 A 与观众 B 都会收到主播 C 的 onRemoteUserEnterRoom(C) 和 onUserVideoAvailable(C,true)、onUserAudioAvailable(C,true) 这三个事件回调,可以订阅主播 C 的音视频。
    
    之后,主播 A 调用该接口禁用主播 C 在本房间发布音频的能力。
    此后,主播 C 的音频流将无法发布至房间“101”,主播 A 与观众 B 都将收到 onUserAudioAvailable(C,false) 事件回调,且无法再通过 muteRemoteAudio(C,false) 订阅主播 C 的音频。
    主播 C 的视频流将不受影响。房间“102”中的其他观众也不受影响,可以正常订阅主播 C 的音频。
    
    该接口的参数考虑到后续扩展字段的兼容性问题,暂时采用了 JSON 格式的参数,示例如下:
    情况一:数字房间号
    {
    "roomId":102,
    "userId":"userC",
    "muteAudio":false,
    "muteVideo":true,
    "muteSubStream":false
    }
    
    情况二:字符串房间号
    {
    "strRoomId":"102",
    "userId":"userC",
    "muteAudio":false,
    "muteVideo":true,
    "muteSubStream":false
    }
    参数
    描述
    param
    需要你传入 JSON 格式的字符串参数,roomId 代表数字格式的房间号,strRoomId 代表字符串格式的房间号,userId 代表目标主播的用户 ID,muteAudio、muteVideo、muteSubStream均为可选项,分表代表禁止或允许跨房主播发布音频/主路视频/辅路视频的能力。

    startPublishing

    startPublishing
    void startPublishing
    (const char* streamId
    
    TRTCVideoStreamType streamType)

    开始向腾讯云直播 CDN 上发布音视频流

    该接口会向 TRTC 服务器发送指令,要求其将当前用户的音视频流旁路到直播 CDN 上。您可以通过参数 streamId 设定直播流的 StreamId,从而可以指定该用户的音视频流对应在直播 CDN 上的播放地址。
    
    例如:您可以通过该接口将当前用户的直播流 ID 指定为 user_stream_001,那么该用户音视频流对应的 CDN 播放地址为:
    “http://yourdomain/live/user_stream_001.flv”,其中 yourdomain 为您自己备案的播放域名,
    
    您可以在直播控制台 配置您的播放域名,腾讯云不提供默认的播放域名。
    
    
    您也可以在设置 enterRoom 的参数 TRTCParams 时指定 streamId, 而且我们更推荐您采用这种方案。
    参数
    描述
    streamId
    自定义流 ID。
    streamType
    仅支持 TRTCVideoStreamTypeBigTRTCVideoStreamTypeSub
    注意
    您需要提前在 实时音视频控制台 中的功能配置页面上开启“启用旁路推流”才能生效。
    若您选择“指定流旁路”,则您可以通过该接口将对应音视频流推送到腾讯云 CDN 且指定为填写的流 ID。
    若您选择“全局自动旁路”,则您可以通过该接口调整默认的流 ID。

    stopPublishing

    stopPublishing

    停止向腾讯云直播 CDN 上发布音视频流

    startPublishCDNStream

    startPublishCDNStream
    void startPublishCDNStream
    (const TRTCPublishCDNParam& param)

    开始向非腾讯云 CDN 上发布音视频流

    该接口跟 startPublishing 功能类似,不同之处在于,startPublishing 仅支持向腾讯云的 CDN 发布,而本接口支持向非腾讯云的直播 CDN 上转推音视频流。
    参数
    描述
    param
    CDN 转推参数,详情请参见 TRTCPublishCDNParam
    注意
    使用 startPublishing 接口向腾讯云的直播 CDN 上发布音视频流不会收取额外费用。
    使用 startPublishCDNStream 接口向非腾讯云的直播 CDN 上发布音视频流,需要收取额外的转推带宽费用。

    stopPublishCDNStream

    stopPublishCDNStream

    停止向非腾讯云 CDN 上发布音视频流

    setMixTranscodingConfig

    setMixTranscodingConfig
    void setMixTranscodingConfig
    (TRTCTranscodingConfig* config)

    设置云端混流的排版布局和转码参数

    在一个直播间中可能同时会有多个主播发布自己的音视频流,但对于直播 CDN 上的观众而言,只需要观看一条 HTTP-FLV 或 HLS 格式的视频流即可。
    当您调用本接口函数时,SDK 会向腾讯云的 TRTC 混流服务器发送一条指令,混流服务器会将房间里的多路音视频流混合成一路。
    您可以通过 TRTCTranscodingConfig 参数来调整每一路画面的排版布局,也可以设置混合后的音视频流的各项编码参数。
    
    参考文档:云端混流转码
    
    参数
    描述
    config
    如果 config 不为空,则开启云端混流,如果 config 为空则停止云端混流。详情请参见 TRTCTranscodingConfig
    注意
    关于云端混流的注意事项:
    混流转码为收费功能,调用接口将产生云端混流转码费用,详见 云端混流转码计费说明
    调用该接口的用户,如果没设定 config 参数中的 streamId 字段,TRTC 会将房间中的多路画面混合到当前用户所对应的音视频流上,即 A + B => A。
    调用该接口的用户,如果设定了 config 参数中的 streamId 字段,TRTC 会将房间中的多路画面混合到您指定的 streamId 上,即 A + B => streamId。
    请注意,若您还在房间中且不再需要混流,请务必再次调用本接口并将 config 设置为空以进行取消,不及时取消混流可能会引起不必要的计费损失。
    请放心,当您退房时 TRTC 会自动取消混流状态。

    startPublishMediaStream

    startPublishMediaStream
    void startPublishMediaStream
    (TRTCPublishTarget * target
    
    TRTCStreamEncoderParam * params
    
    TRTCStreamMixingConfig * config)

    开始发布媒体流

    该接口会向 TRTC 服务器发送指令,要求其将当前用户的音视频流转推/转码到直播 CDN 或者回推到 TRTC 房间中您可以通过 TRTCPublishTarget 配置中的 TRTCPublishMode 指定具体的发布模式
    参数
    描述
    config
    媒体流转码配置参数。具体配置参考 TRTCStreamMixingConfig。转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码配置参数。转推模式下则无效。
    params
    媒体流编码输出参数,具体配置参考 TRTCStreamEncoderParam。转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码输出参数。在转推时,为了更好的转推稳定性和 CDN 兼容性,也建议您进行配置。
    target
    媒体流发布的目标地址,具体配置参考 TRTCPublishTarget。支持转推/转码到腾讯或者第三方 CDN,也支持转码回推到 TRTC 房间中。
    注意
    1. SDK 会通过回调 onStartPublishMediaStream 带给您后台启动的任务标识(即 taskId)。
    2. 同一个任务(TRTCPublishMode 与 TRTCPublishCdnUrl 均相同)仅支持启动一次。若您后续需要更新或者停止该项任务,需要记录并使用返回的 taskId,通过 updatePublishMediaStream 或者 stopPublishMediaStream 来操作。
    3. target 支持同时配置多个 CDN URL(最多同时 10 个)。若您的同一个转推/转码任务需要发布至多路 CDN,则仅需要在 target 中配置多个 CDN URL 即可。同一个转码任务即使有多个转推地址,对应的转码计费仍只收取一份。
    4. 使用时需要注意不要多个任务同时往相同的 URL 地址推送,以免引起异常推流状态。一种推荐的方案是 URL 中使用 “sdkappid_roomid_userid_main” 作为区分标识,这种命名方式容易辨认且不会在您的多个应用中发生冲突。

    updatePublishMediaStream

    updatePublishMediaStream
    void updatePublishMediaStream
    (const char* taskId
    
    TRTCPublishTarget * target
    
    TRTCStreamEncoderParam * params
    
    TRTCStreamMixingConfig * config)

    更新发布媒体流

    该接口会向 TRTC 服务器发送指令,更新通过 startPublishMediaStream 启动的媒体流
    参数
    描述
    config
    媒体流转码配置参数。具体配置参考 TRTCStreamMixingConfig。转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码配置参数。转推模式下则无效。
    params
    媒体流编码输出参数,具体配置参考 TRTCStreamEncoderParam。转码和回推到 TRTC 房间中时为必填项,您需要指定您预期的转码输出参数。在转推时,为了更好的转推稳定性和 CDN 兼容性,也建议您进行配置。
    target
    媒体流发布的目标地址,具体配置参考 TRTCPublishTarget。支持转推/转码到腾讯或者第三方 CDN,也支持转码回推到 TRTC 房间中。
    taskId
    通过回调 onStartPublishMediaStream 带给您后台启动的任务标识(即 taskId)
    注意
    1. 您可以通过本接口来更新发布的 CDN URL(支持增删,最多同时 10 个),但您使用时需要注意不要多个任务同时往相同的 URL 地址推送,以免引起异常推流状态。
    2. 您可以通过 taskId 来更新调整转推/转码任务。例如在 pk 业务中,您可以先通过 startPublishMediaStream 发起转推,接着在主播发起 pk 时,通过 taskId 和本接口将转推更新为转码任务。此时,CDN 播放将连续并且不会发生断流(您需要保持媒体流编码输出参数 param 一致)。
    3. 同一个任务不支持纯音频、音视频、纯视频之间的切换。

    stopPublishMediaStream

    stopPublishMediaStream
    void stopPublishMediaStream
    (const char* taskId)

    停止发布媒体流

    该接口会向 TRTC 服务器发送指令,停止通过 startPublishMediaStream 启动的媒体流
    参数
    描述
    taskId
    通过回调 onStartPublishMediaStream 带给您后台启动的任务标识(即 taskId)
    注意
    1. 若您的业务后台并没有保存该 taskId,在您的主播异常退房重进后,如果您需要重新获取 taskId,您可以再次调用 startPublishMediaStream 启动任务。此时 TRTC 后台会返回任务启动失败,同时带给您上一次启动的 taskId
    2. 若 taskId 填空字符串,将会停止该用户所有通过 startPublishMediaStream 启动的媒体流,如果您只启动了一个媒体流或者想停止所有通过您启动的媒体流,推荐使用这种方式。

    startLocalPreview

    startLocalPreview
    void startLocalPreview
    (bool frontCamera
    
    TXView view)

    开启本地摄像头的预览画面(移动端)

    在 enterRoom 之前调用此函数,SDK 只会开启摄像头,并一直等到您调用 enterRoom 之后才开始推流。
    在 enterRoom 之后调用此函数,SDK 会开启摄像头并自动开始视频推流。当开始渲染首帧摄像头画面时,您会收到 ITRTCCloudCallback 中的 onCameraDidReady 回调通知。
    参数
    描述
    frontCamera
    true:前置摄像头;false:后置摄像头。
    view
    承载视频画面的控件。
    注意
    如果希望开播前预览摄像头画面并通过 BeautyManager 调节美颜参数,您可以:
    方案一:在调用 enterRoom 之前调用 startLocalPreview。
    方案二:在调用 enterRoom 之后调用 startLocalPreview + muteLocalVideo(true)。

    startLocalPreview

    startLocalPreview
    void startLocalPreview
    (TXView view)

    开启本地摄像头的预览画面(桌面端)

    在调用该接口之前,您可以先调用 setCurrentCameraDevice 选择使用 Mac 自带摄像头或外接摄像头。
    在 enterRoom 之前调用此函数,SDK 只会开启摄像头,并一直等到您调用 enterRoom 之后才开始推流。
    在 enterRoom 之后调用此函数,SDK 会开启摄像头并自动开始视频推流。
    当开始渲染首帧摄像头画面时,您会收到 TRTCCloudDelegate 中的 onCameraDidReady 回调通知。
    参数
    描述
    view
    承载视频画面的控件。
    注意
    如果希望开播前预览摄像头画面并通过 BeautyManager 调节美颜参数,您可以:
    方案一:在调用 enterRoom 之前调用 startLocalPreview。
    方案二:在调用 enterRoom 之后调用 startLocalPreview + muteLocalVideo(true)。

    updateLocalView

    updateLocalView
    void updateLocalView
    (TXView view)

    更新本地摄像头的预览画面

    stopLocalPreview

    stopLocalPreview

    停止摄像头预览

    muteLocalVideo

    muteLocalVideo
    void muteLocalVideo
    (TRTCVideoStreamType streamType
    
    bool mute)

    暂停/恢复发布本地的视频流

    该接口可以暂停(或恢复)发布本地的视频画面,暂停之后,同一房间中的其他用户将无法继续看到自己画面。
    该接口在指定 TRTCVideoStreamTypeBig 时等效于 start/stopLocalPreview 这两个接口,但具有更好的响应速度。
    因为 start/stopLocalPreview 需要打开和关闭摄像头,而打开和关闭摄像头都是硬件设备相关的操作,非常耗时。
    相比之下,muteLocalVideo 只需要在软件层面对数据流进行暂停或者放行即可,因此效率更高,也更适合需要频繁打开关闭的场景。
    
    当暂停/恢复发布指定 TRTCVideoStreamTypeBig 后,同一房间中的其他用户将会收到 onUserVideoAvailable 回调通知。
    当暂停/恢复发布指定 TRTCVideoStreamTypeSub 后,同一房间中的其他用户将会收到 onUserSubStreamAvailable 回调通知。
    参数
    描述
    mute
    true:暂停;false:恢复。
    streamType
    要暂停/恢复的视频流类型(仅支持 TRTCVideoStreamTypeBigTRTCVideoStreamTypeSub)。

    setVideoMuteImage

    setVideoMuteImage
    void setVideoMuteImage
    (TRTCImageBuffer* image
    
    int fps)

    设置本地画面被暂停期间的替代图片

    当您调用 muteLocalVideo(true) 暂停本地画面时,您可以通过调用本接口设置一张替代图片,设置后,房间中的其他用户会看到这张替代图片,而不是黑屏画面。
    参数
    描述
    fps
    设置替代图片帧率,最小值为5,最大值为10,默认5。
    image
    设置替代图片,空值代表在 muteLocalVideo 之后不再发送视频流数据,默认值为空。

    startRemoteView

    startRemoteView
    void startRemoteView
    (const char* userId
    
    TRTCVideoStreamType streamType
    
    TXView view)

    订阅远端用户的视频流,并绑定视频渲染控件

    调用该接口可以让 SDK 拉取指定 userid 的视频流,并渲染到参数 view 指定的渲染控件上。您可以通过 setRemoteRenderParams 设置画面的显示模式。
    如果您已经知道房间中有视频流的用户的 userid,可以直接调用 startRemoteView 订阅该用户的画面。
    如果您不知道房间中有哪些用户在发布视频,您可以在 enterRoom 之后等待来自 onUserVideoAvailable 的通知。
    
    调用本接口只是启动视频流的拉取,此时画面还需要加载和缓冲,当缓冲完毕后您会收到来自 onFirstVideoFrame 的通知。
    参数
    描述
    streamType
    指定要观看 userId 的视频流类型。
    高清大画面:TRTCVideoStreamTypeBig
    低清小画面:TRTCVideoStreamTypeSmall(需要远端用户通过 enableSmallVideoStream 开启双路编码后才有效果)。
    辅流画面(常用于屏幕分享):TRTCVideoStreamTypeSub
    userId
    指定远端用户的 ID。
    view
    用于承载视频画面的渲染控件。
    注意
    注意几点规则需要您关注:
    1. SDK 支持同时观看某 userid 的大画面和辅路画面,或者同时观看某 userid 的小画面和辅路画面,但不支持同时观看大画面和小画面。
    2. 只有当指定的 userid 通过 enableSmallVideoStream 开启双路编码后,才能观看该用户的小画面。
    3. 当指定的 userid 的小画面不存在时,SDK 默认切换到该用户的大画面。

    updateRemoteView

    updateRemoteView
    void updateRemoteView
    (const char* userId
    
    TRTCVideoStreamType streamType
    
    TXView view)

    更新远端用户的视频渲染控件

    该接口可用于更新远端视频画面的渲染控件,常被用于切换显示区域的交互场景中。
    参数
    描述
    streamType
    要设置预览窗口的流类型(仅支持 TRTCVideoStreamTypeBigTRTCVideoStreamTypeSub)。
    userId
    指定远端用户的 ID。
    view
    承载视频画面的控件。

    stopRemoteView

    stopRemoteView
    void stopRemoteView
    (const char* userId
    
    TRTCVideoStreamType streamType)

    停止订阅远端用户的视频流,并释放渲染控件

    调用此接口会让 SDK 停止接收该用户的视频流,并释放该路视频流的解码和渲染资源。
    参数
    描述
    streamType
    指定要观看 userId 的视频流类型。
    高清大画面:TRTCVideoStreamTypeBig
    低清小画面:TRTCVideoStreamTypeSmall
    辅流画面(常用于屏幕分享):TRTCVideoStreamTypeSub
    userId
    指定远端用户的 ID。

    stopAllRemoteView

    stopAllRemoteView

    停止订阅所有远端用户的视频流,并释放全部渲染资源

    调用此接口会让 SDK 停止接收所有来自远端的视频流,并释放全部的解码和渲染资源。
    注意
    如果当前有正在显示的辅路画面(屏幕分享)也会一并被停止。

    muteRemoteVideoStream

    muteRemoteVideoStream
    void muteRemoteVideoStream
    (const char* userId
    
    TRTCVideoStreamType streamType
    
    bool mute)

    暂停/恢复订阅远端用户的视频流

    该接口仅暂停/恢复接收指定用户的视频流,但并不释放显示资源,视频画面会被冻屏在接口调用时的最后一帧。
    参数
    描述
    mute
    是否暂停接收。
    streamType
    要暂停/恢复的视频流类型。
    高清大画面:TRTCVideoStreamTypeBig
    低清小画面:TRTCVideoStreamTypeSmall
    辅流画面(常用于屏幕分享):TRTCVideoStreamTypeSub
    userId
    指定远端用户的 ID。
    注意
    该接口支持您在进入房间(enterRoom)前调用,暂停状态在退出房间(exitRoom)之后会被重置。
    调用该接口暂停接收指定用户的视频流后,只调用 startRemoteView 接口无法播放指定用户的视频,需要调用 muteRemoteVideoStream(false) 或 muteAllRemoteVideoStreams(false) 才能恢复。

    muteAllRemoteVideoStreams

    muteAllRemoteVideoStreams
    void muteAllRemoteVideoStreams
    (bool mute)

    暂停/恢复订阅所有远端用户的视频流

    该接口仅暂停/恢复接收所有用户的视频流,但并不释放显示资源,视频画面会被冻屏在接口调用时的最后一帧。
    参数
    描述
    mute
    是否暂停接收。
    注意
    该接口支持您在进入房间(enterRoom)前调用,暂停状态在退出房间(exitRoom)之后会被重置。
    调用该接口暂停接收所有用户的视频流后,只调用 startRemoteView 接口无法播放指定用户的视频,需要调用 muteRemoteVideoStream(false) 或 muteAllRemoteVideoStreams(false) 才能恢复。

    setVideoEncoderParam

    setVideoEncoderParam
    void setVideoEncoderParam
    (const TRTCVideoEncParam& param)

    设置视频编码器的编码参数

    该设置能够决定远端用户看到的画面质量,同时也能决定云端录制出的视频文件的画面质量。
    参数
    描述
    param
    用于设置视频编码器的相关参数,详情请参见 TRTCVideoEncParam
    注意
    从v11.5版本开始,编码输出分辨率会按照宽8高2字节对齐,并且是向下调整,eg:输入分辨率540x960,实际编码输出分辨率536x960。

    setNetworkQosParam

    setNetworkQosParam
    void setNetworkQosParam
    (const TRTCNetworkQosParam& param)

    设置网络质量控制的相关参数

    该设置决定在差网络环境下的质量调控策略,如“画质优先”或“流畅优先”等策略。
    参数
    描述
    param
    用于设置网络质量控制的相关参数,详情请参见 TRTCNetworkQosParam

    setLocalRenderParams

    setLocalRenderParams
    void setLocalRenderParams
    (const TRTCRenderParams &params)

    设置本地画面的渲染参数

    可设置的参数包括有:画面的旋转角度、填充模式以及左右镜像等。
    参数
    描述
    params
    画面渲染参数,详情请参见 TRTCRenderParams

    setRemoteRenderParams

    setRemoteRenderParams
    void setRemoteRenderParams
    (const char* userId
    
    TRTCVideoStreamType streamType
    
    const TRTCRenderParams &params)

    设置远端画面的渲染模式

    可设置的参数包括有:画面的旋转角度、填充模式以及左右镜像等。
    参数
    描述
    params
    画面渲染参数,详情请参见 TRTCRenderParams
    streamType
    可以设置为主路画面(TRTCVideoStreamTypeBig)或辅路画面(TRTCVideoStreamTypeSub)。
    userId
    指定远端用户的 ID。

    enableSmallVideoStream

    enableSmallVideoStream
    void enableSmallVideoStream
    (bool enable
    
    const TRTCVideoEncParam& smallVideoEncParam)

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

    开启双路编码模式后,当前用户的编码器会同时输出【高清大画面】和【低清小画面】两路视频流(但只有一路音频流)。
    如此以来,房间中的其他用户就可以根据自身的网络情况或屏幕大小选择订阅【高清大画面】或是【低清小画面】。
    参数
    描述
    enable
    是否开启小画面编码,默认值:false。
    smallVideoEncParam
    小流的视频参数。
    注意
    双路编码开启后,会消耗更多的 CPU 和 网络带宽,所以 Mac、Windows 或者高性能 Pad 可以考虑开启,不建议手机端开启。

    返回值说明:

    0:成功;-1:当前大画面已被设置为较低画质,开启双路编码已无必要。

    setRemoteVideoStreamType

    setRemoteVideoStreamType
    void setRemoteVideoStreamType
    (const char* userId
    
    TRTCVideoStreamType streamType)

    切换指定远端用户的大小画面

    当房间中某个主播开启了双路编码之后,房间中其他用户通过 startRemoteView 订阅到的画面默认会是【高清大画面】。
    您可以通过此接口选定希望订阅的画面是大画面还是小画面,该接口在 startRemoteView 之前和之后调用均可生效。
    参数
    描述
    streamType
    视频流类型,即选择看大画面还是小画面,默认为大画面。
    userId
    指定远端用户的 ID。
    注意
    此功能需要目标用户已经通过 enableSmallVideoStream 提前开启了双路编码模式,否则此调用无实际效果。

    snapshotVideo

    snapshotVideo
    void snapshotVideo
    (const char* userId
    
    TRTCVideoStreamType streamType
    
    TRTCSnapshotSourceType sourceType)

    视频画面截图

    您可以通过本接口截取本地的视频画面,远端用户的主路画面以及远端用户的辅路(屏幕分享)画面。
    参数
    描述
    sourceType
    画面来源,可选择截取视频流画面(TRTCSnapshotSourceTypeStream)、视频渲染画面(TRTCSnapshotSourceTypeView)或 采集画面(TRTCSnapshotSourceTypeCapture),采集画面截图更清晰。
    streamType
    视频流类型,可选择截取主路画面(TRTCVideoStreamTypeBig,常用于摄像头)或辅路画面(TRTCVideoStreamTypeSub,常用于屏幕分享)。
    userId
    用户 ID,如指定空置表示截取本地的视频画面。
    注意
    Windows 平台目前仅支持截取 TRTCSnapshotSourceTypeStream 来源的视频画面。

    setGravitySensorAdaptiveMode

    setGravitySensorAdaptiveMode
    void setGravitySensorAdaptiveMode

    设置重力感应的适配模式(11.7 及以上版本)

    开启重力感应后,如果采集端的设备发生旋转,采集端和观众端的画面都会进行相应地渲染以确保视野中的画面始终朝上。
    只在sdk内部摄像头采集场景生效,并且只在移动端生效。
    1. 该接口仅对采集端起作用,如果只是观看房间中的画面,开启此接口是无效的
    2. 当采集端设备发生 90 度或 270 度旋转时,采集端或者观众看到的画面可能会被裁剪以保持比例的协调

    startLocalAudio

    startLocalAudio
    void startLocalAudio
    (TRTCAudioQuality quality)

    开启本地音频的采集和发布

    SDK 默认不开启麦克风,当用户需要发布本地音频时,需要调用该接口开启麦克风采集,并将音频编码并发布到当前的房间中。
    开启本地音频的采集和发布后,房间中的其他用户会收到 onUserAudioAvailable(userId, true) 的通知。
    参数
    描述
    quality
    声音音质
    TRTCAudioQualitySpeech,流畅:采样率:16k;单声道;音频裸码率:16kbps;适合语音通话为主的场景,比如在线会议,语音通话。
    TRTCAudioQualityDefault,默认:采样率:48k;单声道;音频裸码率:50kbps;SDK 默认的音频质量,如无特殊需求推荐选择之。
    TRTCAudioQualityMusic,高音质:采样率:48k;双声道 + 全频带;音频裸码率:128kbps;适合需要高保真传输音乐的场景,比如在线K歌、音乐直播等。
    注意
    该函数会检查麦克风的使用权限,如果当前 App 没有麦克风权限,SDK 会自动向用户申请麦克风使用权限。

    stopLocalAudio

    stopLocalAudio

    停止本地音频的采集和发布

    停止本地音频的采集和发布后,房间中的其他用户会收到 onUserAudioAvailable(userId, false) 的通知。

    muteLocalAudio

    muteLocalAudio
    void muteLocalAudio
    (bool mute)

    暂停/恢复发布本地的音频流

    当您暂停发布本地音频流之后,房间中的其他用户会收到 onUserAudioAvailable(userId, false) 的通知。
    当您恢复发布本地音频流之后,房间中的其他用户会收到 onUserAudioAvailable(userId, true) 的通知。
    
    stopLocalAudio 的不同之处在于,muteLocalAudio(true) 并不会释放麦克风权限,而是继续发送码率极低的静音包。
    这对于需要云端录制的场景非常适用,因为 MP4 等格式的视频文件,对于音频数据的连续性要求很高,使用 stopLocalAudio 会导致录制出的 MP4 文件不易播放。
    因此在对录制文件的质量要求较高的场景中,建议选择 muteLocalAudio 而不建议使用 stopLocalAudio。
    参数
    描述
    mute
    true:静音;false:恢复。

    muteRemoteAudio

    muteRemoteAudio
    void muteRemoteAudio
    (const char* userId
    
    bool mute)

    暂停/恢复播放远端的音频流

    当您静音某用户的远端音频时,SDK 会停止播放指定用户的声音,同时也会停止拉取该用户的音频数据。
    参数
    描述
    mute
    true:静音;false:取消静音。
    userId
    用于指定远端用户的 ID。
    注意
    在进入房间(enterRoom)之前或之后调用本接口均生效,静音状态在退出房间(exitRoom)之后会被重置为 false。

    muteAllRemoteAudio

    muteAllRemoteAudio
    void muteAllRemoteAudio
    (bool mute)

    暂停/恢复播放所有远端用户的音频流

    当您静音所有用户的远端音频时,SDK 会停止播放所有来自远端的音频流,同时也会停止拉取所有用户的音频数据。
    参数
    描述
    mute
    true:静音;false:取消静音。
    注意
    在进入房间(enterRoom)之前或之后调用本接口均生效,静音状态在退出房间(exitRoom)之后会被重置为 false。

    setRemoteAudioVolume

    setRemoteAudioVolume
    void setRemoteAudioVolume
    (const char *userId
    
    int volume)

    设定某一个远端用户的声音播放音量

    您可以通过 setRemoteAudioVolume(userId, 0) 将某一个远端用户的声音静音。
    参数
    描述
    userId
    用于指定远端用户的 ID。
    volume
    音量大小,取值范围为0 - 100,默认值:100。
    注意
    如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。

    setAudioCaptureVolume

    setAudioCaptureVolume
    void setAudioCaptureVolume
    (int volume)

    设定本地音频的采集音量

    参数
    描述
    volume
    音量大小,取值范围为0 - 100;默认值:100。
    注意
    如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。

    getAudioCaptureVolume

    getAudioCaptureVolume

    获取本地音频的采集音量

    setAudioPlayoutVolume

    setAudioPlayoutVolume
    void setAudioPlayoutVolume
    (int volume)

    设定远端音频的播放音量

    该接口会控制 SDK 最终交给系统播放的声音音量,调节效果会影响到本地音频录制文件的音量大小,但不会影响到耳返的音量大小。
    参数
    描述
    volume
    音量大小,取值范围为0 - 100,默认值:100。
    注意
    如果将 volume 设置成 100 之后感觉音量还是太小,可以将 volume 最大设置成 150,但超过 100 的 volume 会有爆音的风险,请谨慎操作。

    getAudioPlayoutVolume

    getAudioPlayoutVolume

    获取远端音频的播放音量

    enableAudioVolumeEvaluation

    enableAudioVolumeEvaluation
    void enableAudioVolumeEvaluation
    (bool enable
    
    const TRTCAudioVolumeEvaluateParams& params)

    启用音量大小提示

    开启此功能后,SDK 会在 ITRTCCloudCallback 中的 onUserVoiceVolume 回调中反馈本地或远端用户的音频音量评估信息,包括音量大小、人声检测、音频频谱等。
    参数
    描述
    enable
    是否启用音量提示,默认为关闭状态。
    params
    音量评估等相关参数,请参见 TRTCAudioVolumeEvaluateParams

    startAudioRecording

    startAudioRecording
    int startAudioRecording
    (const TRTCAudioRecordingParams& param)

    开始录音

    当您调用该接口后, SDK 会将本地和远端的所有音频(包括本地音频,远端音频,背景音乐和音效等)混合并录制到一个本地文件中。
    该接口在进入房间前后调用均可生效,如果录制任务在退出房间前尚未通过 stopAudioRecording 停止,则退出房间后录制任务会自动被停止。
    本次录制的启动、完成状态会通过本地录制相关回调进行通知。参见 TRTCCloud 相关回调。
    参数
    描述
    param
    录音参数,请参见 TRTCAudioRecordingParams
    注意
    自 v11.5 版本,音频录制的状态结果由返回值统一调整为异步回调进行通知。参见 TRTCCloud 相关回调。

    返回值说明:

    0:成功;-1:录音已开始;-2:文件或目录创建失败;-3:后缀指定的音频格式不支持。

    stopAudioRecording

    stopAudioRecording

    停止录音

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

    startLocalRecording

    startLocalRecording
    void startLocalRecording
    (const TRTCLocalRecordingParams& params)

    开启本地媒体录制

    开启后把直播过程中的音视频内容录制到本地的一个文件中。
    参数
    描述
    params
    录制参数,请参见 TRTCLocalRecordingParams

    stopLocalRecording

    stopLocalRecording

    停止本地媒体录制

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

    setRemoteAudioParallelParams

    setRemoteAudioParallelParams
    void setRemoteAudioParallelParams
    (const TRTCAudioParallelParams& params)

    设置远端音频流智能并发播放策略

    设置远端音频流智能并发播放策略,适用于上麦人数比较多的场景。
    参数
    描述
    params
    音频并发参数,请参见 TRTCAudioParallelParams

    enable3DSpatialAudioEffect

    enable3DSpatialAudioEffect
    void enable3DSpatialAudioEffect
    (bool enabled)

    启用 3D 音效

    启用 3D 音效。注意需使用流畅音质 TRTCAudioQualitySpeech 或默认音质 TRTCAudioQualityDefault
    参数
    描述
    enabled
    是否启用 3D 音效,默认为关闭状态。

    updateSelf3DSpatialPosition

    updateSelf3DSpatialPosition
    void updateSelf3DSpatialPosition
    (int position[3]
    
    float axisForward[3]
    
    float axisRight[3]
    
    float axisUp[3])

    设置 3D 音效中自身坐标及朝向信息

    更新自身在世界坐标系中的位置和朝向, SDK 会根据该方法参数计算自身和远端用户之间的相对位置,进而渲染出空间音效。注意各参数应分别传入长度为 3 的数组。
    参数
    描述
    axisForward
    自身坐标系前轴在世界坐标系中的单位向量,三个值依次表示前、右、上坐标值。
    axisRight
    自身坐标系右轴在世界坐标系中的单位向量,三个值依次表示前、右、上坐标值。
    axisUp
    自身坐标系上轴在世界坐标系中的单位向量,三个值依次表示前、右、上坐标值。
    position
    自身在世界坐标系中的坐标,三个值依次表示前、右、上坐标值。
    注意
    请适当限制调用频率,推荐两次坐标设置至少间隔 100ms。

    updateRemote3DSpatialPosition

    updateRemote3DSpatialPosition
    void updateRemote3DSpatialPosition
    (const char* userId
    
    int position[3])

    设置 3D 音效中远端用户坐标信息

    更新远端用户在世界坐标系中的位置,SDK 会根据自身和远端用户之间的相对位置,进而渲染出空间音效。注意参数为长度等于 3 的数组。
    参数
    描述
    position
    该远端用户在世界坐标系中的坐标,三个值依次表示前、右、上坐标值。
    userId
    指定远端用户的 ID。
    注意
    请适当限制调用频率,推荐同一远端用户两次坐标设置至少间隔 100ms。

    set3DSpatialReceivingRange

    set3DSpatialReceivingRange
    void set3DSpatialReceivingRange
    (const char* userId
    
    int range)

    设置指定用户所发出声音的可被接收范围

    设置该范围大小之后,该指定用户的声音将在该范围内可被听见,超出该范围将被衰减为 0。
    参数
    描述
    range
    声音最大可被接收范围。
    userId
    指定远端用户的 ID。

    getDeviceManager

    getDeviceManager

    获取设备管理类(TXDeviceManager)

    setBeautyStyle

    setBeautyStyle
    void setBeautyStyle
    (TRTCBeautyStyle style
    
    uint32_t beautyLevel
    
    uint32_t whitenessLevel
    
    uint32_t ruddinessLevel)

    设置美颜、美白、红润等特效

    SDK 内部集成了两套风格不同的磨皮算法:
    -“光滑”:算法比较激进,磨皮效果比较明显,适用于秀场直播。
    -“自然”:算法更多地保留了面部细节,磨皮效果更加自然,适用于绝大多数直播场景。
    参数
    描述
    beautyLevel
    美颜级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。
    ruddinessLevel
    红润级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。
    style
    磨皮算法,有“光滑”和“自然”两种算法。
    whitenessLevel
    美白级别,取值范围0 - 9,0表示关闭,1 - 9值越大,效果越明显。

    setWaterMark

    setWaterMark
    void setWaterMark
    (TRTCVideoStreamType streamType
    
    const char* srcData
    
    TRTCWaterMarkSrcType srcType
    
    uint32_t nWidth
    
    uint32_t nHeight
    
    float xOffset
    
    float yOffset
    
    float fWidthRatio
    
    bool isVisibleOnLocalPreview = false)

    添加水印

    水印的位置是通过 xOffset, yOffset, fWidthRatio 来指定的。
    xOffset:水印的坐标,取值范围为0 - 1的浮点数。
    yOffset:水印的坐标,取值范围为0 - 1的浮点数。
    fWidthRatio:水印的大小比例,取值范围为0 - 1的浮点数。
    参数
    描述
    fWidthRatio
    水印显示的宽度占画面宽度比例(水印按该参数等比例缩放显示)。
    isVisibleOnLocalPreview
    true:本地预览显示水印;false:本地预览不显示水印,仅在win/mac下生效。
    nHeight
    水印图片像素高度(源数据为文件路径时忽略该参数)。
    nWidth
    水印图片像素宽度(源数据为文件路径时忽略该参数)。
    srcData
    水印图片源数据(传 nullptr 表示去掉水印)。
    srcType
    水印图片源数据类型。
    streamType
    要设置水印的流类型(TRTCVideoStreamTypeBig、TRTCVideoStreamTypeSub)。
    xOffset
    水印显示的左上角 x 轴偏移。
    yOffset
    水印显示的左上角 y 轴偏移。
    注意
    本接口只支持给主路视频添加图片水印。

    getAudioEffectManager

    getAudioEffectManager

    获取音效管理类(TXAudioEffectManager)

    TXAudioEffectManager 是音效管理接口,您可以通过该接口实现如下功能:
    背景音乐:支持在线音乐和本地音乐,支持变速、变调等特效、支持原生和伴奏并播放和循环播放。
    耳机耳返:麦克风捕捉的声音实时通过耳机播放,常用于音乐直播。
    混响效果:KTV、小房间、大会堂、低沉、洪亮...。
    变声特效:萝莉、大叔、重金属...。
    短音效:鼓掌声、欢笑声等简短的音效文件(对于小于10秒的文件,请将 isShortFile 参数设置为 true)。

    startSystemAudioLoopback

    startSystemAudioLoopback
    void startSystemAudioLoopback
    (const char* deviceName = nullptr)

    开启系统声音采集(iOS 端暂未支持)

    该接口会从电脑的声卡中采集音频数据,并将其混入到 SDK 当前的音频数据流中,从而使房间中的其他用户也能听到主播的电脑所播放出的声音。
    在线教育场景中,老师可以使用此功能让 SDK 采集教学影片中的声音,并广播给同房间中的学生。
    音乐直播场景中,主播可以使用此功能让 SDK 采集音乐播放器中的音乐,从而为自己的直播间增加背景音乐。
    参数
    描述
    deviceName
    您可以指定该参数为空值(nullptr),代表让 SDK 采集整个系统的声音。
    注意
    在 Windows 平台下,您也可以将参数 deviceName 设置为某个应用程序的可执行文件(如 QQMuisc.exe)的绝对路径,此时 SDK 只会采集该应用程序的声音(仅支持 32 位版本的 SDK)。
    您也可以指定该参数为某个扬声器设备的名称来采集特定扬声器声音(通过接口 TXDeviceManager 中的 getDevicesList 接口,可以获取类型为 TXMediaDeviceTypeSpeaker 的扬声器设备)。

    stopSystemAudioLoopback

    stopSystemAudioLoopback

    停止系统声音采集(iOS 端暂未支持)

    setSystemAudioLoopbackVolume

    setSystemAudioLoopbackVolume
    void setSystemAudioLoopbackVolume
    (uint32_t volume)

    设置系统声音的采集音量

    参数
    描述
    volume
    设置的音量大小,范围是:[0 ~ 150],默认值为100。

    startScreenCapture

    startScreenCapture
    void startScreenCapture
    (TXView view
    
    TRTCVideoStreamType streamType
    
    TRTCVideoEncParam* encParam)

    启动屏幕分享

    该接口可以抓取整个屏幕的内容,或抓取您指定的某个应用的窗口内容,并将其分享给同房间中的其他用户。
    参数
    描述
    encParam
    屏幕分享的画面编码参数,SDK 会优先使用您通过此接口设置的编码参数:
    如果您设置 encParam 为空值,且您已通过 setSubStreamEncoderParam 设置过辅路视频编码参数,SDK 将使用您设置过的辅路编码参数进行屏幕分享。
    如果您设置 encParam 为空值,且您未通过 setSubStreamEncoderParam 设置过辅路视频编码参数,SDK 将自动选择一个最佳的编码参数进行屏幕分享。
    streamType
    屏幕分享使用的线路,可以设置为主路(TRTCVideoStreamTypeBig)或者辅路(TRTCVideoStreamTypeSub),推荐使用辅路。
    view
    渲染控件所在的父控件,可以设置为空值,表示不显示屏幕分享的预览效果。
    注意
    1. 同一个用户同时最多只能发布一路主路(TRTCVideoStreamTypeBig)画面和一路辅路(TRTCVideoStreamTypeSub)画面。
    2. 默认情况下,屏幕分享使用辅路画面。如果使用主路做屏幕分享,您需要提前停止摄像头采集(stopLocalPreview)以避免相互冲突。
    3. 同一个房间中同时只能有一个用户使用辅路做屏幕分享,也就是说,同一个房间中同时只允许一个用户开启辅路。
    4. 当房间中已经有其他用户在使用辅路分享屏幕时,此时调用该接口会收到来自 ITRTCCloudCallback 的 onError(ERR_SERVER_CENTER_ANOTHER_USER_PUSH_SUB_VIDEO) 回调。

    stopScreenCapture

    stopScreenCapture

    停止屏幕分享

    pauseScreenCapture

    pauseScreenCapture

    暂停屏幕分享

    注意
    从v11.5版本开始,暂停屏幕采集会使用最后一帧按照1fps帧率输出。

    resumeScreenCapture

    resumeScreenCapture

    恢复屏幕分享

    getScreenCaptureSources

    getScreenCaptureSources
    ITRTCScreenCaptureSourceList* getScreenCaptureSources
    (const SIZE &thumbnailSize
    
    const SIZE &iconSize)

    枚举可分享的屏幕和窗口(该接口仅支持桌面系统)

    当您在对接桌面端系统的屏幕分享功能时,一般都需要展示一个选择分享目标的界面,这样用户能够使用这个界面选择是分享整个屏幕还是某个窗口。
    通过本接口,您就可以查询到当前系统中可用于分享的窗口的 ID、名称以及缩略图。我们在 Demo 中提供了一份默认的界面实现供您参考。
    参数
    描述
    iconSize
    指定要获取的窗口图标大小。
    thumbnailSize
    指定要获取的窗口缩略图大小,缩略图可用于绘制在窗口选择界面上。
    注意
    1. 返回的列表中包含屏幕和应用窗口,屏幕是列表中的第一个元素。如果用户有多个显示器,那么每个显示器都是一个分享目标。
    2. 请不要使用 delete ITRTCScreenCaptureSourceList* 删除 SourceList,这很容易导致崩溃,请使用 ITRTCScreenCaptureSourceList 中的 release 方法释放列表。

    返回值说明:

    窗口列表包括屏幕。

    selectScreenCaptureTarget

    selectScreenCaptureTarget
    void selectScreenCaptureTarget
    (const TRTCScreenCaptureSourceInfo &source
    
    const RECT& captureRect
    
    const TRTCScreenCaptureProperty &property)

    选取要分享的屏幕或窗口(该接口仅支持桌面系统)

    当您通过 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 }
    参数
    描述
    captureRect
    指定捕获的区域
    property
    指定屏幕分享目标的属性,包括捕获鼠标,高亮捕获窗口等,详情参考TRTCScreenCaptureProperty 定义
    source
    指定分享源
    注意
    设置高亮边框颜色、宽度参数在 Mac 平台不生效。

    setSubStreamEncoderParam

    setSubStreamEncoderParam
    void setSubStreamEncoderParam
    (const TRTCVideoEncParam& param)

    设置屏幕分享(即辅路)的视频编码参数(桌面系统和移动系统均已支持)

    该接口可以设定远端用户所看到的屏幕分享(即辅路)的画面质量,同时也能决定云端录制出的视频文件中屏幕分享的画面质量。
    请注意如下两个接口的差异:
    setVideoEncoderParam 用于设置主路画面(TRTCVideoStreamTypeBig,一般用于摄像头)的视频编码参数。
    setSubStreamEncoderParam 用于设置辅路画面(TRTCVideoStreamTypeSub,一般用于屏幕分享)的视频编码参数。
    参数
    描述
    param
    辅流编码参数,详情请参见 TRTCVideoEncParam

    setSubStreamMixVolume

    setSubStreamMixVolume
    void setSubStreamMixVolume
    (uint32_t volume)

    设置屏幕分享时的混音音量大小(该接口仅支持桌面系统)

    这个数值越高,屏幕分享音量的占比就越高,麦克风音量占比就越小,所以不推荐设置得太大,否则麦克风的声音就被压制了。
    参数
    描述
    volume
    设置的混音音量大小,范围0 - 100。

    addExcludedShareWindow

    addExcludedShareWindow
    void addExcludedShareWindow
    (TXView windowID)

    将指定窗口加入屏幕分享的排除列表中(该接口仅支持桌面系统)

    加入排除列表中的窗口不会被分享出去,常见的用法是将某个应用的窗口加入到排除列表中以避免隐私问题。
    支持启动屏幕分享前设置过滤窗口,也支持屏幕分享过程中动态添加过滤窗口。
    参数
    描述
    windowID
    不希望分享出去的窗口
    注意
    1. 该接口只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeScreen 时生效,即只有在分享整个屏幕内容时,排除指定窗口的功能才生效。
    2. 使用该接口添加到排除列表中的窗口会在退出房间后被 SDK 自动清除。
    3. Mac 平台下请传入窗口 ID(即 CGWindowID),您可以通过 TRTCScreenCaptureSourceInfo 中的 sourceId 成员获得。

    removeExcludedShareWindow

    removeExcludedShareWindow
    void removeExcludedShareWindow
    (TXView windowID)

    将指定窗口从屏幕分享的排除列表中移除(该接口仅支持桌面系统)

    参数
    描述
    windowID
    要排除的窗口 id。

    removeAllExcludedShareWindow

    removeAllExcludedShareWindow

    将所有窗口从屏幕分享的排除列表中移除(该接口仅支持桌面系统)

    addIncludedShareWindow

    addIncludedShareWindow
    void addIncludedShareWindow
    (TXView windowID)

    将指定窗口加入屏幕分享的包含列表中(该接口仅支持桌面系统)

    该接口只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效。即只有在分享窗口内容时,额外包含指定窗口的功能才生效。
    您在 startScreenCapture 之前和之后调用均可。
    参数
    描述
    windowID
    希望被分享出去的窗口(Windows 平台下为窗口句柄: HWND)
    注意
    通过该方法添加到包含列表中的窗口,会在退出房间后被 SDK 自动清除。

    removeIncludedShareWindow

    removeIncludedShareWindow
    void removeIncludedShareWindow
    (TXView windowID)

    将指定窗口从屏幕分享的包含列表中移除(该接口仅支持桌面系统)

    该接口只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效。
    即只有在分享窗口内容时,额外包含指定窗口的功能才生效。
    参数
    描述
    windowID
    希望被分享出去的窗口(Mac 平台:窗口 ID;Windows 平台:HWND)

    removeAllIncludedShareWindow

    removeAllIncludedShareWindow

    将全部窗口从屏幕分享的包含列表中移除(该接口仅支持桌面系统)

    该接口只有在 TRTCScreenCaptureSourceInfo 中的 type 指定为 TRTCScreenCaptureSourceTypeWindow 时生效。
    即只有在分享窗口内容时,额外包含指定窗口的功能才生效。

    enableCustomVideoCapture

    enableCustomVideoCapture
    void enableCustomVideoCapture
    (TRTCVideoStreamType streamType
    
    bool enable)

    启用/关闭视频自定义采集模式

    开启该模式后,SDK 不在运行原有的视频采集流程,即不再继续从摄像头采集数据和美颜,而是只保留视频编码和发送能力。
    您需要通过 sendCustomVideoData 不断地向 SDK 塞入自己采集的视频画面。
    参数
    描述
    enable
    是否启用,默认值:false。
    streamType
    用于指定视频流类型,TRTCVideoStreamTypeBig:高清大画面;TRTCVideoStreamTypeSub:辅路画面。

    sendCustomVideoData

    sendCustomVideoData
    void sendCustomVideoData
    (TRTCVideoStreamType streamType
    
    TRTCVideoFrame* frame)

    向 SDK 投送自己采集的视频帧

    使用此接口可以向 SDK 投送自己采集的视频帧,SDK 会将视频帧进行编码并通过自身的网络模块传输出去。
    
    参数 TRTCVideoFrame 推荐下列填写方式(其他字段不需要填写):
    pixelFormat:Windows 和 Android 平台仅支持 TRTCVideoPixelFormat_I420,iOS 和 Mac平台支持 TRTCVideoPixelFormat_I420TRTCVideoPixelFormat_BGRA32
    bufferType:推荐选择 TRTCVideoBufferType_Buffer
    data:用于承载视频帧数据的 buffer。
    length:视频帧数据长度,如果 pixelFormat 设定为 I420 格式,length 可以按照如下公式计算:length = width × height × 3 / 2。
    width:视频图像的宽度,如 640 px。
    height:视频图像的高度,如 480 px。
    timestamp:时间戳,单位为毫秒(ms),请使用视频帧在采集时被记录下来的时间戳(可以在采集到一帧视频帧之后,通过调用 generateCustomPTS 获取时间戳)。
    
    参考文档:自定义采集和渲染
    参数
    描述
    frame
    视频数据,支持 I420 格式数据。
    streamType
    用于指定视频流类型,TRTCVideoStreamTypeBig: 高清大画面;TRTCVideoStreamTypeSub: 辅路画面。
    注意
    1. 推荐您在采集到的一帧视频帧后,即调用 generateCustomPTS 接口获取该帧的 timestamp 数值,这样可以获得最佳的音画同步效果。
    2. SDK 最终编码出的视频帧率并不是由您调用本接口的频率决定的,而是由您在 setVideoEncoderParam 中所设置的 FPS 决定的。
    3. 请尽量保持本接口的调用间隔是均匀的,否则会导致编码器输出帧率不稳或者音画不同步等问题。
    4. iOS 和 Mac平台目前支持传入 TRTCVideoPixelFormat_I420TRTCVideoPixelFormat_BGRA32 格式的视频帧。
    5. Windows 和 Android 平台目前仅支持传入 TRTCVideoPixelFormat_I420 格式的视频帧。

    enableCustomAudioCapture

    enableCustomAudioCapture
    void enableCustomAudioCapture
    (bool enable)

    启用音频自定义采集模式

    开启该模式后,SDK 不在运行原有的音频采集流程,即不再继续从麦克风采集音频数据,而是只保留音频编码和发送能力。
    您需要通过 sendCustomAudioData 不断地向 SDK 塞入自己采集的音频数据。
    参数
    描述
    enable
    是否启用,默认值:false。
    注意
    由于回声抵消(AEC)需要严格的控制声音采集和播放的时间,所以开启自定义音频采集后,AEC 能力可能会失效。

    sendCustomAudioData

    sendCustomAudioData
    void sendCustomAudioData
    (TRTCAudioFrame* frame)

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

    参数 TRTCAudioFrame 推荐下列填写方式(其他字段不需要填写):
    audioFormat:音频数据格式,仅支持 TRTCAudioFrameFormatPCM。
    data:音频帧 buffer。音频帧数据只支持 PCM 格式,支持[5ms ~ 100ms]帧长,推荐使用 20ms 帧长,长度计算方法:【48000采样率、单声道的帧长度:48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。
    sampleRate:采样率,支持:16000、24000、32000、44100、48000。
    channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。
    timestamp:时间戳,单位为毫秒(ms),请使用音频帧在采集时被记录下来的时间戳(可以在采集到一帧音频帧之后,通过调用 generateCustomPTS 获取时间戳)。
    
    参考文档:自定义采集和渲染
    参数
    描述
    frame
    音频数据
    注意
    请您精准地按每帧时长的间隔调用本接口,数据投送间隔不均匀时极易触发声音卡顿。

    enableMixExternalAudioFrame

    enableMixExternalAudioFrame
    void enableMixExternalAudioFrame
    (bool enablePublish
    
    bool enablePlayout)

    启用/关闭自定义音轨

    开启后,您可以通过本接口向 SDK 混入一条自定义的音轨。通过两个布尔型参数,您可以控制该音轨是否要在远端和本地播放。
    参数
    描述
    enablePlayout
    控制混入的音轨是否要在本地播放,默认值:false。
    enablePublish
    控制混入的音轨是否要在远端播放,默认值:false。
    注意
    如果您指定参数 enablePublish 和 enablePlayout 均为 false,代表完全关闭您的自定义音轨。

    mixExternalAudioFrame

    mixExternalAudioFrame
    int mixExternalAudioFrame
    (TRTCAudioFrame* frame)

    向 SDK 混入自定义音轨

    调用该接口之前,您需要先通过 enableMixExternalAudioFrame 开启自定义音轨,之后就可以通过本接口将自己的音轨以 PCM 格式混入到 SDK 中。
    理想情况下,我们期望您的代码能够以非常均匀的速度向 SDK 提供音轨数据。但我们也非常清楚,完美的调用间隔是一个巨大的挑战。
    所以 SDK 内部会开启一个音轨数据的缓冲区,该缓冲区的作用类似一个“蓄水池”,它能够暂存您传入的音轨数据,平抑由于接口调用间隔的抖动问题。
    本接口的返回值代表这个音轨缓冲区的大小,单位是毫秒(ms),比如:如果该接口返回 50,则代表当前的音轨缓冲区有 50ms 的音轨数据。因此只要您在 50ms 内再次调用本接口,SDK 就能保证您混入的音轨数据是连续的。
    当您调用该接口后,如果发现返回值 > 100ms,则可以等待一帧音频帧的播放时间之后再次调用;如果返回值 < 100ms,则代表缓冲区比较小,您可以再次混入一些音轨数据以确保音轨缓冲区的大小维持在“安全水位”以上。
    
    参数 TRTCAudioFrame 推荐下列填写方式(其他字段不需要填写):
    data:音频帧 buffer。音频帧数据只支持 PCM 格式,支持[5ms ~ 100ms]帧长,推荐使用 20ms 帧长,长度计算方法:【48000采样率、单声道的帧长度:48000 × 0.02s × 1 × 16bit = 15360bit = 1920字节】。
    sampleRate:采样率,支持:16000、24000、32000、44100、48000。
    channel:声道数(如果是立体声,数据是交叉的),单声道:1; 双声道:2。
    timestamp:时间戳,单位为毫秒(ms),请使用音频帧在采集时被记录下来的时间戳(可以在获得一帧音频帧之后,通过调用 generateCustomPTS 获得时间戳)。
    参数
    描述
    frame
    音频数据
    注意
    请您精准地按每帧时长的间隔调用本接口,数据投送间隔不均匀时极易触发声音卡顿。

    返回值说明:

    >= 0 缓冲的长度,单位:ms。< 0 错误(-1 未启用 mixExternalAudioFrame)

    setMixExternalAudioVolume

    setMixExternalAudioVolume
    void setMixExternalAudioVolume
    (int publishVolume
    
    int playoutVolume)

    设置推流时混入外部音频的推流音量和播放音量

    参数
    描述
    playoutVolume
    设置的播放音量大小,范围0 - 100,-1表示不改变。
    publishVolume
    设置的推流音量大小,范围0 - 100,-1表示不改变。

    generateCustomPTS

    generateCustomPTS

    生成自定义采集时的时间戳

    本接口仅适用于自定义采集模式,用于解决音视频帧的采集时间(capture time)和投送时间(send time)不一致所导致的音画不同步问题。
    
    当您通过 sendCustomVideoDatasendCustomAudioData 等接口进行自定义视频或音频采集时,请按照如下操作使用该接口:
    1. 首先,在采集到一帧视频或音频帧时,通过调用本接口获得当时的 PTS 时间戳。
    2. 之后可以将该视频或音频帧送入您使用的前处理模块(如第三方美颜组件,或第三方音效组件)。
    3. 在真正调用 sendCustomVideoDatasendCustomAudioData 进行投送时,请将该帧在采集时记录的 PTS 时间戳赋值给 TRTCVideoFrameTRTCAudioFrame 中的 timestamp 字段。

    返回值说明:

    时间戳(单位:ms)

    enableLocalVideoCustomProcess

    enableLocalVideoCustomProcess
    int enableLocalVideoCustomProcess
    (bool enable
    
    TRTCVideoPixelFormat pixelFormat
    
    TRTCVideoBufferType bufferType)

    .1 开启视频第三方美颜

    开启后,您可以通过 ITRTCVideoFrameCallback 获取到指定像素格式和视频数据结构类型的图像帧。
    参数
    描述
    bufferType
    指定视频数据结构类型。
    enable
    是否启用视频第三方美颜,默认为关闭状态。
    pixelFormat
    指定回调的像素格式。

    返回值说明:

    0:成功;<0:错误

    setLocalVideoCustomProcessCallback

    setLocalVideoCustomProcessCallback
    void setLocalVideoCustomProcessCallback
    (ITRTCVideoFrameCallback* callback)

    .2 设置第三方美颜的视频数据回调

    设置该回调之后,SDK 会把采集到的视频帧通过您设置的 callback 回调出来,用于第三方美颜组件进行二次处理,之后 SDK 会将处理后的视频帧进行编码和发送。
    参数
    描述
    callback
    自定义美颜回调,详见 ITRTCVideoFrameCallback

    setLocalVideoRenderCallback

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

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

    设置该回调之后,SDK 内部会跳过原来的渲染流程,并把采集到的数据回调出来,您需要自己完成画面渲染。
    您可以通过调用 setLocalVideoRenderCallback(TRTCVideoPixelFormat_Unknown, TRTCVideoBufferType_Unknown, nullptr) 停止回调。
    iOS、Mac、Windows 平台目前仅支持回调 TRTCVideoPixelFormat_I420TRTCVideoPixelFormat_BGRA32 像素格式的视频帧。
    Android 平台目前仅支持传入 TRTCVideoPixelFormat_I420, TRTCVideoPixelFormat_RGBA32TRTCVideoPixelFormat_Texture_2D 像素格式的视频帧。
    参数
    描述
    bufferType
    指定视频数据结构类型
    callback
    自定义渲染回调
    pixelFormat
    指定回调的像素格式

    返回值说明:

    0:成功;<0:错误

    setRemoteVideoRenderCallback

    setRemoteVideoRenderCallback
    int setRemoteVideoRenderCallback
    (const char* userId
    
    TRTCVideoPixelFormat pixelFormat
    
    TRTCVideoBufferType bufferType
    
    ITRTCVideoRenderCallback* callback)

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

    设置该回调之后,SDK 内部会跳过原来的渲染流程,并把采集到的数据回调出来,您需要自己完成画面渲染。
    您可以通过调用 setRemoteVideoRenderCallback(TRTCVideoPixelFormat_Unknown, TRTCVideoBufferType_Unknown, nullptr) 停止回调。
    iOS、Mac、Windows 平台目前仅支持回调 TRTCVideoPixelFormat_I420TRTCVideoPixelFormat_BGRA32 像素格式的视频帧。
    Android 平台目前仅支持传入 TRTCVideoPixelFormat_I420, TRTCVideoPixelFormat_RGBA32TRTCVideoPixelFormat_Texture_2D 像素格式的视频帧。
    参数
    描述
    bufferType
    指定视频数据结构类型,目前只支持 TRTCVideoBufferType_Buffer
    callback
    自定义渲染回调
    pixelFormat
    指定回调的像素格式
    userId
    远端用户id
    注意
    实际使用时,需要先调用 startRemoteView(userid, nullptr) 来获取远端用户的视频流(view 设置为 nullptr 即可),否则不会有数据回调出来。

    返回值说明:

    0:成功;<0:错误

    setAudioFrameCallback

    setAudioFrameCallback
    int setAudioFrameCallback
    (ITRTCAudioFrameCallback* callback)

    设置音频数据自定义回调

    设置该回调之后,SDK 内部会把音频数据(PCM 格式)回调出来,包括:
    onCapturedAudioFrame:本地麦克风采集到的音频数据回调
    onLocalProcessedAudioFrame:本地采集并经过音频模块前处理后的音频数据回调
    onPlayAudioFrame:混音前的每一路远程用户的音频数据
    onMixedPlayAudioFrame:将各路音频混合之后并最终要由系统播放出的音频数据回调
    注意
    设置回调为空即代表停止自定义音频回调,反之,设置回调不为空则代表启动自定义音频回调。

    setCapturedAudioFrameCallbackFormat