iOS开发实时监控SDK的设置
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);}}
至此整个工程完成,现在在视图中显示的为实时监控画面;
iOS开发实时监控SDK的设置相关推荐
- iOS开发——实时监控网速
开发中用到获取网速的地方,应该就两种: 1.下载速度,这种可以直接在接受数据的地方统计计算.这个就不讲了. 2.获取手机网卡的数据,可以监控网卡的进出流量,下面就是. #import "Vi ...
- iOS开发 : Navigation Bar的简单设置
前面的一篇文章<iOS开发16:使用Navigation Controller切换视图>中的小例子在运行时,屏幕上方出现的工具栏就是Navigation Bar,而所谓UINavigati ...
- iOS开发 字体的几种设置方法
IOS开发的字体大小设置有几种方法: UIFont font = [UIFont fontWithName:(NSString ) size:(CGFloat)];//字体名,和大小来初始化. UIF ...
- iOS开发:App横竖屏设置问题
在iOS开发中,难免会遇到关于手机屏幕是否切换横竖屏的问题,比如一个App整体的界面都需要竖屏显示,那么只用在Xcode里面的General里面的Deployment Info里面把横竖屏选项勾选去掉 ...
- [iOS开发]高德地图SDK
文章目录: 写在前面 准备工作 开始肝活 添加权限: 把地图显示到自己的view上: 显示自己的位置: 添加标记点: 运动轨迹: 搜索功能: 路线的搜索与显示: 小结: 写在前面 最近学习了一下高德地 ...
- iOS开发-逆向注入SDK(一)iOS越狱
越狱 这里采用使用 iphone 5S, iOS 12.4.9 为例,进行 非完美越狱 非完美越狱:重启手机越狱失效,需要再进行越狱,越狱也不麻烦,点几下就行了,不过不关机就行了哈 i4助手 安装 i ...
- iOS开发笔记:SDK for iOS15.4 #XCode13
手闲把iPhone8升级到15.4,XCode13真机调试提示:Failed to prepare device for development ,找了下Google,又是SDK与真机版本不一致导致, ...
- iOS开发--一些UITabBarItem属性的设置[转]
1.改变UITabBarItem 字体颜色 [[UITabBarItemappearance]setTitleTextAttributes:[NSDictionary dictionaryWithOb ...
- iOS开发 之字体类型的设置与选择
声明: 文章转自新浪博主:Apple_ 小熊猫 原文地址:http://blog.sina.com.cn/s/blog_b22973cf0101auqv.html.转载时请附带声明. i ...
最新文章
- 【eclipse】快速调整eclipse背景和格式的方法
- linux运行dock打包的镜像,Linux部署之Docker方式部署项目
- javabean与map的转换
- 朱晔的互联网架构实践心得S1E3:相辅相成的存储五件套
- 数据中心业务价值永续的密码——施耐德电气全生命周期服务
- ts可展开注释_Nike控告WL的始末,和它被TS带货后的几近成名
- Python基础:常用知识点汇总
- Spring源码分析-Spring事务源码分析
- BizTalk动手实验(十七)ODBC适配器使用
- Android ExpandableListView实现列表可扩展点击显示内容或隐藏内容
- sql 中WHERE字句中使用case when then
- python计算bmi指数_python 练习题:计算的BMI指数,并根据BMI指数条件选择
- ppc+安装编译mysql_redhat7ppc安装
- Android studio创建Java测试类
- Autocad ET扩展工具汉化
- 位运算实现加减乘除运算——超详细C语言描述
- clear linux
- curse库的使用总结
- 和讯金融界证券之星 财经网站竞争格局突变
- APP微信支付的后台实现
热门文章
- 手机还能是提升穿搭时尚感?难怪这款新品让人爱不释手
- 高级开发面试题,朋友给的,怕忘了
- SQL 循环语句几种写法
- 我的世界服务器自建主城,为纪念去世的服务器创建人,《我的世界》玩家们竖起了告示牌...
- android 隐藏状态栏 不起作用,Android 状态栏的隐藏和显示
- hbuilderx版本怎么更新到新版本_HBuilderX 版本区别说明
- 168元的4G路由器真实价值多少?蒲公英4G路由器X4C测评
- 腐烂国度2主宰版计算机学知识,腐烂国度2主宰版 新增内容及mod说明
- Linux创建和删除目录命令
- Omnibox之Chrome关闭地址栏 输入提示