iOS开发实时监控SDK的设置

    xiaoxiao2026-08-14  10

    iOS开发实时监控SDK的设置

    *本文中涉及的实时监控为“维迈开放平台” 相关API,硬件设备为“金盛安防”监控摄像头(https://open.xmeye.net) 根据官方文档以及demo,小编将自己的使用心得总结如下;*

    主要功能:实现摄像头监控画面的实时播放; 开发步骤:

    由于维迈所提供的FunSDK是C++混编的,so 需要对工程中所有需要本类,以及方法的地方都需支持C++。将需要用到FunSDK的.m文件直接重命名为.mm文件导入第三方库: 【OpenAL.framework】【 libresolv】【libiconv】【libbz2】【libz】最后还需要一个【libstdc++.6.0.9】支持C++混编的将FunSDK.framework文件拖入工程工程编辑,在appdelegate.mm中引入 #import <FunSDK/FunSDK.h> #import <iostream> using namespace std;

    6 声明两个常量

    const static char* constStrServerAddrs = "223.4.33.127;54.84.132.236;112.124.0.188"; const static short constIntServerPort = 15010;

    7 添加方法,并且在didFinishLaunchingWithOptions:中调用

    [self FunSDKSetting];

    8.设置方法

    - (void)FunSDKSetting{ SInitParam pa; pa.nAppType = H264_DVR_LOGIN_TYPE_MOBILE; FUN_Init(0, &pa); FUN_InitNetSDK(); //设置用于存储设备信息等的数据配置文件 NSArray *pathArray = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *path = [pathArray lastObject]; //设置配置文件存储目录 FUN_SetFunStrAttr(EFUN_ATTR_CONFIG_PATH, [[path stringByAppendingString:@"/Configs/"] UTF8String]); //设置升级文件存储目录 FUN_SetFunStrAttr(EFUN_ATTR_UPDATE_FILE_PATH,[[path stringByAppendingString:@"/Updates/"] UTF8String]); //设置临时文件存储目录 FUN_SetFunStrAttr(EFUN_ATTR_TEMP_FILES_PATH,[[path stringByAppendingString:@"/Temps/"] UTF8String]); //设置本地登录设备相关信息保存文件的位置 FUN_SysInit([[path stringByAppendingString:@"/LocalDevs.db"] UTF8String]); //设置AP模式(app直连设备热点)下设置设备信息保存文件位置 FUN_SysInitAsAPModel([[path stringByAppendingString:@"/APDevs.db"] UTF8String]); //设置云服务 FUN_SysInit(constStrServerAddrs, constIntServerPort); }

    9.此时FunSDK的初始化基本设置完成,现在在控制器中设置如下(ViewController)注意后面的都需要C++混编的所以要将.m文件重命名为.mm;

    10.现在开始正式设置播放实时监控的界面,先新定义一个继承于UIView的子类

    .h

    #import <UIKit/UIKit.h> @interface DisplayView : UIView @end

    .mm

    #import "DisplayView.h" @implementation DisplayView +(Class) layerClass{ return [CAEAGLLayer class]; } @end

    11.在需要展现视频的控制器中

    .mm

    #import <FunSDK/FunSDK.h> #import "DisplayView.h" @interface ViewController () { int _myHandle; //播放窗口 DisplayView* _playView; //播放视图 } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; _myHandle = FUN_RegWnd((__bridge void*)self); FUN_SysGetDevState(FUN_RegWnd((void*)CFBridgingRetain(self)), [@"0d41f49b736ae04d" UTF8String]); self.view.backgroundColor = [UIColor whiteColor]; // 1.0 视频播放界面 _playView = [[DisplayView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.width-125)]; _playView.center = self.view.center; _playView.backgroundColor = [UIColor orangeColor]; [self.view addSubview:_playView]; UIButton *a = [UIButton buttonWithType:UIButtonTypeSystem]; [a setTitle:@"stop" forState:UIControlStateNormal]; [a addTarget:self action:@selector(stop) forControlEvents:UIControlEventTouchUpInside]; a.frame = CGRectMake(100, 100, 100,100); [self.view addSubview:a]; } #pragma mark - SDK 回调 - (void)OnFunSDKResult:(NSNumber*)pParam { NSLog(@"-------------请求数据回调(tatal)---------------------"); _myHandle = FUN_MediaRealPlay(_myHandle, [@"设备的序列号" UTF8String], 0, 0,(__bridge void*)_playView); //参数中,第二个0表示实时视频的清晰度为高清,若为1则为流畅 FUN_MediaSetSound(_myHandle, 50,0);//设置设备的声音,声音音量为50% FUN_MediaGetCurTime(_myHandle);//显示当前时间 FUN_DevGetConfig_Json(_myHandle, [@"设备的序列号" UTF8String], "SystemInfo", 1024, -1, 5000, 0); } - (void)stop{ //停止视频 FUN_MediaStop(_myHandle); }

    新添加控制摄像头上下左右的方法:

    - (void)btnAction:(UIButton *)sender{ NSString *text = sender.titleLabel.text; if ([text isEqualToString:@"上"]){ NSLog(@"上"); FUN_DevPTZControl(_myHandle, [@"设备号码" UTF8String], 0, TILT_UP); }else if ([text isEqualToString:@"下"]){ NSLog(@"下"); FUN_DevPTZControl(_myHandle, [@"设备号码" UTF8String], 0, TILT_DOWN); }else if ([text isEqualToString:@"左"]){ NSLog(@"左"); FUN_DevPTZControl(_myHandle, [@"设备号码" UTF8String], 0, PAN_LEFT); }else { NSLog(@"右"); FUN_DevPTZControl(_myHandle, [@"设备号码" UTF8String], 0, PAN_RIGHT); } }

    至此整个工程完成,现在在视图中显示的为实时监控画面;

    转载请注明原文地址: https://ju.6miu.com/read-1311182.html
    最新回复(0)