From feb1c3628a4d5da3c85bd3f3dae3be22ed4f5625 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期二, 19 十月 2021 11:18:40 +0800
Subject: [PATCH] 2021-10-19 1.更新SDK

---
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkSDKDefines.h                     |   17 
 EZSDK/EZSDK/EZ/PrefixHeader.pch                                                                                     |   30 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZDeviceInfo.h                                          |    4 
 .gitignore                                                                                                          |    2 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkSDK.h                            |  257 ++++++
 Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAddByQRCodeViewController.m          |    1 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZAlarmInfo.h                                           |   14 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkGlobal.h                         |   37 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h              |    4 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/com.hri.hpc.mobile.ios.player.metallib                                  |    0 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Info.plist                          |    0 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h        |    2 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAPWiFiConfigViewController.m         |    9 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h               |    4 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSessionDefines.h                     |   95 ++
 EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m                                                      |    2 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZPlayer.h                                                      |   20 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/README(集成必读).txt                                                            |   30 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/ReleaseNotes.txt                                                            |   31 
 EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme                                                         |    2 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalk.h                               |  178 ++++
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h               |   14 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h            |  275 +++++--
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/libEZOpenSDK.a                                                          |    0 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZOpenSDK.h                                                     |   25 
 EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs                                                                      |    2 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Base.lproj/AddDevice.storyboard                          |   36 
 EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m                                                     |    9 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/openssl/libssl.a                                                        |    0 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceTableViewController.m          |    6 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.mm |  436 +++++-----
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSession.h                            |   43 +
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSessionVideoParam.h                  |   32 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZConstants.h                                                   |    4 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h                 |   25 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/ViewController.m                                         |    7 
 /dev/null                                                                                                           |  142 ---
 EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a                                                                              |    0 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZBAVParam.h                                |  143 +++
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZGlobalSDK.h                                                   |    6 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h               |    6 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/openssl/libcrypto.a                                                     |    0 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/PrefixHeader.pch                                         |   51 +
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h                  |   20 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.h  |   34 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework                  |    0 
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZConferenceClient.h                        |  201 +++++
 Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkView.h                           |   18 
 48 files changed, 1,781 insertions(+), 493 deletions(-)

diff --git a/.gitignore b/.gitignore
index 39da43b..7b59ae5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -75,7 +75,7 @@
 *.ilk
 *.meta
 *.obj
-*.pch
+# *.pch
 *.pdb
 *.pgc
 *.pgd
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Base.lproj/AddDevice.storyboard b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Base.lproj/AddDevice.storyboard
index 947d393..00974ca 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Base.lproj/AddDevice.storyboard
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/Base.lproj/AddDevice.storyboard
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17506" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="1Qq-y9-5Vr">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES" initialViewController="1Qq-y9-5Vr">
     <device id="retina4_7" orientation="portrait" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17505"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <scenes>
@@ -684,24 +684,40 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" usesAttributedText="YES" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q0X-wy-A5B">
-                                <rect key="frame" x="47.5" y="362" width="311.5" height="40"/>
+                                <rect key="frame" x="47.5" y="362" width="311.5" height="100"/>
                                 <attributedString key="attributedText">
                                     <fragment content="杩斿洖">
                                         <attributes>
-                                            <font key="NSFont" size="14" name=".PingFangSC-Regular"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0"/>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
                                         </attributes>
                                     </fragment>
                                     <fragment content="APP">
                                         <attributes>
-                                            <font key="NSFont" metaFont="system" size="14"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0"/>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="HelveticaNeue"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
                                         </attributes>
                                     </fragment>
-                                    <fragment content="锛岀瓑寰呬笌璁惧杩炴帴锛屾垚鍔熷悗鑷姩杩涘叆涓嬩竴姝ユ搷浣溿��">
+                                    <fragment content="锛岀瓑寰呬笌璁惧杩炴帴锛屾垚鍔熷悗鑷姩杩涘叆涓嬩竴姝ユ搷浣溿�傦紙娉ㄦ剰锛氬鏋滆澶嘩IFI鍚嶇О涓嶆槸鈥淓ZVIZ鈥濆墠缂�鐨勶紝璇峰鍒跺瘑鐮佸悗鏍规嵁鏂扮殑鍓嶇紑鍚嶅瓧锛屾墜鍔ㄤ慨鏀瑰瘑鐮佺殑鍓嶇紑骞惰繛鎺ュ嵆鍙�備緥濡傗��">
                                         <attributes>
-                                            <font key="NSFont" size="14" name=".PingFangSC-Regular"/>
-                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0"/>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="SoftAP_XXXXXXX">
+                                        <attributes>
+                                            <font key="NSFont" size="13" name="HelveticaNeue"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
+                                        </attributes>
+                                    </fragment>
+                                    <fragment content="鈥濓級">
+                                        <attributes>
+                                            <color key="NSColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                            <font key="NSFont" size="14" name="PingFangSC-Regular"/>
+                                            <paragraphStyle key="NSParagraphStyle" alignment="left" lineBreakMode="wordWrapping" baseWritingDirection="natural" minimumLineHeight="20" tighteningFactorForTruncation="0.0" allowsDefaultTighteningForTruncation="NO"/>
                                         </attributes>
                                     </fragment>
                                 </attributedString>
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/PrefixHeader.pch b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/PrefixHeader.pch
new file mode 100644
index 0000000..4492601
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/PrefixHeader.pch
@@ -0,0 +1,51 @@
+//
+//  PrefixHeader.pch
+//  EZOpenSDKDemo
+//
+//  Created by linyong on 16/10/26.
+//  Copyright 漏 2016骞� Ezviz. All rights reserved.
+//
+
+#ifndef PrefixHeader_pch
+#define PrefixHeader_pch
+
+// Include any system framework and library headers here that should be included in all compilation units.
+// You will also need to set the Prefix Header build setting of one or more of your targets to reference this file.
+
+#if 0
+
+#define EZVIZ_GLOBAL_DEMO
+
+#else
+
+#define EZVIZ_OPEN_DEMO
+
+#endif
+
+#define DEMO_ONLINE //绾夸笂鏈嶅姟鍣�
+
+//#import "Macros.h"
+//#import "UIView+EZExtension.h"
+#import "UIView+Toast.h"
+//#import "JXTAlertController.h"
+//#import "NSDate+DateTools.h"
+#import "Masonry.h"
+#import "DDKit.h"
+
+#import "EZOpenSDK.h"
+#import "EZGlobalSDK.h"
+#import "GlobalKit.h"
+#import "EZHttpUtil.h"
+#import "EZSDK.h"
+
+//#ifdef EZVIZ_GLOBAL_DEMO
+//
+//#define EZOPENSDK [EZGlobalSDK class]
+//
+//#else
+//
+//#define EZOPENSDK [EZOpenSDK class]
+//
+//#endif
+
+#endif /* PrefixHeader_pch */
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAPWiFiConfigViewController.m b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAPWiFiConfigViewController.m
index eff6e76..0b9d955 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAPWiFiConfigViewController.m
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAPWiFiConfigViewController.m
@@ -244,8 +244,13 @@
 {
     NSString *ssid = [self currentSsid];
     
-    if (ssid && [ssid isEqualToString:self.devicWifiName])
-    {
+//    if (ssid && [ssid isEqualToString:self.devicWifiName])
+//    {
+//        return YES;
+//    }
+    
+    //2021-10-19 鍒ゆ柇鏉′欢锛屾敼涓哄彧鍖归厤鍚庨潰搴忓垪鍙峰瓧娈�
+    if(ssid && [ssid hasSuffix:[GlobalKit shareKit].deviceSerialNo]){//瀛楃涓叉湯灏炬湁搴忓垪鍙峰瓧绗�
         return YES;
     }
     
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAddByQRCodeViewController.m b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAddByQRCodeViewController.m
index ac5e272..61d8bb6 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAddByQRCodeViewController.m
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZAddByQRCodeViewController.m
@@ -234,6 +234,7 @@
 
 - (void)checkQRCode:(NSString *)strQRcode
 {
+    strQRcode = [strQRcode stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\r"];//2021-10-19 瑙e喅閮ㄥ垎鐚溂璁惧灞忓箷鏄剧ず鐨勪簩缁寸爜锛屽弬鏁颁箣闂村嚭鐜扮┖琛屽鑷村垎鍓插彇閿欏瓧娈甸棶棰�
     NSArray *arrString = [strQRcode componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
     
     if(arrString.count >=3)
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceTableViewController.m b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceTableViewController.m
index a40c299..abad069 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceTableViewController.m
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/EZDeviceTableViewController.m
@@ -390,9 +390,9 @@
 }
 
 - (void) go2VideoTalk:(EZDeviceInfo *)deviceInfo {
-    EZVideoTalkViewcontroller *vc = [EZVideoTalkViewcontroller videoTalkVC];
-    vc.deviceInfo = deviceInfo;
-    [self.navigationController pushViewController:vc animated:YES];
+//    EZVideoTalkViewcontroller *vc = [EZVideoTalkViewcontroller videoTalkVC];
+//    vc.deviceInfo = deviceInfo;
+//    [self.navigationController pushViewController:vc animated:YES];
 }
 
 - (IBAction)go2MultiPlay:(id)sender {
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.h
index 8ee9987..fb94d00 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.h
@@ -1,20 +1,20 @@
+////
+////  EZVideoTalkViewcontroller.h
+////  EZBAVDemo
+////
+////  Created by kanhaiping on 2018/6/26.
+////  Copyright 漏 2018骞� hikvision. All rights reserved.
+////
 //
-//  EZVideoTalkViewcontroller.h
-//  EZBAVDemo
+//#import <UIKit/UIKit.h>
 //
-//  Created by kanhaiping on 2018/6/26.
-//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//@class EZDeviceInfo;
 //
-
-#import <UIKit/UIKit.h>
-
-@class EZDeviceInfo;
-
-@interface EZVideoTalkViewcontroller : UIViewController
-
-@property(nonatomic, strong) EZDeviceInfo *deviceInfo;
-
-+ (EZVideoTalkViewcontroller *) videoTalkVC;
-
-@end
-
+//@interface EZVideoTalkViewcontroller : UIViewController
+//
+//@property(nonatomic, strong) EZDeviceInfo *deviceInfo;
+//
+//+ (EZVideoTalkViewcontroller *) videoTalkVC;
+//
+//@end
+//
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.mm b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.mm
index efe606a..afbb6f2 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.mm
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/UIViewControllers/VideoTalk/EZVideoTalkViewcontroller.mm
@@ -1,221 +1,221 @@
+////
+////  EZVideoTalkViewcontroller.m
+////  EZBAVDemo
+////
+////  Created by kanhaiping on 2018/6/26.
+////  Copyright 漏 2018骞� hikvision. All rights reserved.
+////
 //
-//  EZVideoTalkViewcontroller.m
-//  EZBAVDemo
+//#import "EZVideoTalkViewcontroller.h"
+//#import "EZVideoTalkSDK.h"
+//#import "EZVideoTalkParam.h"
+//#import "UIView+Toast.h"
+//#import <AVFoundation/AVFoundation.h>
+//#import "EZOpenSDK.h"
+//#import "EZDeviceInfo.h"
+//#import "GlobalKit.h"
+//#import "EzvizWatchServerInfo.h"
+//#import "EZTokenKit.h"
 //
-//  Created by kanhaiping on 2018/6/26.
-//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//@interface EZVideoTalkViewcontroller ()<EZVideoTalkSDKDelegate>
+//@property (nonatomic, assign) BOOL bEverOpenSound;
+//@property (nonatomic, strong) EZVideoTalkSDK *client;
 //
-
-#import "EZVideoTalkViewcontroller.h"
-#import "EZVideoTalkSDK.h"
-#import "EZVideoTalkParam.h"
-#import "UIView+Toast.h"
-#import <AVFoundation/AVFoundation.h>
-#import "EZOpenSDK.h"
-#import "EZDeviceInfo.h"
-#import "GlobalKit.h"
-#import "EzvizWatchServerInfo.h"
-#import "EZTokenKit.h"
-
-@interface EZVideoTalkViewcontroller ()<EZVideoTalkSDKDelegate>
-@property (nonatomic, assign) BOOL bEverOpenSound;
-@property (nonatomic, strong) EZVideoTalkSDK *client;
-
-@property (weak, nonatomic) IBOutlet UIView *localView;
-@property (weak, nonatomic) IBOutlet UIView *remoteView;
-@property (weak, nonatomic) IBOutlet UITextField *roomIDTextField;
-
-@property (nonatomic, strong) EzvizWatchServerInfo *watchServerInfo;
-
-@end
-
-@implementation EZVideoTalkViewcontroller
-
-+ (EZVideoTalkViewcontroller *) videoTalkVC {
-    
-    EZVideoTalkViewcontroller *vc = [[NSBundle mainBundle] loadNibNamed:@"EZVideoTalkViewcontroller" owner:nil options:nil].firstObject;
-    return vc;
-}
-
-- (void)viewDidLoad {
-    [super viewDidLoad];
-    // Do any additional setup after loading the view, typically from a nib.
-    UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
-    if (self.view.gestureRecognizers.count <= 0) {
-        [self.view addGestureRecognizer:gesture];
-    }
-    
-    self.title = @"Video Talk";
-}
-
-- (void)viewWillAppear:(BOOL)animated {
-    [super viewWillAppear:animated];
-    
-    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(stopTalk) name:UIApplicationDidEnterBackgroundNotification object:nil];
-    [self getWatchInfo];
-}
-
-- (void)viewWillDisappear:(BOOL)animated  {
-    [super viewWillDisappear:animated];
-    
-    [[NSNotificationCenter defaultCenter] removeObserver:self];
-    
-    if (self.client != nil) {
-        [self stopTalk];
-    }
-}
-
-- (void)didReceiveMemoryWarning {
-    [super didReceiveMemoryWarning];
-    // Dispose of any resources that can be recreated.
-}
-
-
-#pragma mark Actions
-
-- (IBAction)createRoomAction:(id)sender {
-    
-    [self startTalkWithRoomID:0];
-}
-
-- (IBAction)enterRoomAction:(id)sender {
-    
-    if (self.roomIDTextField.text.length <= 0 || [self.roomIDTextField.text integerValue] <= 0) {
-        [self showMessage:@"璇疯緭鍏ユ纭殑鎴块棿鍙�"];
-        return;
-    }
-    
-    [self startTalkWithRoomID:(int32_t)[self.roomIDTextField.text integerValue]];
-    
-    [self showMessage:@"鍔犲叆鎴块棿"];
-}
-
-- (IBAction)leaveRoomAction:(id)sender {
-    
-    [self stopTalk];
-    
-    [self showMessage:@"宸茬寮�鎴块棿"];
-}
-
-- (void)tapAction:(id)sender {
-    
-    [self.roomIDTextField resignFirstResponder];
-}
-
-#pragma mark Helper
-
-- (void)showMessage:(NSString *)message
-{
-    [self.view makeToast:message duration:2.0 position:CSToastPositionCenter];
-}
-
-#pragma mark BAV API
-
-- (void)getWatchInfo {
-    
-    __weak typeof(self) weakSelf = self;
-    [EZOpenSDK requestGetWatchServerInfo:self.deviceInfo.deviceSerial completion:^(id watchServerInfo, NSError *error) {
-        
-        weakSelf.watchServerInfo = watchServerInfo;
-    }];
-}
-
-- (void)startTalkWithRoomID:(int32_t)roomID
-{
-    if (self.client != nil) {
-        [self.client stop];
-        self.client = nil;
-    }
-    
-    EZVideoTalkParam *param = [EZVideoTalkParam new];
-    param.iCltRole = roomID > 0 ? 1 : 0;
-    param.iCltType = 1;
-    param.iOtherCltType = 1;
-//    param.iReason = 101;
-    param.iStsPort = self.watchServerInfo.port;
-    param.iRoomId = roomID > 0 ? roomID : 0;
-    param.szOterId = self.deviceInfo.deviceSerial;
-    param.szSelfId = @"1234567891";
-    param.szAuthToken = [EZTokenKit sharedKit].token;
-    param.szStsAddr = self.watchServerInfo.domain;
-    
-    [EZVideoTalkSDK setDebugVideoLog:YES];
-    [EZVideoTalkSDK setDebugLogEnable:YES withLogCallback:^(NSString *logStr) {
-        NSLog(@"%@", logStr);
-    }];
-    
-    _client = [[EZVideoTalkSDK alloc] initWithParam:param localWindow:self.localView remoteWindow:self.remoteView];
-    _client.delegate = self;
-
-    //    [_client startWithType:EZVideoTalkCaptureVideo | EZVideoTalkCaptureAudio];
-        [_client startWithType:EZVideoTalkCaptureAudio];
-}
-
-- (void)stopTalk
-{
-    [self.client stop];
-    self.client = nil;
-}
-
-#pragma mark EZVideoTalkSDKDelegate
-
-- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedError:(int32_t)errorCode
-{
-    NSLog(@"%s recived errorcode:%d", __func__, errorCode);
-
-    dispatch_async(dispatch_get_main_queue(), ^{
-        [self showMessage:[NSString stringWithFormat:@"BAVClient Error:%d",errorCode]];
-    });
-    
-    [self stopTalk];
-}
-
-- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedMessage:(EZVideoTalkMessageType)messageCode msg:(NSString *)msg
-{
-    NSLog(@"%s recived messagecode:%lu ,msg:%@", __func__, (unsigned long)messageCode, msg);
-
-    dispatch_async(dispatch_get_main_queue(), ^{
-
-        if (messageCode == EZVideoTalkMessageRoomCreated) {
-
-            [self showMessage:[NSString stringWithFormat:@"宸插垱寤烘埧闂�:%d", self.client.roomID]];
-             self.roomIDTextField.text = [NSString stringWithFormat:@"%d", self.client.roomID];
-        }
-        else if (messageCode == EZVideoTalkMessageStartInputData) {
-
-            [self showMessage:[NSString stringWithFormat:@"寮�濮嬫帹娴�"]];
-        }
-    });
-}
-
-- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedBavClientLogMsg:(NSString *)msg {
-    
-    NSLog(@"%s recived msg:%@", __func__, msg);
-}
-
-- (void)videoTalk:(EZVideoTalkSDK *)client playDelayTime:(int32_t)delayTime {
-    
-    NSLog(@"%s delayTime:%d", __func__, delayTime);
-    
-    dispatch_async(dispatch_get_main_queue(), ^{
-        [self showMessage:[NSString stringWithFormat:@"鎾斁鍗¢】-delayTime:%d", delayTime]];
-    });
-}
-
-- (void)videoTalk:(EZVideoTalkSDK *)client playDelayTimeStatistics:(double)delayTimeStat {
-    
-    NSLog(@"%s delayTimeStat:%f", __func__, delayTimeStat);
-}
-
-- (void)videoTalk:(EZVideoTalkSDK *)client didDisplayWidth:(int32_t)width height:(int32_t)height {
-    
-    NSLog(@"%s", __func__);
-    if (!self.bEverOpenSound) {
-        self.bEverOpenSound = YES;
-        [self.client openSound:YES];
-    }
-}
-
-
-
-@end
+//@property (weak, nonatomic) IBOutlet UIView *localView;
+//@property (weak, nonatomic) IBOutlet UIView *remoteView;
+//@property (weak, nonatomic) IBOutlet UITextField *roomIDTextField;
+//
+//@property (nonatomic, strong) EzvizWatchServerInfo *watchServerInfo;
+//
+//@end
+//
+//@implementation EZVideoTalkViewcontroller
+//
+//+ (EZVideoTalkViewcontroller *) videoTalkVC {
+//
+//    EZVideoTalkViewcontroller *vc = [[NSBundle mainBundle] loadNibNamed:@"EZVideoTalkViewcontroller" owner:nil options:nil].firstObject;
+//    return vc;
+//}
+//
+//- (void)viewDidLoad {
+//    [super viewDidLoad];
+//    // Do any additional setup after loading the view, typically from a nib.
+//    UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
+//    if (self.view.gestureRecognizers.count <= 0) {
+//        [self.view addGestureRecognizer:gesture];
+//    }
+//
+//    self.title = @"Video Talk";
+//}
+//
+//- (void)viewWillAppear:(BOOL)animated {
+//    [super viewWillAppear:animated];
+//
+//    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(stopTalk) name:UIApplicationDidEnterBackgroundNotification object:nil];
+//    [self getWatchInfo];
+//}
+//
+//- (void)viewWillDisappear:(BOOL)animated  {
+//    [super viewWillDisappear:animated];
+//
+//    [[NSNotificationCenter defaultCenter] removeObserver:self];
+//
+//    if (self.client != nil) {
+//        [self stopTalk];
+//    }
+//}
+//
+//- (void)didReceiveMemoryWarning {
+//    [super didReceiveMemoryWarning];
+//    // Dispose of any resources that can be recreated.
+//}
+//
+//
+//#pragma mark Actions
+//
+//- (IBAction)createRoomAction:(id)sender {
+//
+//    [self startTalkWithRoomID:0];
+//}
+//
+//- (IBAction)enterRoomAction:(id)sender {
+//
+//    if (self.roomIDTextField.text.length <= 0 || [self.roomIDTextField.text integerValue] <= 0) {
+//        [self showMessage:@"璇疯緭鍏ユ纭殑鎴块棿鍙�"];
+//        return;
+//    }
+//
+//    [self startTalkWithRoomID:(int32_t)[self.roomIDTextField.text integerValue]];
+//
+//    [self showMessage:@"鍔犲叆鎴块棿"];
+//}
+//
+//- (IBAction)leaveRoomAction:(id)sender {
+//
+//    [self stopTalk];
+//
+//    [self showMessage:@"宸茬寮�鎴块棿"];
+//}
+//
+//- (void)tapAction:(id)sender {
+//
+//    [self.roomIDTextField resignFirstResponder];
+//}
+//
+//#pragma mark Helper
+//
+//- (void)showMessage:(NSString *)message
+//{
+//    [self.view makeToast:message duration:2.0 position:CSToastPositionCenter];
+//}
+//
+//#pragma mark BAV API
+//
+//- (void)getWatchInfo {
+//
+//    __weak typeof(self) weakSelf = self;
+//    [EZOpenSDK requestGetWatchServerInfo:self.deviceInfo.deviceSerial completion:^(id watchServerInfo, NSError *error) {
+//
+//        weakSelf.watchServerInfo = watchServerInfo;
+//    }];
+//}
+//
+//- (void)startTalkWithRoomID:(int32_t)roomID
+//{
+//    if (self.client != nil) {
+//        [self.client stop];
+//        self.client = nil;
+//    }
+//
+//    EZVideoTalkParam *param = [EZVideoTalkParam new];
+//    param.iCltRole = roomID > 0 ? 1 : 0;
+//    param.iCltType = 1;
+//    param.iOtherCltType = 1;
+////    param.iReason = 101;
+//    param.iStsPort = self.watchServerInfo.port;
+//    param.iRoomId = roomID > 0 ? roomID : 0;
+//    param.szOterId = self.deviceInfo.deviceSerial;
+//    param.szSelfId = @"1234567891";
+//    param.szAuthToken = [EZTokenKit sharedKit].token;
+//    param.szStsAddr = self.watchServerInfo.domain;
+//
+//    [EZVideoTalkSDK setDebugVideoLog:YES];
+//    [EZVideoTalkSDK setDebugLogEnable:YES withLogCallback:^(NSString *logStr) {
+//        NSLog(@"%@", logStr);
+//    }];
+//
+//    _client = [[EZVideoTalkSDK alloc] initWithParam:param localWindow:self.localView remoteWindow:self.remoteView];
+//    _client.delegate = self;
+//
+//    //    [_client startWithType:EZVideoTalkCaptureVideo | EZVideoTalkCaptureAudio];
+//        [_client startWithType:EZVideoTalkCaptureAudio];
+//}
+//
+//- (void)stopTalk
+//{
+//    [self.client stop];
+//    self.client = nil;
+//}
+//
+//#pragma mark EZVideoTalkSDKDelegate
+//
+//- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedError:(int32_t)errorCode
+//{
+//    NSLog(@"%s recived errorcode:%d", __func__, errorCode);
+//
+//    dispatch_async(dispatch_get_main_queue(), ^{
+//        [self showMessage:[NSString stringWithFormat:@"BAVClient Error:%d",errorCode]];
+//    });
+//
+//    [self stopTalk];
+//}
+//
+//- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedMessage:(EZVideoTalkMessageType)messageCode msg:(NSString *)msg
+//{
+//    NSLog(@"%s recived messagecode:%lu ,msg:%@", __func__, (unsigned long)messageCode, msg);
+//
+//    dispatch_async(dispatch_get_main_queue(), ^{
+//
+//        if (messageCode == EZVideoTalkMessageRoomCreated) {
+//
+//            [self showMessage:[NSString stringWithFormat:@"宸插垱寤烘埧闂�:%d", self.client.roomID]];
+//             self.roomIDTextField.text = [NSString stringWithFormat:@"%d", self.client.roomID];
+//        }
+//        else if (messageCode == EZVideoTalkMessageStartInputData) {
+//
+//            [self showMessage:[NSString stringWithFormat:@"寮�濮嬫帹娴�"]];
+//        }
+//    });
+//}
+//
+//- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedBavClientLogMsg:(NSString *)msg {
+//
+//    NSLog(@"%s recived msg:%@", __func__, msg);
+//}
+//
+//- (void)videoTalk:(EZVideoTalkSDK *)client playDelayTime:(int32_t)delayTime {
+//
+//    NSLog(@"%s delayTime:%d", __func__, delayTime);
+//
+//    dispatch_async(dispatch_get_main_queue(), ^{
+//        [self showMessage:[NSString stringWithFormat:@"鎾斁鍗¢】-delayTime:%d", delayTime]];
+//    });
+//}
+//
+//- (void)videoTalk:(EZVideoTalkSDK *)client playDelayTimeStatistics:(double)delayTimeStat {
+//
+//    NSLog(@"%s delayTimeStat:%f", __func__, delayTimeStat);
+//}
+//
+//- (void)videoTalk:(EZVideoTalkSDK *)client didDisplayWidth:(int32_t)width height:(int32_t)height {
+//
+//    NSLog(@"%s", __func__);
+//    if (!self.bEverOpenSound) {
+//        self.bEverOpenSound = YES;
+//        [self.client openSound:YES];
+//    }
+//}
+//
+//
+//
+//@end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/ViewController.m b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/ViewController.m
index 3cecf2c..8c6f738 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/ViewController.m
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/Demo/EZOpenSDKDemo/ViewController.m
@@ -84,10 +84,10 @@
 //
 //
 //    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://china-gateway.hdlcontrol.com" platform:1 homeId:@"1409421094585028610"];
-    [[EZSDK sharedInstance] setHDlAccessToken:@"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJiZTVmYzRhZjQwODA0Y2Y0OTA5OTk5YTcyYWIwNTVjYSIsImNvbXBhbnlJZCI6IjAiLCJyb2xlIjoiIiwiaGVhZGVyUHJlZml4IjoiQmVhcmVyICIsInRlbmFudElkIjoiMjAiLCJ1c2VyVHlwZSI6IlVTRVJfQyIsInRva2VuVHlwZSI6ImFjY2Vzc190b2tlbiIsInVzZXJOYW1lIjoi5ZiJ5LmQIiwib3BlbkFwcGxpY2F0aW9uSWQiOiIwIiwidXNlcklkIjoiMTM1NzEzODQzNDgyODMzMzA1OCIsImV4cCI6MTYyNjg1MjY5NSwibmJmIjoxNjI2ODQ1NDk1fQ.ZjLGpFDfEXhViUEVqYY5UggMorgqAmj38rHXfHSp1pX008Lk0_KH9lz3R05iCfLign74LSYdTd4OfVkyDYb2pt_bIjZr3w0kZdbun8v4Ofu4bFrFFdI4qACPbc7GjXFI2tC_0A_uvekTB6nCRm3lW-GWAvTocR6UWsA_UGsMDIM" refreshToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJjNDQ1M2EyMDE0MzU0MWRlYWRmOTgyYjQ3YmEyYjU0YiIsImNvbXBhbnlJZCI6IjAiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidGVuYW50SWQiOiIyMCIsInRva2VuVHlwZSI6InJlZnJlc2hfdG9rZW4iLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxMzU3MTM4NDM0ODI4MzMzMDU4IiwiZXhwIjoxNjI3NDUwNDEzLCJuYmYiOjE2MjY4NDU2MTN9.TN9-Y72sesOx-qL6V6BHdbLIqeM26OepFe0uHRIMSXKncRzU9NwknYgREli6k0GDe3965aQD7IeQh-jJTPOxS39VqGjzfuH_E-yfx2wt2aHPbDVZAOBalInSSOGHsJEnw-kEh5BIFDDvq-6tysHemQvxkR3zK5S9XKimwxeCZOg"];
+    [[EZSDK sharedInstance] setHDlAccessToken:@"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJmNDE3MGQyZjIxZWI0NjMyYWU5ZmUxOTM5NDJmOTNmYiIsImNvbXBhbnlJZCI6IjAiLCJyb2xlIjoiIiwiaGVhZGVyUHJlZml4IjoiQmVhcmVyICIsInRlbmFudElkIjoiMjAiLCJ1c2VyVHlwZSI6IlVTRVJfQyIsInRva2VuVHlwZSI6ImFjY2Vzc190b2tlbiIsInVzZXJOYW1lIjoi5ZiJ5LmQIiwib3BlbkFwcGxpY2F0aW9uSWQiOiIwIiwidXNlcklkIjoiMTM1NzEzODQzNDgyODMzMzA1OCIsImV4cCI6MTYzNDAyNzAxOSwibmJmIjoxNjM0MDE5ODE5fQ.Bn4bTXJq-o4Ch05rM81UdjR_EO4ybEpGwzt19as16UaoQVR9i2OGgoT7r4jVjC204o1APLC3JvrPq-eJKXieh7VBP6n5s-2BwGHTdV4W2cKdiMC5ciVeHFopmkw7cd3JNkxgGiXykQqxMnIl3keNXu5VXjo4XCOw3cYOuXhg_ZA" refreshToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiIxMWIyNDFjY2U2MDE0YTM2YmIyMTdjZGFhZGY0NzlhMCIsImNvbXBhbnlJZCI6IjAiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidGVuYW50SWQiOiIyMCIsInRva2VuVHlwZSI6InJlZnJlc2hfdG9rZW4iLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxMzU3MTM4NDM0ODI4MzMzMDU4IiwiZXhwIjoxNjM0NjI0NjE5LCJuYmYiOjE2MzQwMTk4MTl9.GL9idS-BWGVbZG8RdmwM1sATKJr9FC6Z4x64xZoZf0E421iL_IkGy2iflLWToTmeLqMzBJ-bjN34yCgban-7M4dY5HuEMvWbxgP5sAiXTuS9z1UDkbry8gvs6zrcVUreb9H5ciroNJOh20yoCzfnfXZVl9M7w5acCkl9UmdtX0c"];
     
     
-    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://china-gateway.hdlcontrol.com" platform:1 homeId:@"1417299149361909761"];
+    [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://china-gateway.hdlcontrol.com" platform:1 homeId:@"1357564319439441921"];
     
     
 }
@@ -97,8 +97,7 @@
     
     return;
 //    [[GlobalKit shareKit] setAccessToken:@"ra.a5bfkhhx7ycscsj41if7l0cf9ytfhv5q-9keuxvphmn-1fvjt6p-jugtyy8sr"];
-    [[EZSDK sharedInstance] setHDlAccessToken:@"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI2Zjk1ZTEwZWIwNjA0ZjNiYTdmNTc0ZGUyM2QxYmNmZiIsImNvbXBhbnlJZCI6IjAiLCJyb2xlIjoiIiwiaGVhZGVyUHJlZml4IjoiQmVhcmVyICIsInVzZXJBY2NvdW50Ijoid3hyIiwidGVuYW50SWQiOiIyMCIsInVzZXJUeXBlIjoiVVNFUl9DIiwidG9rZW5UeXBlIjoiYWNjZXNzX3Rva2VuIiwidXNlck5hbWUiOiJrYWVkZSIsIm9wZW5BcHBsaWNhdGlvbklkIjoiMCIsInVzZXJJZCI6IjEzOTIwMzU1NjgyMDQ0MjMxNjkiLCJleHAiOjE2MjU3MTY3NjAsIm5iZiI6MTYyNTcwOTU2MH0.C6w0mb0YiNhqQfLPscXiNVh_DOsbza_fubUbn_T-W04L3R7egi7-Gv_iifdfvh4XTU10rEdVl6FLXKxt3JJvo2x_sjBQLkWRQINMVl1qLOz9cMew79_aykXOwl8mdroYs9SKBd90qyM2lZaA91sD4H0HMVVyc_D2TEcG4XJzSBM" refreshToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiI1M2FlMzg3NDhmNjU0MzE1OTM0MTQ0OWQyYmQ0NjE0NiIsImNvbXBhbnlJZCI6IjAiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidGVuYW50SWQiOiIyMCIsInRva2VuVHlwZSI6InJlZnJlc2hfdG9rZW4iLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxMzkyMDM1NTY4MjA0NDIzMTY5IiwiZXhwIjoxNjI2MzE0MzYwLCJuYmYiOjE2MjU3MDk1NjB9.AZlG8jO8lFDcj5dfoY0rZsDfglGdeyLuSImzMw1enHWfAacjkIof0vXQ_qJG9Q-6qxyXXbPu_xrd0DhkGNFeHJ4WFL0iiYgDP51sJuUdKrQklUCSC6T7ZjIW0GSVmvOW4GCw0s6L51bVT_rkdrusVD4rDnOtJwWqXTUfyNanmlk"];
-    
+    [[EZSDK sharedInstance] setHDlAccessToken:@"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiJmNDE3MGQyZjIxZWI0NjMyYWU5ZmUxOTM5NDJmOTNmYiIsImNvbXBhbnlJZCI6IjAiLCJyb2xlIjoiIiwiaGVhZGVyUHJlZml4IjoiQmVhcmVyICIsInRlbmFudElkIjoiMjAiLCJ1c2VyVHlwZSI6IlVTRVJfQyIsInRva2VuVHlwZSI6ImFjY2Vzc190b2tlbiIsInVzZXJOYW1lIjoi5ZiJ5LmQIiwib3BlbkFwcGxpY2F0aW9uSWQiOiIwIiwidXNlcklkIjoiMTM1NzEzODQzNDgyODMzMzA1OCIsImV4cCI6MTYzNDAyNzAxOSwibmJmIjoxNjM0MDE5ODE5fQ.Bn4bTXJq-o4Ch05rM81UdjR_EO4ybEpGwzt19as16UaoQVR9i2OGgoT7r4jVjC204o1APLC3JvrPq-eJKXieh7VBP6n5s-2BwGHTdV4W2cKdiMC5ciVeHFopmkw7cd3JNkxgGiXykQqxMnIl3keNXu5VXjo4XCOw3cYOuXhg_ZA" refreshToken:@"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJqdGkiOiIxMWIyNDFjY2U2MDE0YTM2YmIyMTdjZGFhZGY0NzlhMCIsImNvbXBhbnlJZCI6IjAiLCJoZWFkZXJQcmVmaXgiOiJCZWFyZXIgIiwidGVuYW50SWQiOiIyMCIsInRva2VuVHlwZSI6InJlZnJlc2hfdG9rZW4iLCJvcGVuQXBwbGljYXRpb25JZCI6IjAiLCJ1c2VySWQiOiIxMzU3MTM4NDM0ODI4MzMzMDU4IiwiZXhwIjoxNjM0NjI0NjE5LCJuYmYiOjE2MzQwMTk4MTl9.GL9idS-BWGVbZG8RdmwM1sATKJr9FC6Z4x64xZoZf0E421iL_IkGy2iflLWToTmeLqMzBJ-bjN34yCgban-7M4dY5HuEMvWbxgP5sAiXTuS9z1UDkbry8gvs6zrcVUreb9H5ciroNJOh20yoCzfnfXZVl9M7w5acCkl9UmdtX0c"];
     
     [[EZSDK sharedInstance] setRequestHttpsHostAndPlatform:@"https://test-gz.hdlcontrol.com" platform:1 homeId:@"1396717478877241345"];
 
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework
index 1ff0eb1..35ef79f 100755
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/EZOpenSDKFramework
Binary files differ
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h
index a8d783a..9e763ef 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZAlarmInfo.h
@@ -26,7 +26,19 @@
 /// 鍛婅绫诲瀷
 @property (nonatomic) NSInteger alarmType;
 /// 鏄惁鍔犲瘑
-@property (nonatomic) BOOL isEncrypt;
+//@property (nonatomic) BOOL isEncrypt;
+
+
+/// 鍛婅鍥剧墖鍔犲瘑淇℃伅 crypt 0-涓嶇‘瀹� 1-璁惧鍔犲瘑 2-骞冲彴鍔犲瘑
+/// 濡傛灉鏄�2锛岃〃鏄庢槸骞冲彴鍔犲瘑鐨勫浘鐗囷紝璇蜂娇鐢ㄤ笅闈㈢殑checksum浣滀负瑙e瘑绉橀挜瑙e瘑鍥剧墖
+/// 濡傛灉鏄�1锛岃〃鏄庢槸璁惧鍔犲瘑鐨勫浘鐗囷紝璇蜂娇鐢ㄨ澶囩殑楠岃瘉鐮佷綔涓鸿В瀵嗙閽ヨВ瀵嗗浘鐗�
+/// 濡傛灉鏄�0锛岃〃鏄庢湭鐭ョ殑鍔犲瘑淇℃伅锛岃閫氳繃涓婇潰鎶ヨ鍥剧墖URL锛坅larmPicUrl锛変腑鐨� isEncrypted 瀛楁锛屽垽鏂浘鐗囨槸 0锛氭湭鍔犲瘑 1锛氳澶囧姞瀵�
+/// 鎶ヨ鍥剧墖鐨刄RL绀轰緥锛�
+/// https://whpic.ys7.com:8009/HIK_1447836214_458BEBDAE4AB6a6f_525400286893421023815?isEncrypted=1&isCloudStored=0
+/// https://www.ys7.com:9090/api/cloud?method=download&fid=5ed92258-8e0f-11e5-8000-c19249a52dcf&deviceSerialNo=504242549&isEncrypted=0&isCloudStored=1
+@property (nonatomic) NSInteger crypt;
+/// 鍛婅鍥剧墖骞冲彴鍔犲瘑鏃剁殑瀵嗛挜
+@property (nonatomic, copy) NSString *checksum;
 /// 鏄惁宸茶
 @property (nonatomic) BOOL isRead;
 /// 瀛樺偍绫诲瀷锛�0-鏃犲瓨鍌紝1-钀ょ煶锛�2-鐧惧害锛�4-sd鍗″瓨鍌紝5-钀ょ煶鍜宻d鍗★紝6-鐧惧害鍜宻d鍗�
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h
index 464bb8d..1d6ea09 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZConstants.h
@@ -143,9 +143,9 @@
 /* WiFi閰嶇疆璁惧鐘舵�� */
 typedef NS_ENUM(NSInteger, EZWifiConfigStatus) {
     DEVICE_WIFI_CONNECTING = 1,   //璁惧姝e湪杩炴帴WiFi
-    DEVICE_WIFI_CONNECTED = 2,    //璁惧杩炴帴WiFi鎴愬姛
+    DEVICE_WIFI_CONNECTED = 2,    //璁惧杩炴帴WiFi鎴愬姛  (宸插簾寮� v4.16.0)
     DEVICE_PLATFORM_REGISTED = 3, //璁惧娉ㄥ唽骞冲彴鎴愬姛
-    DEVICE_ACCOUNT_BINDED = 4     //璁惧宸茬粡缁戝畾璐︽埛
+    DEVICE_ACCOUNT_BINDED = 4     //璁惧宸茬粡缁戝畾璐︽埛  (宸插簾寮� v4.16.0)
 };
 
 /* 璁惧ptz鍛戒护 */
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h
index 60a8460..9e29463 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZDeviceInfo.h
@@ -35,7 +35,7 @@
 @property (nonatomic) BOOL isEncrypt;
 /// 璁惧鐘舵�侊紝1-鍦ㄧ嚎锛�2-涓嶅湪绾�
 @property (nonatomic) NSInteger status;
-/// 鏄惁鏀寔瀵硅 0-涓嶆敮鎸佸璁诧紝1-鏀寔鍏ㄥ弻宸ュ璁诧紝3-鏀寔鍗婂弻宸ュ璁�
+/// 鏄惁鏀寔瀵硅 0-涓嶆敮鎸佸璁诧紝1-鏀寔鍏ㄥ弻宸ュ璁诧紝3-鏀寔鍗婂弻宸ュ璁诧紝4-鍚屾椂鏀寔鍏ㄥ弻宸ュ拰鍗婂弻宸�
 @property (nonatomic) NSInteger isSupportTalk;
 /// 鏄惁鏀寔浜戝彴鎺у埗
 @property (nonatomic) BOOL isSupportPTZ;
@@ -47,6 +47,8 @@
 @property (nonatomic) BOOL isSupportMirrorCenter;
 /// 鏄惁鏀寔澹版尝閰嶇綉
 @property (nonatomic) BOOL isSupportSoundWave;
+/// 鏄惁鏀寔鍊嶆暟鍥炴斁
+@property (nonatomic) BOOL isSupportPlaybackRate;
 /// 璁惧澶х被
 @property (nonatomic,copy) NSString *category;
 /// 娣诲姞鏃堕棿
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h
index e4c919a..e99331c 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZGlobalSDK.h
@@ -248,6 +248,12 @@
 + (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode;
 
 
+/// 鍛婅鍥剧墖瑙e瘑鏂规硶
+/// @param data 闇�瑕佽В瀵嗙殑鏁版嵁
+/// @param verifyCode 璁惧楠岃瘉鐮� 鎴� 骞冲彴杩斿洖鐨刢hecksum
+/// @param type 1:璁惧鍔犲瘑锛�2锛氬钩鍙板姞瀵�
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode encryptType:(NSInteger)type;
+
 #pragma mark - V3.2 鏂板鍔犳帴鍙�
 
 /**
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h
index 3d2bbf0..daa4044 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDK.h
@@ -231,7 +231,12 @@
  */
 + (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode;
 
-
+/// @since 4.16.8
+/// 鍛婅鍥剧墖瑙e瘑鏂规硶
+/// @param data 闇�瑕佽В瀵嗙殑鏁版嵁
+/// @param verifyCode 璁惧楠岃瘉鐮� 鎴� 骞冲彴杩斿洖鐨刢hecksum
+/// @param type 1:璁惧鍔犲瘑锛�2锛氬钩鍙板姞瀵�
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode encryptType:(NSInteger)type;
 #pragma mark - V3.2 鏂板鍔犳帴鍙�
 
 /**
@@ -814,4 +819,22 @@
                                 platFormId:(NSString *)platFormId
                                 completion:(void (^)(id records, NSError *error))completion;
 
+#pragma mark - v4.16 澶氭柟闊宠棰�
+/// 鍒涘缓浼氳淇℃伅
+/// @param password 鑷畾涔夊瘑鐮�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param limit 闄愬埗鏈�澶т汉鏁� 鏈�澶�100
+/// @param completion operation
++ (void)requestCallingMeetingInfo:(NSString *)password
+                         customId:(NSInteger)customId
+                            limit:(NSInteger)limit
+                       completion:(void (^)(int32_t roomId, NSString *vtmAddress ,NSString *clientid ,NSInteger customId,NSString *controlServerAddress,  NSError *error))completion;
+
+/// 鍔犲叆鏂硅幏鍙栦細璁俊鎭�
+/// @param roomId  鎴块棿鍙�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param completion operation
++ (void)requestCalledMeetingInfo:(NSString *)roomId
+                        customId:(NSInteger)customId
+                       completion:(void (^)(int32_t roomId, NSString *vtmAddress,NSString *clientid ,NSInteger customId, NSString *controlServerAddress,NSError *error))completion;
 @end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h
index 3b5bf2f..f57a8a6 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZOpenSDKFramework.h
@@ -30,5 +30,5 @@
 #include <EZOpenSDKFramework/EZStorageInfo.h>
 #include <EZOpenSDKFramework/EZUserInfo.h>
 #include <EZOpenSDKFramework/EZVideoQualityInfo.h>
-
+#include <EZOpenSDKFramework/EZVideoTransformer.h>
 
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h
index 84c5dd7..4513626 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZPlayer.h
@@ -95,6 +95,19 @@
  */
 - (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width;
 
+
+/**
+ 鎾斁杩囩▼涓� 鍥炶皟瑙g爜鏁版嵁
+ 閲嶈锛氳鍥炶皟浼氭瘮杈冮绻�(涓�绉掕嫢骞叉)锛屽悓鏃剁洿鎺ョ敱鎾斁搴撶嚎绋嬪洖璋冧笂鏉ワ紝璇峰嬁鍦ㄦ柟娉曚腑鍋氳�楁椂鎿嶄綔
+ 閲嶈锛氬洖璋冪殑鏁版嵁鐨勫唴瀛樻槸鐢辨挱鏀惧簱鍐呴儴鍒嗛厤骞剁鐞嗙殑锛屽湪浣跨敤鏃讹紝璇峰悓姝ュ鐞嗗洖璋冪殑data锛涘闇�寮傛澶勭悊锛岃鎷疯礉璇ユ暟鎹�
+ 
+ @param player 鎾斁鍣ㄥ璞�
+ @param data 鎾斁搴撹В鐮佸嚭鐨勬暟鎹�
+ @param width 瑙嗛瀹藉害
+ @param height 瑙嗛楂樺害
+ */
+- (void)player:(EZPlayer *)player didDecodedData:(NSData *)data width:(NSInteger)width height:(NSInteger)height;
+
 @end
 
 /// 姝ょ被涓鸿悿鐭虫挱鏀惧櫒绫�
@@ -241,6 +254,13 @@
 - (BOOL)startVoiceTalk;
 
 /**
+ *  寮�濮婽TS瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *  閽堝浜嶯VR瀵硅浣跨敤
+ *  @return YES/NO
+ */
+- (BOOL)startVoiceTalkNeedVoiceChannel:(BOOL)needVoiceChannel;
+
+/**
  *  寮�濮婹os瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
  *
  *  @return YES/NO
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkParam.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkParam.h
deleted file mode 100644
index 4d8155a..0000000
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkParam.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-//  EZVideoTalkParam.h
-//  EZOpenSDK
-//
-//  Created by yuqian on 2020/3/14.
-//  Copyright 漏 2020 Hikvision. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface EZVideoTalkParam : NSObject
-
-@property (nonatomic, assign) int32_t iCltRole; /**< 蹇呭~    0 鍙戣捣 1 鎺ュ彈 鍙戣捣绔~鍐�0 鎺ュ彈绔~鍐�1 鎷掔粷涓�2 */
-@property (nonatomic, assign) int32_t iOtherCltType; /**< 閫夋嫨    鍙湁瀵圭鏄墜琛ㄧ闇�濉啓 */
-@property (nonatomic, assign) int32_t iCltType; /**< 蹇呭~    瀹㈡埛绔被鍨� */
-@property (nonatomic, strong) NSString *szStsAddr; /**< 蹇呭~    鏈嶅姟鍦板潃 */
-@property (nonatomic, assign) int32_t iStsPort; /**< 蹇呭~    鏈嶅姟绔彛 */
-@property (nonatomic, assign) int32_t iRoomId; /**< 閫夋嫨    闇�瑕佸姞鍏ユ埧闂村彿锛屽彧鏈夋帴鍙楃闇�瑕佸~鍐� */
-@property (nonatomic, assign) int32_t iReason; /**< 閫夋嫨  鍘熷洜 鎷掓帴鎺ュ惉101 鏃犱汉鎺ュ惉102 */
-
-@property (nonatomic, strong) NSString *szSelfId;  /**< 蹇呭~  鏍囪瘑Id */
-@property (nonatomic, strong) NSString *szOterId; /**< 閫夋嫨    鎵嬭〃搴忓垪鍙� */
-@property (nonatomic, strong) NSString *szAuthToken; /**< 蹇呭~    璁よ瘉token */
-
-@property (nonatomic, strong) NSString *m_szExtensionParas; /**< 閫夋嫨    鎵╁睍瀛楁淇℃伅 */
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h
index 9b02087..2cfce3d 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Headers/EZVideoTalkSDK.h
+++ b/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 閫忎紶娑堟伅锛�
+    濡傛灉鏄疎ZVideoTalkMessagePeerEnteredRoom鍜孍ZVideoTalkMessagePeerLeaveRoom娑堟伅锛宮sg鏄瘂@"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 鍚屾椂寮�鍚�
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
  */
-- (void)start;
+@property (nonatomic, assign) BOOL forceToSpeaker;
 
-/**
- 寮�濮嬪弻鍚戦煶瑙嗛瀵硅锛岃�楁椂鎺ュ彛
- */
-- (void)startWithType:(EZVideoTalkCaptureType)type;
 
-/**
- 鍋滄鍙屽悜闊宠棰戝璁�
- */
-- (void)stop;
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+/// @param videoParam 瑙嗛閫氳瘽涓棰戠殑鍙傛暟
+- (instancetype)initWithVideoParam:(EZMediaSessionVideoParam *)videoParam;
 
-/// 寮�鍚0闊筹紝鎺ユ敹鍒癊ZVideoTalkMessageStartInputData娑堟伅鍚庤皟鐢�
-/// @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:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+/// 寮�鍏宠繙绋嬪0闊筹紝榛樿寮�
+/// @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;
+
+/// 鑷繁鐨刢lientID
+- (int32_t)clientID;
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@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;
+
+/// 瑙f暎浼氳锛岃В鏁e悗锛屽叾浠栦笌浼氳�呬細鏀跺埌浼氳琚В鏁f秷鎭�
+- (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 鍔犲叆鐨勫鎴风鐨処D
+/// @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:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+#pragma mark - 褰曞埗鐩稿叧鎺ュ彛
+/// 寮�濮嬫埧闂磋棰戜細璁綍鍒�
+/// @param roomId 鎴块棿鍙�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param recUsers 闇�瑕佸綍鍒剁殑鎴块棿鍙備笌鑰卛d
+/// @param projectId 浜戝瓨鍌ㄩ」鐩甀D
+/// @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 涓绘寔浜虹敤鎴穒d锛堝紑鍙戣�呰嚜瀹氫箟鐨勭敤鎴穒d锛�
+/// @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
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Info.plist b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Info.plist
index d5b044b..7d15dcc 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Info.plist
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/DynamicSDK/EZOpenSDKFramework.framework/Info.plist
Binary files differ
diff --git "a/Demo/EZOpensdk_iOS_4.15.1_build20201104/README\050\351\233\206\346\210\220\345\277\205\350\257\273\051.txt" "b/Demo/EZOpensdk_iOS_4.15.1_build20201104/README\050\351\233\206\346\210\220\345\277\205\350\257\273\051.txt"
new file mode 100644
index 0000000..f3cef55
--- /dev/null
+++ "b/Demo/EZOpensdk_iOS_4.15.1_build20201104/README\050\351\233\206\346\210\220\345\277\205\350\257\273\051.txt"
@@ -0,0 +1,30 @@
+##############  Chinese  ##############
+
+### 鐩綍
+- EZOpenDynamicSDK锛氬姩鎬佸簱SDK銆�
+- EZOpenSDK:闈欐�佸簱SDK锛屼竴鑸紑鍙戣�呬娇鐢ㄦSDK鍗冲彲銆�
+- EZOpenSDKDemo锛氱ず渚嬩唬鐮佸伐绋嬶紝鎵撳紑宸ョ▼鍚庤寰楀皢EZOpenSDK鎷栧叆瀵瑰簲浣嶇疆銆�
+- README.text锛氶泦鎴愬繀璇绘枃妗o紝涓�浜涜鏄庡強娉ㄦ剰浜嬮」銆�
+- ReleaseNotes.text锛氬彂甯冭鏄庛��
+
+### 娉ㄦ剰浜嬮」
+1.濡備娇鐢ㄦ捣澶栫増鏈珼emo锛岃灏哖refixHeader.pch鏂囦欢涓畯瀹氫箟璁剧疆涓�1銆�
+2.璇峰姟蹇呮寜鐓у畼缃戠殑闆嗘垚姝ラ鏉ラ泦鎴愩�傚緢澶氬紑鍙戣�呭弽棣堥泦鎴愮紪璇戜笉閫氳繃鎴栬�呯▼搴忓穿婧冿紝閮芥槸鍥犱负鏈湅鏂囨。鎴栬�呬笉鎸夋楠ゆ搷浣滃鑷寸殑銆�
+3.闆嗘垚SDK鏃讹紝璇风‘淇漜om.hri.hpc.mobile.ios.player.metallib鍜宱penssl搴� 璧勬簮鏂囦欢宸茬粡鍔犲叆鍒颁綘鐨� XCode 椤圭洰宸ョ▼涓紝鍚﹀垯浼氬鑷寸▼搴忓穿婧冦��(openssl鐗堟湰鍙蜂负1.1.1锛屽鏋滈」鐩腑鏈夊叾浠栫増鏈殑openssl鎴栬�呭叾浠栦笁鏂筍DK涓唴缃簡鍏朵粬鐗堟湰鐨刼penssl锛屽彲鑳戒細鍦ㄤ娇鐢ㄦ煇浜涘姛鑳界殑鏃跺�欏鑷寸▼搴忓穿婧冿紝璇峰仛濂給penssl搴撶殑閫傞厤锛屾垨鑰呰皑鎱庡崌绾ZOpenSDK銆傚姩鎬佸簱涓凡缁忓唴缃畂penssl銆�)
+4.浼樺厛鍙傜収EZOpenSDKDemo涓殑鍔熻兘浠g爜锛屽畼缃戜腑鐨勪唬鐮佹洿鏂板彲鑳芥湁寤惰繜鎴栫己澶便��
+
+
+##############  English  ##############
+
+### Catalogue
+- EZOpenDynamicSDK:Dynamic SDK.
+- EZOpenSDK:Static library, general developers can use this SDK.
+- EZOpenSDKDemo:Sample code project. After opening the project, remember to drag the EZOpenSDK to the corresponding location.
+- README.text:Integration required document, some descriptions and precautions.
+- ReleaseNotes.text:Release notes.
+
+### Descriptions and precautions
+1.If you are using an overseas version demo, please set the macro definition in the PrefixHeader.pch file to 1.
+2.Please follow the integration steps on the official website. Many developers reported that the integration compilation failed or the program crashed because they did not read the document or did not follow the steps.
+3.When integrating the SDK, please ensure that the com.hri.hpc.mobile.ios.player.metallib and OpenSSL library resource file has been added to your Xcode project,, otherwise the program will crash.(The OpenSSL version number is 1.1.1. If there are other versions of OpenSSL in the project or other versions of OpenSSL are built in other third-party SDKs, the program may crash when using some functions. Please adapt the OpenSSL library or carefully upgrade the ezopensdk. OpenSSL is already built in the dynamic library.)
+4.The function code in ezopensdkdemo is preferred. The code update in the official website may be delayed or missing.
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/ReleaseNotes.txt b/Demo/EZOpensdk_iOS_4.15.1_build20201104/ReleaseNotes.txt
index c20fbf6..813a076 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/ReleaseNotes.txt
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/ReleaseNotes.txt
@@ -1,3 +1,32 @@
+EZOpenSDK V4.16.8.1 build20211012
+ for iOS 鏇存柊鍐呭锛�
+1.鎬ц兘浼樺寲
+
+EZOpenSDK V4.16.8 build20210823
+ for iOS 鏇存柊鍐呭锛�
+1.鏀寔瀵逛簯绔姞瀵嗘姤璀﹀浘鐗囩殑瑙e瘑
+2.鏀寔澶氫汉浼氳锛堝垵鐗堬級锛屽緟杩涗竴姝ヨˉ鍏ㄥ姛鑳藉拰浼樺寲鎺ュ彛
+3.淇閮ㄥ垎宕╂簝闂
+4.淇閮ㄥ垎璁惧SD鍗″綍鍍忔棤娉曞洖鏀鹃棶棰�
+
+EZOpenSDK V4.16.6 build20210610
+ for iOS 鏇存柊鍐呭锛�
+1.棰勮/鍥炴斁鏀寔鍏ㄩ摼璺姞瀵嗭紝鏇村畨鍏�
+2.淇鍐呴儴bugs.
+
+EZOpenSDK V4.16.1 build20210330
+ for iOS 鏇存柊鍐呭锛�
+1.鏀寔NVR瀵硅锛�
+2.鏀寔杈圭紭璁惧鎾斁锛�
+3.鍏煎鏂板浗鏍囪澶囷紱
+
+EZOpenSDK V4.16.0 build20210128
+ for iOS 鏇存柊鍐呭锛�
+1.鏀寔涓夋柟闊宠棰戦�氳瘽锛�
+2.浼樺寲閰嶇綉娴佺▼锛�
+3. 淇棰勮鍋剁幇宕╂簝闂
+
+
 EZOpenSDK V4.15.0 build20201019
  for iOS 鏇存柊鍐呭锛�
 1.鏀寔Qos瀵硅;
@@ -162,4 +191,4 @@
 13.淇敼璁剧疆甯冩挙闃叉帴鍙etDefence鍚嶇О锛屽悓鏃朵娇鍏跺吋瀹笽PC鍜岄潪IPC璁惧鐨勫竷鎾ら槻鍔熻兘锛�
 14.淇敼闇�瑕乿alidateCode鍙傛暟鐩稿叧鐨勬帴鍙e寘鎷細addDevice銆乨ecryptData銆乻etDeviceEncryptStatus绛夛紝淇敼validateCode鍚嶇О涓簐erifyCode锛屽浘鐗囪棰戝姞瑙e瘑鎺ュ彛锛坰etDeviceEncryptStatus锛変娇鐢ㄨ澶囬獙璇佺爜鏇夸唬鐭俊楠岃瘉鐮侊紝瑙e喅鐭俊楠岃瘉鐮佸彂閫佸お棰戠箒鐨勯棶棰�;
 15.鎷嗗垎EZOpenSDK鐨勫父閲忓畾涔変负EZConstants绫绘枃浠讹紝鏇村姞瀹屽杽EZErrorCode鐨勪俊鎭紱
-16.EZAlarm涓殑channelNo瀛楁鏀规垚cameraNo锛屼綔缁熶竴銆�
\ No newline at end of file
+16.EZAlarm涓殑channelNo瀛楁鏀规垚cameraNo锛屼綔缁熶竴銆�
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/com.hri.hpc.mobile.ios.player.metallib b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/com.hri.hpc.mobile.ios.player.metallib
new file mode 100644
index 0000000..53bacd9
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/com.hri.hpc.mobile.ios.player.metallib
Binary files differ
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZConstants.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZConstants.h
index 464bb8d..1d6ea09 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZConstants.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZConstants.h
@@ -143,9 +143,9 @@
 /* WiFi閰嶇疆璁惧鐘舵�� */
 typedef NS_ENUM(NSInteger, EZWifiConfigStatus) {
     DEVICE_WIFI_CONNECTING = 1,   //璁惧姝e湪杩炴帴WiFi
-    DEVICE_WIFI_CONNECTED = 2,    //璁惧杩炴帴WiFi鎴愬姛
+    DEVICE_WIFI_CONNECTED = 2,    //璁惧杩炴帴WiFi鎴愬姛  (宸插簾寮� v4.16.0)
     DEVICE_PLATFORM_REGISTED = 3, //璁惧娉ㄥ唽骞冲彴鎴愬姛
-    DEVICE_ACCOUNT_BINDED = 4     //璁惧宸茬粡缁戝畾璐︽埛
+    DEVICE_ACCOUNT_BINDED = 4     //璁惧宸茬粡缁戝畾璐︽埛  (宸插簾寮� v4.16.0)
 };
 
 /* 璁惧ptz鍛戒护 */
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZGlobalSDK.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZGlobalSDK.h
index e4c919a..e99331c 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZGlobalSDK.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZGlobalSDK.h
@@ -248,6 +248,12 @@
 + (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode;
 
 
+/// 鍛婅鍥剧墖瑙e瘑鏂规硶
+/// @param data 闇�瑕佽В瀵嗙殑鏁版嵁
+/// @param verifyCode 璁惧楠岃瘉鐮� 鎴� 骞冲彴杩斿洖鐨刢hecksum
+/// @param type 1:璁惧鍔犲瘑锛�2锛氬钩鍙板姞瀵�
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode encryptType:(NSInteger)type;
+
 #pragma mark - V3.2 鏂板鍔犳帴鍙�
 
 /**
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZOpenSDK.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZOpenSDK.h
index 3d2bbf0..daa4044 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZOpenSDK.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZOpenSDK.h
@@ -231,7 +231,12 @@
  */
 + (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode;
 
-
+/// @since 4.16.8
+/// 鍛婅鍥剧墖瑙e瘑鏂规硶
+/// @param data 闇�瑕佽В瀵嗙殑鏁版嵁
+/// @param verifyCode 璁惧楠岃瘉鐮� 鎴� 骞冲彴杩斿洖鐨刢hecksum
+/// @param type 1:璁惧鍔犲瘑锛�2锛氬钩鍙板姞瀵�
++ (NSData *)decryptData:(NSData *)data verifyCode:(NSString *)verifyCode encryptType:(NSInteger)type;
 #pragma mark - V3.2 鏂板鍔犳帴鍙�
 
 /**
@@ -814,4 +819,22 @@
                                 platFormId:(NSString *)platFormId
                                 completion:(void (^)(id records, NSError *error))completion;
 
+#pragma mark - v4.16 澶氭柟闊宠棰�
+/// 鍒涘缓浼氳淇℃伅
+/// @param password 鑷畾涔夊瘑鐮�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param limit 闄愬埗鏈�澶т汉鏁� 鏈�澶�100
+/// @param completion operation
++ (void)requestCallingMeetingInfo:(NSString *)password
+                         customId:(NSInteger)customId
+                            limit:(NSInteger)limit
+                       completion:(void (^)(int32_t roomId, NSString *vtmAddress ,NSString *clientid ,NSInteger customId,NSString *controlServerAddress,  NSError *error))completion;
+
+/// 鍔犲叆鏂硅幏鍙栦細璁俊鎭�
+/// @param roomId  鎴块棿鍙�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param completion operation
++ (void)requestCalledMeetingInfo:(NSString *)roomId
+                        customId:(NSInteger)customId
+                       completion:(void (^)(int32_t roomId, NSString *vtmAddress,NSString *clientid ,NSInteger customId, NSString *controlServerAddress,NSError *error))completion;
 @end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZPlayer.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZPlayer.h
index 84c5dd7..4513626 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZPlayer.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/EZPlayer.h
@@ -95,6 +95,19 @@
  */
 - (void)player:(EZPlayer *)player didReceivedDisplayHeight:(NSInteger)height displayWidth:(NSInteger)width;
 
+
+/**
+ 鎾斁杩囩▼涓� 鍥炶皟瑙g爜鏁版嵁
+ 閲嶈锛氳鍥炶皟浼氭瘮杈冮绻�(涓�绉掕嫢骞叉)锛屽悓鏃剁洿鎺ョ敱鎾斁搴撶嚎绋嬪洖璋冧笂鏉ワ紝璇峰嬁鍦ㄦ柟娉曚腑鍋氳�楁椂鎿嶄綔
+ 閲嶈锛氬洖璋冪殑鏁版嵁鐨勫唴瀛樻槸鐢辨挱鏀惧簱鍐呴儴鍒嗛厤骞剁鐞嗙殑锛屽湪浣跨敤鏃讹紝璇峰悓姝ュ鐞嗗洖璋冪殑data锛涘闇�寮傛澶勭悊锛岃鎷疯礉璇ユ暟鎹�
+ 
+ @param player 鎾斁鍣ㄥ璞�
+ @param data 鎾斁搴撹В鐮佸嚭鐨勬暟鎹�
+ @param width 瑙嗛瀹藉害
+ @param height 瑙嗛楂樺害
+ */
+- (void)player:(EZPlayer *)player didDecodedData:(NSData *)data width:(NSInteger)width height:(NSInteger)height;
+
 @end
 
 /// 姝ょ被涓鸿悿鐭虫挱鏀惧櫒绫�
@@ -241,6 +254,13 @@
 - (BOOL)startVoiceTalk;
 
 /**
+ *  寮�濮婽TS瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
+ *  閽堝浜嶯VR瀵硅浣跨敤
+ *  @return YES/NO
+ */
+- (BOOL)startVoiceTalkNeedVoiceChannel:(BOOL)needVoiceChannel;
+
+/**
  *  寮�濮婹os瀵硅锛屽紓姝ユ帴鍙o紝杩斿洖鍊煎彧鏄〃绀烘搷浣滄垚鍔燂紝涓嶄唬琛ㄦ挱鏀炬垚鍔�
  *
  *  @return YES/NO
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZAlarmInfo.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZAlarmInfo.h
index a8d783a..9e763ef 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZAlarmInfo.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZAlarmInfo.h
@@ -26,7 +26,19 @@
 /// 鍛婅绫诲瀷
 @property (nonatomic) NSInteger alarmType;
 /// 鏄惁鍔犲瘑
-@property (nonatomic) BOOL isEncrypt;
+//@property (nonatomic) BOOL isEncrypt;
+
+
+/// 鍛婅鍥剧墖鍔犲瘑淇℃伅 crypt 0-涓嶇‘瀹� 1-璁惧鍔犲瘑 2-骞冲彴鍔犲瘑
+/// 濡傛灉鏄�2锛岃〃鏄庢槸骞冲彴鍔犲瘑鐨勫浘鐗囷紝璇蜂娇鐢ㄤ笅闈㈢殑checksum浣滀负瑙e瘑绉橀挜瑙e瘑鍥剧墖
+/// 濡傛灉鏄�1锛岃〃鏄庢槸璁惧鍔犲瘑鐨勫浘鐗囷紝璇蜂娇鐢ㄨ澶囩殑楠岃瘉鐮佷綔涓鸿В瀵嗙閽ヨВ瀵嗗浘鐗�
+/// 濡傛灉鏄�0锛岃〃鏄庢湭鐭ョ殑鍔犲瘑淇℃伅锛岃閫氳繃涓婇潰鎶ヨ鍥剧墖URL锛坅larmPicUrl锛変腑鐨� isEncrypted 瀛楁锛屽垽鏂浘鐗囨槸 0锛氭湭鍔犲瘑 1锛氳澶囧姞瀵�
+/// 鎶ヨ鍥剧墖鐨刄RL绀轰緥锛�
+/// https://whpic.ys7.com:8009/HIK_1447836214_458BEBDAE4AB6a6f_525400286893421023815?isEncrypted=1&isCloudStored=0
+/// https://www.ys7.com:9090/api/cloud?method=download&fid=5ed92258-8e0f-11e5-8000-c19249a52dcf&deviceSerialNo=504242549&isEncrypted=0&isCloudStored=1
+@property (nonatomic) NSInteger crypt;
+/// 鍛婅鍥剧墖骞冲彴鍔犲瘑鏃剁殑瀵嗛挜
+@property (nonatomic, copy) NSString *checksum;
 /// 鏄惁宸茶
 @property (nonatomic) BOOL isRead;
 /// 瀛樺偍绫诲瀷锛�0-鏃犲瓨鍌紝1-钀ょ煶锛�2-鐧惧害锛�4-sd鍗″瓨鍌紝5-钀ょ煶鍜宻d鍗★紝6-鐧惧害鍜宻d鍗�
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZDeviceInfo.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZDeviceInfo.h
index 60a8460..9e29463 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZDeviceInfo.h
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZDeviceInfo.h
@@ -35,7 +35,7 @@
 @property (nonatomic) BOOL isEncrypt;
 /// 璁惧鐘舵�侊紝1-鍦ㄧ嚎锛�2-涓嶅湪绾�
 @property (nonatomic) NSInteger status;
-/// 鏄惁鏀寔瀵硅 0-涓嶆敮鎸佸璁诧紝1-鏀寔鍏ㄥ弻宸ュ璁诧紝3-鏀寔鍗婂弻宸ュ璁�
+/// 鏄惁鏀寔瀵硅 0-涓嶆敮鎸佸璁诧紝1-鏀寔鍏ㄥ弻宸ュ璁诧紝3-鏀寔鍗婂弻宸ュ璁诧紝4-鍚屾椂鏀寔鍏ㄥ弻宸ュ拰鍗婂弻宸�
 @property (nonatomic) NSInteger isSupportTalk;
 /// 鏄惁鏀寔浜戝彴鎺у埗
 @property (nonatomic) BOOL isSupportPTZ;
@@ -47,6 +47,8 @@
 @property (nonatomic) BOOL isSupportMirrorCenter;
 /// 鏄惁鏀寔澹版尝閰嶇綉
 @property (nonatomic) BOOL isSupportSoundWave;
+/// 鏄惁鏀寔鍊嶆暟鍥炴斁
+@property (nonatomic) BOOL isSupportPlaybackRate;
 /// 璁惧澶х被
 @property (nonatomic,copy) NSString *category;
 /// 娣诲姞鏃堕棿
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZBAVParam.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZBAVParam.h
new file mode 100644
index 0000000..8533523
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZBAVParam.h
@@ -0,0 +1,143 @@
+//
+//  EZBAVParam.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/27.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+/*
+ typedef struct SBavDevInfo
+ {
+     YS_INT8            m_szDevSerial[STREAM_DEV_SERIAL_LEN + 1];                //蹇呭~    璁惧搴忓垪鍙�
+     YS_UINT32        m_sChannel;                                                //蹇呭~    閫氶亾鍙�
+     YS_INT16        m_sDevStreamType;                                        //蹇呭~    璁惧涓诲瓙鐮佺被鍨�
+     YS_INT8            m_szAuthToken[STREAM_TOKEN_LEN + 1];                    //蹇呭~    璁よ瘉token
+ }SBavDevInfo;
+ */
+
+@interface EZBAVDevInfo : NSObject
+@property (nonatomic, strong) NSString *serial; /**< 蹇呭~    璁惧搴忓垪鍙� */
+@property (nonatomic, assign) int32_t m_iChannel;//蹇呭~    閫氶亾鍙�
+@property (nonatomic, assign) int32_t m_iDevStreamType;//蹇呭~    璁惧涓诲瓙鐮佺被鍨�
+@property (nonatomic, strong) NSString *m_szAuthToken; /**< 蹇呭~    璁よ瘉token */
+@end
+/*
+ typedef struct
+ {
+     YS_UINT32        m_iRoomId;                                                //蹇呭~    闇�瑕佸姞鍏ユ埧闂村彿
+     YS_UINT32        m_uClientId;                                            //蹇呭~    鍔犲叆鏂筩lientId
+     YS_INT8            m_szCustomId[CUSTOMID_LEN + 1];                            //閫夋嫨    鍔犲叆鏂硅嚜瀹氫箟Id
+     YS_INT8            m_szPassword[STREAM_TOKEN_LEN + 1];                        //蹇呭~    鎴块棿瀵嗙爜
+     YS_UINT8        m_iCltType;                                                //蹇呭~    瀹㈡埛绔被鍨�
+     YS_UINT16        m_iStsPort;                                                //蹇呭~    杞彂鏈嶅姟绔彛
+     YS_INT8            m_szStsAddr[CLIENT_STREAM_SVR_ADDR_LEN + 1];            //蹇呭~    杞彂鏈嶅姟鍦板潃
+     YS_UINT16        m_iVcPort;                                                //蹇呭~    浼氭帶鏈嶅姟绔彛
+     YS_INT8            m_szVcAddr[CLIENT_STREAM_SVR_ADDR_LEN + 1];                //蹇呭~    浼氭帶鏈嶅姟鍦板潃
+     YS_INT8            m_szFilePath[FLIEPATH + 1];                                //閫夋嫨  鍐欐枃浠剁殑璺緞
+     YS_INT8            m_szExtensionParas[CLIENT_STREAM_EXTENSION_LEN + 1];    //閫夋嫨    鎵╁睍瀛楁淇℃伅
+ }EZConferenceParam;
+ */
+@interface EZConferenceParam : NSObject
+@property (nonatomic, assign) int32_t m_iRoomId; /**<蹇呭~    闇�瑕佸姞鍏ユ埧闂村彿 */
+@property (nonatomic, assign) int32_t m_uClientId; /**< 蹇呭~    鍔犲叆鏂筩lientId */
+@property (nonatomic, strong) NSString *m_szCustomId;  /**< 閫夋嫨    鍔犲叆鏂硅嚜瀹氫箟Id */
+@property (nonatomic, strong) NSString *m_szPassword;  /**< 閫夋嫨     鎴块棿瀵嗙爜 */
+@property (nonatomic, assign) int32_t m_iCltType; /**< 蹇呭~    瀹㈡埛绔被鍨� */
+@property (nonatomic, strong) NSString *m_szVcAddr;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟鍦板潃
+@property (nonatomic, assign) int32_t m_iVcPort;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟绔痥鍙�
+@property (nonatomic, strong) NSString *m_szStsAddr; /**< 蹇呭~    杞彂鏈嶅姟鍦板潃 */
+@property (nonatomic, assign) int32_t m_iStsPort; /**< 蹇呭~    杞彂鏈嶅姟绔彛 */
+@property (nonatomic, strong) NSString *m_szExtensionParas; /**< 閫夋嫨    鎵╁睍瀛楁淇℃伅 */
+
+@end
+
+
+@interface EZBAVParam : NSObject
+
+@property (nonatomic, assign) int32_t m_iCltRole; /**< 蹇呭~    0 鍙戣捣 1 鎺ュ彈 鍙戣捣绔~鍐�0 鎺ュ彈绔~鍐�1 鎷掔粷涓�2 */
+@property (nonatomic, assign) int32_t m_iStreamType;/**< 蹇呴��    0 闊宠棰� 1 瀵硅 2 浼氳*/
+//@property (nonatomic, assign) int32_t m_szIsNpq;/**< 閫夋嫨  0 涓嶈蛋NPQ锛岃蛋TCP 1 鏄疦PQ锛岃蛋UDP */
+@property (nonatomic, assign) int32_t m_iCltType; /**< 蹇呭~    瀹㈡埛绔被鍨� */
+
+@property (nonatomic, strong) NSString *m_szVcAddr;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟鍦板潃
+@property (nonatomic, assign) int32_t m_iVcPort;//蹇呭~    瑙嗛浼氳蹇呭~ 浼氭帶鏈嶅姟绔痥鍙�
+@property (nonatomic, strong) NSString *m_szStsAddr; /**< 蹇呭~    杞彂鏈嶅姟鍦板潃 */
+@property (nonatomic, assign) int32_t m_iStsPort; /**< 蹇呭~    杞彂鏈嶅姟绔彛 */
+
+@property (nonatomic, assign) int32_t m_iRoomId; /**< 閫夋嫨    闇�瑕佸姞鍏ユ埧闂村彿锛屽彧鏈夋帴鍙楃闇�瑕佸~鍐� */
+@property (nonatomic, assign) int32_t m_iClientId; //閫夊~  鍙戣捣or鍔犲叆鑰呯殑id
+@property (nonatomic, strong) NSString *m_szSelfId;  /**< 蹇呭~  鏍囪瘑Id */
+@property (nonatomic, assign) int32_t m_iReason; /**< 閫夋嫨  鍘熷洜 鎷掓帴鎺ュ惉101 鏃犱汉鎺ュ惉102 */
+
+//@property (nonatomic, assign) int32_t m_iMaxBitrate;/**< 蹇呭~    鐮佺巼鍙樺寲鑼冨洿鐨勬渶澶у�� */
+//
+//@property (nonatomic, assign) int32_t m_iMinBitrate;/**< 蹇呭~    鐮佺巼鍙樺寲鑼冨洿鐨勬渶灏忓�� */
+
+//@property (nonatomic, assign) int32_t m_iType;/**< 閫夋嫨  鍙傝�傿AV_QOS_TYPE */
+//
+//@property (nonatomic, assign) int32_t m_iVideo;/**< 閫夋嫨  鏄惁寮�鍚棰慟os 1 寮�鍚� 0 涓嶅紑鍚� */
+//
+//@property (nonatomic, assign) int32_t m_iAudio;/**< 閫夋嫨  鏄惁寮�鍚煶棰慟os 1 寮�鍚� 0 涓嶅紑鍚� */
+
+@property (nonatomic, assign) int32_t m_iAuthType; /**< 蹇呭~    璁よ瘉鏂瑰紡 */
+@property (nonatomic, strong) NSString *m_szAuthToken; /**< 蹇呭~    璁よ瘉token */
+
+
+
+@property (nonatomic, assign) int32_t m_iOtherCltType; /**< 閫夋嫨    鍙湁瀵圭鏄墜琛ㄧ闇�濉啓 */
+@property (nonatomic, strong) NSString *m_szOterId; /**< 閫夋嫨    鍙湁瀵圭鏄墜琛ㄧ闇�濉啓 */
+@property (nonatomic, assign) int32_t m_iChannel;//閫夊~  涓夋柟闊宠棰戞椂锛孖PC璁惧闇�瑕佸~鍐�
+@property (nonatomic, assign) int32_t m_iDevStreamType;//閫夊~  璁惧涓诲瓙鐮佹祦
+
+@property (nonatomic, strong) NSString *m_szExtensionParas; /**< 閫夋嫨    鎵╁睍瀛楁淇℃伅 */
+
+
+@end
+
+
+
+/// 涓庝細鑰呬俊鎭�
+@interface EZBAVParticipantsInfo : NSObject
+@property (nonatomic, assign) uint32_t m_uRoomId;
+@property (nonatomic, assign) uint32_t m_uClientId;
+@property (nonatomic, strong) NSString *m_sCustomId;
+@property (nonatomic, strong) NSString *m_szUserName;
+@property (nonatomic, assign) int8_t audioState;// 澹伴煶鍚敤鐘舵�� 0-鍏抽棴 1-鍚敤
+@property (nonatomic, assign) int8_t videoState;// 瑙嗛鍚敤鐘舵�� 0-鍏抽棴 1-涓绘祦 5-涓诲瓙娴�
+@property (nonatomic, assign) int8_t shareState;// 灞忓箷鍏变韩鍚敤鐘舵�� 0-鍏抽棴 1-鍚敤
+@property (nonatomic, assign) int8_t netState;//缃戠粶鐘舵��
+
+@end
+
+
+@interface EZBAVParticipantVolume : NSObject
+@property (nonatomic, assign) uint32_t m_uClientId;
+@property (nonatomic, assign) uint8_t m_sVolume;    //闊抽噺寮哄害0-10 10涓烘渶寮� 0涓烘渶寮�
+@end
+
+
+extern int32_t const EZBAVMessageRoomCreated;
+extern int32_t const EZBAVMessagePeerEnteredRoom;
+extern int32_t const EZBAVMessagePeerLeaveRoom;
+extern int32_t const EZBAVMessageStartInputData;
+//extern int32_t const EZBAVMessageOtherDisconnect;
+extern int32_t const EZBAVMessageTransferData;
+//extern int32_t const EZBAVMessageClientInfo;//鍏朵粬涓庝細瀹㈡埛绔俊鎭�
+extern int32_t const EZBAVMessageClientVolume;//鍏朵粬涓庝細瀹㈡埛绔煶閲�
+extern int32_t const EZBAVMessageClientAudioAvailable;
+extern int32_t const EZBAVMessageClientVideoAvailable;
+extern int32_t const EZBAVMessageNetworkQuality;
+extern int32_t const EZBAVMessageClientShareAvailable;
+extern int32_t const EZBAVMessageJoinRoomOK;
+extern int32_t const EZBAVMessageForcedQuit;
+
+extern int32_t const EZBAVForcedQuitReasonRepeatJoin;//宸插湪鍏朵粬鍦版柟鍔犲叆鎴块棿
+extern int32_t const EZBAVForcedQuitReasonMovedOut;//琚鐞嗗憳绉诲嚭鎴块棿
+extern int32_t const EZBAVForcedQuitReasonRoomDissolved;//鎴块棿瑙f暎
+
+typedef void(^EZAudioOpenResultBlock)(NSInteger ret);
+typedef void(^EZScreenShareResultBlock)(NSInteger ret);
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZConferenceClient.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZConferenceClient.h
new file mode 100644
index 0000000..bf5c57a
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZConferenceClient.h
@@ -0,0 +1,201 @@
+//
+//  EZBAVClient.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/26.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#import "EZBAVParam.h"
+#import "EZMediaSessionDefines.h"
+#import "EZVideoTalkView.h"
+
+
+
+@class EZConferenceClient;
+@class EZMediaSessionVideoParam;
+
+@protocol EZConferenceClientDelegate<NSObject>
+
+
+/// 閿欒鍥炶皟
+/// @param client client
+/// @param errorCode 鍑洪敊鐨勯敊璇爜
+- (void)bavClient:(EZConferenceClient *)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 闄勫姞淇℃伅锛�
+    濡傛灉鏄疎ZBAVMessagePeerEnteredRoom锛宮sg鏄疎ZBAVParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId銆乵_szUserName瀛楁鏈夋晥
+    濡傛灉鏄疎ZBAVMessagePeerLeaveRoom娑堟伅锛宮sg鏄疎ZBAVParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId瀛楁鏈夋晥
+    濡傛灉鏄疎ZBAVMessageClientVolume娑堟伅锛宮sg鏄疎ZBAVParticipantVolume瀵硅薄
+    濡傛灉娑堟伅鏄� EZBAVMessageTransferData msg鏄� msg鏄瓧绗︿覆 @"瀹為檯鐨勯�忎紶娑堟伅"
+    濡傛灉娑堟伅鏄疎ZBAVMessageClientAudioAvailable锛宮sg鏄疎ZBAVParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜宎udioState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageClientVideoAvailable 锛宮sg鏄疎ZBAVParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜寁ideoState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageNetworkQuality 锛宮sg鏄疎ZBAVParticipantsInfo瀵硅薄锛屼絾鏄彧鏈塵_uClientId鍜宯etState瀛楁鏈夋晥
+    濡傛灉娑堟伅鏄疎ZBAVMessageJoinRoomOK 锛宮sg鏄痭il
+    濡傛灉娑堟伅鏄疎ZBAVMessageForcedQuit 锛宮sg鏄疦SNumber锛屾瘮濡侤(EZBAVForcedQuitReasonMovedOut)
+ 
+ */
+- (void)bavClient:(EZConferenceClient *)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+
+@optional
+
+///**
+// 鍥炶皟娑堟伅 bavclient log鍥炶皟
+//
+// @param client client
+// @param msg 閫忎紶娑堟伅
+// */
+//- (void)bavClient:(EZVideoTalk *)client didReceivedBavClientLogMsg:(NSString*)msg;
+
+/**
+ 鏄剧ず鍥炶皟锛岄娆$敾闈㈠嚭鏉ヤ互鍙婂悗缁敾闈㈠昂瀵稿彂鐢熷彉鍖栨椂鍥炶皟
+
+ @param client client
+ @param width 鐢婚潰瀹藉害
+ @param height 鐢婚潰楂樺害
+ */
+- (void)bavClient:(EZConferenceClient *)client didDisplayWidth:(int32_t)width height:(int32_t)height ofRemoteClient:(int)clientID;
+
+/**
+ 鎾斁鍗¢】
+ 
+ @param client client
+ @param delayTime 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZConferenceClient *)client playDelayTime:(int32_t)delayTime ofRemoteClient:(int)clientID;
+
+/**
+ 鎾斁鍗¢】缁熻
+ 
+ @param client client
+ @param delayTimeStat 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZConferenceClient *)client playDelayTimeStatistics:(double)delayTimeStat ofRemoteClient:(int)clientID;
+
+@end
+
+@interface EZConferenceClient : NSObject
+
+@property (nonatomic, weak) id<EZConferenceClientDelegate> delegate;
+@property (nonatomic, assign, readonly) int32_t roomID;
+@property (nonatomic, assign, readonly) int32_t clientID;
+
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+/// @param videoParam 瑙嗛閫氳瘽涓棰戠殑鍙傛暟
+- (instancetype)initWithVideoParam:(EZMediaSessionVideoParam *)videoParam;
+
+
+/// 鍔犲叆浼氳锛堟柊鎺ュ彛锛�
+/// @param param 鍙傛暟
+- (int32_t)enterRoom:(EZConferenceParam *)param;
+
+
+/// 閫�鍑轰細璁�
+- (int32_t)leaveRoom;
+
+
+/// 瑙f暎浼氳锛岃В鏁e悗锛屽叾浠栦笌浼氳�呬細鏀跺埌浼氳琚В鏁f秷鎭�
+- (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 block 涓荤嚎绋嬪洖璋冪粨鏋�
+- (void)enableScreenShare:(BOOL)enable andName:(NSString *)name withResultBlock:(EZScreenShareResultBlock)block;
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @param localWin 绐楀彛window
+- (void)setLocalWindow:(EZVideoTalkView *)localWin;
+
+
+
+/// 璁㈤槄浼氬満涓殑鏌愪釜鐢ㄦ埛鐨勯煶瑙嗛娴�
+/// @param clientIDs 浼氬満涓殑鐢ㄦ埛
+/// @param type  1瑙嗛 2闊抽 4闊宠棰�
+/// @param subOrUnsub  YES:璁㈤槄   NO:鍙栨秷璁㈤槄
+//- (int32_t)subscribeStreamOfClients:(NSArray *)clientIDs withStreamType:(NSInteger)type subscribe:(BOOL)subOrUnsub;
+
+/// 璁剧疆杩滅▼绐楀彛锛�1.蹇呴』鍦ㄦ嬁鍒拌繙绔鎴风鍔犲叆鐨勬秷鎭悗璁剧疆锛�2.濡傛灉璁剧疆闈炵┖瀵硅薄view锛屽繀椤诲湪涓荤嚎绋嬭皟鐢紙濡傛灉鏄缃垚nil锛屽彲浠ヤ笉鍦ㄤ富绾跨▼璋冪敤锛�
+/// @param window 鎾斁绐楀彛
+/// @param clientID 鍔犲叆鐨勫鎴风鐨処D
+/// @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 dev 璁惧淇℃伅
+- (int32_t)inviteDev:(EZBAVDevInfo *)dev;
+
+
+#pragma 闄勫姞鎺ュ彛
+
+/// 寮�鍏充細璁腑鏌愪釜涓庝細鑰呯殑澹伴煶锛岄粯璁ゅ紑
+/// @param open YES:寮�锛孨O:鍏�
+- (int32_t)soundCtrl:(BOOL)open forClient:(int32_t)clientID;
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+/// 寮傛鑾峰彇鏈湴鎶撳浘
+/// @param block 鎶撳浘鎴愬姛鍥炶皟锛屽け璐mage涓簄il
+//- (void)localScreenShotWithBlock:(void (^)(UIImage *image))block;
+
+/// 鑾峰彇杩滅鎶撳浘
+/// @param quality 鍘嬬缉璐ㄩ噺 0 ~ 100
+//- (UIImage *)remoteScreenShotWithQuality:(int)quality;
+
+/// 鏈湴褰曞埗
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+- (BOOL)startLocalVideoRecordWithPath:(NSString *)path;
+
+/// 鍋滄鏈湴褰曞埗
+- (BOOL)stopLocalVideoRecord;
+
+/// 寮�濮嬭繙绔綍鍒� mp4
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+- (BOOL)startRemoteVideoRecordWithPath:(NSString *)path  forClient:(int32_t)clientID;
+
+
+/// 鍋滄杩滅褰曞埗
+- (BOOL)stopRemoteVideoRecordForClient:(int32_t)clientID;
+
+
+/// 鍙戦�侀�忎紶娑堟伅鎺ュ彛锛屽悓姝ユ帴鍙o紝鍙兘鑰楁椂
+/// @param msg 娑堟伅鍐呭锛屾瘮濡俲son鏁版嵁
+- (int)sendTransferMsg:(NSString *)msg;
+
+@end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSession.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSession.h
new file mode 100644
index 0000000..b1fec6b
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSession.h
@@ -0,0 +1,43 @@
+//
+//  EZMediaSession.h
+//  H264 Encode and Decode
+//
+//  Created by kanhaiping on 2018/6/21.
+//  Copyright 漏 2018骞� AJB. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "EZMediaSessionDefines.h"
+
+@class UIImage;
+@class EZMediaSession;
+@class EZMediaSessionVideoParam;
+
+@protocol EZMediaSessionDelegate <NSObject>
+
+- (void)mediaSession:(EZMediaSession *)session didReceivedEncodedData:(NSData *)mediaData pts:(int64_t)ptsInMS type:(EZMediaCaptureSessionType)type;
+
+- (void)mediaSession:(EZMediaSession *)session didReceivedError:(NSInteger)error;
+
+@end
+
+
+@interface EZMediaSession : NSObject
+@property (nonatomic, weak) id displayLayer;//鍙�夌殑棰勮瑙嗗浘锛岃浼犲叆AVSampleBufferDisplayLayer
+@property (nonatomic, assign, readonly) BOOL isAudioEnabled;
+
+- (instancetype)initWithVideoParam:(EZMediaSessionVideoParam *)videoParam delegate:(id<EZMediaSessionDelegate>)delegate;
+- (NSInteger)enableVideoCapture:(BOOL)enable;
+- (NSInteger)enableAudioCatpure:(BOOL)enable;
+- (NSInteger)enableThumbnailCatpure:(BOOL)enable;
+- (NSInteger)enableScreenShareCapture:(BOOL)enable;
+- (void)selectBackCamera:(BOOL)backCameraSelected;
+- (NSInteger)startEncoding;
+- (NSInteger)setMaxBPS:(int)maxBPS;
+- (void)forceNextKeyFrame;
+- (NSInteger)stop;
+- (void)localScreenShotWithBlock:(void (^)(UIImage *image))block;
+- (BOOL) startLocalRecord:(NSString*)path;
+- (BOOL) stopLocalRecord;
+
+@end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSessionDefines.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSessionDefines.h
new file mode 100644
index 0000000..767ca74
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSessionDefines.h
@@ -0,0 +1,95 @@
+//
+//  EZMediaSessionDefines.h
+//  H264 Encode and Decode
+//
+//  Created by kanhaiping on 2018/6/22.
+//  Copyright 漏 2018骞� AJB. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+#define EZMediaSessionEncodeResolutionRatioHigh  1  //鍒嗚鲸鐜� 1锛�480*480 0锛�320*320
+#define EZMediaSessionDstVideoFPS (15)
+#define EZMediaSessionDstVideoMaxKeyFrameInterval (300)//鍗曚綅绉�
+
+#define EZMediaSessionSmallStreamWidth (320)
+#define EZMediaSessionSmallStreamHeight (320)
+
+#define EZMediaSessionDstVideoAverageBitRate480x480 (4 * 128 * 1024)//鍗曚綅 bps  //averageBPS
+#define EZMediaSessionDstVideoDataRateLimits480x480 (6 * 128 * 1024)//鍗曚綅 bps  //maxBPS
+#define EZMediaSessionDstVideoAverageBitRate320x320 (4 * 128 * 1024 * 5 / 8)//鍗曚綅 bps  //averageBPS
+#define EZMediaSessionDstVideoDataRateLimits320x320 (6 * 128 * 1024 * 5 / 8)//鍗曚綅 bps  //maxBPS
+
+
+typedef NS_OPTIONS(NSUInteger, EZMediaCaptureSessionType) {
+    EZMediaSessionCaptureNone = 1 << 0,
+    EZMediaSessionCaptureVideoType = 1 << 1,
+    EZMediaSessionCaptureAudioType = 1 << 2,
+    EZMediaSessionCaptureThumbnailType = 1 << 3,
+    EZMediaSessionCaptureShareScreenType = 1 << 4,
+
+};
+
+typedef NS_ENUM(NSUInteger, EZMediaSessionErrorBase) {
+    EZMediaSessionErrorUnknowError = 9000,
+    EZMediaSessionErrorNotReadyToSendData,
+    EZMediaSessionErrorCallSeqError,
+    EZMediaSessionErrorDuplicated,
+    EZMediaSessionErrorBaseAudioCapture = 10000,
+    EZMediaSessionErrorBaseVideoCapture = 20000,
+    EZMediaSessionErrorBaseAudioEncode = 30000,
+    EZMediaSessionErrorBaseVideoEncode = 40000,
+    EZMediaSessionErrorBaseStreamClient = 50000,
+    EZMediaSessionErrorBasePlayer = 60000,
+};
+
+typedef NS_ENUM(NSUInteger, EZAudioRecorderError) {
+    EZAudioRecorderErrorUnknown = EZMediaSessionErrorBaseAudioCapture,
+    EZAudioRecorderErrorInitError = 10100,
+    EZAudioRecorderErrorUnableToCreateSample,
+    EZAudioRecorderErrorStateError,
+    EZAudioRecorderErrorAuthorizeFailed = 10152,
+    EZAudioRecorderErrorStopError = 10200,
+};
+
+typedef NS_ENUM(NSUInteger, EZMediaCaptureError) {
+    EZMediaCaptureErrorUnknown = EZMediaSessionErrorBaseVideoCapture,
+    EZMediaCaptureErrorInitError = 20100,
+    EZMediaCaptureErrorAuthorizeFailed = 20153,
+    EZMediaCaptureErrorSwitchCameraError = 20200,
+    EZMediaCaptureErrorCroppedError = 20300,
+    EZMediaCaptureErrorRenderError = 20400,
+    EZMediaCaptureErrorScreenStartError = 20500,
+    EZMediaCaptureErrorScreenStopError,
+    EZMediaCaptureErrorScreenRecordError,
+    EZMediaCaptureErrorUnsupport,
+};
+
+typedef NS_ENUM(NSUInteger, EZAudioAACEncoderError) {
+    EZAudioAACEncoderErrorUnknown = EZMediaSessionErrorBaseAudioEncode,
+    EZAudioAACEncoderErrorFailToInitConverter = 30100,
+    EZAudioAACEncoderErrorFailToGetDataBuffer,
+    EZAudioAACEncoderErrorFailToEncodeBuffer,
+};
+
+typedef NS_ENUM(NSUInteger, EZVideoH264EncoderError) {
+    EZVideoH264EncoderErrorUnknown = EZMediaSessionErrorBaseVideoEncode,
+    EZVideoH264EncoderErrorInitFailed = 40100,
+    EZVideoH264EncoderErrorInvalidSample,
+    EZVideoH264EncoderErrorSampleNotReady,
+    EZVideoH264EncoderErrorNotRunning,
+    EZVideoH264EncoderErrorSetMaxBPSFailed,
+    EZVideoH264EncoderErrorSetAverageBPSFailed,
+    EZVideoH264EncoderErrorEncodeFailed = 40200,
+};
+
+typedef NS_ENUM(NSUInteger, EZBAVStreamClientError) {
+    EZBAVStreamClientErrorUnknow = EZMediaSessionErrorBaseStreamClient,
+    EZBAVStreamClientErrorAudioEnableNotAllowed = EZMediaSessionErrorBaseStreamClient + 9000,
+    EZBAVStreamClientErrorShareEnableNotAllowed,
+
+};
+
+@interface EZMediaSessionDefines : NSObject
+
+@end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSessionVideoParam.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSessionVideoParam.h
new file mode 100644
index 0000000..47573b8
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZMediaSessionVideoParam.h
@@ -0,0 +1,32 @@
+//
+//  EZMediaSessionVideoParam.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/7/13.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <AVFoundation/AVFoundation.h>
+
+@interface EZMediaSessionVideoParam : NSObject
+
+
+/// 鎽勫儚澶撮噰闆嗛噰闆嗙敾闈㈢殑榛樿璁剧疆锛屾瘮濡侫VCaptureSessionPreset1280x720
+@property (nonatomic, strong) AVCaptureSessionPreset resolutionPreset;
+
+/// 鏈�缁堣緭鍑虹殑鐢婚潰鐨勫
+@property (nonatomic, assign) NSInteger pixelWidth;
+
+/// 鏈�缁堣緭鍑虹殑鐢婚潰鐨勯珮
+@property (nonatomic, assign) NSInteger pixelHeigth;
+
+/// 浼犲叆 AVCaptureVideoOrientation锛岄粯璁ょ珫灞�
+@property (nonatomic, assign) NSInteger videoOrientation;
+
+/// I甯ч棿闅� 榛樿4绉�
+@property (nonatomic, assign) NSInteger encodeKeyFrameInterval;
+
++ (EZMediaSessionVideoParam *)screenShareParam;
+
+@end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalk.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalk.h
new file mode 100644
index 0000000..db22565
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalk.h
@@ -0,0 +1,178 @@
+//
+//  EZBAVClient.h
+//  EZBAVClient
+//
+//  Created by kanhaiping on 2018/6/26.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <UIKit/UIKit.h>
+#import "EZBAVParam.h"
+#import "EZMediaSessionDefines.h"
+#import "EZVideoTalkView.h"
+
+@class EZVideoTalk;
+@class EZMediaSessionVideoParam;
+
+@protocol EZVideoTalkDelegate<NSObject>
+
+@required
+/// 閿欒鍥炶皟
+/// @param client client
+/// @param errorCode 鍑洪敊鐨勯敊璇爜
+- (void)bavClient:(EZVideoTalk *)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 闄勫姞淇℃伅锛�
+    濡傛灉鏄疎ZBAVMessagePeerEnteredRoom銆丒ZBAVMessagePeerLeaveRoom娑堟伅锛宮sg鏄疎ZBAVParticipantsInfo瀵硅薄
+    濡傛灉娑堟伅鏄� EZBAVMessageTransferData msg鏄� msg鏄瓧绗︿覆 @"瀹為檯鐨勯�忎紶娑堟伅"
+ */
+- (void)bavClient:(EZVideoTalk *)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+
+@optional
+///**
+// 鍥炶皟娑堟伅 bavclient log鍥炶皟
+//
+// @param client client
+// @param msg 閫忎紶娑堟伅
+// */
+//- (void)bavClient:(EZVideoTalk *)client didReceivedBavClientLogMsg:(NSString*)msg;
+
+/**
+ 鏄剧ず鍥炶皟锛岄娆$敾闈㈠嚭鏉ヤ互鍙婂悗缁敾闈㈠昂瀵稿彂鐢熷彉鍖栨椂鍥炶皟
+
+ @param client client
+ @param width 鐢婚潰瀹藉害
+ @param height 鐢婚潰楂樺害
+ */
+- (void)bavClient:(EZVideoTalk *)client didDisplayWidth:(int32_t)width height:(int32_t)height;
+
+/**
+ 鎾斁鍗¢】
+ 
+ @param client client
+ @param delayTime 鍗¢】鏃堕棿
+ */
+- (void)bavClient:(EZVideoTalk *)client playDelayTime:(int32_t)delayTime;
+
+///**
+// 鎾斁鍗¢】缁熻
+//
+// @param client client
+// @param delayTimeStat 鍗¢】鏃堕棿
+// */
+//- (void)bavClient:(EZVideoTalk *)client playDelayTimeStatistics:(double)delayTimeStat;
+
+@end
+
+
+
+/// 鍙屽悜闊宠棰戦�氳瘽绫�
+/// 1.涓诲姩鍛煎彨
+/// A.鍙戣捣
+/// - init
+/// - enableCapture
+/// - start:param  role=0 reason=0 roomid=0
+/// B.閫氳瘽缁撴潫 璋冪敤 stop
+/// C.绛夊緟瀵规柟杩囩▼涓寕鏂� 璋冪敤stop
+/// 2.琚姩鏀跺埌鍛煎彨
+/// - init
+/// - enableCapture
+/// 灞曠ず鎺ュ惉鐣岄潰
+/// A.濡傛灉鎺ュ惉 璋冪敤 start锛歱aram role=1 reason=0 roomid=鏀跺埌鐨剅oomid 鎺ュ惉瀹岄�氳瘽涓寕鏂皟鐢╯top
+/// B.濡傛灉涓诲姩鎷掓帴 璋冪敤 start锛歱aram role=2 reason=101 roomid=鏀跺埌鐨剅oomid 鎷掓帴瀹屾垚鍚庣珛椹皟鐢╯top
+/// C.濡傛灉鏃犱汉鎺ュ惉 璋冪敤 start锛歱aram role=2 reason=102 roomid=鏀跺埌鐨剅oomid 瀹屾垚鍚庣珛椹皟鐢╯top
+@interface EZVideoTalk : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkDelegate> delegate;
+@property (nonatomic, assign, readonly) int32_t roomID;
+
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+/// @param videoParam 瑙嗛閫氳瘽涓棰戠殑鍙傛暟
+- (instancetype)initWithVideoParam:(EZMediaSessionVideoParam *)videoParam;
+
+
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @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;
+
+#pragma 闄勫姞鎺ュ彛
+
+/// 鍒囨崲瀵硅鏃朵娇鐢ㄧ殑鎽勫儚澶达紝榛樿閲囩敤鍓嶇疆 鍚屾鎺ュ彛
+/// @param backCameraSelected YES:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+/// 寮�鍏宠繙绋嬪0闊筹紝榛樿寮�
+/// @param open 寮�鍚�
+- (int32_t)enableRemoteSound:(BOOL)open;
+/// 寮傛鑾峰彇鏈湴鎶撳浘
+/// @param block 鎶撳浘鎴愬姛鍥炶皟锛屽け璐mage涓簄il
+//- (void)localScreenShotWithBlock:(void (^)(UIImage *image))block;
+
+/// 鑾峰彇杩滅鎶撳浘
+/// @param quality 鍘嬬缉璐ㄩ噺 0 ~ 100
+//- (UIImage *)remoteScreenShotWithQuality:(int)quality;
+
+/// 鏈湴褰曞埗
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+//- (BOOL)startLocalVideoRecordWithPath:(NSString *)path;
+
+/// 鍋滄鏈湴褰曞埗
+//- (BOOL)stopLocalVideoRecord;
+
+/// 寮�濮嬭繙绔綍鍒� mp4
+/// @param path 鍐欏叆鐨勬矙鐩掕矾寰�
+//- (BOOL)startRemoteVideoRecordWithPath:(NSString *)path  forClient:(int32_t)clientID;
+
+
+/// 鍋滄杩滅褰曞埗
+//- (BOOL)stopRemoteVideoRecordForClient:(int32_t)clientID;
+
+
+/// 鍙戦�侀�忎紶娑堟伅鎺ュ彛锛屽悓姝ユ帴鍙o紝鍙兘鑰楁椂
+/// @param msg 娑堟伅鍐呭锛屾瘮濡俲son鏁版嵁
+- (int)sendTransferMsg:(NSString *)msg;
+
+@end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkGlobal.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkGlobal.h
new file mode 100644
index 0000000..ab4c305
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkGlobal.h
@@ -0,0 +1,37 @@
+//
+//  EZVideoTalkGlobal.h
+//  EZVideoTalk
+//
+//  Created by yuqian on 2018/9/12.
+//  Copyright 漏 2018骞� hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+@interface EZVideoTalkGlobal : NSObject
+
+/**
+ 鏃ュ織璁剧疆
+ 
+ @param enable 鏄惁鎵撳嵃鏃ュ織
+ @param logCallback 鏃ュ織鍥炶皟锛屼笂灞傝嚜瀹氫箟澶勭悊
+ */
++ (void)setDebugLogEnable:(BOOL)enable withLogCallback:(void(^)(NSString *logStr))logCallback;
+
+
+/**
+ 鎵撳紑瀵圭鐮佹祦鎶撳彇
+
+ @param enble 鏄惁鎵撳紑
+ */
++(void)setDebugVideoLog:(BOOL)enble;
+
+
+/**
+ 鑾峰彇sdk鐗堟湰淇℃伅
+
+ @return 鐗堟湰鍙�
+ */
++ (NSString*)getVersion;
+
+@end
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkSDK.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkSDK.h
new file mode 100644
index 0000000..2cfce3d
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkSDK.h
@@ -0,0 +1,257 @@
+//
+//  EZVideoTalkSDK.h
+//  EZOpenSDK
+//
+//  Created by yuqian on 2020/3/14.
+//  Copyright 漏 2020 Hikvision. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+#import "EZBAVParam.h"
+
+
+NS_ASSUME_NONNULL_BEGIN
+
+
+@class EZVideoTalkSDK, EZMediaSessionVideoParam, EZVideoTalkView, EZBAVParam, EZConferenceParam;
+
+@protocol EZVideoTalkSDKDelegate<NSObject>
+
+- (void)videoTalk:(id)client didReceivedError:(int32_t)errorCode;
+
+/**
+ 鍥炶皟娑堟伅
+
+ @param client client
+ @param messageCode 娑堟伅鐮� 鍙傝EZBAVMessage
+ @param msg 閫忎紶娑堟伅锛�
+    濡傛灉鏄疎ZVideoTalkMessagePeerEnteredRoom鍜孍ZVideoTalkMessagePeerLeaveRoom娑堟伅锛宮sg鏄瘂@"clientID":@(9527),@"clientName":@"寮犱笁"}
+        濡傛灉娑堟伅鏄� EZVideoTalkMessageTransferData msg鏄� msg鏄瘂@"content":@"瀹為檯鐨勯�忎紶娑堟伅"}
+ */
+- (void)videoTalk:(id)client didReceivedMessage:(int32_t)messageCode msg:(id)msg;
+
+@end
+
+@interface EZVideoTalkSDK : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkSDKDelegate> delegate;
+
+/// 鍔犲叆鐨勬埧闂村彿
+- (int32_t)roomID;
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@property (nonatomic, assign) BOOL forceToSpeaker;
+
+
+/// 鍒濆鍖栬棰戦�氳瘽SDK瀵硅薄
+/// @param videoParam 瑙嗛閫氳瘽涓棰戠殑鍙傛暟
+- (instancetype)initWithVideoParam:(EZMediaSessionVideoParam *)videoParam;
+
+
+/// 璁剧疆鏈湴鐨勯瑙堢獥鍙�
+/// @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:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+
+/// 寮�鍏宠繙绋嬪0闊筹紝榛樿寮�
+/// @param open 寮�鍚�
+- (int32_t)enableRemoteSound:(BOOL)open;
+
+#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
+
+
+@interface EZConfOpenSDK : NSObject
+
+@property (nonatomic, weak) id<EZVideoTalkSDKDelegate> delegate;
+
+/// 鍔犲叆鐨勬埧闂村彿
+- (int32_t)roomID;
+
+/// 鑷繁鐨刢lientID
+- (int32_t)clientID;
+
+/**
+ 瀵硅鏃讹紝寮哄埗閲囩敤鎵0鍣ㄦ挱鏀惧0闊筹紝榛樿涓篩ES
+ */
+@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;
+
+/// 瑙f暎浼氳锛岃В鏁e悗锛屽叾浠栦笌浼氳�呬細鏀跺埌浼氳琚В鏁f秷鎭�
+- (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 鍔犲叆鐨勫鎴风鐨処D
+/// @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:閫夋嫨鍚庣疆锛孨O:閫夋嫨鍓嶇疆
+- (int32_t)switchCamera:(BOOL)backCameraSelected;
+
+#pragma mark - 褰曞埗鐩稿叧鎺ュ彛
+/// 寮�濮嬫埧闂磋棰戜細璁綍鍒�
+/// @param roomId 鎴块棿鍙�
+/// @param customId 寮�鍙戣�呰嚜瀹氫箟鐢ㄦ埛ID
+/// @param recUsers 闇�瑕佸綍鍒剁殑鎴块棿鍙備笌鑰卛d
+/// @param projectId 浜戝瓨鍌ㄩ」鐩甀D
+/// @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 涓绘寔浜虹敤鎴穒d锛堝紑鍙戣�呰嚜瀹氫箟鐨勭敤鎴穒d锛�
+/// @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
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkSDKDefines.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkSDKDefines.h
new file mode 100644
index 0000000..c3347aa
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkSDKDefines.h
@@ -0,0 +1,17 @@
+//
+//  EZVideoTalkSDKDefines.h
+//  EzvizOpenSDK
+//
+//  Created by Harper Kan on 2021/7/5.
+//  Copyright 漏 2021 Hikvision. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZVideoTalkSDKDefines : NSObject
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkView.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkView.h
new file mode 100644
index 0000000..1ab4653
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalk/EZVideoTalkView.h
@@ -0,0 +1,18 @@
+//
+//  EZVideoTalkView.h
+//  EZVideoTalk
+//
+//  Created by Harper Kan on 2020/12/5.
+//  Copyright 漏 2020 hikvision. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import <AVFoundation/AVFoundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface EZVideoTalkView : UIView
+- (AVSampleBufferDisplayLayer *)videoLayer;
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalkParam.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalkParam.h
deleted file mode 100644
index 4d8155a..0000000
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalkParam.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//
-//  EZVideoTalkParam.h
-//  EZOpenSDK
-//
-//  Created by yuqian on 2020/3/14.
-//  Copyright 漏 2020 Hikvision. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-NS_ASSUME_NONNULL_BEGIN
-
-@interface EZVideoTalkParam : NSObject
-
-@property (nonatomic, assign) int32_t iCltRole; /**< 蹇呭~    0 鍙戣捣 1 鎺ュ彈 鍙戣捣绔~鍐�0 鎺ュ彈绔~鍐�1 鎷掔粷涓�2 */
-@property (nonatomic, assign) int32_t iOtherCltType; /**< 閫夋嫨    鍙湁瀵圭鏄墜琛ㄧ闇�濉啓 */
-@property (nonatomic, assign) int32_t iCltType; /**< 蹇呭~    瀹㈡埛绔被鍨� */
-@property (nonatomic, strong) NSString *szStsAddr; /**< 蹇呭~    鏈嶅姟鍦板潃 */
-@property (nonatomic, assign) int32_t iStsPort; /**< 蹇呭~    鏈嶅姟绔彛 */
-@property (nonatomic, assign) int32_t iRoomId; /**< 閫夋嫨    闇�瑕佸姞鍏ユ埧闂村彿锛屽彧鏈夋帴鍙楃闇�瑕佸~鍐� */
-@property (nonatomic, assign) int32_t iReason; /**< 閫夋嫨  鍘熷洜 鎷掓帴鎺ュ惉101 鏃犱汉鎺ュ惉102 */
-
-@property (nonatomic, strong) NSString *szSelfId;  /**< 蹇呭~  鏍囪瘑Id */
-@property (nonatomic, strong) NSString *szOterId; /**< 閫夋嫨    鎵嬭〃搴忓垪鍙� */
-@property (nonatomic, strong) NSString *szAuthToken; /**< 蹇呭~    璁よ瘉token */
-
-@property (nonatomic, strong) NSString *m_szExtensionParas; /**< 閫夋嫨    鎵╁睍瀛楁淇℃伅 */
-
-@end
-
-NS_ASSUME_NONNULL_END
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalkSDK.h b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalkSDK.h
deleted file mode 100644
index 9b02087..0000000
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/include/modules/EZVideoTalkSDK.h
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-//  EZVideoTalkSDK.h
-//  EZOpenSDK
-//
-//  Created by yuqian on 2020/3/14.
-//  Copyright 漏 2020 Hikvision. All rights reserved.
-//
-
-#import <UIKit/UIKit.h>
-#import "EZVideoTalkParam.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;
-
-@protocol EZVideoTalkSDKDelegate<NSObject>
-
-- (void)videoTalk:(EZVideoTalkSDK *)client didReceivedError:(int32_t)errorCode;
-
-/**
- 鍥炶皟娑堟伅
-
- @param client client
- @param messageCode 娑堟伅鐮�
- @param msg 閫忎紶娑堟伅
- */
-- (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;
-
-@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;
-
-/**
- 寮�濮嬪弻鍚戦煶瑙嗛瀵硅锛岃�楁椂鎺ュ彛锛岄粯璁� EZVideoTalkCaptureVideo | EZVideoTalkCaptureAudio 鍚屾椂寮�鍚�
- */
-- (void)start;
-
-/**
- 寮�濮嬪弻鍚戦煶瑙嗛瀵硅锛岃�楁椂鎺ュ彛
- */
-- (void)startWithType:(EZVideoTalkCaptureType)type;
-
-/**
- 鍋滄鍙屽悜闊宠棰戝璁�
- */
-- (void)stop;
-
-/// 寮�鍚0闊筹紝鎺ユ敹鍒癊ZVideoTalkMessageStartInputData娑堟伅鍚庤皟鐢�
-/// @param open 寮�鍏崇姸鎬�
-- (int32_t) openSound:(BOOL)open;
-
-#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
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/libEZOpenSDK.a b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/libEZOpenSDK.a
index f09f777..f010fd5 100644
--- a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/libEZOpenSDK.a
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/libEZOpenSDK.a
Binary files differ
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/openssl/libcrypto.a b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/openssl/libcrypto.a
new file mode 100644
index 0000000..01fac5b
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/openssl/libcrypto.a
Binary files differ
diff --git a/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/openssl/libssl.a b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/openssl/libssl.a
new file mode 100644
index 0000000..e563587
--- /dev/null
+++ b/Demo/EZOpensdk_iOS_4.15.1_build20201104/SDK/openssl/libssl.a
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a b/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
index b9ab27e..90c5196 100644
--- a/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
+++ b/EZSDK.IOS/EZSDK.IOS/Library/libEZSDK.a
Binary files differ
diff --git a/EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs b/EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs
index eb389fd..e5999bd 100644
--- a/EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs
+++ b/EZSDK.IOS/EZSDK.IOS/Properties/AssemblyInfo.cs
@@ -25,7 +25,7 @@
 // The form "{Major}.{Minor}.*" will automatically update the build and revision,
 // and "{Major}.{Minor}.{Build}.*" will update just the revision.
 
-[assembly: AssemblyVersion("1.4.5")]
+[assembly: AssemblyVersion("1.5.1")]
 
 // The following attributes are used to specify the signing key for the assembly,
 // if desired. See the Mono documentation for more information about signing.
diff --git a/EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme b/EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme
index 49c7ac0..8643394 100644
--- a/EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme
+++ b/EZSDK/EZSDK.xcodeproj/xcshareddata/xcschemes/EZSDK.xcscheme
@@ -58,7 +58,7 @@
       </MacroExpansion>
    </ProfileAction>
    <AnalyzeAction
-      buildConfiguration = "Debug">
+      buildConfiguration = "Release">
    </AnalyzeAction>
    <ArchiveAction
       buildConfiguration = "Release"
diff --git a/EZSDK/EZSDK/EZ/PrefixHeader.pch b/EZSDK/EZSDK/EZ/PrefixHeader.pch
new file mode 100644
index 0000000..96194c9
--- /dev/null
+++ b/EZSDK/EZSDK/EZ/PrefixHeader.pch
@@ -0,0 +1,30 @@
+//
+//  PrefixHeader.pch
+//  EZOpenSDKDemo
+//
+//  Created by linyong on 16/10/26.
+//  Copyright 漏 2016骞� Ezviz. All rights reserved.
+//
+
+#ifndef PrefixHeader_pch
+#define PrefixHeader_pch
+
+
+#define DEMO_ONLINE //绾夸笂鏈嶅姟鍣�
+
+//#import "Macros.h"
+//#import "UIView+EZExtension.h"
+#import "UIView+Toast.h"
+//#import "JXTAlertController.h"
+//#import "NSDate+DateTools.h"
+#import "Masonry.h"
+#import "DDKit.h"
+
+#import "EZOpenSDK.h"
+#import "EZGlobalSDK.h"
+#import "GlobalKit.h"
+#import "EZHttpUtil.h"
+#import "EZSDK.h"
+
+
+#endif /* PrefixHeader_pch */
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m
index eff6e76..0b9d955 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZAPWiFiConfigViewController.m
@@ -244,8 +244,13 @@
 {
     NSString *ssid = [self currentSsid];
     
-    if (ssid && [ssid isEqualToString:self.devicWifiName])
-    {
+//    if (ssid && [ssid isEqualToString:self.devicWifiName])
+//    {
+//        return YES;
+//    }
+    
+    //2021-10-19 鍒ゆ柇鏉′欢锛屾敼涓哄彧鍖归厤鍚庨潰搴忓垪鍙峰瓧娈�
+    if(ssid && [ssid hasSuffix:[GlobalKit shareKit].deviceSerialNo]){//瀛楃涓叉湯灏炬湁搴忓垪鍙峰瓧绗�
         return YES;
     }
     
diff --git a/EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m b/EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m
index ac5e272..4abf5f3 100644
--- a/EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m
+++ b/EZSDK/EZSDK/EZ/UIViewControllers/EZAddByQRCodeViewController.m
@@ -234,6 +234,8 @@
 
 - (void)checkQRCode:(NSString *)strQRcode
 {
+    strQRcode = [strQRcode stringByReplacingOccurrencesOfString:@"\r\n" withString:@"\r"];//2021-10-19 瑙e喅閮ㄥ垎鐚溂璁惧灞忓箷鏄剧ず鐨勪簩缁寸爜锛屽弬鏁颁箣闂村嚭鐜扮┖琛屽鑷村垎鍓插彇閿欏瓧娈甸棶棰�
+    
     NSArray *arrString = [strQRcode componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
     
     if(arrString.count >=3)

--
Gitblit v1.8.0