萤石云 iOSSDK,移植跨平台相关工程
Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h
@@ -7,112 +7,89 @@
//
#import <UIKit/UIKit.h>
#import "EZVideoTalkParam.h"
#import "EZBAVParam.h"
NS_ASSUME_NONNULL_BEGIN
typedef enum : NSUInteger {
    EZVideoTalkMessageUnkown,
    EZVideoTalkMessageRoomCreated,      //创建房间成功
    EZVideoTalkMessagePeerEnteredRoom,  //目前未使用,用于多方
    EZVideoTalkMessagePeerLeaveRoom,    //目前未使用,用于多方
    EZVideoTalkMessageStartInputData    //链接建立成功,开始推流
} EZVideoTalkMessageType;
typedef NS_OPTIONS(NSUInteger, EZVideoTalkCaptureType) {
    EZVideoTalkCaptureNone = 1 << 0,
    EZVideoTalkCaptureVideo = 1 << 1,
    EZVideoTalkCaptureAudio = 1 << 2,
};
@class EZVideoTalkSDK;
@class EZVideoTalkSDK, EZMediaSessionVideoParam, EZVideoTalkView, EZBAVParam, EZConferenceParam;
@protocol EZVideoTalkSDKDelegate<NSObject>
- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedError:(int32_t)errorCode;
- (void)videoTalk:(id)client didReceivedError:(int32_t)errorCode;
/**
 回调消息
 @param client client
 @param messageCode 消息码
 @param msg 透传消息
 @param messageCode 消息码 参见EZBAVMessage
 @param msg 透传消息,
    如果是EZVideoTalkMessagePeerEnteredRoom和EZVideoTalkMessagePeerLeaveRoom消息,msg是{@"clientID":@(9527),@"clientName":@"张三"}
        如果消息是 EZVideoTalkMessageTransferData msg是 msg是{@"content":@"实际的透传消息"}
 */
- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedMessage:(EZVideoTalkMessageType)messageType msg:(NSString*)msg;
/**
 回调消息 bavclient log回调
 @param client client
 @param msg 透传消息
 */
- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedBavClientLogMsg:(NSString*)msg;
/**
 显示回调,首次画面出来以及后续画面尺寸发生变化时回调
 @param client client
 @param width 画面宽度
 @param height 画面高度
 */
- (void)videoTalk:(EZVideoTalkSDK *)clientt didDisplayWidth:(int32_t)width height:(int32_t)height;
/**
 播放卡顿
 @param client client
 @param delayTime 卡顿时间
 */
- (void)videoTalk:(EZVideoTalkSDK *)client playDelayTime:(int32_t)delayTime;
/**
 播放卡顿统计
 @param client client
 @param delayTimeStat 卡顿时间
 */
- (void)videoTalk:(EZVideoTalkSDK *)client playDelayTimeStatistics:(double)delayTimeStat;
- (void)videoTalk:(id)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
@end
@interface EZVideoTalkSDK : NSObject
@property (nonatomic, assign, readonly) int32_t roomID;
@property (nonatomic, weak) id<EZVideoTalkSDKDelegate> delegate;
#pragma mark - SDK
/**
SDK初始化
 @param param 必填 配置参数
 @param localWin 本地窗口
 @param remoteWin 远端窗口
 @return 返回值
 */
- (instancetype)initWithParam:(EZVideoTalkParam *)param
                  localWindow:(UIView *)localWin
                 remoteWindow:(UIView *)remoteWin;
/// 加入的房间号
- (int32_t)roomID;
/**
 开始双向音视频对讲,耗时接口,默认 EZVideoTalkCaptureVideo | EZVideoTalkCaptureAudio 同时开启
 对讲时,强制采用扬声器播放声音,默认为YES
 */
- (void)start;
@property (nonatomic, assign) BOOL forceToSpeaker;
/**
 开始双向音视频对讲,耗时接口
 */
- (void)startWithType:(EZVideoTalkCaptureType)type;
/**
 停止双向音视频对讲
 */
- (void)stop;
/// 初始化视频通话SDK对象
/// @param videoParam 视频通话中视频的参数
- (instancetype)initWithVideoParam:(EZMediaSessionVideoParam *)videoParam;
/// 开启声音,接收到EZVideoTalkMessageStartInputData消息后调用
/// @param open 开关状态
- (int32_t) openSound:(BOOL)open;
/// 设置本地的预览窗口
/// @param localWin 窗口window
- (void)setLocalWindow:(EZVideoTalkView *)localWin;
/// 本地摄像头开启/关闭接口
/// @param enable 是否开启摄像头
- (NSInteger)enableVideoCapture:(BOOL)enable;
/// 本地麦克风开启/关闭接口
/// @param enable 是否开启麦克风
- (NSInteger)enableAudioCatpure:(BOOL)enable;
/// 是否开启屏幕共享
/// @param enable 是否开启
- (NSInteger)enableScreenShare:(BOOL)enable withName:(NSString *)name;
/// 发起双向音视频对讲,耗时接口,成功返回 noErr,失败返回错误码
/// @param param EZBAVParam
- (int32_t)startWithParam:(EZBAVParam *)param;
/// 设置远程窗口,.如果设置非空对象view,必须在主线程调用(如果是设置成nil,可以不在主线程调用)
/// @param window 播放窗口
- (int32_t)setRemoteWindow:(UIView *)window;
///  停止双向音视频对讲,成功返回 noErr,失败返回错误码
- (int32_t)stop;
/// 切换对讲时使用的摄像头,默认采用前置 同步接口
/// @param backCameraSelected YES:选择后置,NO:选择前置
- (int32_t)switchCamera:(BOOL)backCameraSelected;
/// 开关远程声音,默认开
/// @param open 开启
- (int32_t)enableRemoteSound:(BOOL)open;
#pragma mark - 日志调试
/**
@@ -139,4 +116,142 @@
@end
@interface EZConfOpenSDK : NSObject
@property (nonatomic, weak) id<EZVideoTalkSDKDelegate> delegate;
/// 加入的房间号
- (int32_t)roomID;
/// 自己的clientID
- (int32_t)clientID;
/**
 对讲时,强制采用扬声器播放声音,默认为YES
 */
@property (nonatomic, assign) BOOL forceToSpeaker;
/// 初始化视频通话SDK对象
/// @param videoParam 视频通话中视频的参数
- (instancetype)initWithVideoParam:(EZMediaSessionVideoParam *)videoParam;
/// 加入会议(新接口)
/// @param roomId 房间号
/// @param password 密码
/// @param customId 自定义的customid
- (void)enterRoom:(int32_t)roomId withPassword:(NSString *)password withCustomId:(NSString *)customId;
/// 退出会议
- (int32_t)leaveRoom;
/// 解散会议,解散后,其他与会者会收到会议被解散消息
- (void)dissolveRoom;
/// 本地摄像头开启/关闭接口.
/// @param enable 是否开启摄像头
- (NSInteger)enableVideoCapture:(BOOL)enable;
/// 本地麦克风开启/关闭接口
/// @param enable 是否开启麦克风
/// @param block 主线程回调结果
- (void)enableAudioCatpure:(BOOL)enable withResultBlock:(EZAudioOpenResultBlock)block;
/// 是否开启辅流,辅流分辨率更低、码率更小
/// @param enable 是否开启
- (NSInteger)enableThumbnailCatpure:(BOOL)enable;
/// 是否开启屏幕共享
/// @param enable 是否开启
/// @param name 可选的分享的名称
/// @param block 主线程回调结果
- (void)enableScreenShare:(BOOL)enable andName:(NSString *)name withResultBlock:(EZScreenShareResultBlock)block;
/// 设置本地的预览窗口
/// @param localWin 窗口window
- (void)setLocalWindow:(EZVideoTalkView *)localWin;
/// 设置远程窗口,1.必须在拿到远端客户端加入的消息后设置,2.如果设置非空对象view,必须在主线程调用
/// @param window 播放窗口
/// @param clientID 加入的客户端的ID
/// @param streamType 1视频 2音频 4小流
- (int32_t)setRemoteWindow:(UIView *)window ofClient:(int32_t)clientID withStream:(NSInteger)streamType;
/// 设置观看屏幕共享的窗口
/// @param window 窗口
- (int32_t)setWindowForScreenShare:(UIView *)window;
/// 切换对讲时使用的摄像头,默认采用前置 同步接口
/// @param backCameraSelected YES:选择后置,NO:选择前置
- (int32_t)switchCamera:(BOOL)backCameraSelected;
#pragma mark - 录制相关接口
/// 开始房间视频会议录制
/// @param roomId 房间号
/// @param customId 开发者自定义用户ID
/// @param recUsers 需要录制的房间参与者id
/// @param projectId 云存储项目ID
/// @param fileId 云存储文件名
/// @param completion operation
+ (void)requestStartRecordRoomId:(NSString *)roomId
                        customId:(NSInteger)customId
                        recUsers:(NSArray *)recUsers
                       projectId:(NSString *)projectId
                          fileId:(NSString *)fileId
                      completion:(void (^)(bool success, NSError *error))completion;
/// 停止房间视频会议录制
/// @param roomId 房间号
/// @param customId 开发者自定义用户ID
/// @param completion operation
+ (void)requestStopRecordRoomId:(NSString *)roomId
                       customId:(NSInteger)customId
                     completion:(void (^)(bool success, NSError *error))completion;
/// 获取文件下载地址
/// @param projectId 项目ID
/// @param fileId 文件ID
/// @param completion operation
+ (void)requestGetRecordFileProjectId:(NSString *)projectId
                               fileId:(NSString *)fileId
                           completion:(void (^)(id responseObject, NSError *error))completion;
/// 新建项目接口
/// @param projectId 项目ID
/// @param projectName 项目名称
/// @param expireDays 项目存储对象过期天数 默认永不过期
/// @param completion operation
+ (void)requestCreateProjectId:(NSString *)projectId
                   projectName:(NSString *)projectName
                    expireDays:(NSInteger )expireDays
                    completion:(void (^)(bool success, NSError *error))completion;
#pragma mark - 4.16.3 新的会控接口
/// 预订会议接口
/// @param customId 主持人用户id(开发者自定义的用户id)
/// @param password 房间密码(若不传或为空则认为房间公开、无密码)
/// @param limit 房间人数限制(<100,不传则默认100)
/// @param beginTime 毫秒时间戳,会议预计开始时间(>=当前时间)
/// @param endTime 毫秒时间戳,会议预计结束时间(>beginTime且<七天后的时间戳)
/// @param completion completion
+ (NSURLSessionDataTask *)orderMeetingWithCustomId:(NSString *)customId
                                          password:(NSString *)password
                                             limit:(NSInteger)limit
                                         beginTime:(long)beginTime
                                           endTime:(long)endTime
                                        completion:(void (^)(int32_t roomId, NSInteger limit, NSError *error))completion;
@end
NS_ASSUME_NONNULL_END