| | |
| | | // |
| | | |
| | | #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 - 日志调试 |
| | | /** |
| | |
| | | |
| | | @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 |