My Project
CCStreamerBasic.h
1 
12 #import <Foundation/Foundation.h>
13 #import <AVFoundation/AVFoundation.h>
14 #import <UIKit/UIKit.h>
15 #import "CCEncodeConfig.h"
16 #import "CCStream.h"
17 
18 #define PUBLISHTIMEOUT 40.0
19 //网络检测
20 typedef void(^CCNetDomainBlcok)(BOOL result,float time ,NSString *domain);
21 
25 typedef enum{
29  CCVideoChangeByInterface,
33  CCVideoPortrait,
37  CCVideoLandscape,
38 }CCVideoOriMode;
39 
40 //流状态
41 typedef NS_ENUM(NSInteger,CCBlaskStatus) {
42  CCBlaskStatus_Init = 1000, //初始状态
43  CCBlaskStatus_isOK, //流正常
44  CCBlaskStatus_isLoading, //正在加载流
45  CCBlaskStatus_isBlack //流异常(黑流)
46 };
47 
48 //直播录制状态
49 typedef NS_ENUM(NSInteger,CCRecordType) {
50  CCRecordType_Start, //正在录制
51  CCRecordType_Pause, //暂停录制
52  CCRecordType_Resume,//继续录制
53  CCRecordType_End //停止录制
54 };
55 
63 typedef void(^CCComletionBlock)(BOOL result, NSError *error, id info);
64 
65 @protocol CCStreamerBasicDelegate <NSObject>
66 @optional
70 - (void)onServerDisconnected;
75 - (void)onStreamAdded:(CCStream*)stream;
80 - (void)onStreamRemoved:(CCStream*)stream;
91 - (void)onStreamError:(NSError *)error forStream:(CCStream *)stream;
97 - (void)onMessageReceivedFrom:(NSString*)senderId message:(NSString*)message;
98 
102 - (void)onFailed;
103 
107 - (void)onSocketConnected:(NSString *)nsp;
108 
112 - (void)onsocketReconnectiong;
116 - (void)onconnectionClosed;
117 
124 - (void)onSocketReceive:(NSString *)event value:(id)object;
125 
129 - (void)onSocketReconnected:(NSString *)nsp;
130 @end
131 
132 
136 @protocol CCStreamerSocketMethod <NSObject>
137 
143 - (void)send:(NSString *)name;
144 
151 - (void)send:(NSString *)name str:(NSString *)str;
158 - (void)send:(NSString *)name par:(NSDictionary *)par;
159 
163 - (void)addObserver:(id<CCStreamerBasicDelegate>)observer;
164 
168 - (void)removeObserver:(id<CCStreamerBasicDelegate>)observer;
169 @end
170 
171 
175 @interface CCStreamerBasic : NSObject<CCStreamerSocketMethod>
176 
180 @property (strong, nonatomic, readonly) NSString *roomID;
181 
185 @property (strong, nonatomic, readonly) NSString *accountID;
186 
190 @property (strong, nonatomic, readonly) NSString *userID;
191 
195 @property (strong, nonatomic) NSString *localStreamID;//自己推流的流ID
199 @property (assign, nonatomic) CCVideoOriMode videoMode;
200 
201 @property (strong, nonatomic) NSString *userVersion;
202 #pragma mark - observer
203 
207 - (void)addObserver:(id<CCStreamerBasicDelegate>)observer;
208 
212 - (void)removeObserver:(id<CCStreamerBasicDelegate>)observer;
213 
217 + (instancetype)sharedStreamer;
218 
222 - (void)onStreamStatsListener:(CCComletionBlock)completion;
223 
224 #pragma mark - 配置socket重连参数
225 
234 - (BOOL)configReconnectionAttempts:(NSInteger)count reconnectionDelay:(float)delay reconnectionDelayMax:(float)delayMax;
235 #pragma mark - 切换相机
236 
243 - (BOOL)setCameraType:(AVCaptureDevicePosition)pos;
244 
253 - (BOOL)setServerDomain:(NSString *)domain area:(NSString *)area;
254 
260 - (NSString *)getServerDomain;
261 
262 #pragma mark - 开启预览
263 
269 - (void)startPreview:(CCComletionBlock)completion;
270 #pragma mark - 停止预览
271 
276 - (BOOL)stopPreview:(CCComletionBlock)completion;
277 #pragma mark - 登录
278 
287 - (BOOL)joinWithAccountID:(NSString *)accountID sessionID:(NSString *)sessionID config:(CCEncodeConfig *)config areaCode:(NSString *)areaCode events:(NSArray *)event completion:(CCComletionBlock)completion;
288 
298 - (BOOL)loginWithAccountID:(NSString *)accountID sessionID:(NSString *)sessionID areaCode:(NSString *)areaCode completion:(CCComletionBlock)completion;
299 
306 - (BOOL)joinWithConfig:(CCEncodeConfig *)config events:(NSArray *)event completion:(CCComletionBlock)completion;
307 #pragma mark - 推流
308 
314 - (BOOL)publish:(CCComletionBlock)completion;
315 #pragma mark - 停止推流
316 
322 - (BOOL)unPublish:(CCComletionBlock)completion;
323 #pragma mark - 订阅
324 
332 - (BOOL)subcribeWithStream:(CCStream *)stream qualityLevel:(int)level completion:(CCComletionBlock)completion;
333 #pragma mark - 取消订阅
334 
341 - (BOOL)unsubscribeWithStream:(CCStream *)stream completion:(CCComletionBlock)completion;
342 #pragma mark - 获取流状态
343 
350 - (BOOL)getConnectionStats:(CCStream *)stream completion:(CCComletionBlock)completion;
351 #pragma mark - 获取位置
352 
359 - (BOOL)getRegion:(CCStream *)stream mixedStream:(CCStream *)mixedSteam completion:(CCComletionBlock)completion;
360 #pragma mark - 设置位置
361 
369 - (BOOL)setRegion:(CCStream *)stream region:(NSString *)regionID mixedStream:(CCStream *)mixedSteam completion:(CCComletionBlock)completion;
370 #pragma mark - 退出
371 
377 - (BOOL)leave:(CCComletionBlock)completion;
378 #pragma mark - 合屏
379 
385 - (BOOL)mix:(CCComletionBlock)completion;
386 #pragma mark - 取消合屏
387 
393 - (BOOL)unmix:(CCComletionBlock)completion;
394 #pragma mark - 设置第三方推流地址
395 
402 - (BOOL)addExternalOutput:(NSString*)url completion:(CCComletionBlock)completion;
403 #pragma mark - 移除第三方推流地址
404 
411 - (BOOL)removeExternalOutput:(NSString *)url completion:(CCComletionBlock)completion;
412 #pragma mark - 变更第三方推流地址
413 
420 - (BOOL)updateExternalOutput:(NSString *)url completion:(CCComletionBlock)completion;
421 #pragma mark - 设置流视频的状态
422 
430 - (BOOL)stream:(CCStream *)stream videoState:(BOOL)video completion:(CCComletionBlock)completion;
431 #pragma mark - 设置流音频的状态
432 
440 - (BOOL)stream:(CCStream *)stream audioState:(BOOL)audio completion:(CCComletionBlock)completion;
441 #pragma mark - 停止直播
442 
448 - (BOOL)stopLive:(CCComletionBlock)completion;
449 #pragma mark - 开启直播
450 
456 - (BOOL)startLive:(CCComletionBlock)completion;
464 - (BOOL)startLiveWithRecord:(BOOL)record completion:(CCComletionBlock)completion;
465 #pragma mark - 查询直播间状态
466 
472 - (BOOL)getLiveStatus:(CCComletionBlock)completion;
473 #pragma mark - 设置日志是否开启(默认开启)
474 
479 + (void)setLogState:(BOOL)state;
480 #pragma mark - 获取相机对象
481 
486 - (AVCaptureSession *)getCaptureSession;
487 
488 #pragma mark - 房间配置获取及修改
489 
496 - (BOOL)getRoomDescWithRoonID:(NSString *)roomID completion:(CCComletionBlock)completion;
497 
498 #pragma mark - 节点列表
499 
506 - (BOOL)getRoomServerWithAccountID:(NSString *)accountId completion:(CCComletionBlock)completion;
507 
508 #pragma mark - 踢出房间
509 
516 - (BOOL)kickUserFromRoom:(NSString *)userID;
517 
523 - (void)reconnectAtlas:(CCComletionBlock)completion;
524 
529 - (void)sendAtlas:(NSString*)message completion:(CCComletionBlock)completion;
530 #pragma mark - 直播录制相关
531 
537 - (BOOL)recordTo:(CCRecordType)type completion:(CCComletionBlock)completion;
538 
539 @end
NSString * userID
用户ID
Definition: CCStreamerBasic.h:190
NSString * localStreamID
推流ID
Definition: CCStreamerBasic.h:195
视频配置信息
Definition: CCEncodeConfig.h:28
CCVideoOriMode videoMode
流方向
Definition: CCStreamerBasic.h:199
NSString * getServerDomain()
Definition: CCStream.h:42
业务逻辑基本类
Definition: CCStreamerBasic.h:175
instancetype sharedStreamer()
NSString * roomID
房间ID
Definition: CCStreamerBasic.h:180
AVCaptureSession * getCaptureSession()
NSString * accountID
账号ID
Definition: CCStreamerBasic.h:185