iOS 中集成海康威視 攝像視頻


本文原文地址  http://www.cnblogs.com/qianLL/p/6652104.html 

一.要導入相關的庫,注意 這里比較坑的是 要用和他一樣的 如果開始的工程中用了AFN或者MJExtentsion 的話 自己最好刪除了,不然包很多錯誤,直接把他的庫導入進去即可

二,在Other Linker Flags 中要設置 -Objc

三,要初始化MSP的地址與端口才可以進行視頻播放的相關組件

[[MCUVmsNetSDK shareInstance] configMspWithAddress:服務器地址 port:端口號];
VP_InitSDK();

四,iOS 9以上要設置 在info.plist文件中設置支持HTTP

五,只支持真機調試

六,在調用攝像頭之前,要先登錄自己賬號,方法在下面

七,注意的是,bitcode 要設置為No,切記,庫一定要和他用一樣的 

接口說明
MSP的IP端口配置
/**
 *  初始化msp的IP與端口
 *
 *  @param address msp的IP地址
 *  @param port    msp的端口
 */
- (void)configMspWithAddress:(NSString *)address port:(NSString *)port;

登錄接口
/**
 *  登錄接口
 *
 *  @param servAddr         [IN]服務器地址
 *  @param sessionID        [IN]會話ID
 *  @param doorId           [IN]門禁ID
 *  @param groupID          [OUT]監控點詳細信息
 */
- (void)loginMspWithUsername:(NSString *)username password:(NSString * )password success:(void (^)(id object))success failure:(void (^)( NSError *error))failure;

注銷接口
/**
 *  登出接口
 */
- (void)logoutMsp:(void (^)(id object))success failure:(void (^)(NSError *error))failure;

獲取資源接口
/**
 *  獲取根節點
 *  @param sysType    獲取類型 1:視頻 2:門禁
 *  @param success        成功回調函數
 *  @param failure        失敗回調函數
 */
- (void)requestRootNodeWithSysType:(NSInteger)sysType success:(void (^)( id object))success failure:(void (^)(NSError *error))failure;

/**
 *  獲取資源
 *
 *  @param sysType        資源類型 1:視頻 2:門禁,
 *  @param nodeType       當前節點類型 1:控制中心 2:區域
 *  @param currentID      請求獲取子資源的節點的ID
 *  @param numPerPage     每頁獲取數量
 *  @param curPage        當前第幾頁
 *  @param success        成功回調函數
 *  @param failure        失敗回調函數
 */
- (void)requestResourceWithSysType:(NSInteger)sysType nodeType:(NSInteger)nodeType currentID:(NSString *)currentID numPerPage:(NSInteger)numPerPage curPage:(NSInteger)curPage success:(void (^)( id object))success failure:(void (^)(NSError *error))failure;

預覽相關接口
/**
 *  開始預覽
 *
 *  @param cameraSyscode     監控點syscode
 *  @param type     預覽畫質
 *  @param playView 預覽view
 */
- (void)startRealPlay:(NSString *)cameraSyscode videoType:(VP_STREAM_TYPE)type playView:(UIView *)playView complete:(void(^)(BOOL finish, NSString *message))complete;

/**
 *  停止預覽
 */
- (BOOL)stopRealPlay;

/**
 *  抓圖
 */
- (BOOL)capture:(VPCaptureInfo *)captureInfo;
/**
 *  開始錄像
 *
 *  @return 錄像是否成功
 */
- (BOOL)startRecord:(VPRecordInfo *)recordInfo;

/**
 *  停止錄像
 *
 *  @return 停止錄像是否成功
 */
- (BOOL)stopRecord;

/**
 *  打開聲音
 *
 *  @return 返回打開聲音是否成功
 */
- (BOOL)openAudio;

/**
 *  關閉聲音
 *
 *  @return 關閉聲音是否成功
 */
- (BOOL)turnoffAudio;

/**
 *  開始雲台控制
 *
 *  @param ptzCommond 雲台命令
 *  @param param1     雲台參數1:雲台轉動時轉動速度(1-10)或者 預置點操作時預置點編號 或者 3d放大時起始點x坐標
 */
- (void)startPtzControl:(NSInteger)ptzCommond withParam1:(NSInteger)param1;

- (void)stopPtzControl:(NSInteger)ptzCommond withParam1:(NSInteger)param1;

回放相關接口
/**
 *  開始回放
 *
 *  @param cameraSyscode        監控點syscode
 *  @param playView             回放view
 */
- (void)startPlayBack:(NSString *)cameraSyscode playView:(UIView *)playView date:(NSDate *)date;

/**
 *  更新當前播放的時間
 *
 *  @param currentTime 當前時間
 */
- (void)updatePlayBackTime:(TIME_STRUCT)currentTime;

/**
 *  pickerView更新播放時間和錄像位置
 *
 *  @param date 錄像時間
 *  @param pos  錄像位置
 */
- (void)pickerStartPlayBack:(NSDate *)date currentPos:(NSString *)pos;

/**
 *  停止回放
 */
- (BOOL)stopPlayBack;

/**
 *  獲取全局osd時間
 *
 *  @return 返回全局時間
 */
- (NSTimeInterval)getOsdTime;

/**
 *  抓圖
 */
- (BOOL)capture:(VPCaptureInfo *)captureInfo;

/**
 *  暫停播放
 *
 */
- (BOOL)pausePlayBack;

/**
 *  重啟播放
 */
- (BOOL)resumePlayBack;

/**
 *  開始錄像
 *
 *  @return 錄像是否成功
 */
- (BOOL)startRecord:(VPRecordInfo *)recordInfo;

/**
 *  停止錄像
 *
 *  @return 停止錄像是否成功
 */
- (BOOL)stopRecord;

/**
 *  打開聲音
 *
 *  @return 返回打開聲音是否成功
 */
- (BOOL)openAudio;

/**
 *  關閉聲音
 *
 *  @return 關閉聲音是否成功
 */
- (BOOL)turnoffAudio;

實體類
監控點信息類MCUCameraInfo
#import <Foundation/Foundation.h>

@interface MCUCameraInfo : NSObject

@property (nonatomic, copy) NSString    *sysCode;
@property (nonatomic, copy) NSString    *cameraID;
@property (nonatomic, copy) NSString    *cameraName;
@property (nonatomic, copy) NSString    *userCapability; /**<用戶權限 1代表實時預覽,2代表錄像回放,3代表雲台控制 */
@property (nonatomic, copy) NSString    *deviceID;       /**< 對應的設備ID */
@property (nonatomic, copy) NSString    *gbSysCode;      /**< 級聯的時候用gbSysCode組裝播放的URL,用戶不必關心,可調用MCUVmsNetSDK的getRealPlayURLWithStreamType:(VP_STREAM_TYPE)type cameraInfo:(MCUCameraInfo *)cameraInfo */
@property (nonatomic, copy) NSString     *guid;
@property (nonatomic, assign) NSInteger  type;
@property (nonatomic, copy) NSString     *recordPos;      /**< 錄像保存的位置 */
@property (nonatomic, assign) NSInteger  channelNo;      /**< 通道號 */
@property (nonatomic, assign) NSInteger  deviceNetID;
@property (nonatomic, assign) BOOL       cascadeFlag;    /**< 級聯表示,0表示非級聯,1表示級聯 */
@property (nonatomic, assign) BOOL       isOnline;       /**< 是否在線*/

@end

設備信息類
#import <Foundation/Foundation.h>

@interface MCUDeviceInfo : NSObject

@property (nonatomic, copy) NSString    *username;   /**< 設備的用戶名 */
@property (nonatomic, copy) NSString    *password;   /**< 設備的密碼 */
@property (nonatomic, copy) NSString    *deviceName; /**< 設備的名字 */
@property (nonatomic, copy) NSString    *indexCode;

@end

資源節點類
#import <Foundation/Foundation.h>

typedef NS_ENUM(NSUInteger, ResourceNodeType) {
    ResourceNodeTypeControlCenter = 1,
    ResourceNodeTypeRegion,
    ResourceNodeTypeCamera
};

@interface MCUResourceNode : NSObject

@property (nonatomic, copy) NSString           *nodeID;           /**< 節點ID , nodeType為3時,其相當於cameraID */
@property (nonatomic, copy) NSString           *parentNodeID;     /**< 父節點ID */
@property (nonatomic, copy) NSString           *nodeName;         /**< 節點名稱 nodeType為3時,其相當於cameraName */
@property (nonatomic, copy) NSString           *sysCode;          /**< 監控點的sysCode,此處不為空 */
@property (nonatomic, copy) NSString           *userCapability;   /**< 監控點權限控制,@"1,2,4", 1代表有預覽權限,2代表有錄像回放權限,4代表有雲台控制權限 */
@property (nonatomic, assign) ResourceNodeType  nodeType;         /**< nodeType:1對應平台里的控制中心,2代表平台里的區域, 3,對應監控點 */
@property (nonatomic, assign) BOOL              cascadeFlag;      /**< 監控點是否為級聯,0非級聯,1為級聯 */
@property (nonatomic, assign) BOOL              isOnline;         /**< 監控點是否在線,0不在線,1在線 */

@end








錯誤碼匯總
Status    Description    說明
202    Need modify password    初始密碼登錄時需要修改密碼
203    Need modify password    密碼強度不符合平台要求修改密碼
204    Need modify password    密碼過期修改密碼
205    Password error    密碼錯誤
205        Session過期,請重新登錄
230    Exception:具體問題    
231    平台需要提示的錯誤描述    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM