@interface ByteRTCEngineKit : NSObject
SDK 回调给应用层的 delegate 对象,详见 ByteRTCEngineDelegate
| 返回 | 名称 |
|---|---|
| ByteRTCEngineKit* | sharedInstance |
| void | destroy |
| NSString* | getSdkVersion |
| NSString* | getErrorDescription: |
| int | feedbackGrade:type:desc: |
+ (ByteRTCEngineKit * _Nullable) sharedInstance;
获取 ByteRTCEngineKit 单例对象。
返回值 由 sharedEngineWithAppId:delegate: 创建的 ByteRTCEngineKit 对象。
注意
+ (void)destroy;
销毁由 sharedEngineWithAppId:delegate: 创建的引擎实例,并释放所有相关资源。
注意
在上一次 sharedEngineWithAppId:delegate: 调用之后对SDK进行的任何设置, 将在下一次有效执行 sharedEngineWithAppId:delegate: 时生效。
本方法为阻塞调用,会阻塞当前线程直到 SDK 彻底完成退出逻辑,因而需要注意不要在回调线程中直接调用本方法, 也需要注意不要在回调方法中等待主线程的执行而同时在主线程调用本方法,从而造成死锁。
+ (NSString * _Nonnull)getSdkVersion;
获取 SDK 当前的版本号。
返回值 SDK 当前的版本号。
+ (NSString * _Nonnull)getErrorDescription:(NSInteger)code;
获取 SDK 内各种错误码、警告码的描述文字。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | NSInteger | 通过 rtcEngine:onWarning: 和 rtcEngine:onError: 回调获得的值, 具体可以参考 ByteRTCWarningCode 和 ByteRTCErrorCode 。 |
返回值 描述文字。
+ (int)feedbackGrade:(NSInteger)grade type:(NSInteger)type desc:(NSString* _Nullable)desc;
通话结束,用户反馈上报
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| grade | NSInteger | 打分 1~5分 |
| type | NSInteger | 问题列表 |
| desc | NSString* | 其他问题 |
返回值 0: 成功
-1: 还没加入过房间,上报失败
-2: 数据解析错误
-3: 字段缺失
-4: grade不合法
+ (instancetype _Nonnull)sharedEngineWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRTCEngineDelegate> _Nullable)delegate;
创建 RTCEngine 实例。
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个 RTCEngine 实例,来使用 SDK 的其他能力。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| appId | NSString* | 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。 |
| delegate | id |
SDK 回调给应用层的 delegate,详见 ByteRTCEngineDelegate |
返回值 可用的 ByteRTCEngineKit 实例。
注意
该方法在第一次调用时初始化一个 RTCEngine 单例,除非调用 destroy 方法,否则后续的所有调用均 返回同一个内部实例。
连续多次调用该方法不会创建不同的 ByteRTCEngineKit,该方法应该与 destroy 成对使用
必须使用相同的App ID,App 间才能进行通话。
+ (instancetype _Nonnull)sharedEngineWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRTCEngineDelegate> _Nullable)delegate monitorDelegate:(id<ByteRTCMonitorDelegate> _Nullable)monitorDelegate;
创建 RTCEngine 实例。
此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个 RTCEngine 实例,来使用 SDK 的其他能力。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| appId | NSString* | 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。 |
| delegate | id |
SDK 回调给应用层的 delegate,详见 ByteRTCEngineDelegate |
| monitorDelegate | id |
监控信息的回调 delegate, 详见 ByteRTCMonitorDelegate |
返回值 可用的 ByteRTCEngineKit 实例。
注意
该方法在第一次调用时初始化一个 RTCEngine 单例,除非调用 destroy 方法,否则后续的所有调用均 返回同一个内部实例。
连续多次调用该方法不会创建不同的 ByteRTCEngineKit,该方法应该与 destroy 成对使用
必须使用相同的App ID,App 间才能进行通话。
- (id _Nonnull)initWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRTCEngineDelegate> _Nullable)delegate parameters:(NSDictionary* _Nullable)parameters;
创建引擎对象。
如果当前线程中未创建引擎实例,那么你必须先使用此方法,以使用 RTC 提供的各种音视频能力。
如果当前线程中已创建了引擎实例,再次调用此方法时,会创建另一个独立的引擎实例。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| appId | NSString* | 每个应用的唯一标识符,由 RTC 控制台随机生成的。 不同的 AppId 生成的实例在 RTC 中进行音视频通话完全独立,无法互通。 |
| delegate | id |
SDK 回调给应用层的 delegate,详见 ByteRTCEngineDelegate |
| parameters | NSDictionary* | 用以覆盖默认参数的本引擎实例参数。JSON 字符串格式。 |
返回值 可用的 ByteRTCEngineKit 实例
注意 通常不建议在移动端设备上创建多于 2 个引擎实例。
- (id _Nonnull)initWithAppId:(NSString * _Nonnull)appId delegate:(id<ByteRTCEngineDelegate> _Nullable)delegate monitorDelegate:(id<ByteRTCMonitorDelegate> _Nullable)monitorDelegate parameters:(NSDictionary* _Nullable)parameters;
创建引擎对象,此方法应该作为正常 SDK 流程中的第一步操作,通过创建一个引擎实例,来使用 SDK 的其他能力
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| appId | NSString* | 每个应用的唯一标识符,由 VRTC 控制台随机生成的。不同的 AppId 生成的实例在 VRTC 中进行音视频通话完全独立,无法互通。 |
| delegate | id |
SDK 回调给应用层的 delegate,详见 ByteRTCEngineDelegate |
| parameters | NSDictionary* | 保留参数 |
| monitorDelegate | id |
监控信息的回调 delegate, 详见 ByteRTCMonitorDelegate |
返回值 可用的 ByteRTCEngineKit 实例
注意 1. 连续多次调用该方法会创建不同的 ByteRTCEngineKit 2. 必须使用相同的App ID,App间才能进行通话
- (void)destroyEngine;
手动销毁引擎实例对象,如果当前的引擎对象是通过 sharedEngineWithAppId:delegate: 所创建的,则行为与 destroy 保持一致
注意
- (BOOL)setUserRole:(ByteRTCUserRoleType)role;
设置用户角色。
通过设置不同的用户角色,可以控制用户在房间内的行为:
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| role | ByteRTCUserRoleType | 用户角色,参看 ByteRTCUserRoleType。 |
返回值 方法调用结果。
注意
- (ByteRTCUserRoleType)clientRole;
获取当前用户角色。
返回值 当前用户角色,详见 ByteRTCUserRoleType 枚举类型。
- (int)joinRoomByKey:(NSString *_Nullable)token roomId:(NSString *_Nonnull)roomId roomProfile:(ByteRTCRoomProfile)roomProfile userInfo:(ByteRTCUserInfo *_Nonnull)userInfo;
创建/加入房间:房间不存在时即创建房间;房间存在时即加入这个房间。
同一房间内的用户间可以相互通话。
用户调用 sharedEngineWithAppId:delegate: 创建 RTC 引擎后,需调用此方法加入房间实现同其他用户进行音视频通话。
如果用户调用此方法加入房间,则后续重复调用此方法均会失败,用户必须调用 leaveRoom: 退出当前房间后,才能加入下一个房间。
本地用户调用此方法加入房间成功后,会收到 rtcEngine:onUserJoined:elapsed: 回调通知,远端用户会收到 rtcEngine:onUserJoined:elapsed: 回调通知。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | NSString* | 动态密钥,用于对登录用户进行鉴权验证。 进入房间需要携带 Token。测试时可使用控制台生成临时 Token ,正式上线需要使用密钥 SDK 在您的服务端生成并下发 Token 。 |
| roomId | NSString* | 加入的房间 ID。 房间 ID 为长度在 128 字节以内的非空字符串,支持以下字符集范围: 1. 26 个大写字母 A ~ Z 。 2. 26 个小写字母 a ~ z 。 3. 10 个数字 0 ~ 9 。 4. 下划线 "_",at 符 "@",减号 "-"。 |
| roomProfile | ByteRTCRoomProfile | 房间模式。 你应该根据业务需要,选择合适的房间模式。 你必须在进房前设置房间模式,并且进房后不可更改。 房间模式参看 ByteRTCRoomProfile。 |
| userInfo | ByteRTCUserInfo* | 用户信息,参看 ByteRTCUserInfo。 |
返回值 方法调用结果。
注意
- (int)leaveRoom:(void (^_Nullable)(ByteRTCRoomStats *_Nonnull stat))leaveRoomBlock;
离开房间。
用户调用此方法离开房间,结束通话过程,释放所有通话相关的资源。
调用 joinRoomByKey:roomId:roomProfile:userInfo:
方法加入房间后,必须调用此方法离开房间,否则无法进入下一个房间。无论当前是否在房间内,都可以调用此方法。重复调用此方法没有负面影响。
此方法是异步操作,调用返回时并没有真正退出房间。真正退出房间后,SDK 会执行调用此方法时传入的 Block 块。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| leaveRoomBlock | void (^_Nullable | 离开房间完成后执行的 Block 块。Block 的输入参数为加入房间到离开房间过程间的统计信息,详见 ByteRTCRoomStats。 |
返回值 方法调用结果。
注意
- (int)updateToken:(NSString *_Nonnull)token;
更新 Token。
Token 有一定的有效期,当 Token 过期时,用户需调用此方法更新房间的 Token 信息。
用户调用 joinRoomByKey:roomId:roomProfile:userInfo: 方法加入房间时,如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcEngine:onJoinRoomResult:withUid:errorCode:joinType:elapsed: 回调通知,回调错误码为 ByteRtcErrorCode.ByteRTCErrorCodeInvalidTokenByteRtcErrorCode。此时需要重新获取 Token,并调用此方法更新 Token。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | NSString* | 更新的动态密钥。 |
返回值 方法调用结果。
注意
- (void)startAudioCapture;
开启内部音频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartAudioCapture: 的回调。
注意
- (void)stopAudioCapture;
关闭内部音频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopAudioCapture: 的回调。
注意
- (void)setAudioScenario:(ByteRTCAudioScenarioType)audioScenario;
设置音频场景类型。
你可以根据你的应用所在场景,选择合适的音频场景类型。
选择音频场景后,RTC 会自动根据客户端音频路由和发布订阅状态,适用通话音量/媒体音量。
本方法在进房前和进房后设置均可生效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioScenario | ByteRTCAudioScenarioType | 音频场景类型,适用通话音量/媒体音量 详见 ByteRTCAudioScenarioType |
注意
- (void)muteLocalAudio:(ByteRTCMuteState)muteState;
控制本地音频流的发送状态:发送/不发送。
使用此方法后,房间中的其他用户会收到回调 rtcEngine:onUserMuteAudio:muteState:。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muteState | ByteRTCMuteState | 发送状态,标识是否发送本地音频流,详见 ByteRTCMuteState |
返回值 方法调用结果
注意 本方法仅控制本地音频流的发送状态,并不影响本地音频采集状态。
- (void)muteRemoteAudio:(NSString * _Nonnull)uid muteState:(ByteRTCMuteState)muteState;
设置对来自指定远端用户的音频流的接收状态。默认为接收。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 指定远端用户的 ID |
| muteState | ByteRTCMuteState | 接收状态,标识是否接收远端音频流,详见 ByteRTCMuteState |
- (void)muteAllRemoteAudio:(ByteRTCMuteState)muteState;
设置对来自远端的所有音频流的接收状态。默认为接收。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muteState | ByteRTCMuteState | 接收状态,标识是否接收远端音频流,详见 ByteRTCMuteState |
注意 本方法只影响本地是否接收远端音频流,并不影响远端音频设备的采集发送功能。
- (void)setAudioVolumeIndicationInterval:(NSInteger)interval;
开启/关闭音量提示。默认关闭。
开启音量提示后,将按设置的时间间隔收到本地采集音量或订阅的远端用户的音量信息回调。
关于回调的具体信息,参看 rtcEngine:onAudioVolumeIndication:totalRemoteVolume:。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| interval | NSInteger | 收到音量提示回调的时间间隔 • ≤ 0:禁用音量提示功能。 • > 0:启用音量提示功能,并设置收到音量提示回调的时间间隔。单位为毫秒。 建议设置为大于等于 200 毫秒;小于 10 毫秒时,行为未定义。 |
- (void)setRecordingVolume:(NSInteger)volume;
调节音频采集音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | NSInteger | 音频采集音量,取值范围: [0,400] • 0: 静音 • 100: 原始音量 • 400: 最大可为原始音量的 4 倍(自带溢出保护) |
注意 为保证更好的通话质量,建议将 volume 值设为 [0,100]。
- (void)setPlaybackVolume:(NSInteger)volume;
调节本地播放的所有远端用户混音后的音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | NSInteger | 音频播放音量,取值范围:[0,400] • 0: 静音 • 100: 原始音量 • 400: 最大可为原始音量的 4 倍(自带溢出保护) |
注意 为保证更好的通话质量,建议将 volume 值设为 [0,100]。
- (int)setLocalVideoRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)videoRenderer;
设置本地视频外部渲染器。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoRenderer | id |
外部渲染器,具体参照 ByteRTCVideoSinkProtocol |
返回值
- (int)setLocalVideoRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)videoRenderer forRoomId:(NSString * _Nonnull)roomId forUserId:(NSString * _Nonnull)userId;
设置本地视频外部渲染器。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoRenderer | id |
外部渲染器,具体参照 ByteRTCVideoSinkProtocol |
| roomId | NSString* | 房间ID |
| userId | NSString* | 用户ID |
返回值
- (int)setRemoteVideoRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)videoRenderer forRoomId:(NSString * _Nonnull)roomId forUserId:(NSString * _Nonnull)userId;
设置特定远端用户的外部渲染器。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoRenderer | id |
外部渲染器,具体参照 ByteRTCVideoSinkProtocol |
| roomId | NSString* | 房间ID |
| userId | NSString* | 用户ID |
返回值
- (int)setRemoteVideoRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)videoRenderer forUserId:(NSString * _Nonnull)userId;
设置特定远端用户的外部渲染器。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoRenderer | id |
外部渲染器,具体参照 ByteRTCVideoSinkProtocol |
| userId | NSString* | 用户ID |
返回值
- (int)setupRemoteScreenRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)screenRenderer forRoomId:(NSString * _Nonnull)roomId forUserId:(NSString * _Nonnull)userId;
设置远端屏幕共享的外部渲染器。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| screenRenderer | id |
外部渲染器,具体参照 ByteRTCVideoSinkProtocol |
| roomId | NSString* | 房间ID |
| userId | NSString* | 用户ID |
返回值
注意 在应用开发中,通常在应用收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 事件后调用该方法进行远端视频设置。
- (int)setupRemoteScreenRenderer:(id<ByteRTCVideoSinkProtocol> _Nullable)screenRenderer forUserId:(NSString * _Nonnull)userId;
设置远端屏幕共享的外部渲染器。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| screenRenderer | id |
外部渲染器,具体参照 ByteRTCVideoSinkProtocol |
| userId | NSString* | 用户ID |
返回值
注意 在应用开发中,通常在应用收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 事件后调用该方法进行远端视频设置
- (int)setVideoEncoderConfig:(NSArray <ByteRTCVideoSolution *> * _Nullable)videoSolutions;
启动推送多路视频流,设置推送多路流时的各路视频参数, 包括分辨率、帧率、码率、缩放模式、网络不佳时的回退策略等。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| videoSolutions | NSArray |
视频参数数组首地址,参看 ByteRTCVideoSolution。 • 若选取的帧率为 5 FPS,则推算码率为<视频属性 (Profile) 参考表>推荐码率除以 2 • 若选取的帧率为 15 FPS,则推算码率为<视频属性 (Profile) 参考表>推荐码率 • 若选取的帧率为 30 FPS,则推算码率为<视频属性 (Profile) 参考表>码率乘以 1.5 • 若选取其余帧率,等比例推算即可 • 若设置的视频码率超出合理范围,SDK 会自动按照合理区间处理码率 |
返回值
- (int)setLocalVideoCanvas:(ByteRTCStreamIndex)streamIndex withCanvas:(ByteRTCVideoCanvas * _Nullable)canvas;
设置本地视频渲染时,使用的视图,并设置渲染模式。
你应在加入房间前,绑定本地视图。退出房间后,此设置仍然有效。
如果需要解除绑定,你可以调用本方法绑定空视图。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamIndex | ByteRTCStreamIndex | 流属性,参看 ByteRTCStreamIndex:ByteRTCStreamIndex |
| canvas | ByteRTCVideoCanvas* | 视图信息和渲染模式,参看 ByteRTCVideoCanvas:ByteRTCVideoCanvas |
返回值
- (int)setRemoteVideoCanvas:(NSString * _Nonnull)uid withIndex:(ByteRTCStreamIndex)streamIndex withCanvas:(ByteRTCVideoCanvas * _Nullable)canvas;
设置来自指定远端用户 user_id 的视频渲染时,使用的视图,并设置渲染模式。
如果需要解除某个用户的绑定视图,你可以把 view 设置为空。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 视频来源的远端用户 ID |
| streamIndex | ByteRTCStreamIndex | 视频流属性,参看 ByteRTCStreamIndex:ByteRTCStreamIndex |
| canvas | ByteRTCVideoCanvas* | 视图信息和渲染模式,参看 ByteRTCVideoCanvas:ByteRTCVideoCanvas |
返回值
注意
实际使用时,你可以在收到回调 rtcEngine:onUserJoined:elapsed: 或 onFirstRemoteVideoFrameonfirstremotevideoframe 时获得远端用户 user_id。 这两个回调的差别是:如果启用了视频录制功能,视频录制服务会作为一个哑客户端加入房间,因此其他客户端会收到对应的 rtcEngine:onUserJoined:elapsed: 回调; 而不会收到 onFirstRemoteVideoFrameonfirstremotevideoframe 回调。你不应给录制的亚客户端绑定视图(因为它不会发送视频流)。
你应在加入房间后,绑定视图。退出房间后,此设置失效。
- (void)startVideoCapture;
开启内部视频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartVideoCapture: 的回调。
注意
- (void)stopVideoCapture;
关闭内部视频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopVideoCapture: 的回调。
注意
- (void)muteLocalVideo:(ByteRTCMuteState)mute_state;
停止/启动发送本地视频流,默认不发送。
无论你使用 SDK 的视频采集编码功能,还是使用自定义采集功能,你都应使用此接口启动发送本地视频流。
调用该方法后,房间中的其他用户会收到 rtcEngine:onUserMuteVideo:withMuteState: 的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mute_state | ByteRTCMuteState | 发送状态,标识是否发送本地视频流,参看 ByteRTCMuteStateByteRTCMMuteState |
注意 本方法只是停止/启动本地视频流的发送,不影响视频采集状态。
- (int)muteRemoteVideo:(NSString * _Nonnull)uid withMuteState:(ByteRTCMuteState)muteState;
设置是否播放远端视频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 视频来源的远端用户 ID |
| muteState | ByteRTCMuteState | 播放状态,标识是否播放远端视频流,参看 ByteRTCMuteState |
返回值
- (int)muteAllRemoteVideo:(ByteRTCMuteState)muteState;
设置是否播放所有远端视频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muteState | ByteRTCMuteState | 播放状态,标识是否播放远端视频流,参看 ByteRTCMuteState |
返回值
- (int)setLocalVideoMirrorMode:(ByteRTCMirrorMode) mode;
设置采用前置摄像头采集时,是否开启镜像模式。默认为关闭状态。
调用后,你会收到回调:rtcEngine:didMirrorStateChanged:
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mode | ByteRTCMirrorMode | 是否开启镜像模式,参看 ByteRTCMirrorMode |
返回值
- (bool)isLocalVideoMirrorOn;
获取本地视频镜像状态
返回值 当前镜像状态
- (int)switchCamera:(ByteRTCCameraID) cameraId;
切换移动端前置/后置摄像头
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| cameraId | ByteRTCCameraID | 移动端摄像头 ID,参看 ByteRTCCameraID。 |
返回值
- (int)replaceBackground:(ByteRTCBackgroundMode)mode withDivideModel:(ByteRTCDivideModel)divideModel;
视频图像分割,替换背景
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mode | ByteRTCBackgroundMode | 背景模式,用于设置预制背景、是否虚化等。参看 ByteRTCBackgroundMode |
| divideModel | ByteRTCDivideModel | 选择使用哪种分割模型。参看 ByteRTCDivideModel |
返回值
- (int)checkVideoEffectLicense:(NSString * _Nonnull)licenseFile;
视频特效许可证检查
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| licenseFile | NSString* | 许可证文件绝对路径 |
返回值
注意 enableVideoEffect: 开始使用视频特效前,需要先调用这个方法进行许可证验证
- (int)enableVideoEffect:(BOOL)enabled;
创建/销毁视频特效引擎
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enabled | BOOL | 是否创建视频特效引擎 • true: 创建 • false: 销毁 |
返回值 方法调用结果
注意
- (void)setVideoEffectAlgoModelPath:(NSString * _Nonnull)modelPath;
设置视频特效算法模型路径
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| modelPath | NSString* | 模型路径 |
- (int) setVideoEffectNodes:(NSArray <NSString *> *_Nonnull)effectNodePaths;
设置视频特效素材包,支持同时设置多个素材包
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| effectNodePaths | NSArray |
特效素材包路径数组 |
返回值
注意 在调用这个方法之前,你须先调用 enableVideoEffect: 。
- (int) updateVideoEffectNode:(NSString * _Nonnull)nodePath nodeKey:(NSString * _Nonnull)nodeKey nodeValue:(float) nodeValue;
设置特效强度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| nodePath | NSString* | 特效素材包路径。 |
| nodeKey | NSString* | 需要设置的素材 key 名称。参看 素材key对应说明。 |
| nodeValue | float | 需要设置的强度值。取值范围为 [0,1],超出该范围设置无效。 |
返回值
注意 该接口仅适用于同时含有上述三个参数的特效资源,对于如大部分贴纸类等没有强度参数的特效,该接口调用无效。
- (int) setVideoEffectColorFilter:(NSString * _Nonnull)resPath;
设置颜色滤镜
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| resPath | NSString* | 滤镜资源包绝对路径 |
返回值
- (int) setVideoEffectColorFilterIntensity:(float) intensity;
设置已启用的颜色滤镜强度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| intensity | float | 滤镜强度 取值范围 [0,1],超出范围时设置无效 |
返回值
- (BOOL)setMediaMetadataObserver:(_Nullable id<ByteRTCMediaMetadataObserver>) metadataObserver;
注册 metadata 观察者,用于接收或发送 metadata,底层通过在视频帧中添加 SEI 数据实现该功能。
注册观察者后,发送的视频帧里面没有 SEI 信息, 会触发 videoFrameMediaMetaDataAtTime: 回调。
注册观察者后,接收的视频帧里面有 SEI 信息,会触发接收 receiveVideoFrameFromUID:withExtendedData:atTimestamp: 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| metadataObserver | id |
metadata 观察者,详见: ByteRTCMediaMetadataObserver |
返回值
注意
- (void)registerLocalEncodedVideoFrameObserver:(_Nullable id<ByteRTCLocalEncodedVideoFrameObserver>) frameObserver;
注册本地视频帧监测器。
无论使用内部采集还是自定义采集,调用该方法后,SDK 每监测到一帧本地视频帧时,都会将视频帧信息通过 onLocalEncodedVideoFrame:Frame: 回调给用户
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frameObserver | id |
本地视频帧监测器,参看 ByteRTCLocalEncodedVideoFrameObserver。将参数设置为 nullptr 则取消注册。 |
注意 该方法可在进房前后任意时间调用,在进房前调用可保证尽可能早地监测视频帧并触发回调
- (BOOL)enableAutoSubscribe:(ByteRTCSubscribeMode)audioMode videoMode:(ByteRTCSubscribeMode)videoMode;
设置订阅模式。
用户调用此方法设置房间中是音视频流的订阅模式。默认自动订阅。
如需开启手动订阅功能,建议在调用 joinRoomByKey:roomId:roomProfile:userInfo:方法加入房间前完成设置。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioMode | ByteRTCSubscribeMode | 音频流的订阅模式。参看 ByteRTCSubscribeMode 。 |
| videoMode | ByteRTCSubscribeMode | 视频流的订阅模式。参看 ByteRTCSubscribeMode 。 |
返回值 方法执行结果。
- (void)subscribeStream:(NSString *_Nonnull)userId subscribeConfig:(ByteRTCSubscribeConfig *_Nonnull)info;
订阅指定的房间内远端音视频流。
关闭自动订阅功能,使用手动订阅模式时用户调用此方法按需订阅房间中的音视频流。
此方法仅在关闭自动订阅功能时生效。用户需在加入房间前调用 enableAutoSubscribe:videoMode: 方法关闭自动订阅功能以使用手动订阅模式。
订阅流失败时,SDK 会按失败原因回调 rtcEngine:onError: 通知用户,具体错误可参考错误码
ByteRTCErrorCode 描述。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | NSString* | 指定订阅的远端音视频流的发布用户的用户ID 。 |
| info | ByteRTCSubscribeConfig* | 选择订阅配置,详见数据结构 ByteRTCSubscribeConfig 。 |
注意
- (void)unSubscribeStream:(NSString *_Nonnull)userId isScreen:(BOOL)isScreen;
停止订阅指定的房间内远端音视频流。
关闭自动订阅功能,使用手动订阅模式时用户调用此方法停止订阅已订阅的音视频流。
此方法仅在关闭自动订阅功能时生效。用户需在加入房间前调用 enableAutoSubscribe:videoMode:enableAutoSubscribe:videoMode:: 方法关闭自动订阅功能以使用手动订阅模式。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | NSString* | 指定订阅的远端音视频流的发布用户的用户ID。 |
| isScreen | BOOL | 订阅的流是否是屏幕共享流。 |
注意
- (int)setAudioPlaybackDevice:(ByteRTCAudioPlaybackDevice)audioPlaybackDevice;
设置音频播放设备为扬声器或者听筒,默认使用扬声器。
音频播放设备发生变化时,会收到 rtcEngine:onAudioPlaybackDeviceChanged: 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioPlaybackDevice | ByteRTCAudioPlaybackDevice | 音频播放设备(扬声器或者听筒),详见 ByteRTCAudioPlaybackDevice。 |
返回值 方法调用结果
注意
- (int)startLiveTranscoding:(ByteRTCLiveTranscoding *_Nonnull)transcoding observer:(id<LiveTranscodingDelegate> _Nonnull)observer;
开启合流转推,并设置合流的视频视图布局和音频属性。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| transcoding | ByteRTCLiveTranscoding* | observer 合流转推配置参数,详见 ByteRTCLiveTranscoding |
| observer | id |
端云一体合流转推观察者。 • 合流转推的状态和方式会通过回调上报 RTC Engine。 • 只有房间模式为直播模式,且用户角色为主播的用户才能调用此方法。 • 启用端云一体合流转推时,回调合流完成的音视频流和 SEI 信息给 App。详见 LiveTranscodingDelegate 数据类型。 |
注意
- (int)stopLiveTranscoding;
停止合流转推。
返回值 方法调用结果。
- (int)updateLiveTranscoding:(ByteRTCLiveTranscoding *_Nonnull)transcoding;
更新合流转推参数。
启用合流转推功能后,你可以使用此方法更新合流转推功能配置参数。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| transcoding | ByteRTCLiveTranscoding* | 视频合流配置参数,详见 ByteRTCLiveTranscoding 类型。 |
返回值 方法调用结果。
- (int)enableCloudRending:(NSString *_Nonnull)rendingInfo;
按照传入的布局信息开启云端渲染。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| rendingInfo | NSString* | 渲染功能相关参数。 |
返回值 方法调用结果。
- (int)updateCloudRending:(NSString *_Nonnull)rendingInfo;
按照传入的布局信息更新云端渲染。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| rendingInfo | NSString* | 渲染功能相关参数。 |
返回值 方法调用结果。
- (int)disableCloudRending;
停止云端渲染。
返回值 方法调用结果。
- (void)setVideoInputType:(ByteRTCMediaInputType)type;
配置视频采集源。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | ByteRTCMediaInputType | 视频输入类型,参看 ByteRTCMediaInputType。 |
注意
- (void)setVideoSourceType:(ByteRTCVideoSourceType)type;
切换视频输入源(自定义采集/内部采集)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | ByteRTCVideoSourceType | 视频输入源类型,参看 ByteRTCVideoSourceType |
注意
- (BOOL)pushExternalVideoFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts;
推送外部视频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | CVPixelBufferRef | 该视频帧包含待 SDK 编码的视频数据 |
| pts | CMTime | CMTime |
返回值
注意 使用外部推送视频帧,调用 setVideoInputType 开启外部视频源功能,详见 setVideoInputType:
- (BOOL)pushExternalVideoFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts rotation:(ByteRTCVideoRotation)rotation;
推送外部视频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | CVPixelBufferRef | 该视频帧包含待 SDK 编码的视频数据 |
| pts | CMTime | CMTime |
| rotation | ByteRTCVideoRotation | 当前视频角度 |
返回值
注意 使用外部推送视频帧,调用 setVideoInputType: 开启外部视频源功能,详见 setVideoInputType:
- (BOOL)pushExternalVideoFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts rotation:(ByteRTCVideoRotation)rotation extendedData:(NSData* _Nullable)extendedData supplementaryInfo:(NSData* _Nullable)supplementoryInfo;
推送外部视频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | CVPixelBufferRef | 该视频帧包含待 SDK 编码的视频数据 |
| pts | CMTime | CMTime |
| rotation | ByteRTCVideoRotation | 当前视频角度 |
| extendedData | NSData* | 当前帧的扩展数据,没有的话就传空 |
| supplementoryInfo | NSData* | 附加信息,比如人脸位置等等 |
返回值
- (BOOL)pushExternalByteVideoFrame:(ByteRTCVideoFrame * _Nonnull)frame;
推送外部视频帧,使用 ByteRTCVideoFrame 进行封装。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | ByteRTCVideoFrame* | 该视频帧包含待 SDK 编码的视频数据,参考 ByteRTCVideoFrame |
返回值
- (void)enableExternalAudioDevice:(ByteRTCAudioFormat * _Nonnull) recordingFormat playbackFormat:(ByteRTCAudioFormat * _Nonnull) playbackFormat;
启用自定义音频采集渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| recordingFormat | ByteRTCAudioFormat* | 自定义音频数据采集格式,详见 ByteRTCAudioFormat |
| playbackFormat | ByteRTCAudioFormat* | 自定义音频数据渲染格式,详见 ByteRTCAudioFormat |
注意
- (void)disableExternalAudioDevice;
禁用已开启的自定义音频采集渲染,将音频采集渲染由自定义模块切换至内部模块。
注意
- (BOOL)setAudioPlayoutMixStream:(BOOL) enable sampleRate:(int) sampleRate channelNum:(int) channelNum;
启动/停止外部音频流混音, 并设置混音数据格式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | BOOL | • YES: 启用外部音频流混音。 • NO: 停止外部音频流混音。 |
| sampleRate | int | 音频采样率,单位HZ。目前支持的采样率有:8000HZ, 16000HZ, 32000HZ, 44100HZ,48000HZ。 |
| channelNum | int | 音频声道个数。目前支持单通道(1),双通道(2) |
返回值
注意
- (int)getAudioMixingStreamCachedFrameNum;
获取SDK当前缓冲数据
返回值
注意 调用该方法可以实时获取缓存数据量,并以此数据为基准调整数据推送节奏来避免内存溢出
- (BOOL)pushAudioMixingStreamData:(void* _Nonnull)audioFrame frameNum:(int)frameNum;
向SDK推送混音的音频数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | void* | PCM音频数据,其格式与 setAudioPlayoutMixStream:sampleRate:channelNum: 保持一致。 |
| frameNum | int | 采样点数。若音频采样率为 48000HZ,则单个声道每秒的数据量为 48000 个采样点,10 毫秒的音频数据对应的采样点数为 480 个采样点。 |
返回值
注意
- (BOOL)setRecordingAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;
设置本地麦克风录制的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| samplesPerSec | NSInteger | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | NSInteger | 音频通道数,支持单声道(1)和双声道(2) |
返回值 方法调用结果
注意 使用本方法设置参数,并使用setAudioFrameObserversetAudioFrameObserver:注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onRecordAudioFrameonRecordAudioFrame:收到数据
- (BOOL)setPlaybackAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;
设置远端所有用户音频数据混音后的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| samplesPerSec | NSInteger | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | NSInteger | 音频通道数,支持单声道(1)和双声道(2) |
返回值 方法调用结果
注意 使用本方法设置参数,并使用setAudioFrameObserversetAudioFrameObserver:注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onPlaybackAudioFrameonPlaybackAudioFrame:收到数据
- (BOOL)setMixedAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;
设置本地麦克风录制音频数据和远端所有用户音频数据混音后的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| samplesPerSec | NSInteger | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | NSInteger | 音频通道数,支持单声道(1)和双声道(2) |
返回值 方法调用结果
注意 使用本方法设置参数,并使用setAudioFrameObserversetAudioFrameObserver:注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onMixedAudioFrameonMixedAudioFrame:收到数据
- (BOOL)setAudioFrameObserver:(_Nullable id<ByteRTCAudioFrameObserver>) audioFrameObserver;
设置音频数据回调观察者
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrameObserver | id |
音频数据回调的观察者对象,详见: ByteRTCAudioFrameObserver |
返回值 方法调用结果
注意 本方法需要与下面3个方法配合使用:setRecordingAudioFrameParameters:channels:、 setPlaybackAudioFrameParameters:channels:、 setMixedAudioFrameParameters:channels:
- (int)pushExternalAudioFrame:(ByteRTCAudioFrame * _Nonnull) audioFrame;
推送外部音频数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteRTCAudioFrame* | 音频数据帧,详见 ByteRTCAudioFrame |
返回值 方法调用结果
注意
此方法推送音频数据的间隔为 10 毫秒。 samples (音频采样点个数)应该为 audioFrame.sampleRate / 100, 如设置采样率为 48000 时, 每次应该推送 480 个采样点。
音频采样格式为 S16。音频缓冲区内的数据格式必须为 PCM 数据,其容量大小应该为 audioFrame.samples
- (int)pullExternalAudioFrame:(ByteRTCAudioFrame * _Nonnull) audioFrame;
拉取外部音频数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteRTCAudioFrame* | 音频数据帧,详见 ByteRTCAudioFrame |
返回值 方法调用结果
注意
此方法拉取音频数据的间隔为 10 毫秒,音频采样格式为 S16。 samples (音频采样点个数)应该为 audioFrame.sampleRate / 100, 如设置采样率为 48000 时, 每次应该拉取 480 个采样点。
音频采样格式为 S16。音频缓冲区内的数据格式必须为 PCM 数据,其容量大小应该为 audioFrame.samples
- (int)sendRoomMessage:(NSString * _Nonnull)msg;
给房间内的所有其他用户发送广播文本消息。(Broadcast),返回这次发送消息的编号。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msg | NSString* | 用户发送的广播文本消息 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
1. 调用该函数后会收到一次 rtcEngine:onRoomMessageSendResult:error: 回调,通知消息发送方发送成功或失败;
2. 若文本消息发送成功,则房间内所有用户会收到
rtcEngine:onRoomMessageReceived:message:rtcEngine: onRoomMessageReceived:message: 回调。
- (int)sendRoomBinaryMessage:(NSData * _Nonnull)msg;
给房间内的所有其他用户发送广播二进制消息(Broadcast),返回这次发送消息的编号。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| msg | NSData* | 广播二进制消息的内容。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
1. 调用该函数后会收到一次 rtcEngine:onRoomMessageSendResult:error:回调,通知消息发送方发送成功或失败;
2. 若二进制消息发送成功,则 房间内所有用户会收到
rtcEngine:onRoomBinaryMessageReceived:message: 回调。
- (int)setBusinessId:(NSString* _Nullable)businessId;
设置业务标识参数。
可通过 businessId 区分不同的业务场景(角色/策略等)。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| businessId | NSString* | 用户设置的自己的 businessId 值。businessId 相当于一个 sub AppId,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。 businessId 只是一个标签,颗粒度需要用户自定义。 |
返回值
注意
- (int64_t)sendUserMessage:(NSString * _Nonnull)uid message:(NSString * _Nonnull)message;
给房间内指定的用户发送文本消息(P2P),返回这次发送消息的编号。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 指定用户 ID 。 |
| message | NSString* | 发送的文本消息内容。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
1. 调用该函数后会收到一次 rtcEngine:onUserMessageSendResult:error: 回调,通知消息发送方发送成功或失败;
2. 若文本消息发送成功,则 uid 所指定的用户会收到
rtcEngine:onUserMessageReceived:message: 回调。
- (int64_t)sendUserBinaryMessage:(NSString * _Nonnull)uid message:(NSData * _Nonnull)message;
给房间内指定的用户发送二进制消息(P2P),返回这次发送消息的编号。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 指定用户 ID。 |
| message | NSData* | 二进制消息的内容。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
1. 调用该函数后会收到一次 rtcEngine:onUserMessageSendResult:error:回调,通知消息发送方发送成功或失败;
2. 若二进制消息发送成功,则 uid 所指定的用户会收到
rtcEngine: onUserBinaryMessageReceived:message:rtcEngine:onUserBinaryMessageReceived:message:回调。
- (void)setRemoteAudioPlaybackVolume:(NSString* _Nonnull)uid volume:(int)volume;
调节来自指定远端用户的音频播放音量,默认为 100。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 音频来源的远端用户 ID |
| volume | int | 播放音量,调节范围:[0,400] • 0: 静音 • 100: 原始音量 • 400: 最大可为原始音量的 4 倍(自带溢出保护) |
- (int)getAudioMixingDuration;
获取音乐文件时长
返回值
注意 请在房间内调用该方法。
- (int)getAudioMixingCurrentPosition;
获取音乐文件播放进度
返回值
注意 请在房间内调用该方法。
- (int)stopAudioMixing;
停止播放音乐文件及混音
返回值
注意
- (int)pauseAudioMixing;
暂停播放音乐文件
返回值
注意
- (int)resumeAudioMixing;
恢复播放音乐文件
返回值
注意
- (int)adjustAudioMixingVolume:(NSInteger)volume;
调节音乐文件的文件音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | NSInteger | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400: 最大可调音量 (自带溢出保护) |
返回值
注意
- (int)startAudioMixing:(NSString * _Nonnull)filePath loopback:(BOOL)loopback replace:(BOOL)replace cycle:(NSInteger)cycle;
开始播放音乐文件及混音。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| filePath | NSString* | 指定需要混音的本地文件的绝对路径。支持音频文件格式有: mp3,aac,m4a,3gp,wav。 |
| loopback | BOOL | YES: 只有本地可以听到混音或替换后的音频流。 NO: 本地和对方都可以听到混音或替换后的音频流 |
| replace | BOOL | YES: 只推送设置的本地音频文件,不传输麦克风采集的音频。 NO: 音频文件内容将会和麦克风采集的音频流进行混音。 |
| cycle | NSInteger | 指定音频文件循环播放的次数。 • >0: 循环的次数。 • -1: 无限循环 |
返回值
注意
- (int)setAudioMixingPosition:(NSInteger)pos;
设置音频文件的播放位置
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| pos | NSInteger | 整数。进度条位置,单位为毫秒。 |
返回值
注意 该方法可以设置音频文件的播放位置,这样你可以根据实际情况从指定的位置播放音乐文件,无需从头到尾完整播放一个音乐文件。
- (int)adjustAudioMixingPlayoutVolume:(NSInteger)volume;
调节音乐文件的本地播放音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | NSInteger | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400: 最大可调音量 (自带溢出保护) |
返回值
注意
- (int)adjustAudioMixingPublishVolume:(NSInteger)volume;
调节音乐文件的远端播放音量。为保证更好的音质,建议将 volume 值设为 [0,100]。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | NSInteger | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400: 最大可调音量 (自带溢出保护) |
返回值
注意
- (int)setVolumeOfEffect:(NSInteger)soundId withVolume:(NSInteger)volume;
调节指定音效文件的文件音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | NSInteger | 音效ID,应用调用者维护,请保证唯一性。确保此处的 soundId 与 playEffect:filePath:loopback:cycle:withVolume: 设置的 soundId 相同。 |
| volume | NSInteger | 音乐文件播放音量范围为 0~400。默认 100 为原始文件音量 |
返回值
注意
- (int)getEffectVolume:(NSInteger)soundId;
获取指定音效文件的文件音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | NSInteger | 音效ID,应用调用者维护,请保证唯一性。确保此处的 soundId 与 playEffect:filePath:loopback:cycle:withVolume: 设置的 soundId 相同。 |
返回值
注意 请在房间内调用该方法。
- (int)playEffect:(NSInteger)soundId filePath:(NSString * _Nullable)filePath loopback:(BOOL)loopback cycle:(NSInteger)cycle withVolume:(NSInteger)volume;
开始播放指定音效文件。你可以在该方法中设置音效文件的播放次数、音量大小,以及远端用户是否能听到该音效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | NSInteger | 音效ID,应用调用者维护,请保证唯一性。如果已经通过 preloadEffect:filePath: 将音效加载至内存,确保此处的 soundId 与 preloadEffect:filePath: 设置的 soundId 相同。 |
| filePath | NSString* | 指定需要混音的音频文件名和文件路径名。支持以下音频格式: mp3,aac,m4a,3gp,wav |
| loopback | BOOL | • YES: 只有本地可以听到该音效; • NO: 本地和远端用户都可以听到该音效 |
| cycle | NSInteger | 指定音频文件循环播放的次数。 • >0:循环的次数。 • -1:无限循环,直至调用 stopEffect: 或 stopAllEffects 后停止。 |
| volume | NSInteger | 音效文件播放音量范围为 0~400。默认 100 为原始文件音量。 |
返回值
注意
- (int)preloadEffect:(NSInteger)soundId filePath:(NSString * _Nullable)filePath;
预加载指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | NSInteger | 音效ID,应用调用者维护,请保证唯一性。 |
| filePath | NSString* | 指定需要混音的音频文件名和文件路径名。支持以下音频格式: mp3,aac,m4a,3gp,wav。 |
返回值
注意
- (int)unloadEffect:(NSInteger)soundId;
卸载指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | NSInteger | 音效ID,应用调用者维护,请保证唯一性。 |
返回值
注意
- (int)pauseEffect:(NSInteger)soundId;
暂停播放指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | NSInteger | 音效ID,应用调用者维护,请保证唯一性 |
返回值
注意 调用该方法暂停播放指定音效文件,可以调用 resumeEffect: 方法恢复播放。
- (int)resumeEffect:(NSInteger)soundId;
恢复播放指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | NSInteger | 音效ID,应用调用者维护,请保证唯一性。 |
返回值
注意
- (int)stopEffect:(NSInteger)soundId;
停止播放指定音效文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| soundId | NSInteger | 音效ID,应用调用者维护,请保证唯一性。如果已经通过 preloadEffect:filePath: 将音效加载至内存,确保此处的 soundId 与 preloadEffect:filePath: 设置的 soundId 相同。 |
返回值
注意
- (int)setEffectsVolume:(NSInteger)volume;
调节所有音效文件的文件音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | NSInteger | 音乐文件播放音量范围为 0~400。默认 100 为原始文件音量。 |
返回值
注意
- (int)unloadAllEffects;
卸载所有音效文件
返回值
注意
- (int)pauseAllEffects;
暂停所有音效文件的播放
返回值
注意 该方法暂停所有音效文件的播放,可调用 resumeAllEffects 方法恢复播放。
- (int)resumeAllEffects;
恢复所有音效文件的播放
返回值
注意
- (int)stopAllEffects;
停止所有音效文件的播放
返回值
注意 该方法停止所有音效文件的播放。
- (int)setPublishFallbackOption:(ByteRTCPublishFallbackOption)option;
设置发布的音视频流回退选项
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| option | ByteRTCPublishFallbackOption | 本地发布的音视频流回退选项,详见枚举类型 ByteRTCPublishFallbackOption |
返回值
注意
- (int)setSubscribeFallbackOption:(ByteRTCSubscribeFallbackOption)option;
设置订阅的音视频流回退选项
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| option | ByteRTCSubscribeFallbackOption | 远端订阅的流回退处理选项,详见枚举类型 ByteRTCSubscribeFallbackOption |
返回值
注意
- (int)setRemoteUserPriority:(ByteRTCRemoteUserPriority)priority uid:(NSString *_Nonnull)uid;
设置用户优先级
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| priority | ByteRTCRemoteUserPriority | 远端用户的优先级, 详见枚举类型 ByteRTCRemoteUserPriority |
| uid | NSString* | 远端用户的 ID |
返回值
注意
- (void)setEncryptType:(ByteRTCEncryptType)encrypt_type key:(NSString * _Nonnull)key;
设置传输时使用内置加密的方式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| encrypt_type | ByteRTCEncryptType | 内置加密算法,详见 ByteRTCEncryptType |
| key | NSString* | 加密密钥,长度限制为 36 位,超出部分将会被截断 |
注意
使用传输时内置加密时,使用此方法;如果需要使用传输时自定义加密,参看 ByteRTCEncryptRawData:。 内置加密和自定义加密互斥,根据最后一个调用的方法确定传输加密的方案。
该方法必须在进房之前调用,可重复调用,以最后调用的参数作为生效参数。
- (void)setCustomizeEncryptHandler:(id<ByteRTCEncryptHandler> _Nullable)handler;
设置自定义加密和解密方式
需要实现对应的加密和解密方法。详情参考 ByteRTCEncryptHandler
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handler | id |
自定义加密 handler,需要实现里面的加密和解密方法 |
注意
该方法与 setEncryptType:key: 为互斥关系, 即按照调用顺序,最后一个调用的方法为最终生效的版本
该方法必须在调用 joinRoomByKey:roomId:roomProfile:userInfo: 之前调用,可重复调用,以最后调用的参数作为生效参数
无论加密或者解密,其对原始数据的长度修改,需要控制在90%-120%之间,即如果输入数据为100字节,则处理完成后的数据必须在 90至120字节之间,如果加密或解密结果超出该长度限制,则该音视频桢会被丢弃
数据加密/解密为串行执行,因而视实现方式不同,可能会影响到最终渲染效率,是否使用该方法,需要由使用方谨慎评估
- (int)setScreenCapture:(BOOL)enable Rect:(CGRect)rect screenCaptureParam:(ByteRTCScreenCaptureParam * _Nonnull)param;
配置外部屏幕采集
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | BOOL | YES :开启; NO :不开启; |
| rect | CGRect | 采集区域 |
| param | ByteRTCScreenCaptureParam* | 采集参数 ByteRTCScreenCaptureParam |
返回值 0 :成功;
-1 :失败;
注意 1.屏幕采集分为内部采集和外部采集,本方法属于外部采集。 内部采集:由 SDK 进行屏幕采集和后续所有流程 外部采集:用户负责采集屏幕数据帧,通过接口提供给 SDK 2.调用此方法发布本端屏幕共享流后,用户还需要通过设置定时任务周期性调用 pushScreenCaptureFrame:time:rotation: 方法,将需要发送的屏幕数据推送给 SDK。 3.调用该接口后远端能收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 和 rtcEngine:onStreamAdd: 事件。
- (void)pushScreenCaptureFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts rotation:(int)rotation;
推送外部屏幕采集帧
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | CVPixelBufferRef | 该视频帧包含待 SDK 编码的视频数据 |
| pts | CMTime | 每一帧的时间戳,单位 ms |
| rotation | int | 帧的旋转角度包含: 0, 90, 180, 270 |
注意 1.屏幕采集分为内部采集和外部采集,本方法属于外部采集。
- (int)startScreenSharingWithParam:(ByteRTCScreenCaptureParam *_Nonnull)param preferredExtension:(NSString *_Nullable)extension groupId:(NSString *_Nonnull)groupId API_AVAILABLE(ios(12));
开始内部屏幕采集
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| param | ByteRTCScreenCaptureParam* | 采集参数 ByteRTCScreenCaptureParam |
| extension | NSString* | 传入 Broadcast Upload Extension 的 Bundle Id,用于在设置中优先展示 Extension |
| groupId | NSString* | App 和 Extension 应该归属于同一个 App Group,此处需要传入 Group Id。 |
返回值 0 :成功;
-1 :失败;
注意 1.屏幕采集分为内部采集和外部采集,本方法属于内部采集。 内部采集:由 SDK 进行屏幕采集和后续所有流程 外部采集:用户负责采集屏幕数据帧,通过接口提供给 SDK 2.调用该接口后远端能收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 和 rtcEngine:onStreamAdd: 事件。 3.内部采集时,外部不需要屏幕采集帧。
- (void)stopScreenSharing API_AVAILABLE(ios(12));
停止内部屏幕采集
注意 屏幕采集分为内部采集和外部采集,本方法属于内部采集。