iOS开发实时监控SDK的设置

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

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

  1. 由于维迈所提供的FunSDK是C++混编的,so 需要对工程中所有需要本类,以及方法的地方都需支持C++。
  2. 将需要用到FunSDK的.m文件直接重命名为.mm文件
  3. 导入第三方库: 【OpenAL.framework】【 libresolv】【libiconv】【libbz2】【libz】最后还需要一个【libstdc++.6.0.9】支持C++混编的
  4. 将FunSDK.framework文件拖入工程
  5. 工程编辑,在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);}}

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

iOS开发实时监控SDK的设置相关推荐

  1. iOS开发——实时监控网速

    开发中用到获取网速的地方,应该就两种: 1.下载速度,这种可以直接在接受数据的地方统计计算.这个就不讲了. 2.获取手机网卡的数据,可以监控网卡的进出流量,下面就是. #import "Vi ...

  2. iOS开发 : Navigation Bar的简单设置

    前面的一篇文章<iOS开发16:使用Navigation Controller切换视图>中的小例子在运行时,屏幕上方出现的工具栏就是Navigation Bar,而所谓UINavigati ...

  3. iOS开发 字体的几种设置方法

    IOS开发的字体大小设置有几种方法: UIFont font = [UIFont fontWithName:(NSString ) size:(CGFloat)];//字体名,和大小来初始化. UIF ...

  4. iOS开发:App横竖屏设置问题

    在iOS开发中,难免会遇到关于手机屏幕是否切换横竖屏的问题,比如一个App整体的界面都需要竖屏显示,那么只用在Xcode里面的General里面的Deployment Info里面把横竖屏选项勾选去掉 ...

  5. [iOS开发]高德地图SDK

    文章目录: 写在前面 准备工作 开始肝活 添加权限: 把地图显示到自己的view上: 显示自己的位置: 添加标记点: 运动轨迹: 搜索功能: 路线的搜索与显示: 小结: 写在前面 最近学习了一下高德地 ...

  6. iOS开发-逆向注入SDK(一)iOS越狱

    越狱 这里采用使用 iphone 5S, iOS 12.4.9 为例,进行 非完美越狱 非完美越狱:重启手机越狱失效,需要再进行越狱,越狱也不麻烦,点几下就行了,不过不关机就行了哈 i4助手 安装 i ...

  7. iOS开发笔记:SDK for iOS15.4 #XCode13

    手闲把iPhone8升级到15.4,XCode13真机调试提示:Failed to prepare device for development ,找了下Google,又是SDK与真机版本不一致导致, ...

  8. iOS开发--一些UITabBarItem属性的设置[转]

    1.改变UITabBarItem 字体颜色 [[UITabBarItemappearance]setTitleTextAttributes:[NSDictionary dictionaryWithOb ...

  9. iOS开发 之字体类型的设置与选择

    声明:     文章转自新浪博主:Apple_ 小熊猫    原文地址:http://blog.sina.com.cn/s/blog_b22973cf0101auqv.html.转载时请附带声明. i ...

最新文章

  1. 【eclipse】快速调整eclipse背景和格式的方法
  2. linux运行dock打包的镜像,Linux部署之Docker方式部署项目
  3. javabean与map的转换
  4. 朱晔的互联网架构实践心得S1E3:相辅相成的存储五件套
  5. 数据中心业务价值永续的密码——施耐德电气全生命周期服务
  6. ts可展开注释_Nike控告WL的始末,和它被TS带货后的几近成名
  7. Python基础:常用知识点汇总
  8. Spring源码分析-Spring事务源码分析
  9. BizTalk动手实验(十七)ODBC适配器使用
  10. Android ExpandableListView实现列表可扩展点击显示内容或隐藏内容
  11. sql 中WHERE字句中使用case when then
  12. python计算bmi指数_python 练习题:计算的BMI指数,并根据BMI指数条件选择
  13. ppc+安装编译mysql_redhat7ppc安装
  14. Android studio创建Java测试类
  15. Autocad ET扩展工具汉化
  16. 位运算实现加减乘除运算——超详细C语言描述
  17. clear linux
  18. curse库的使用总结
  19. 和讯金融界证券之星 财经网站竞争格局突变
  20. APP微信支付的后台实现

热门文章

  1. 手机还能是提升穿搭时尚感?难怪这款新品让人爱不释手
  2. 高级开发面试题,朋友给的,怕忘了
  3. SQL 循环语句几种写法
  4. 我的世界服务器自建主城,为纪念去世的服务器创建人,《我的世界》玩家们竖起了告示牌...
  5. android 隐藏状态栏 不起作用,Android 状态栏的隐藏和显示
  6. hbuilderx版本怎么更新到新版本_HBuilderX 版本区别说明
  7. 168元的4G路由器真实价值多少?蒲公英4G路由器X4C测评
  8. 腐烂国度2主宰版计算机学知识,腐烂国度2主宰版 新增内容及mod说明
  9. Linux创建和删除目录命令
  10. Omnibox之Chrome关闭地址栏 输入提示