视频监控系统视频上云解决方案EasyCVR集成海康EHome私有协议系列——开启存储服务
时间:2022-07-24
本文章向大家介绍视频监控系统视频上云解决方案EasyCVR集成海康EHome私有协议系列——开启存储服务,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
目前我们的视频上云服务平台EasyCVR已经可集成海康EHome私有协议,并且在前文中我也跟大家讲过EHome协议的配置和调用流程,有兴趣的可以阅读一下:配置及协议介绍、Ehome协议调用流程介绍。
本文我们讲一下EasyCVR集成海康EHome私有协议在开始上传文件至存储服务(SS)或从存储服务(SS)下载文件之前,必须要开启存储服务,所以本文我们讲一下EasyCVR集成海康EHome协议调用开启存储服务的接口。
开启存储服务的接口调用流程图
1、调用NET_ESS_SetSDKInitCfg,设置enumType为“NET_EHOME_SS_INIT_CFG_PUBLIC_IP_PORT”,并将lpInBuff设置为NET_EHOME_IPADDRESS,从而设置SS的公共IP地址和端口。 当SS在公共网络环境下时,该步骤为必选。 2、调用NET_ESS_Init初始化SS。 3、调用NET_ESS_SetLogToFile为SS开启日志功能。 4、调用NET_ESS_StartListen开启SS监听。 5、上传文件至SS或从SS下载文件。 6、调用NET_ESS_StopListen停止SS监听。
下面这段代码示例大家也可以参考:
//初始化资源
NET_ESS_Init();
//开启日志功能
NET_ESS_SetLogToFile(3, "C:/SdkLog/", TRUE);
//开启监听
NET_EHOME_SS_LISTEN_PARAM struSSListenParam = { 0 };
memcpy(struSSListenParam.struAddress.szIP, "10.8.97.60", strlen("10.8.97.60"));
struSSListenParam.struAddress.wPort = 8080;
memcpy(struSSListenParam.szKMS_UserName, "test", strlen("test"));
memcpy(struSSListenParam.szKMS_Password, "12345", strlen("12345"));
memcpy(struSSListenParam.szAccessKey, "test", strlen("test"));
memcpy(struSSListenParam.szSecretKey, "12345", strlen("12345"));
struSSListenParam.fnSMsgCb = SS_Message_Callback;
struSSListenParam.fnSStorageCb = SS_Storage_Callback;
struSSListenParam.pUserData = NULL;
long m_lSSHandle = NET_ESS_StartListen(&struSSListenParam);
if (-1 == m_lSSHandle)
{
printf("NET_ESS_StartListen Failed, port:%d", struSSListenParam.struAddress.wPort);
}
else
{
printf("NET_ESS_StartListen succ port:%d", struSSListenParam.struAddress.wPort);
}
char cTmp = ' ';
do
{
printf("Input q to exit!");
cTmp = getchar();
}while(cTmp != 'q');
//停止监听
NET_ESS_StopListen(m_lSSHandle);
//释放资源
NET_ESS_Fini();
return 0;
EasyCVR视频平台播放界面:
视频联网云平台EasyCVR是一个集视频联网共享、存储、流媒体转发、视频转码、视频上云、智能分析统一等多种功能为一体的流媒体视频服务融合性平台。视频相关解决方案均可访问TSINGSEE青犀视频,可以联系我们获取演示方案,直观感受,也可自行进行下载及测试。
- 41. select阻塞一个gorountine上的多个通讯操作 | 厚土Go学习笔记
- 40. range和channel的close | 厚土Go学习笔记
- 48. 访问MySql数据库增删改查和连接池及空字段处理 | 厚土Go学习笔记
- Go语言·我的性能我做主
- 量子计算对 bitcoin 的威胁
- 闲扯code review
- 你的Project Starter在哪里?
- Python网络_UDP编程
- Python网络_TCP/IP简介
- Python的itertools模块
- Python自建collections模块
- Zookeeper学习笔记——1 单机版本环境搭建
- 推荐系统指标评测——覆盖率与基尼系数的算法与应用
- 如何在Java应用中提交Spark任务?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- [Bazel]自定义规则实现将多个静态库合并为一个动态库或静态库
- [Golang]包管理
- Power Query中避免出错的几种情况
- 我的开发日记(十五)
- 常见未授权访问漏洞总结
- 如何用命令行给mySQL添加用户
- [877]ModuleNotFoundError:no module named ‘tools.nnwrap‘ 解决办法
- Selenium自动化:代码测试与无代码测试
- 个人独立博客搭建教程(win),如何快速搭建博客
- dotnet OpenXML 解压缩文档为文件夹工具
- webpack实战——预处理器(loader)【上篇】
- Mac安装git,brew出现的问题
- dotnet OpenXML 简单聊聊 PPT 文本解析
- R语言作图——Ridgeline plot(山脊图)
- dotnet OpenXML 的 spcPct 和 spcPts 表示距离的不同