有奖捉虫:云通信与企业服务文档专题,速来> HOT
Copyright (c) 2021 Tencent. All rights reserved.

Module: TRTCCloud @ TXLiteAVSDK
Function: 腾讯云 TRTC 主功能接口
Version: 11.6

TRTCCloud

TRTCCloud

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

sharedInstance

sharedInstance

创建 TRTCCloud 实例(单例模式)

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

destroySharedInstance

destroySharedInstance

销毁 TRTCCloud 实例(单例模式)

addDelegate:

addDelegate:
- (void)addDelegate:
(id<TRTCCloudDelegate>)delegate

添加 TRTC 事件回调

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

removeDelegate:

removeDelegate:
- (void)removeDelegate:
(id<TRTCCloudDelegate>)delegate

移除 TRTC 事件回调

delegateQueue

delegateQueue

设置驱动 TRTCCloudDelegate 事件回调的队列

如果您不指定自己的 delegateQueue,SDK 默认会采用 MainQueue 作为驱动 TRTCCloudDelegate 事件回调的队列。
也就是当您不设置 delegateQueue 属性时,TRTCCloudDelegate 中的所有回调函数都是由 MainQueue 来驱动的。
注意
如果您指定了自己的 delegateQueue,请不要在 TRTCCloudDelegate 回调函数中操作 UI,否则会引发线程安全问题。

enterRoom:appScene:

enterRoom:appScene:
- (void)enterRoom:
(TRTCParams *)param
appScene:
(TRTCAppScene)scene

进入房间

TRTC 的所有用户都需要进入房间才能“发布”或“订阅”音视频流,“发布”是指将自己的音频和视频推送到云端,“订阅”是指从云端拉取房间里其他用户的音视频流。
调用该接口时,您需要指定您的应用场景 TRTCAppScene 以获取最佳的音视频传输体验,这些场景可以分成两大类:

实时通话:
包括 TRTCAppSceneVideoCallTRTCAppSceneAudioCall 两个可选项,分别是视频通话和语音通话,该模式适合 1对1 的音视频通话,或者参会人数在 300 人以内的在线会议。

在线直播:
包括 TRTCAppSceneLIVETRTCAppSceneVoiceChatRoom 两个可选项,分别是视频直播和语音直播,该模式适合十万人以内的在线直播场景,但需要您在接下来介绍的 TRTCParams 参数中指定 角色(role) 这个字段,也就是将房间中的用户区分为 主播 (TRTCRoleAnchor) 和 观众 (TRTCRoleAudience) 两种不同的角色。

调用该接口后,您会收到来自 TRTCCloudDelegate 中的 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 会通过 TRTCCloudDelegate 中的 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:privateMapKey:

switchRole:privateMapKey:
-(void)switchRole:
(TRTCRoleType)role
privateMapKey:
(NSString*)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:
(TRTCSwitchRoomConfig *)config

切换房间

使用该接口可以让用户可以快速从一个房间切换到另一个房间。
如果用户的身份是“观众”,该接口的调用效果等同于 exitRoom(当前房间) + enterRoom(新的房间)。
如果用户的身份是“主播”,该接口在切换房间的同时还会保持自己的音视频发布状态,因此在房间切换过程中,摄像头的预览和声音的采集都不会中断。

该接口适用于在线教育场景中,监课老师在多个房间中进行快速切换的场景。在该场景下使用 switchRoom 可以获得比 exitRoom+enterRoom 更好的流畅性和更少的代码量。
接口调用结果会通过 TRTCCloudDelegate 中的 onSwitchRoom(errCode, errMsg) 回调。
参数
描述
config
房间参数,详情请参见 TRTCSwitchRoomConfig
注意
由于对老版本 SDK 兼容的需求,参数 config 中同时包含 roomId 与 strRoomId 两个参数,这两个参数的填写格外讲究,请注意如下事项:
1. 若您选用 strRoomId,则 roomId 需要填写为0。若两者都填,将优先选用 roomId。
2. 所有房间需要同时使用 strRoomId 或同时使用 roomId,不可混用,否则将会出现很多预期之外的 bug。

connectOtherRoom:

connectOtherRoom:
- (void)connectOtherRoom:
(NSString *)param

请求跨房通话

默认情况下,只有同一个房间中的用户之间可以进行音视频通话,不同的房间之间的音视频流是相互隔离的。
但您可以通过调用该接口,将另一个房间中某个主播音视频流发布到自己所在的房间中,与此同时,该接口也会将自己的音视频流发布到目标主播的房间中。

也就是说,您可以使用该接口让身处两个不同房间中的主播进行跨房间的音视频流分享,从而让每个房间中的观众都能观看到这两个主播的音视频。该功能可以用来实现主播之间的 PK 功能。

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

例如:当房间“101”中的主播 A 通过 connectOtherRoom() 跟房间“102”中的主播 B 建立跨房通话后,
房间“101”中的用户都会收到主播 B 的 onRemoteUserEnterRoom(B) 和 onUserVideoAvailable(B,YES) 这两个事件回调,即房间“101”中的用户都可以订阅主播 B 的音视频。
房间“102”中的用户都会收到主播 A 的 onRemoteUserEnterRoom(A) 和 onUserVideoAvailable(A,YES) 这两个事件回调,即房间“102”中的用户都可以订阅主播 A 的音视频。


跨房通话的参数考虑到后续扩展字段的兼容性问题,暂时采用了 JSON 格式的参数:

情况一:数字房间号
如果房间“101”中的主播 A 要跟房间“102”中的主播 B 连麦,那么主播 A 调用该接口时需要传入:{"roomId": 102, "userId": "userB"}
示例代码如下:
NSMutableDictionaryjsonDict = [[NSMutableDictionary alloc] init];
[jsonDict setObject:@(102) forKey:@"roomId"];
[jsonDict setObject:@"userB" forKey:@"userId"];
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil];
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[trtc connectOtherRoom:jsonString];

情况二:字符串房间号
如果您使用的是字符串房间号,务必请将 json 中的 “roomId” 替换成 “strRoomId”: {"strRoomId": "102", "userId": "userB"}
示例代码如下:
NSMutableDictionaryjsonDict = [[NSMutableDictionary alloc] init];
[jsonDict setObject:@"102" forKey:@"strRoomId"];
[jsonDict setObject:@"userB" forKey:@"userId"];
NSData* jsonData = [NSJSONSerialization dataWithJSONObject:jsonDict options:NSJSONWritingPrettyPrinted error:nil];
NSString* jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
[trtc connectOtherRoom:jsonString];
参数
描述
param
需要你传入 JSON 格式的字符串参数,roomId 代表数字格式的房间号,strRoomId 代表字符串格式的房间号,userId 代表目标主播的用户 ID。

disconnectOtherRoom

disconnectOtherRoom

退出跨房通话

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

setDefaultStreamRecvMode:video:

setDefaultStreamRecvMode:video:
- (void)setDefaultStreamRecvMode:
(BOOL)autoRecvAudio
video:
(BOOL)autoRecvVideo

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

您可以通过该接口在“自动订阅”和“手动订阅”两种模式下进行切换:
自动订阅:默认模式,用户在进入房间后会立刻接收到该房间中的音视频流,音频会自动播放,视频会自动开始解码(依然需要您通过 startRemoteView 接口绑定渲染控件)。
手动订阅:在用户进入房间后,需要手动调用 startRemoteView 接口才能启动视频流的订阅和解码,需要手动调用 muteRemoteAudio (NO) 接口才能启动声音的播放。

在绝大多数场景下,用户进入房间后都会订阅房间中所有主播的音视频流,因此 TRTC 默认采用了自动订阅模式,以求得最佳的“秒开体验”。
如果您的应用场景中每个房间同时会有很多路音视频流在发布,而每个用户只想选择性地订阅其中的 1-2 路,则推荐使用“手动订阅”模式以节省流量费用。
参数
描述
autoRecvAudio
YES:自动订阅音频;NO:需手动调用 muteRemoteAudio(NO) 订阅音频。默认值:YES。
autoRecvVideo
YES:自动订阅视频;NO:需手动调用 startRemoteView 订阅视频。默认值:YES。
注意
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
TRTCCloud *mainCloud = [TRTCCloud sharedInstance];
TRTCParams *mainParams = [[TRTCParams alloc] init];
//Fill your params
mainParams.role = TRTCRoleAnchor;
[mainCloud enterRoom:mainParams appScene:TRTCAppSceneLIVE)];
//...
[mainCloud startLocalPreview:YES view:videoView];
[mainCloud startLocalAudio:TRTCAudioQualityDefault];

//In the large room that only needs to watch, enter the room as an audience and pull audio and video streams
TRTCCloud *subCloud = [mainCloud createSubCloud];
TRTCParams *subParams = [[TRTCParams alloc] init];
//Fill your params
subParams.role = TRTCRoleAudience;
[subCloud enterRoom:subParams appScene:TRTCAppSceneLIVE)];
//...
[subCloud startRemoteView:userId streamType:TRTCVideoStreamTypeBig view:videoView];
//...
//Exit from new room and release it.
[subCloud exitRoom];
[mainCloud destroySubCloud:subCloud];
注意
同一个用户,可以使用同一个 userId 进入多个不同 roomId 的房间。
两台不同的终端设备不可以同时使用同一个 userId 进入同一个 roomId 的房间。
您可以分别为不同实例分别设置 TRTCCloudDelegate 获取各自的事件通知。
同一个用户可以在多个 TRTCCloud 实例中推流,也可以调用子实例中与本地音视频相关的接口。但需要注意:
多实例的音频需要同时为麦克风采集或自定义采集,而且与音频设备相关的接口调用会以最后一次为准;
与摄像头相关的调用会以最后一次为准:startLocalPreview

返回值说明:

子 TRTCCloud 实例

destroySubCloud:

destroySubCloud:
- (void)destroySubCloud:
(TRTCCloud *)subCloud

销毁子房间实例

参数
描述
subCloud
子房间实例

updateOtherRoomForwardMode:

updateOtherRoomForwardMode:
- (void)updateOtherRoomForwardMode:
(NSString *)param

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

通常情况下,在调用 connectOtherRoom 接口与另一个房间的主播进行跨房通话后,本房间内的所有观众都将收到该主播发布的音视频流。
您可以通过调用该接口,限制跨房主播在本房间内的上行能力,禁止或允许跨房主播发布音频/主路视频/辅路视频,该行为会影响房间内的所有用户。
在禁用跨房主播某种上行能力后,本房间内所有用户将无法收到对应音视频流,且无法再订阅对应的音视频。

需要注意的是,该接口只能由进行跨房通话的主播调用,且通过该接口设置的限制会因为跨房通话的中断或对应主播退房重置。

该接口的调用结果会通过 TRTCCloudDelegate 中的 onUpdateOtherRoomForwardMode 回调通知给您。

例如:
房间“101”中有主播 A 与观众 B,房间“102”中有主播 C,主播 C 正常发布音视频流。主播 A 通过 connectOtherRoom() 跟主播 C 建立跨房通话。
此时,主播 A 与观众 B 都会收到主播 C 的 onRemoteUserEnterRoom(C) 和 onUserVideoAvailable(C,YES)、onUserAudioAvailable(C,YES) 这三个事件回调,可以订阅主播 C 的音视频。

之后,主播 A 调用该接口禁用主播 C 在本房间发布音频的能力。
此后,主播 C 的音频流将无法发布至房间“101”,主播 A 与观众 B 都将收到 onUserAudioAvailable(C,NO) 事件回调,且无法再通过 muteRemoteAudio(C,NO) 订阅主播 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:type:

startPublishing:type:
- (void)startPublishing:
(NSString *)streamId
type:
(TRTCVideoStreamType)streamType

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

该接口会向 TRTC 服务器发送指令,要求其将当前用户的音视频流旁路到直播 CDN 上。您可以通过参数 streamId 设定直播流的 StreamId,从而可以指定该用户的音视频流对应在直播 CDN 上的播放地址。

例如:您可以通过该接口将当前用户的直播流 ID 指定为 user_stream_001,那么该用户音视频流对应的 CDN 播放地址为:
“http://yourdomain/live/user_stream_001.flv”,其中 yourdomain 为您自己备案的播放域名,

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

TRTCCloud *trtcCloud = [TRTCCloud sharedInstance];
[trtcCloud enterRoom:params appScene:TRTCAppSceneLIVE];
[trtcCloud startLocalPreview:frontCamera view:localView];
[trtcCloud startLocalAudio];
[trtcCloud startPublishing: @"user_stream_001" type:TRTCVideoStreamTypeBig];

您也可以在设置 enterRoom 的参数 TRTCParams 时指定 streamId, 而且我们更推荐您采用这种方案。
参数
描述
streamId
自定义流 ID。
streamType
仅支持 TRTCVideoStreamTypeBigTRTCVideoStreamTypeSub
注意
您需要提前在 实时音视频控制台 中的功能配置页面上开启“启用旁路推流”才能生效。
若您选择“指定流旁路”,则您可以通过该接口将对应音视频流推送到腾讯云 CDN 且指定为填写的流 ID。
若您选择“全局自动旁路”,则您可以通过该接口调整默认的流 ID。

stopPublishing

stopPublishing

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

startPublishCDNStream:

startPublishCDNStream:
- (void)startPublishCDNStream:
(TRTCPublishCDNParam*)param

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

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

stopPublishCDNStream

stopPublishCDNStream

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

setMixTranscodingConfig:

setMixTranscodingConfig:
- (void)setMixTranscodingConfig:
(nullable 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:encoderParam:mixingConfig:

startPublishMediaStream:encoderParam:mixingConfig:
- (void)startPublishMediaStream:
(TRTCPublishTarget*)target
encoderParam:
(nullable TRTCStreamEncoderParam*)param
mixingConfig:
(nullable 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:publishTarget:encoderParam:mixingConfig:

updatePublishMediaStream:publishTarget:encoderParam:mixingConfig:
- (void)updatePublishMediaStream:
(NSString *)taskId
publishTarget:
(TRTCPublishTarget*)target
encoderParam:
(nullable TRTCStreamEncoderParam*)param
mixingConfig:
(nullable 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:
(NSString *)taskId

停止发布媒体流

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

startLocalPreview:view:

startLocalPreview:view:
- (void)startLocalPreview:
(BOOL)frontCamera
view:
(nullable TXView *)view

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

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

startLocalPreview:

startLocalPreview:
- (void)startLocalPreview:
(nullable TXView *)view

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

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

updateLocalView:

updateLocalView:
- (void)updateLocalView:
(nullable TXView *)view

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

stopLocalPreview

stopLocalPreview

停止摄像头预览

muteLocalVideo:mute:

muteLocalVideo:mute:
- (void)muteLocalVideo:
(TRTCVideoStreamType)streamType
mute:
(BOOL)mute

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

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

当暂停/恢复发布指定 TRTCVideoStreamTypeBig 后,同一房间中的其他用户将会收到 onUserVideoAvailable 回调通知。
当暂停/恢复发布指定 TRTCVideoStreamTypeSub 后,同一房间中的其他用户将会收到 onUserSubStreamAvailable 回调通知。
参数
描述
mute
YES:暂停;NO:恢复。
streamType
要暂停/恢复的视频流类型(仅支持 TRTCVideoStreamTypeBigTRTCVideoStreamTypeSub)。

setVideoMuteImage:fps:

setVideoMuteImage:fps:
- (void)setVideoMuteImage:
(nullable TXImage *)image
fps:
(NSInteger)fps

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

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

startRemoteView:streamType:view:

startRemoteView:streamType:view:
- (void)startRemoteView:
(NSString *)userId
streamType:
(TRTCVideoStreamType)streamType
view:
(nullable TXView *)view

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

调用该接口可以让 SDK 拉取指定 userid 的视频流,并渲染到参数 view 指定的渲染控件上。您可以通过 setRemoteRenderParams 设置画面的显示模式。
如果您已经知道房间中有视频流的用户的 userid,可以直接调用 startRemoteView 订阅该用户的画面。
如果您不知道房间中有哪些用户在发布视频,您可以在 enterRoom 之后等待来自 onUserVideoAvailable 的通知。

调用本接口只是启动视频流的拉取,此时画面还需要加载和缓冲,当缓冲完毕后您会收到来自 onFirstVideoFrame 的通知。
参数
描述
streamType
指定要观看 userId 的视频流类型。
高清大画面:TRTCVideoStreamTypeBig
低清小画面:TRTCVideoStreamTypeSmall(需要远端用户通过 enableEncSmallVideoStream 开启双路编码后才有效果)。
辅流画面(常用于屏幕分享):TRTCVideoStreamTypeSub
userId
指定远端用户的 ID。
view
用于承载视频画面的渲染控件。
注意
注意几点规则需要您关注:
1. SDK 支持同时观看某 userid 的大画面和辅路画面,或者同时观看某 userid 的小画面和辅路画面,但不支持同时观看大画面和小画面。
2. 只有当指定的 userid 通过 enableEncSmallVideoStream 开启双路编码后,才能观看该用户的小画面。
3. 当指定的 userid 的小画面不存在时,SDK 默认切换到该用户的大画面。

updateRemoteView:streamType:forUser:

updateRemoteView:streamType:forUser:
- (void)updateRemoteView:
(nullable TXView *)view
streamType:
(TRTCVideoStreamType)streamType
forUser:
(NSString *)userId

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

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

stopRemoteView:streamType:

stopRemoteView:streamType:
- (void)stopRemoteView:
(NSString *)userId
streamType:
(TRTCVideoStreamType)streamType

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

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

stopAllRemoteView

stopAllRemoteView

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

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

muteRemoteVideoStream:streamType:mute:

muteRemoteVideoStream:streamType:mute:
- (void)muteRemoteVideoStream:
(NSString*)userId
streamType:
(TRTCVideoStreamType)streamType
mute:
(BOOL)mute

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

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

muteAllRemoteVideoStreams:

muteAllRemoteVideoStreams:
- (void)muteAllRemoteVideoStreams:
(BOOL)mute

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

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

setVideoEncoderParam:

setVideoEncoderParam:
- (void)setVideoEncoderParam:
(TRTCVideoEncParam*)param

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

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

setNetworkQosParam:

setNetworkQosParam:
- (void)setNetworkQosParam:
(TRTCNetworkQosParam*)param

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

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

setLocalRenderParams:

setLocalRenderParams:
- (void)setLocalRenderParams:
(TRTCRenderParams *)params

设置本地画面的渲染参数

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

setRemoteRenderParams:streamType:params:

setRemoteRenderParams:streamType:params:
- (void)setRemoteRenderParams:
(NSString *)userId
streamType:
(TRTCVideoStreamType)streamType
params:
(TRTCRenderParams *)params

设置远端画面的渲染模式

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

setVideoEncoderRotation:

setVideoEncoderRotation:
- (void)setVideoEncoderRotation:
(TRTCVideoRotation)rotation

设置视频编码器输出的画面方向

该设置不影响本地画面的预览方向,但会影响房间中其他用户所观看到(以及云端录制文件)的画面方向。

当用户将手机或 Pad 上下颠倒时,由于摄像头的采集方向没有变,所以房间中其他用户所看到的画面会变成上下颠倒的,
在这种情况下,您可以通过调用该接口将 SDK 编码出的画面方向旋转180度,如此一来,房间中其他用户所看到的画面可保持正常的方向。
如果您希望实现上述这种友好的交互体验,我们更推荐您直接调用 setGSensorMode 实现更加智能的方向适配,无需您手动调用本接口。
参数
描述
rotation
目前支持 0、90、180、270 四个旋转角度,默认值:TRTCVideoRotation_0,即不旋转。

setVideoEncoderMirror:

setVideoEncoderMirror:
- (void)setVideoEncoderMirror:
(BOOL)mirror

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

该设置不影响本地画面的镜像模式,但会影响房间中其他用户所观看到(以及云端录制文件)的镜像模式。
参数
描述
mirror
是否开启远端镜像,YES:开启远端画面镜像;NO:关闭远端画面镜像,默认值:NO。

setGSensorMode:

setGSensorMode:
- (void)setGSensorMode:
(TRTCGSensorMode) mode

设置重力感应的适配模式

您可以通过本接口实现如下这种友好的交互体验:
当用户将手机或 Pad 上下颠倒时,由于摄像头的采集方向没有变,所以房间中其他用户所看到的画面会变成上下颠倒的,
在这种情况下,您可以通过调用该接口让 SDK 根据设备陀螺仪的朝向自动调整本地画面和编码器输出画面的旋转方向,以使远端观众可以看到正常朝向的画面。
参数
描述
mode
重力感应模式,详情请参见 TRTCGSensorMode,默认值:TRTCGSensorMode_UIAutoLayout。
注意
从v11.5版本开始,不再支持 TRTCGSensorMode_UIFixLayout。
重力感应只有开与关两种状态: TRTCGSensorMode_Disable 为关,TRTCGSensorMode_UIAutoLayout 为开,TRTCGSensorMode_UIFixLayout 已废弃。

enableEncSmallVideoStream:withQuality:

enableEncSmallVideoStream:withQuality:
- (int)enableEncSmallVideoStream:
(BOOL)enable
withQuality:
(TRTCVideoEncParam*)smallVideoEncParam

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

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

返回值说明:

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

setRemoteVideoStreamType:type:

setRemoteVideoStreamType:type:
- (void)setRemoteVideoStreamType:
(NSString*)userId
type:
(TRTCVideoStreamType)streamType

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

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

snapshotVideo:type:sourceType:

snapshotVideo:type:sourceType:
- (void)snapshotVideo:
(nullable NSString *)userId
type:
(TRTCVideoStreamType)streamType
sourceType:
(TRTCSnapshotSourceType)sourceType

视频画面截图

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

setPerspectiveCorrectionWithUser:srcPoints:dstPoints:

setPerspectiveCorrectionWithUser:srcPoints:dstPoints:
- (void)setPerspectiveCorrectionWithUser:
(nullable NSString *)userId
srcPoints:
(nullable NSArray *)srcPoints
dstPoints:
(nullable NSArray *)dstPoints

视频画面透视校正坐标设置

您可以通过本接口指定渲染画面透视校正的坐标区域。
参数
描述
dstPoints
期望校正到的目标坐标区域4个顶点坐标,需按照左上、左下、右上、右下的顺序传入,所有的坐标需要根据画面宽高做 [0,1] 区间的归一化;传 null 则停止透视校正。
srcPoints
原始画面坐标区域4个顶点坐标,需按照左上、左下、右上、右下的顺序传入,所有的坐标需要根据画面宽高做 [0,1] 区间的归一化; 传 null 则停止透视校正。
userId
用户 ID,如指定空值表示校正本地的视频画面。

startLocalAudio:

startLocalAudio:
- (void)startLocalAudio:
(TRTCAudioQuality)quality

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

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

stopLocalAudio

stopLocalAudio

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

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

muteLocalAudio:

muteLocalAudio:
- (void)muteLocalAudio:
(BOOL)mute

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

当您暂停发布本地音频流之后,房间中的其他用户会收到 onUserAudioAvailable(userId, NO) 的通知。
当您恢复发布本地音频流之后,房间中的其他用户会收到 onUserAudioAvailable(userId, YES) 的通知。

stopLocalAudio 的不同之处在于,muteLocalAudio(YES) 并不会释放麦克风权限,而是继续发送码率极低的静音包。
这对于需要云端录制的场景非常适用,因为 MP4 等格式的视频文件,对于音频数据的连续性要求很高,使用 stopLocalAudio 会导致录制出的 MP4 文件不易播放。
因此在对录制文件的质量要求较高的场景中,建议选择 muteLocalAudio 而不建议使用 stopLocalAudio。
参数
描述
mute
YES:静音;NO:恢复。

muteRemoteAudio:mute:

muteRemoteAudio:mute: