EasyNVR流媒体服务器接入EasyDSS云视频平台快照上传实现
EasyNVR拥有接入EasyDSS云平台的功能
接入EasyDSS云平台会定时向云平台上传快照数据,这个快照数据用于云平台向客户端提供快照展示
遇到的问题
由于快照上传的间隔提供认为修改的功能,则我们限定最短时间为1分钟
通道的数量会直接影响快照上传
考虑到压力情况,1分钟之内上传上千通道的快照
快照数据经过Base64编码,会比快照真实数据扩大1.33333倍,数据量大
EasyNVR的固定通道设计
解决方案
将所有通道快照上传分散在快照间隔时间内
若遇到通道未启用、通道不在线则跳过,并且减少通道数量,增大间隔时间
实现
virtual SInt64 Run()
{
EventFlags event = this->GetEvents();
if (event & Task::kIdleEvent || event & Task::kUpdateEvent)
{
if (!channels_)
return 0;
bool allUploaded = true;
for (int i = 0; i < MAX_CHANNEL_COUNT; i++)
{
if (snapCtrlArray_[i])
{
allUploaded = false;
break;
}
}
if (allUploaded)
{
return 0;
}
if (snapCtrlArray_[curSnapIndex_])
{
snapCtrlArray_[curSnapIndex_] = false;
int curChannel = curSnapIndex_ + 1;
if (++curSnapIndex_ > MAX_CHANNEL_COUNT - 1)
{
curSnapIndex_ = 0;
}
CameraInfo* cameraInfo = (*channels_)[curChannel]->GetChannelInfo();
if (!cameraInfo->enable || !cameraInfo->online)
{
--postSnapCount_;
return 1;
}
postSnap(curChannel);
}
//return (std::min)(timeout_ * 60 / MAX_CHANNEL_COUNT, 3) * 1000;
return timeout_ * 60 * 1000 / postSnapCount_;
}
if (event & Task::kTimeoutEvent)
{
channels_ = NULL;
QTSS_RoleParams params;
params.easyNVRChannelsConfigParams.inChannels = NULL;
EasyNVRUtil::CallDispatch(Easy_NVRGetChannelsConfig_Role, QTSSModule::kGetChannelsConfigRole, params);
channels_ = static_cast<std::map<int, EasyNVRChannel*>*>(params.easyNVRChannelsConfigParams.inChannels);
postSnapCount_ = MAX_CHANNEL_COUNT;
for (int i = 0; i < MAX_CHANNEL_COUNT; i++)
{
snapCtrlArray_[i] = true;
}
this->Signal(Task::kUpdateEvent);
timeoutTask_.RefreshTimeout();
}
return 0;
}
关于EasyNVR
EasyNVR能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据进行拉取,转换为RTMP/HLS,进行全平台终端H5直播(Web、Android、iOS),并且EasyNVR能够将视频源的直播数据对接到第三方CDN网络,实现互联网级别的直播分发;
详细说明:http://www.easydarwin.org/easynvr/
点击链接加入群【EasyNVR解决方案】:383501345
获取更多信息
Copyright © EasyDarwin.org 2012-2017

EasyNVR流媒体服务器接入EasyDSS云视频平台快照上传实现的更多相关文章
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器和EasyDSS云平台异同
背景分析 不同于EasyDSS流媒体服务器与EasyDSS流媒体解决方案(EasyDSS流媒体解决方案就是通过EasyDSS流媒体服务器完善业务层研发而来),EasyDSS流媒体服务器和EasyDSS ...
- EasyDarwin幼教云视频平台在幼教平台领域大放异彩!
在之前的一篇方案<基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案>中,我们提到一种可以广泛应用于幼教.工厂.建筑工地以及各种现场监控的云视频平台方案,这种 ...
- 基于EasyDarwin云视频平台的幼儿园视频直播(手机直播/微信直播)解决方案
一.方案介绍 1.1.方案背景 在2016年10月25日至28日的安博会上,我们看到了不少的幼教平台厂商,我们注意到大部分的幼教平台,为了追求极佳的用户体验,在微信或者APP端能够做到极快的打开速度, ...
- javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器与EasyDSS流媒体解决方案的不同
背景分析 众所周知,立足于视频软件的开发,我们的产品很多.经常有客户问到我们产品的差别以及某个产品在某个系统架构中的具体定位,因此我想通过一系列的博客说明一下,不同产品之间的区别,以及在具体架构中自身 ...
- javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- 上传文件到Ubuntu阿里云服务器(windows到Linux的文件上传)
上传文件到Ubuntu阿里云服务器(windows到Linux的文件上传) 最近在阿里云上面租了一个轻量级服务器玩玩,学习学习怎么在服务器部署网站.然后嘞,在想要将本地文件上传到服务器的时候,自己研究 ...
- 第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示
第三百八十七节,Django+Xadmin打造上线标准的在线教育平台—网站上传资源的配置与显示 首先了解一下static静态文件与上传资源的区别,static静态文件里面一般防止的我们网站样式的文件, ...
- Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载
Python 进行 SSH 操作,实现本地与服务器的链接,进行文件的上传和下载 2018年5月26日 19:03 阅读 375 评论 7 我本地和服务器的连接一直使用的是 Xshell 5,而在与服务 ...
随机推荐
- DB2 数据库中字段特定字符替换为空
Update RM_CarInfo set ImportTitle = Replace(ImportTitle,'ZD','') WHERE ImportTitle LIKE'%ZD%';
- 索尼(SONY) SVE1512S7C 把WIN8降成WIN7图文教程
这两天接常接到客户要求把SONY笔记本的WIN8系统降成WIN7系统的单子,也接到很多毕业学员遇到最新的SONY笔记本不知道怎么进BIOS,进到BIOS不知道怎么设置从U盘启动,从U盘启动了安装了WI ...
- Codeforces Gym100971 C.Triangles-组三角形 (IX Samara Regional Intercollegiate Programming Contest Russia, Samara, March 13)
这个题就是组三角形,从给出的数组里任选两个和未知的边组三角形. 任意两边之和大于第三边,记住这个就可以了. 代码: 1 #include<cstdio> 2 #include<cst ...
- ABP开发框架前后端开发系列---(1)框架的总体介绍
ABP是ASP.NET Boilerplate的简称,ABP是一个开源且文档友好的应用程序框架.ABP不仅仅是一个框架,它还提供了一个最徍实践的基于领域驱动设计(DDD)的体系结构模型.学习使用ABP ...
- TIOBE排行榜
作者:码思客链接:https://zhuanlan.zhihu.com/p/37513668来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1 JAVA 毫无疑问的业界 ...
- 怎么把一个整数转化为3个十六进制字节 delphi
如何把一个整数转化为3个十六进制字节 delphi比如把整数149259(都是6位数据整型数) 转换为十六进制为2470B然后再分开为三个字节02 47 0B,求实现代码示例var ID: Integ ...
- webservice测试窗体只能用于来自本地计算机的请求
写在前面 在编写好webservice后,发布到iis服务器,你会发现会有这样的异常“测试窗体只能用于来自本地计算机的请求”. 解决方案 在web.config中添加以下代码即可解决问题 <we ...
- 修改密码删除登陆态,那其他正在登陆的app怎么办?
修改密码删除登陆态,那其他正在登陆的app怎么办?
- Displaying Tabbed and Stacked Canvas Using Show_View In Oracle Forms
Displays the indicated canvas at the coordinates specified by the canvas's X Position and Y Position ...
- dynamic_cast<const ObjectList&>(msg);
说简单的就是C里面的强制类型转换,只不过C++里面为了类型安全而这么做的.主要用于 基类与继承类之间. C写多了,类型一般都强转,特别是指针.int * a;void * b = (void*)a;c ...