BBASMRTCRoomAdapterProtocol.h
6.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
//
// BBASMRTCRoomAdapterProtocol.h
// BBAMNP
//
// Created by baidu on 2020/4/8.
// Copyright © 2020 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "BBASMRTCConvertModel.h"
#import "BBASMRTCRoomConfig.h"
#import <AVFoundation/AVFoundation.h>
NS_ASSUME_NONNULL_BEGIN
/// RTCRoom-实时音视频协议,宿主可以自行实现RTCRoom能力
@protocol BBASMRTCRoomAdapterProtocol <NSObject>
@optional
/// 初始化RTC实例
/// @param config 开发者设置的参数
- (instancetype)initWithConfig:(BBASMRTCRoomConfig *)config;
/// 创建房间
/// @param appId 由云平台提供,全局唯一,用于识别应用
/// @param tokenStr 云后台校验参数
/// @param delegate rtcRoom的代理,用于接收rtc的各种状态回调
- (void)creatRTCRoomWithAppID:(NSString *)appId
tokenStr:(NSString *)tokenStr
delegate:(id)delegate;
/// 设置参数
/// @param config 参数
- (void)setUpParams:(BBASMRTCRoomConfig *)config;
#pragma mark -- 登录/退出房间
/// 登录房间,登录房间成功,在同一个房间的人能进行相互音视频聊天,如果失败,会通过onErrorInfoUpdate call back 返回错误信息
/// @param roomName 房间名,长度不可超过 255 byte
/// @param userId 用户id,每个房间的用户ID必须唯一
/// @param displayName displayName 用户昵称
/// @return 是否登录成功,YES 成功,NO 失败
- (BOOL)enterRoomWithRoomName:(NSString *)roomName
userID:(NSInteger)userId
displayName:(NSString *)displayName;
/// 退出房间,退出后会停止音视频采集,断开与房间服务器的连接,取消音视频的传输,销毁音视频传输通道以及释放其他资源
/// @return 是否退登成功,YES 成功,NO 失败
- (BOOL)logoutRtcRoom;
#pragma mark -- 用户信息
/// 获取房间用户列表
/// @return 用户列表
- (NSArray *)getRemoteUserList;
/// 获取用户语音激励信息
/// @return 用户语音激励信息,包含用户音量大小
- (NSDictionary*)getRemoteAudioLevels;
#pragma mark -- 发布/订阅流
/// 发布本地音视频流, 流发布在roomId指定的房间,同一房间内的用户可以相互订阅流,默认在发布流的同时,订阅该房间其他用户的流;
- (void)publishLocalStream;
/// 取消发布本地音视频流
- (void)unpublishLocalStream;
/// 订阅远端音视频流,用于订阅同一房间的其他用户的流
/// @param streamingIds 要订阅的其他用户的流id列表(即其他用户id列表)
- (void)subscribeRemoteStream:(NSArray<NSNumber *> *)streamingIds;
/// 取消订阅远端音视频流,停止已经订阅的流
/// @param streamingIds 要停止订阅的流id列表(即其他用户id列表)
- (void)unsubscribeRemoteStream:(NSArray<NSNumber *> *)streamingIds;
#pragma mark -- 视图控制
/// 设置指定远端画面暂停/恢复播放,暂停时画面停留在最后一帧
/// @param state YES:播放,NO:暂停
/// @param userId 远端用户id
- (void)setRemoteVideoPlayState:(BOOL)state userId:(NSInteger)userId;
/// 设置指定远端画面静音/恢复播放
/// @param state YES:播放,NO:暂停
/// @param userId 远端用户id
- (void)setRemoteAudioPlayState:(BOOL)state userId:(NSInteger)userId;
#pragma mark -- 画面
/// 开启/关闭摄像头,在关闭摄像头后,本地无法预览,且不传输本地视频数据给对方
/// @param mute YES:关闭摄像头,NO:打开摄像头
- (void)cameraMute:(BOOL)mute;
/// 开启/关闭摄像头自动对焦
/// @param focus YES:开启,NO:关闭
- (void)cameraFocus:(BOOL)focus;
/// 开启/禁用双手滑动调整摄像头聚焦
/// @param zoom YES:开启,NO:关闭
- (void)cameraZoom:(BOOL)zoom;
/// 切换摄像头
/// @param oriention 摄像头方向,可选值:front 、back
/// @param callback 异步返回切换完成之后的方向
- (void)switchCamera:(AVCaptureDevicePosition)oriention callback:(void (^)(AVCaptureDevicePosition position))callback;
/// 切换摄像头
/// @param callback 异步返回切换完成之后的方向
- (void)switchCameraWithCallback:(void (^)(AVCaptureDevicePosition position))callback;
/// 暂停相机预览,画面停在最后一帧
- (void)pauseCamera;
/// 恢复相机预览
- (void)resumeCamera;
/// 设置远端看到的画面的镜像效果,该属性的变化不会影响到本地画面,仅影响远端看到的画面效果
/// @param isMirror YES:镜像,NO:不镜像
-(void)enableRemoteMirror:(BOOL)isMirror;
/// 设置本地摄像头预览画面的镜像效果
/// @param isMirror YES:镜像,NO:不镜像
-(void)enableLocalMirror:(BOOL)isMirror;
/// 获取摄像头的状态
/// @return YES:前置摄像头 NO:不是前置摄像头
- (BOOL)isFrontCamera;
/// 调整基础美颜磨皮效果
/// @param level 数值
- (void)adjustBeautyBlurLevel:(CGFloat)level;
/// 调整基础美颜美白效果
/// @param level 数值
- (void)adjustBeautyWhiteLevel:(CGFloat)level;
/// 调整高级美颜大眼效果
/// @param level 数值
- (void)adjustBeautyEnlargingLevel:(CGFloat)level;
/// 调整高级美颜瘦脸效果
/// @param level 数值
- (void)adjustBeautyThinningLevel:(CGFloat)level;
/// 设置声音输出方式
/// @param mode 可选值:speaker(扬声器)或 ear(听筒)
- (void)setSoundMode:(BBASMRtcSoundMode)mode;
#pragma mark -- 声音
/// 打开/关闭麦克风,关闭麦克风,停止音频的采集
/// @param isMute YES:关闭 NO:开启 默认开启
-(void)muteMicphone:(BOOL)isMute;
/// 打开/关闭音频自动增益
/// @param enable true:开启 false:关闭 默认关闭
- (void)enableAgc:(BOOL)enable;
/// 打开/关闭音频噪声抑制
/// @param enable true:开启 false:关闭 默认false
- (void)enableAns:(BOOL)enable;
#pragma mark -- 视图管理,添加/删除
/// 添加视图
/// @param superView 视图的父view
/// @param type 视图类型,类型为local和remote
/// @param userId 用户id
- (void)addViewToSuperView:(UIView *)superView type:(BBASMRtcViewType)type userId:(NSInteger)userId;
/// 更新view和userId的绑定关系
/// @param view 视图的父view
/// @param userId 用户id
- (void)updateView:(UIView *)view userId:(NSInteger)userId;
/// 父view的大小发生了变化
/// @param superView 父view
- (void)superViewDidChange:(UIView *)superView;
/// 销毁房间
- (void)destroyRoom;
/// debug模式下打开/关闭RTC云SDK日志
- (void)rtcDebugLogEnable:(BOOL)enable;
#pragma mark -- custom commands
/**
* @brief 房管/主播/会议主持 把某人踢出聊天室
* @param userId 在房间中的用户的 用户ID
*/
- (void)kickOutUserWithId:(NSInteger)userId;
@end
NS_ASSUME_NONNULL_END