@interface ByteRTCAudioMixingManager :NSObject
| 返回 | 名称 |
|---|---|
| void | startAudioMixing:filePath:config: |
| void | stopAudioMixing: |
| void | pauseAudioMixing: |
| void | resumeAudioMixing: |
| void | preloadAudioMixing:filePath: |
| void | unloadAudioMixing: |
| void | setAudioMixingVolume:volume:type: |
| int | getAudioMixingDuration: |
| int | getAudioMixingCurrentPosition: |
| void | setAudioMixingPosition:position: |
| void | enableAudioMixingFrame: |
| void | disableAudioMixingFrame |
| int | pushAudioMixingFrame: |
-(void)startAudioMixing:(int)id filePath:(NSString * _Nullable)filePath config:(ByteRTCAudioMixingConfig * _Nullable)config;
开始播放音乐文件及混音
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID 混音 ID 用于标识混音,请保证混音 ID 唯一性。 如果已经通过 preloadAudioMixing:filePath: 将音效加载至内存,确保此处的 ID 与 preloadAudioMixing:filePath: 设置的 ID 相同。 使用相同的 ID 重复调用该方法后,前一次混音会停止,后一次混音开始,且 SDK 会使用 rtcEngine:onAudioMixingStateChanged:state:error: 回调通知前一次混音已停止。 |
| filePath | NSString* | 指定需要混音的本地文件的绝对路径,支持音频文件格式有: mp3,aac,m4a,3gp,wav。 可以通过传入不同的 ID 和 filepath 多次调用本方法,以实现同时播放多个混音文件,实现混音叠加。 |
| config | ByteRTCAudioMixingConfig* | 混音配置 可以设置混音的播放次数、是否本地播放、以及是否将混音发送至远端,详见 ByteRTCAudioMixingConfig。 |
注意
-(void)stopAudioMixing:(int)id;
停止播放音乐文件及混音
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID |
注意
-(void)pauseAudioMixing:(int)id;
暂停播放音乐文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID |
注意
-(void)resumeAudioMixing:(int)id;
恢复播放音乐文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID |
注意
-(void)preloadAudioMixing:(int)id filePath:(NSString * _Nullable)filePath;
预加载指定音乐文件到内存中
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID 应用调用者维护,请保证唯一性。 如果使用相同的 ID 重复调用本方法,后一次会覆盖前一次。 如果先调用 startAudioMixing:filePath:config:,再使用相同的 ID 调用本方法 ,会先回调 rtcEngine:onAudioMixingStateChanged:state:error: 上一个混音停止,然后加载后一个混音。 使用一个 ID 调用本方法预加载 A.mp3 后,如果需要使用相同的 ID 调用 startAudioMixing:filePath:config: 播放 B.mp3,请先调用 unloadAudioMixing: 卸载 A.mp3 ,否则会报错 ByteRTCAudioMixingErrorLoadConflict。 |
| filePath | NSString* | 指定需要混音的本地文件的绝对路径,支持音频文件格式有: mp3,aac,m4a,3gp,wav。 如果音乐文件长度超过 20s,会回调加载失败,见 rtcEngine:onAudioMixingStateChanged:state:error:。 |
注意
-(void)unloadAudioMixing:(int)id;
卸载指定音乐文件
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID |
注意 不论音乐文件是否播放,调用本方法卸载该文件后,SDK 会回调通知混音已停止,见 rtcEngine:onAudioMixingStateChanged:state:error:。
-(void)setAudioMixingVolume:(int)id volume:(int)volume type:(ByteRTCAudioMixingType)type;
调节音乐文件在本地和远端播放的音量大小
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID |
| volume | int | 音乐文件播放音量范围为 0~400。 • 0:静音 • 100:原始音量 • 400: 最大可调音量 (自带溢出保护) |
| type | ByteRTCAudioMixingType | 混音播放类型 设置音乐文件是否本地播放、以及是否发送到远端,由此控制音乐文件本地或远端播放的音量,详见 ByteRTCAudioMixingType。 |
注意
-(int)getAudioMixingDuration:(int)id;
获取音乐文件时长
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID |
返回值
注意 调用本方法获取音乐文件时长前,需要先调用 preloadAudioMixing:filePath: 或 startAudioMixing:filePath:config:。
-(int)getAudioMixingCurrentPosition:(int)id;
获取音乐文件播放进度
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID |
返回值
注意 调用本方法获取音乐文件播放进度前,需要先调用 startAudioMixing:filePath:config: 开始播放音乐文件。
-(void)setAudioMixingPosition:(int)id position:(int)position;
设置音乐文件的播放位置
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| id | int | 混音 ID |
| position | int | 进度条位置 参数为整数,单位为毫秒。 |
注意
-(void)enableAudioMixingFrame:(ByteRTCAudioMixingType)type;
启动外部音频流混音
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | ByteRTCAudioMixingType | 混音播放类型 设置外部音频流是否本地播放、以及是否发送到远端,详见 ByteRTCAudioMixingType。 |
注意
-(void)disableAudioMixingFrame;
关闭外部音频流混音
注意 使用 enableAudioMixingFrame: 开启外部音频流混音后,请使用本方法关闭该混音。
-(int)pushAudioMixingFrame:(ByteRTCAudioFrame* _Nullable)audioFrame;
向 SDK 推送外部音频帧数据
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteRTCAudioFrame* | 音频帧 详见 ByteRTCAudioFrame |
返回值
注意
@interface ByteRTCEngineKit : NSObject
SDK 回调给应用层的 delegate 对象,详见 ByteRTCEngineDelegate
| 返回 | 名称 |
|---|---|
| ByteRTCEngineKit* | sharedInstance |
| void | destroy |
| NSString* | getSdkVersion |
| NSString* | getErrorDescription: |
+ (ByteRTCEngineKit * _Nullable) sharedInstance;
获取 ByteRTCEngineKit 单例对象。
返回值 由 initWithAppId:delegate:parameters: 创建的 ByteRTCEngineKit 对象。
注意
+ (void)destroy;
销毁由 initWithAppId:delegate:parameters: 创建的引擎实例,并释放所有相关资源。
注意
在上一次 initWithAppId:delegate:parameters: 调用之后对SDK进行的任何设置, 将在下一次有效执行 initWithAppId:delegate:parameters: 时生效。
本方法为阻塞调用,会阻塞当前线程直到 SDK 彻底完成退出逻辑,因而需要注意不要在回调线程中直接调用本方法, 也需要注意不要在回调方法中等待主线程的执行而同时在主线程调用本方法,从而造成死锁。
+ (NSString * _Nonnull)getSdkVersion;
获取 SDK 当前的版本号。
返回值 SDK 当前的版本号。
+ (NSString * _Nonnull)getErrorDescription:(NSInteger)code;
获取 SDK 内各种错误码、警告码的描述文字。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| code | NSInteger | 通过 rtcEngine:onWarning: 和 rtcEngine:onError: 回调获得的值, 具体可以参考 ByteRTCWarningCode 和 ByteRTCErrorCode 。 |
返回值 描述文字。
- (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 个引擎实例。
- (void)destroyEngine;
手动销毁引擎实例对象,如果当前的引擎对象是通过 initWithAppId:delegate:parameters: 所创建的,则行为与 destroy 保持一致
注意
- (BOOL)setUserVisibility:(BOOL)enable;
设置用户可见性。默认为可见。
通过对用户可见性进行设置,可以控制用户在房间内的行为:
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | BOOL | 设置用户是否对房间内其他用户可见: • true: 可以被房间中的其他用户感知,且可以在房间内发布和订阅音视频流; • false: 无法被房间中的其他用户感知,且只能在房间内订阅音视频流。 |
返回值 方法调用结果:
注意
- (BOOL)publish;
将本端音视频流发布到此房间。
注意
- (BOOL)unpublish;
在当前所在房间内停止发布本地音视频流。
注意
- (ByteRTCUserRoleType)clientRole;
获取当前用户角色。
返回值 当前用户角色,详见 ByteRTCUserRoleType 枚举类型。
- (int)joinRoomByKey:(NSString *_Nullable)token roomId:(NSString *_Nonnull)roomId userInfo:(ByteRTCUserInfo *_Nonnull)userInfo rtcRoomConfig:(ByteRTCRoomConfig *_Nonnull)rtcRoomConfig;
创建/加入房间:房间不存在时即创建房间;房间存在时,未加入房间的用户可加入这个房间。
同一个房间内的用户间可以相互通话。
进房后重复调用无效,用户必须调用 leaveRoom: 退出当前房间后,才能加入下一个房间。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | NSString* | 动态密钥,用于对登录用户进行鉴权验证。 进入房间需要携带 Token。测试时可使用控制台生成临时 Token ,正式上线需要使用密钥 SDK 在你的服务端生成并下发 Token 。 使用不同 AppID 的 App 是不能互通的。 请务必保证生成 Token 使用的 AppID 和创建引擎时使用的 AppID 相同,否则会导致加入房间失败。 |
| roomId | NSString* | 加入的房间 ID。 房间 ID 为长度在 128 字节以内的非空字符串,支持以下字符集范围: 1. 26 个大写字母 A ~ Z 。 2. 26 个小写字母 a ~ z 。 3. 10 个数字 0 ~ 9 。 4. 下划线 "_",at 符 "@",减号 "-"。 |
| userInfo | ByteRTCUserInfo* | 用户信息,参看 ByteRTCUserInfo。 |
| rtcRoomConfig | ByteRTCRoomConfig* | 房间参数配置,设置房间模式以及是否自动发布或订阅流。具体配置模式参看 ByteRTCRoomConfig。 |
返回值 方法调用结果。
注意
- (int)leaveRoom:(void (^_Nullable)(ByteRTCRoomStats *_Nonnull stat))leaveRoomBlock ;
离开房间。
用户调用此方法离开房间,结束通话过程,释放所有通话相关的资源。
调用 joinRoomByKey:roomId:userInfo:rtcRoomConfig: 方法加入房间后,必须调用此方法离开房间,否则无法进入下一个房间。无论当前是否在房间内,都可以调用此方法。重复调用此方法没有负面影响。
此方法是异步操作,调用返回时并没有真正退出房间。真正退出房间后,SDK 会执行调用此方法时传入的 Block 块。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| leaveRoomBlock | void (^_Nullable | 离开房间完成后执行的 Block 块。Block 的输入参数为加入房间到离开房间过程间的统计信息,详见 ByteRTCRoomStats。 |
返回值 方法调用结果。
注意
- (int)leaveRoom;
离开房间。
用户调用此方法离开房间,结束通话过程,释放所有通话相关的资源。
返回值 方法调用结果。
注意
- (int)updateToken:(NSString *_Nonnull)token;
更新 Token。
用户调用 joinRoomByKey:roomId:userInfo:rtcRoomConfig: 方法加入房间时,
如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcEngine:onJoinRoomResult:withUid:errorCode:joinType:elapsed: 回调,
回调错误码为 ByteRTCErrorCode 中的 ByteRTCErrorCodeInvalidToken
此时需要重新获取 Token,并调用此方法更新 Token。更新 Token 后,SDK 会自动加入房间。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | NSString* | 更新的动态密钥。 |
返回值 方法调用结果。
注意 Token 过期时,如果已经加入房间成功,则不会受到影响。Token 过期的错误会在下一次使用过期的 Token 加入房间时,或因本地网络状况不佳导致断网重新连入房间时通知用户。
- (void)startAudioCapture;
开启内部音频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartAudioCapture: 的回调。
注意
- (void)stopAudioCapture;
关闭内部音频采集。默认为关闭状态。
进房前调用该方法,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopAudioCapture: 的回调。
注意
- (void)setAudioScenario:(ByteRTCAudioScenarioType)audioScenario;
设置音频场景类型。
你可以根据你的应用所在场景,选择合适的音频场景类型。
选择音频场景后,RTC 会自动根据客户端音频路由和发布订阅状态,适用通话音量/媒体音量。
本方法在进房前和进房后设置均可生效。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioScenario | ByteRTCAudioScenarioType | 音频场景类型,适用通话音量/媒体音量 详见 ByteRTCAudioScenarioType |
注意
- (void)setAudioProfile:(ByteRTCAudioProfileType)audioProfile;
设置音质档位。你应根据业务场景需要选择适合的音质档位。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioProfile | ByteRTCAudioProfileType | 音质档位,参看 ByteRTCAudioProfileType |
注意
- (void)muteLocalAudio:(ByteRTCMuteState)muteState;
控制本地音频流的发送状态:发送/不发送。
使用此方法后,房间中的其他用户会收到回调 rtcEngine:onUserMuteAudio:muteState:。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| muteState | ByteRTCMuteState | 发送状态,标识是否发送本地音频流,详见 ByteRTCMuteState |
返回值 方法调用结果
注意 本方法仅控制本地音频流的发送状态,并不影响本地音频采集状态。
- (void)pauseAllSubscribedStream:(ByteRTCPauseResumControlMediaType) mediaType;
暂停接收来自远端的媒体流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mediaType | ByteRTCPauseResumControlMediaType | 媒体流类型,指定需要暂停接收音频还是视频流,参看 ByteRTCPauseResumControlMediaType。 |
注意
- (void)resumeAllSubscribedStream:(ByteRTCPauseResumControlMediaType) mediaType;
恢复接收来自远端的媒体流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mediaType | ByteRTCPauseResumControlMediaType | 媒体流类型,指定需要暂停接收音频还是视频流,参看 ByteRTCPauseResumControlMediaType |
注意
- (void)setAudioVolumeIndicationInterval:(NSInteger)interval;
开启/关闭音量提示。默认关闭。
开启音量提示后,将按设置的时间间隔收到本地采集音量或订阅的远端用户的音量信息回调。
关于回调的具体信息,参看 rtcEngine:onAudioVolumeIndication:totalRemoteVolume:。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| interval | NSInteger | 收到音量提示回调的时间间隔 • ≤ 0:禁用音量提示功能。 • > 0:启用音量提示功能,并设置收到音量提示回调的时间间隔。单位为毫秒。 建议设置为大于等于 200 毫秒;小于 10 毫秒时,行为未定义。 |
- (void)setCaptureVolume:(ByteRTCStreamIndex)index volume:(int)volume;
调节音频采集音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | ByteRTCStreamIndex | 流索引,指定调节主流还是调节屏幕流的音量,参看 ByteRTCStreamIndex |
| volume | int | 采集的音量值和原始音量的比值,范围是 [0, 400],单位为 %,自带溢出保护。 |
注意
- (void)setPlaybackVolume:(NSInteger)volume;
调节本地播放的所有远端用户混音后的音量。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | NSInteger | 音频播放音量,取值范围:[0,400] • 0: 静音 • 100: 原始音量 • 400: 最大可为原始音量的 4 倍(自带溢出保护) |
注意 为保证更好的通话质量,建议将 volume 值设为 [0,100]。
- (void)enableAudioPropertiesReport:(ByteRTCAudioPropertiesConfig* _Nonnull)config;
启用音量提示。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| config | ByteRTCAudioPropertiesConfig* | 音频信息提示的相关配置,详见 ByteRTCAudioPropertiesConfig |
注意 开启提示后,你可以: + 通过 rtcEngine:onLocalAudioPropertiesReport: 回调获取本地麦克风和屏幕音频流采集的音量信息;
- (void)setEarMonitorMode:(ByteRTCEarMonitorMode)mode;
开启/关闭耳返功能
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mode | ByteRTCEarMonitorMode | 是否开启耳返功能,参看 ByteRTCEarMonitorMode |
注意
- (void)setEarMonitorVolume:(NSInteger)volume;
设置耳返的音量
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| volume | NSInteger | 耳返的音量,取值范围:[0,100],单位:% |
注意
- (void)setLocalVideoSink:(ByteRTCStreamIndex)index withSink:(id<ByteRTCVideoSinkDelegate> _Nullable)videoSink withPixelFormat:(ByteRTCVideoSinkPixelFormat)requiredFormat;
将本地视频流与自定义渲染器绑定。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | ByteRTCStreamIndex | 视频流属性。采集的视频流/屏幕视频流,参看 ByteRTCStreamIndex |
| videoSink | id |
自定义视频渲染器,参看 ByteRTCVideoSinkDelegate |
| requiredFormat | ByteRTCVideoSinkPixelFormat | video_sink 适用的视频帧编码格式,参看 ByteRTCVideoSinkPixelFormat |
注意
- (void)setRemoteVideoSink:(ByteRTCRemoteStreamKey* _Nonnull)streamKey withSink:(id<ByteRTCVideoSinkDelegate> _Nullable)videoSink withPixelFormat:(ByteRTCVideoSinkPixelFormat)requiredFormat;
将远端视频流与自定义渲染器绑定。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamKey | ByteRTCRemoteStreamKey* | 远端流信息,用于指定需要渲染的视频流来源及属性,参看 ByteRTCRemoteStreamKey |
| videoSink | id |
自定义视频渲染器,参看 ByteRTCVideoSinkDelegate |
| requiredFormat | ByteRTCVideoSinkPixelFormat | videoSink 适用的视频帧编码格式,参看 ByteRTCVideoSinkPixelFormat |
注意
- (int)setVideoEncoderConfig:(ByteRTCStreamIndex)streamIndex config:(NSArray <ByteRTCVideoSolution *> * _Nullable)videoSolutions;
启动推送多路视频流,设置推送多路流时的各路视频参数,包括分辨率、帧率、码率、缩放模式、网络不佳时的回退策略等。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamIndex | ByteRTCStreamIndex | 视频流属性,参看 ByteRTCStreamIndex。 |
| videoSolutions | NSArray |
要推送的多路视频流参数,参看 ByteRTCVideoSolution。 最多支持 4 路参数。当设置了多路参数时,分辨率必须是从大到小排列。 最大分辨率为 4096px |
返回值
注意
- (int)setVideoCaptureConfig:(ByteRTCVideoCaptureConfig * _Nullable)captureConfig;
设置 RTC SDK 内部采集时的视频采集参数。
如果你的项目使用了 SDK 内部采集模块,可以通过本接口指定视频采集参数包括分辨率、帧率。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| captureConfig | ByteRTCVideoCaptureConfig* | 视频采集参数。参看: ByteRTCVideoCaptureConfig。 |
返回值
注意
- (int)setLocalVideoCanvas:(ByteRTCStreamIndex)streamIndex withCanvas:(ByteRTCVideoCanvas * _Nullable)canvas;
设置本地视频渲染时,使用的视图,并设置渲染模式。
你应在加入房间前,绑定本地视图。退出房间后,此设置仍然有效。
如果需要解除绑定,你可以调用本方法绑定空视图。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamIndex | ByteRTCStreamIndex | 流属性,参看 ByteRTCStreamIndex |
| canvas | ByteRTCVideoCanvas* | 视图信息和渲染模式,参看 ByteRTCVideoCanvas |
返回值
- (int)setRemoteVideoCanvas:(NSString * _Nonnull)uid withIndex:(ByteRTCStreamIndex)streamIndex withCanvas:(ByteRTCVideoCanvas * _Nullable)canvas;
渲染来自指定远端用户 uid 的视频流时,设置使用的视图和渲染模式。
如果需要解除视频的绑定视图,把 canvas 设置为空。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 视频来源的远端用户 ID |
| streamIndex | ByteRTCStreamIndex | 视频流属性,参看 ByteRTCStreamIndex |
| canvas | ByteRTCVideoCanvas* | 视图信息和渲染模式,参看 ByteRTCVideoCanvas |
返回值
注意
实际使用时,你可以在收到回调 rtcEngine:onUserJoined:elapsed: 或 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 时获得远端用户 uid。 这两个回调的差别是:如果启用了视频录制功能,视频录制服务会作为一个哑客户端加入房间,因此其他客户端会收到对应的 rtcEngine:onUserJoined:elapsed: 回调; 而不会收到 rtcEngine:onFirstRemoteVideoFrameRendered:withFrameInfo: 回调。你不应给录制的哑客户端绑定视图(因为它不会发送视频流)。
你应在加入房间后,绑定视图。退出房间后,此设置失效。
- (void)startVideoCapture;
开启内部视频采集。默认为关闭状态。
调用该方法后,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStartVideoCapture: 的回调。
注意
- (void)stopVideoCapture;
关闭内部视频采集。默认为关闭状态。
调用该方法后,本地用户会收到 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 的回调。
进房后调用该方法,房间中的其他用户会收到 rtcEngine:onUserStopVideoCapture: 的回调。
注意
- (void)muteLocalVideo:(ByteRTCMuteState)mute_state;
停止/启动发送本地视频流,默认不发送。
无论你使用内部视频采集,还是自定义视频采集,你都应使用此接口启动发送本地视频流。
调用该方法后,房间中的其他用户会收到 rtcEngine:onUserMuteVideo:withMuteState: 的回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mute_state | ByteRTCMuteState | 发送状态,标识是否发送本地视频流,参看 ByteRTCMuteState |
注意
- (int)setLocalVideoMirrorMode:(ByteRTCMirrorMode) mode;
设置采用前置摄像头采集时,是否开启镜像模式。默认为关闭状态。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mode | ByteRTCMirrorMode | 是否开启镜像模式,参看 ByteRTCMirrorMode |
返回值
- (int)setLocalVideoMirrorType:(ByteRTCMirrorType) mirrorType;
为本地采集到的视频流开启镜像
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mirrorType | ByteRTCMirrorType | 设置镜像类型,参看 ByteRTCMirrorType |
注意
| 前置摄像头 | 后置摄像头 | 自定义采集视频源 | 桌面端摄像头 | |
|---|---|---|---|---|
| 移动端 | 本地渲染镜像,编码传输不镜像 | 本地渲染不镜像,编码传输不镜像 | 本地渲染不镜像,编码传输不镜像 | / |
| 桌面端 | / | / | 本地渲染不镜像,编码传输不镜像 | 本地渲染镜像,编码传输不镜像 |
- (int)switchCamera:(ByteRTCCameraID) cameraId;
切换视频内部采集时使用的前置/后置摄像头
调用此接口后,在本地会触发 rtcEngine:onMediaDeviceStateChanged:device_type:device_state:device_error: 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| cameraId | ByteRTCCameraID | 移动端摄像头 ID,参看 ByteRTCCameraID。 |
返回值
注意
- (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],超出范围时设置无效 |
返回值
- (int)sendSEIMessage:(ByteRTCStreamIndex)streamIndex andMessage:(NSData* _Nonnull)message andRepeatCount:(int)repeatCount;
在视频通信时,通过视频帧发送 SEI 数据。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamIndex | ByteRTCStreamIndex | 媒体流类型,参看 ByteRTCStreamIndex |
| message | NSData* | SEI 消息。长度不超过 4 kB。 |
| repeatCount | int | 消息发送重复次数。取值范围是 [0, 30]。 调用此接口后,SEI 数据会添加到当前视频帧开始的连续 repeatCount 个视频帧中。 |
返回值
注意
- (int)registerLocalVideoProcessor:(_Nullable id<ByteRTCVideoProcessorDelegate>) processor withConfig:(ByteRTCVideoPreprocessorConfig* _Nullable)config;
设置自定义视频前处理器。
使用这个视频前处理器,你能够调用 processVideoFrame: 对 RTC SDK 采集得到的视频帧进行前处理,并将处理后的视频帧用于 RTC 音视频通信。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| processor | id |
自定义视频处理器,详见 ByteRTCVideoProcessorDelegate。如果传入 null,则不对 RTC SDK 采集得到的视频帧进行前处理。 SDK 只持有 processor 的弱引用,你应保证其生命周期。 在设计 processor 时,应从 ByteRTCVideoFrame 的 textureBuf 字段获取视频帧数据;处理后返回的视频帧数据格式应为 ByteRTCVideoPixelFormat 中的 ByteRTCVideoPixelFormatCVPixelBuffer,且必须存放在返回帧数据的 textureBuf 字段中。 |
| config | ByteRTCVideoPreprocessorConfig* | 自定义视频前处理器适用的设置,详见 ByteRTCVideoPreprocessorConfig。 当前, config 中的 required_pixel_format 仅支持:ByteRTCVideoPixelFormatI420 和 ByteRTCVideoPixelFormatUnknown:• 设置为 UNKNOW 时,RTC SDK 给出供 processor 处理的视频帧格式即采集的格式。• 设置为 ByteRTCVideoPixelFormatI420 时,RTC SDK 会将采集得到的视频转变为对应的格式,供前处理使用。• 设置为其他值时,此方法调用失败。 |
返回值
注意
kVideoPixelFormatUnknown,可以通过避免格式转换带来一些性能优化。- (void)registerLocalEncodedVideoFrameObserver:(_Nullable id<ByteRTCLocalEncodedVideoFrameObserver>) frameObserver;
注册本地视频帧监测器。
无论使用内部采集还是自定义采集,调用该方法后,SDK 每监测到一帧本地视频帧时,都会将视频帧信息通过 onLocalEncodedVideoFrame:Frame: 回调给用户
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frameObserver | id |
本地视频帧监测器,参看 ByteRTCLocalEncodedVideoFrameObserver。将参数设置为 nullptr 则取消注册。 |
注意 该方法可在进房前后任意时间调用,在进房前调用可保证尽可能早地监测视频帧并触发回调
- (void)subscribeUserStream:(NSString *_Nonnull)userId streamType:(ByteRTCStreamIndex)streamType mediaType:(ByteRTCSubscribeMediaType)mediaType videoConfig:(ByteRTCSubscribeVideoConfig *_Nonnull)videoConfig;
订阅房间内指定的远端音视频流。
无论是否开启自动订阅,你都可以调用此方法按需订阅房间中的音视频流。
该方法也可用于更新已经订阅的流的属性、媒体类型等配置。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | NSString* | 指定订阅的远端发布音视频流的用户 ID。 |
| streamType | ByteRTCStreamIndex | 流属性,用于指定订阅主流/屏幕流,参看 ByteRTCStreamIndex。 |
| mediaType | ByteRTCSubscribeMediaType | 媒体类型,用于指定订阅音/视频,参看 ByteRTCSubscribeMediaType。 |
| videoConfig | ByteRTCSubscribeVideoConfig* | 视频订阅配置,参看 ByteRTCSubscribeVideoConfig。 |
注意
- (int)setAudioPlaybackDevice:(ByteRTCAudioPlaybackDevice)audioPlaybackDevice;
设置音频播放设备为扬声器或者听筒,默认使用扬声器。
音频播放设备发生变化时,会收到 rtcEngine:onAudioPlaybackDeviceChanged: 回调。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioPlaybackDevice | ByteRTCAudioPlaybackDevice | 音频播放设备(扬声器或者听筒),详见 ByteRTCAudioPlaybackDevice。 |
返回值 方法调用结果
注意
- (int)startLiveTranscoding:(ByteRTCLiveTranscoding *_Nullable)transcoding observer:(id<LiveTranscodingDelegate> _Nullable)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;
停止云端渲染。
返回值 方法调用结果。
- (BOOL)pushExternalVideoFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts;
推送外部视频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | CVPixelBufferRef | 该视频帧包含待 SDK 编码的视频数据 |
| pts | CMTime | CMTime |
返回值
注意 推送外部视频帧前,必须调用 setVideoSourceType:WithStreamIndex: 开启外部视频源采集。
- (BOOL)pushExternalVideoFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts rotation:(ByteRTCVideoRotation)rotation;
推送外部视频帧。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | CVPixelBufferRef | 该视频帧包含待 SDK 编码的视频数据 |
| pts | CMTime | CMTime |
| rotation | ByteRTCVideoRotation | 当前视频角度 |
返回值
注意 推送外部视频帧前,必须调用 setVideoSourceType:WithStreamIndex: 开启外部视频源采集。
- (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* | 附加信息,比如人脸位置等等 |
返回值
注意 推送外部视频帧前,必须调用 setVideoSourceType:WithStreamIndex: 开启外部视频源采集。
- (BOOL)pushExternalByteVideoFrame:(ByteRTCVideoFrame * _Nonnull)frame;
推送外部视频帧,使用 ByteRTCVideoFrame 进行封装。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | ByteRTCVideoFrame* | 该视频帧包含待 SDK 编码的视频数据,参考 ByteRTCVideoFrame |
返回值
注意 推送外部视频帧前,必须调用 setVideoSourceType:WithStreamIndex: 开启外部视频源采集。
- (void)enableExternalAudioDevice:(ByteRTCAudioFormat * _Nonnull) recordingFormat playbackFormat:(ByteRTCAudioFormat * _Nonnull) playbackFormat;
启用自定义音频采集渲染
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| recordingFormat | ByteRTCAudioFormat* | 自定义音频数据采集格式,详见 ByteRTCAudioFormat |
| playbackFormat | ByteRTCAudioFormat* | 自定义音频数据渲染格式,详见 ByteRTCAudioFormat |
注意
- (void)disableExternalAudioDevice;
禁用已开启的自定义音频采集渲染,将音频采集渲染由自定义模块切换至内部模块。
注意
- (BOOL)setRecordingAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;
设置本地麦克风录制的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| samplesPerSec | NSInteger | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | NSInteger | 音频通道数,支持单声道(1)和双声道(2) |
返回值 方法调用结果
注意 使用本方法设置参数,并使用 setAudioFrameObserver: 注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onRecordAudioFrame:收到数据
- (BOOL)setPlaybackAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;
设置远端所有用户音频数据混音后的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| samplesPerSec | NSInteger | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | NSInteger | 音频通道数,支持单声道(1)和双声道(2) |
返回值 方法调用结果
注意 使用本方法设置参数,并使用 setAudioFrameObserver: 注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onPlaybackAudioFrame:收到数据
- (BOOL)setMixedAudioFrameParameters:(NSInteger)samplesPerSec channels:(NSInteger)channels;
设置本地麦克风录制音频数据和远端所有用户音频数据混音后的音频数据回调参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| samplesPerSec | NSInteger | 音频采样率(单位HZ),可以设置的值有 8000,16000,32000,44100,48000 |
| channels | NSInteger | 音频通道数,支持单声道(1)和双声道(2) |
返回值 方法调用结果
注意 使用本方法设置参数,并使用 setAudioFrameObserver: 注册数据观察者,之后可以在 ByteRTCAudioFrameObserver的 onMixedAudioFrame:收到数据
- (BOOL)setAudioFrameObserver:(_Nullable id<ByteRTCAudioFrameObserver>) audioFrameObserver;
设置音频数据回调观察者
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrameObserver | id |
音频数据回调的观察者对象,详见: ByteRTCAudioFrameObserver |
返回值 方法调用结果
注意 本方法需要与下面3个方法配合使用:setRecordingAudioFrameParameters:channels:、 setPlaybackAudioFrameParameters:channels:、 setMixedAudioFrameParameters:channels:
- (BOOL)registerLocalAudioProcessor:(_Nullable id<ByteRTCAudioProcessor>) audioProcessor format:(ByteRTCAudioFormat* _Nullable)format;
设置自定义音频处理器。
使用该处理器,你可以调用 processAudioFrame: 对 RTC SDK 采集得到的音频帧进行自定义处理,并将处理后的音频帧用于 RTC 音视频通信。
SDK 只持有 processor 的弱引用,你应保证其生命周期。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioProcessor | id |
自定义音频处理器,参看 ByteRTCAudioProcessor 。如果传入null,则不对 RTC SDK 采集得到的音频帧进行自定义处理。 |
| format | ByteRTCAudioFormat* | 自定义音频参数格式,参看 ByteRTCAudioFormat,SDK 将按指定设置给出音频帧。 |
返回值 方法调用结果
注意 重复调用此接口时,仅最后一次调用生效。效果不会叠加。
- (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)message;
给房间内的所有其他用户发送文本消息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| message | NSString* | 发送的文本消息内容 消息不超过 62KB。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
- (int)sendRoomBinaryMessage:(NSData * _Nonnull)message;
给房间内的所有其他用户发送二进制消息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| message | NSData* | 用户发送的二进制广播消息 消息不超过 46KB。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
- (int)setBusinessId:(NSString* _Nullable)businessId;
设置业务标识参数。
可通过 businessId 区分不同的业务场景(角色/策略等)。businessId 由客户自定义,相当于一个“标签”,可以分担和细化现在 AppId 的逻辑划分的功能。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| businessId | NSString* | 用户设置的自己的 businessId 值。businessId 相当于一个 sub AppId,可以分担和细化现在 AppId 的逻辑划分的功能,但不需要鉴权。 businessId 只是一个标签,颗粒度需要用户自定义。 |
返回值
注意
- (int)feedbackTypes:(NSArray* _Nullable)types desc:(NSString* _Nullable)desc;
通话结束,将用户反馈的问题上报到 RTC
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| types | NSArray* | 预设问题列表,参看 ByteRTCProblemFeedbackOption |
| desc | NSString* | 预设问题以外的其他问题的具体描述 |
返回值
注意 如果用户上报时在房间内,那么问题会定位到用户当前所在的一个或多个房间;如果用户上报时不在房间内,那么问题会定位到引擎此前退出的房间。
- (int64_t)sendUserMessage:(NSString * _Nonnull)uid message:(NSString * _Nonnull)message;
给房间内指定的用户发送文本消息(P2P)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 消息接收用户的 ID |
| message | NSString* | 发送的文本消息内容。 消息不超过 62KB。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
- (int64_t)sendUserBinaryMessage:(NSString * _Nonnull)uid message:(NSData * _Nonnull)message;
给房间内指定的用户发送二进制消息(P2P)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 消息接收用户的 ID |
| message | NSData* | 发送的二进制消息内容 消息不超过 46KB。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
- (void)setRemoteAudioPlaybackVolume:(NSString* _Nonnull)uid volume:(int)volume;
调节来自指定远端用户的音频播放音量,默认为 100。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 音频来源的远端用户 ID |
| volume | int | 播放音量,调节范围:[0,400] • 0: 静音 • 100: 原始音量 • 400: 最大可为原始音量的 4 倍(自带溢出保护) |
- (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:userInfo:rtcRoomConfig: 之前调用,可重复调用,以最后调用的参数作为生效参数
无论加密或者解密,其对原始数据的长度修改,需要控制在90%-120%之间,即如果输入数据为100字节,则处理完成后的数据必须在 90至120字节之间,如果加密或解密结果超出该长度限制,则该音视频桢会被丢弃
数据加密/解密为串行执行,因而视实现方式不同,可能会影响到最终渲染效率,是否使用该方法,需要由使用方谨慎评估
- (ByteRTCRoom * _Nullable)createRtcRoom:(NSString * _Nonnull)roomId;
创建并获取一个 ByteRTCRoom 对象
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| roomId | NSString* | 标识通话房间的房间 ID,最大长度为 128 字节的非空字符串。支持的字符集范围为: • 26 个大写字母 A ~ Z • 26 个小写字母 a ~ z • 10 个数字 0 ~ 9 • 下划线 "_", at 符 "@", 减号 "-" 多房间模式下,调用创建房间接口后,请勿调用同样的 roomID 创建房间,否则会导致创建房间失败。 |
注意
- (void)publishScreen;
发布本地屏幕共享流。
注意
- (void)unpublishScreen;
取消发布屏幕流
注意
- (void)pushScreenCaptureFrame:(CVPixelBufferRef _Nonnull )frame time:(CMTime)pts rotation:(int)rotation;
推送外部屏幕采集帧
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| frame | CVPixelBufferRef | 该视频帧包含待 SDK 编码的视频数据 |
| pts | CMTime | 每一帧的时间戳,单位 ms |
| rotation | int | 帧的旋转角度包含: 0, 90, 180, 270 |
注意 屏幕采集分为内部采集和外部采集,本方法属于外部采集。
- (int)startScreenSharingWithPreferredExtension:(NSString *_Nullable)extension groupId:(NSString *_Nonnull)groupId API_AVAILABLE(ios(12));
开始内部屏幕采集
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| 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));
停止内部屏幕采集
注意 屏幕采集分为内部采集和外部采集,本方法属于内部采集。
- (void)startASR:(ByteRTCASRConfig *_Nonnull)asrConfig handler:(id<ByteRTCASREngineEventHandler> _Nonnull)handler ;
开启自动语音识别服务。该方法将识别后的用户语音转化成文字,并通过 onMessage: 事件回调给用户。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handler | id |
语音识别服务使用状态回调,参看 ByteRTCASREngineEventHandler |
| asrConfig | ByteRTCASRConfig* | 校验信息,参看 ByteRTCASRConfig |
- (void)stopASR;
关闭语音识别服务
- (int)startFileRecording:(ByteRTCStreamIndex)streamIndex withRecordingConfig:(ByteRTCRecordingConfig* _Nonnull)recordingConfig;
该方法将通话过程中的音视频数据录制到本地的文件中。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamIndex | ByteRTCStreamIndex | 流属性,指定录制主流还是屏幕流,参看 ByteRTCStreamIndex |
| recordingConfig | ByteRTCRecordingConfig* | 本地录制参数配置,参看 ByteRTCRecordingConfig |
返回值
注意
- (void)stopFileRecording:(ByteRTCStreamIndex)streamIndex;
停止本地录制
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamIndex | ByteRTCStreamIndex | 流属性,指定停止主流或者屏幕流录制,参看 ByteRTCStreamIndex |
注意
- (ByteRTCAudioMixingManager *_Nullable)getAudioMixingManager;
混音管理接口创建
返回值 混音管理实例,详见ByteRTCAudioMixingManager
- (ByteRTCPositionAudioRender *_Nullable)getPositionAudioRender;
获取位置音频接口实例,包括范围语音、空间语音等和位置相关的音频接口。
返回值 位置音频管理接口实例。如果返回 NULL,则表示不支持空间音频,详见 ByteRTCPositionAudioRender 。
注意
- (void)login:(NSString * _Nonnull)token uid:(NSString * _Nonnull)uid;
必须先登录注册一个 uid,才能发送房间外消息和向业务服务器发送消息
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | NSString* | 动态密钥 用户登录必须携带的 Token,用于鉴权验证。 本 Token 与加入房间时必须携带的 Token 不同。测试时可使用控制台生成临时 Token,正式上线需要使用密钥 SDK 在你的服务端生成并下发 Token。 |
| uid | NSString* | 用户 ID 用户 ID 在 appid的维度下是唯一的。 |
注意
- (void)logout;
调用本接口登出后,无法调用房间外消息以及端到服务器消息相关的方法或收到相关回调。
注意
- (void)updateLoginToken:(NSString * _Nonnull)token;
更新用户用于登录的 Token
Token 有一定的有效期,当 Token 过期时,需调用此方法更新登录的 Token 信息。
调用 login:uid: 方法登录时,如果使用了过期的 Token 将导致登录失败,并会收到 rtcEngine:onLoginResult:errorCode:elapsed: 回调通知,错误码为 ByteRTCLoginErrorCodeInvalidToken。此时需要重新获取 Token,并调用此方法更新 Token。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | NSString* | 更新的动态密钥 |
注意
- (void)setServerParams:(NSString * _Nonnull)signature url:(NSString * _Nonnull)url;
设置业务服务器参数
客户端调用 sendServerMessage: 或 sendServerBinaryMessage: 发送消息给业务服务器之前,必须需要设置有效签名和业务服务器地址。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| signature | NSString* | 动态签名 业务服务器会使用该签名对请求进行鉴权验证。 |
| url | NSString* | 业务服务器的地址 |
注意
- (void)getPeerOnlineStatus:(NSString * _Nonnull)peerUserId;
查询对端用户或本端用户的登录状态
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| peerUserId | NSString* | 需要查询的用户 ID |
注意
- (int64_t)sendUserMessageOutsideRoom:(NSString * _Nonnull)userId message:(NSString * _Nonnull)messageStr;
给房间外指定的用户发送文本消息(P2P)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | NSString* | 消息接收用户的 ID |
| messageStr | NSString* | 发送的文本消息内容 消息不超过 62KB。 |
返回值
注意
- (int64_t)sendUserBinaryMessageOutsideRoom:(NSString * _Nonnull)userId message:(NSData * _Nonnull)messageStr;
给房间外指定的用户发送二进制消息(P2P)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | NSString* | 消息接收用户的 ID |
| messageStr | NSData* | 发送的二进制消息内容 消息不超过 46KB。 |
返回值
注意
- (int64_t)sendServerMessage:(NSString * _Nonnull)messageStr;
客户端给业务服务器发送文本消息(P2Server)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| messageStr | NSString* | 发送的文本消息内容 消息不超过 62KB。 |
返回值
注意
- (int64_t)sendServerBinaryMessage:(NSData * _Nonnull)messageStr;
客户端给业务服务器发送二进制消息(P2Server)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| messageStr | NSData* | 发送的二进制消息内容 消息不超过 46KB。 |
返回值
注意
- (void) setScreenAudioSourceType:(ByteRTCAudioSourceType)sourceType;
在屏幕共享时,设置屏幕音频的采集方式(内部采集/自定义采集)
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| sourceType | ByteRTCAudioSourceType | 屏幕音频输入源类型, 参看 ByteRTCAudioSourceType |
注意
ByteRTCWarningSetScreenAudioSourceTypeFailed - (void) setScreenAudioStreamIndex:(ByteRTCStreamIndex) index;
在屏幕共享时,设置屏幕音频流和麦克风采集到的音频流的混流方式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| index | ByteRTCStreamIndex | 混流方式,参看 ByteRTCStreamIndex • ByteRTCStreamIndexMain: 将屏幕音频流和麦克风采集到的音频流混流 • ByteRTCStreamIndexScreen: 将屏幕音频流和麦克风采集到的音频流分为两路音频流 |
注意
你应该在 publishScreen 之前,调用此方法。否则,你将收到 rtcEngine:onWarning: 的报错:ByteRTCWarningSetScreenAudioStreamIndexFailed
- (int) pushScreenAudioFrame:(ByteRTCAudioFrame* _Nonnull)audioFrame;
使用自定义采集方式,采集屏幕共享时的屏幕音频时,将音频帧推送至 RTC SDK 处进行编码等处理。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| audioFrame | ByteRTCAudioFrame* | 音频数据帧,参见 ByteRTCAudioFrame |
返回值 方法调用结果
注意
- (void)setVideoSourceType:(ByteRTCVideoSourceType)type WithStreamIndex:(ByteRTCStreamIndex)streamIndex;
设置向 SDK 输入的视频源
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| type | ByteRTCVideoSourceType | 视频输入源类型,参看 ByteRTCVideoSourceType |
| streamIndex | ByteRTCStreamIndex | 视频流的属性,参看 ByteRTCStreamIndex |
注意
- (void)setExternalVideoEncoderEventHandler:(id<ByteRTCExternalVideoEncoderEventHandler> _Nullable)handler;
注册自定义编码帧推送事件回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| handler | id |
自定义编码帧回调类,参看 ByteRTCExternalVideoEncoderEventHandler |
注意
- (BOOL)pushExternalEncodedVideoFrame:(ByteRTCStreamIndex)streamIndex withVideoIndex:(NSInteger)videoIndex withEncodedVideoFrame:(ByteRTCEncodedVideoFrame* _Nonnull)videoFrame;
推送自定义编码后的视频流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| streamIndex | ByteRTCStreamIndex | 需要推送的编码流的属性,参看 ByteRTCStreamIndex |
| videoIndex | NSInteger | 对应的编码流下标,从 0 开始,如果调用 setVideoEncoderConfig:config: 设置了多路流,此处数量须与之保持一致 |
| videoFrame | ByteRTCEncodedVideoFrame* | 编码流视频帧信息,参看 ByteRTCEncodedVideoFrame。 |
注意
- (void)setVideoDecoderConfig:(ByteRTCRemoteStreamKey * _Nonnull)key withVideoDecoderConfig:(ByteRTCVideoDecoderConfig)config;
在订阅远端视频流之前,设置远端视频数据解码方式
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| key | ByteRTCRemoteStreamKey* | 远端流信息,指定对哪一路视频流进行解码方式设置,参看 ByteRTCRemoteStreamKey。 |
| config | ByteRTCVideoDecoderConfig | 视频解码方式,参看 ByteRTCVideoDecoderConfig。 |
注意
- (void)requestRemoteVideoKeyFrame:(ByteRTCRemoteStreamKey * _Nonnull)key;
在订阅远端视频流之后,向远端请求关键帧
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| key | ByteRTCRemoteStreamKey* | 远端流信息,参看 ByteRTCRemoteStreamKey。 |
注意
- (void)registerRemoteEncodedVideoFrameObserver:(id<ByteRTCRemoteEncodedVideoFrameObserver> _Nullable)observer;
注册远端编码后视频数据回調。
完成注册后,当 SDK 监测到远端编码后视频帧时,会触发 onRemoteEncodedVideoFrame:withEncodedVideoFrame: 回调
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| observer | id |
远端编码后视频数据监测器,参看 ByteRTCRemoteEncodedVideoFrameObserver |
注意
- (int)sendStreamSyncInfo:(NSData* _Nonnull)data config:(ByteRTCStreamSycnInfoConfig * _Nonnull)config;
@interface ByteRTCPositionAudioRender :NSObject
空间音频接口。
| 返回 | 名称 |
|---|---|
| void | enableAudioSpatialRender: |
| int | updatePosition: |
| int | updateSelfOrientation: |
-(void)enableAudioSpatialRender:(BOOL) enable;
开启或关闭空间音频效果。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | BOOL | 空间音频效果开关,默认关闭。 • true: 开启空间音频效果; • false: 关闭空间音频效果。 |
-(int)updatePosition:(Position* _Nonnull) pos;
更新自己的位置坐标。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| pos | Position* | 三维坐标的值,默认为 [0, 0, 0]。根据需要,自行建立空间直角坐标系,并将需要使用空间音频功能的用户,都置于同一坐标系下。 |
返回值
-(int)updateSelfOrientation:(HumanOrientation* _Nonnull) orientation;
更新自己的朝向。本地朝向的设置只影响本地听到的音频效果,不影响本地发出的音频效果。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| orientation | HumanOrientation* | 朝向信息,必须是单位向量。参看 HumanOrientation。当朝向的正方向使用默认值时,朝向的坐标系和位置信息使用的坐标系一致。此时,正前方朝向是:[1, 0, 0],正右方朝向是:[0, 1, 0],正上方朝向是:[0, 0, 1]。 |
返回值 0: 代表更新成功
注意 本地用户调用 enableAudioSpatialRender: 使用空间音频功能时,需要调用 updatePosition: 接口更新位置坐标后,才能调用此接口。
@interface ByteRTCRoom : NSObject
| 类型 | 名称 |
|---|---|
| id |
delegate |
| 返回 | 名称 |
|---|---|
| void | destroy |
| NSString* | getRoomId |
| void | setRtcRoomDelegate: |
| int | joinRoomByToken:userInfo:roomConfig: |
| BOOL | setUserVisibility: |
| ByteRTCUserRoleType | clientRole |
| int | leaveRoom |
| int | renewToken: |
| int | publish |
| int | unpublish |
| int | publishScreen: |
| int | unpublishScreen |
| void | subscribeUserStream:streamType:mediaType:videoConfig: |
| void | setAudioVolumeIndicationInterval: |
| void | pauseAllSubscribedStream: |
| void | resumeAllSubscribedStream: |
| int | startLiveTranscoding:observer: |
| int | stopLiveTranscoding |
| int | updateLiveTranscoding: |
| int | setRemoteVideoCanvas:withIndex:withCanvas: |
| int64_t | sendUserMessage:message: |
| int64_t | sendUserBinaryMessage:message: |
| int64_t | sendRoomMessage: |
| int64_t | sendRoomBinaryMessage: |
@property(nonatomic, weak) id<ByteRTCRoomDelegate> _Nullable delegate;
- (void)destroy;
销毁房间
注意 调用该接口后,SDK 会先执行退房操作,然后释放房间处理回调指针
- (NSString *_Nullable)getRoomId;
获取房间 ID
- (void)setRtcRoomDelegate:(id<ByteRTCRoomDelegate> _Nullable)roomDelegate;
设置 ByteRTCRoomDelegate 代理。
通过设置事件句柄,可以监听此 ByteRTCRoom 对象对应的回调事件。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| roomDelegate | id |
参见 ByteRTCRoomDelegate |
- (int)joinRoomByToken:(NSString *_Nullable)token userInfo:(ByteRTCUserInfo *_Nonnull)userInfo roomConfig:(ByteRTCMultiRoomConfig *_Nonnull)roomConfig;
加入房间。
调用 createRtcRoom: 创建房间后,调用此方法加入房间,同房间内其他用户进行音视频通话。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | NSString* | 动态密钥,用于对进房用户进行鉴权验证。 进入房间需要携带 Token。测试时可使用控制台生成临时 Token,正式上线需要使用密钥 SDK 在你的服务端生成并下发 Token。 使用不同 AppID 的 App 是不能互通的。 请务必保证生成 Token 使用的 AppID 和创建引擎时使用的 AppID 相同,否则会导致加入房间失败。 |
| userInfo | ByteRTCUserInfo* | 用户 ID。参看 ByteRTCUserInfo。 |
| roomConfig | ByteRTCMultiRoomConfig* | 房间参数配置,设置房间模式以及是否自动发布或订阅流。具体配置模式参看 ByteRTCMultiRoomConfig。 |
返回值 方法调用结果。
注意
- (BOOL)setUserVisibility:(BOOL)enable;
设置用户可见性。默认为可见。
通过对用户可见性进行设置,可以控制用户在房间内的行为:
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| enable | BOOL | 设置用户是否对房间内其他用户可见: • true: 可以被房间中的其他用户感知,且可以在房间内发布和订阅音视频流; • false: 无法被房间中的其他用户感知,且只能在房间内订阅音视频流。 |
返回值 方法调用结果:
注意
- (ByteRTCUserRoleType)clientRole;
获取当前用户角色。
返回值 当前用户角色,详见 ByteRTCUserRoleType 枚举类型。
- (int)leaveRoom;
离开房间。
用户调用此方法离开房间,结束通话过程,释放所有通话相关的资源。
返回值 方法调用结果。
注意
- (int)renewToken:(NSString *_Nullable)token;
更新 Token。
用户调用 joinRoomByToken:userInfo:roomConfig: 方法加入房间时,
如果使用了过期的 Token 将导致加入房间失败,并会收到 rtcEngine:onJoinRoomResult:withUid:errorCode:joinType:elapsed: 回调,
回调错误码为 ByteRTCErrorCode 中的 ByteRTCErrorCodeInvalidToken。
此时需要重新获取 Token,并调用此方法更新 Token。更新 Token 后,SDK 会自动加入房间。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| token | NSString* | 更新的动态密钥。 |
返回值 方法调用结果。
注意 Token 过期时,如果已经加入房间成功,则不会受到影响。Token 过期的错误会在下一次使用过期的 Token 加入房间时,或因本地网络状况不佳导致断网重新连入房间时通知用户。
- (int)publish;
将本端音视频流发布到此房间。
注意
- (int)unpublish;
停止将本端音视频流发布到此房间。
注意
- (int)publishScreen:(ByteRTCScreenParam * _Nonnull)param;
发布本地屏幕视频流到此房间。(外部采集)
调用此方法后,你还需要周期性调用 pushScreenCaptureFrame:time:rotation: 方法,
将需要发送的屏幕数据推送给 SDK。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| param | ByteRTCScreenParam* | 屏幕视频流编码参数,详见 ByteRTCScreenParam |
注意
如果你需要由外部屏幕采集切换为内部采集,你必须调用 unpublishScreen 关闭外部采集后, 通过调用 startScreenSharingWithPreferredExtension:groupId: 开启内部采集。
本地可调用 setLocalVideoRenderer:forUserId: 函数设置本地屏幕共享视图。 onLocalScreenFrame:本地屏幕视频回调事件和 onRemoteScreenFrame:user:room: 远端屏幕共享视频回调事件来获取原始数据。
- (int)unpublishScreen;
停止发布本地屏幕共享流到房间。
注意
- (void)subscribeUserStream:(NSString *_Nonnull)userId streamType:(ByteRTCStreamIndex)streamType mediaType:(ByteRTCSubscribeMediaType)mediaType videoConfig:(ByteRTCSubscribeVideoConfig *_Nonnull)videoConfig;
订阅房间内指定的远端音视频流。
无论是自动订阅还是手动订阅模式,你都可以调用此方法按需订阅房间中的音视频流。
该方法也可用于更新已经订阅的流的属性、媒体类型等配置。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | NSString* | 指定订阅的远端发布音视频流的用户 ID 。 |
| streamType | ByteRTCStreamIndex | 流属性,用于指定订阅主流/屏幕流,参看 ByteRTCStreamIndex 。 |
| mediaType | ByteRTCSubscribeMediaType | 媒体类型,用于指定订阅音/视频,参看 ByteRTCSubscribeMediaType。 |
| videoConfig | ByteRTCSubscribeVideoConfig* | 视频订阅配置,参看 ByteRTCSubscribeVideoConfig。 |
注意
- (void)setAudioVolumeIndicationInterval:(NSInteger)interval;
开启/关闭房间内音量提示。默认关闭。
开启音量提示后,将按设置的时间间隔收到本地采集音量或订阅的远端用户的音量信息回调。
关于回调的具体信息,参看 rtcEngine:onAudioVolumeIndication:totalRemoteVolume:。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| interval | NSInteger | 收到音量提示回调的时间间隔 • ≤ 0:禁用音量提示功能。 • > 0:启用音量提示功能,并设置收到音量提示回调的时间间隔。单位为毫秒。 建议设置为大于等于 200 毫秒;小于 10 毫秒时,行为未定义。 |
- (void)pauseAllSubscribedStream:(ByteRTCPauseResumControlMediaType) mediaType;
暂停接收来自远端的媒体流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mediaType | ByteRTCPauseResumControlMediaType | 媒体流类型,指定需要暂停接收音频还是视频流,参看 ByteRTCPauseResumControlMediaType |
注意
- (void)resumeAllSubscribedStream:(ByteRTCPauseResumControlMediaType) mediaType;
恢复接收来自远端的媒体流
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| mediaType | ByteRTCPauseResumControlMediaType | 媒体流类型,指定需要暂停接收音频还是视频流,参看 ByteRTCPauseResumControlMediaType |
注意
- (int)startLiveTranscoding:(ByteRTCLiveTranscoding *_Nullable)transcoding observer:(id<LiveTranscodingDelegate> _Nullable)observer;
开启转推直播,并设置视频视图布局、音频属性等参数
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| transcoding | ByteRTCLiveTranscoding* | 客户端转推参数,详见 ByteRTCLiveTranscoding |
| observer | id |
端云一体合流转推观察者。 • 合流转推的状态和方式会通过回调上报 RTC Engine。 • 只有房间模式为直播模式,且用户角色为主播的用户才能调用此方法。 • 启用端云一体合流转推时,回调合流完成的音视频流和 SEI 信息给 App。详见 LiveTranscodingDelegate 数据类型。 |
注意
- (int)stopLiveTranscoding;
停止转推直播。
- (int)updateLiveTranscoding:(ByteRTCLiveTranscoding *_Nonnull)transcoding;
更新转推直播参数。
启用转推直播功能后,你可以使用此方法更新合流转推功能配置参数。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| transcoding | ByteRTCLiveTranscoding* | 服务端转推配置参数,详见 ByteRTCLiveTranscoding 。 |
返回值 方法调用结果。
- (int)setRemoteVideoCanvas:(NSString * _Nonnull)uid withIndex:(ByteRTCStreamIndex)streamIndex withCanvas:(ByteRTCVideoCanvas * _Nullable)canvas;
渲染来自指定远端用户 uid 的视频流时,设置使用的视图和渲染模式。
如果需要解除视频的绑定视图,把 canvas 设置为空。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 视频来源的远端用户 ID |
| streamIndex | ByteRTCStreamIndex | 视频流属性,参看 ByteRTCStreamIndex |
| canvas | ByteRTCVideoCanvas* | 视图信息和渲染模式,参看 ByteRTCVideoCanvas |
返回值
注意
实际使用时,你可以在收到回调 rtcRoom:onUserJoined:elapsed: 或 rtcRoom:onFirstRemoteVideoFrameRendered:withFrameInfo: 时获得远端用户 uid。 这两个回调的差别是:如果启用了视频录制功能,视频录制服务会作为一个哑客户端加入房间,因此其他客户端会收到对应的 rtcRoom:onUserJoined:elapsed: 回调; 而不会收到 rtcRoom:onFirstRemoteVideoFrameRendered:withFrameInfo: 回调。你不应给录制的哑客户端绑定视图(因为它不会发送视频流)。
你应在加入房间后,绑定视图。退出房间后,此设置失效。
- (int64_t)sendUserMessage:(NSString *_Nonnull)userId message:(NSString *_Nonnull)message;
给房间内指定的用户发送文本消息(P2P)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| userId | NSString* | 消息接收用户的 ID |
| message | NSString* | 发送的文本消息内容。 消息不超过 62KB。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
- (int64_t)sendUserBinaryMessage:(NSString * _Nonnull)uid message:(NSData * _Nonnull)message;
给房间内指定的用户发送二进制消息(P2P)。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| uid | NSString* | 消息接收用户的 ID |
| message | NSData* | 发送的二进制消息内容 消息不超过 46KB。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
- (int64_t)sendRoomMessage:(NSString *_Nonnull)message;
给房间内的所有其他用户发送文本消息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| message | NSString* | 发送的文本消息内容。 消息不超过 62KB。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意
- (int64_t)sendRoomBinaryMessage:(NSData * _Nonnull)message;
给房间内的所有其他用户发送二进制消息。
传入参数
| 参数名 | 类型 | 说明 |
|---|---|---|
| message | NSData* | 用户发送的二进制广播消息 消息不超过 46KB。 |
返回值 这次发送消息的编号,从 1 开始递增。
注意