// // EZVideoTalkSDK.h // EZOpenSDK // // Created by yuqian on 2020/3/14. // Copyright © 2020 Hikvision. All rights reserved. // #import NS_ASSUME_NONNULL_BEGIN typedef enum : NSUInteger { EZVideoTalkMessageUnkown, EZVideoTalkMessageRoomCreated, //创建房间成功 EZVideoTalkMessagePeerEnteredRoom, //目前未使用,用于多方 EZVideoTalkMessagePeerLeaveRoom, //目前未使用,用于多方 EZVideoTalkMessageStartInputData, //链接建立成功,开始推流 EZVideoTalkMessageTransferData, //透传消息 } EZVideoTalkMessageType; typedef NS_OPTIONS(NSUInteger, EZVideoTalkCaptureType) { EZVideoTalkCaptureNone = 1 << 0, EZVideoTalkCaptureVideo = 1 << 1, EZVideoTalkCaptureAudio = 1 << 2, }; @class EZVideoTalkSDK, EZVideoTalkParam, EZMediaSessionVideoParam, EZVideoTalkView; @protocol EZVideoTalkSDKDelegate - (void)videoTalk:(EZVideoTalkSDK *)client didReceivedError:(int32_t)errorCode; /** 回调消息 @param client client @param messageCode 消息码 参见EZBAVMessage @param msg 透传消息, 如果是EZVideoTalkMessagePeerEnteredRoom和EZVideoTalkMessagePeerLeaveRoom消息,msg是{@"clientID":@(9527),@"clientName":@"张三"} 如果消息是 EZVideoTalkMessageTransferData msg是 msg是{@"content":@"实际的透传消息"} */ - (void)videoTalk:(EZVideoTalkSDK *)client didReceivedMessage:(EZVideoTalkMessageType)messageCode msg:(NSDictionary *)msg; // 回调消息 bavclient log回调 // // @param client client // @param msg 透传消息 // */ //- (void)bavClient:(EZVideoTalk *)client didReceivedBavClientLogMsg:(NSString*)msg; /** 显示回调,首次画面出来以及后续画面尺寸发生变化时回调 @param client client @param width 画面宽度 @param height 画面高度 */ - (void)videoTalk:(EZVideoTalkSDK *)client didDisplayWidth:(int32_t)width height:(int32_t)height ofRemoteClient:(int)clientID; @end @interface EZVideoTalkSDK : NSObject @property (nonatomic, assign, readonly) int32_t roomID; @property (nonatomic, weak) id delegate; #pragma mark - SDK /** SDK初始化 @param param 必填 配置参数 @param localWin 本地窗口 @return 返回值 */ - (instancetype)initWithParam:(EZMediaSessionVideoParam *)param localWindow:(EZVideoTalkView *)localWin; /// 设置远程窗口 /// 1.必须在拿到远端客户端加入的消息后设置; /// 2.必须在主线程调用; /// 3.结束后需要将window只为nil; /// @param remoteWin 远端窗口 /// @param clientID 加入的客户端的ID - (int32_t)setRemoteWindow:(UIView * _Nullable)remoteWin ofClient:(int32_t)clientID; /** 开始双向音视频对讲,耗时接口,默认 EZVideoTalkCaptureVideo | EZVideoTalkCaptureAudio 同时开启 */ - (void)startWithBAVParam:(EZVideoTalkParam *)param; /** 开始双向音视频对讲,耗时接口 @param param 必填 配置参数 @param type 采集类型 */ - (void)startWithBAVParam:(EZVideoTalkParam *)param type:(EZVideoTalkCaptureType)type; /** 停止双向音视频对讲 */ - (void)stop; /// 本地采集的音频或者是视频配置,可以在音视频通话过程中切换 /// @param type EZMediaCaptureSessionType - (int32_t)configCaptureType:(EZVideoTalkCaptureType)type; /// 开启声音,接收到EZVideoTalkMessageStartInputData消息后调用 /// @param open 开关状态 /// @param clientId clientId - (int32_t) openSound:(BOOL)open forClient:(int32_t)clientId; /** 切换对讲时使用的摄像头,默认采用前置 同步接口 @param backCameraSelected YES:选择后置,NO:选择前置 @return 成功返回 noErr,失败返回错误码 */ - (int32_t)switchCamera:(BOOL)backCameraSelected; #pragma mark - 日志调试 /** 日志设置 @param enable 是否打印日志 @param logCallback 日志回调,上层自定义处理 */ + (void)setDebugLogEnable:(BOOL)enable withLogCallback:(void(^)(NSString *logStr))logCallback; /** 打开对端码流抓取 @param enble 是否打开 */ +(void)setDebugVideoLog:(BOOL)enble; /** 获取sdk版本信息 @return 版本号 */ + (NSString*)getVersion; @end NS_ASSUME_NONNULL_END