基于EasyDarwin云平台实现的EasyClient客户端与EasyCamera摄像机之间的对讲与云台控制功能
2017-03-06 22:48
1061 查看
本文转自EasyDarwin团队Kim的博客,感谢Kim长期对EasyDarwin开源项目的贡献:http://blog.csdn.net/jinlong0603
EasyDarwin云平台是一套由EasyDarwin、EasyCMS、EasyCamera、EasyClient、nginx、redis构成的完整云平台架构,支持分布式、跨平台、多点部署,流媒体服务器支持负载均衡,按需直播,非常适用于互联网化的安防、智能家居、幼教平台、透明厨房、透明家装等多个行业应用。
EasyClient并不直接与EasyCamera进行通信。EasyCamera开机时会将中心管理服务器(EasyCMS)发送注册请求、发送快照等,并且一直定时发送注册、快照进行保活。EasyCMS记录了所有当前在线的EasyCamera信息。当Android客户端EasyClient打开时,首先会向EasyCMS获取当前在线的EasyCamera列表。EasyClient请求某个Camera视频时,EasyCMS会通知对应的EasyCamera将视频流推送到指定的EasyDarwin服务器上,EasyClient从该EasyDarwin服务器上获取到实时视频流进行播放。
部署云平台时EasyCamera是视频源端, EasyCMS和EasyDarwin结合是服务器端,EasyClient为客户端。可以做到有Client端观看时,EasyCamera才向EasyDarwin推流,没有Client观看时自动停止推流。对于3G/4G摄像机来说是个福音,很好的节约了网络流量。当EasyClient请求nginx是当客户端请求RTMP流时,由nginx转发的。EasyNVR和EasyCamera相同,是可以接入EasyCMS的设备端。
Android EasyClient代码中如下:
![](https://img-blog.csdn.net/20170306221303172?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamlubG9uZzA2MDM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
Android EasyClient app下载:https://fir.im/EasyClient
EasyCamera Demo代码下载:https://github.com/EasyDarwin/EasyCamera
EasyClient Demo代码下载:https://github.com/EasyDarwin/EasyClient
EasyDarwin服务器下载:https://github.com/EasyDarwin/EasyDarwin
WEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2017
EasyDarwin云平台是一套由EasyDarwin、EasyCMS、EasyCamera、EasyClient、nginx、redis构成的完整云平台架构,支持分布式、跨平台、多点部署,流媒体服务器支持负载均衡,按需直播,非常适用于互联网化的安防、智能家居、幼教平台、透明厨房、透明家装等多个行业应用。
EasyClient并不直接与EasyCamera进行通信。EasyCamera开机时会将中心管理服务器(EasyCMS)发送注册请求、发送快照等,并且一直定时发送注册、快照进行保活。EasyCMS记录了所有当前在线的EasyCamera信息。当Android客户端EasyClient打开时,首先会向EasyCMS获取当前在线的EasyCamera列表。EasyClient请求某个Camera视频时,EasyCMS会通知对应的EasyCamera将视频流推送到指定的EasyDarwin服务器上,EasyClient从该EasyDarwin服务器上获取到实时视频流进行播放。
部署云平台时EasyCamera是视频源端, EasyCMS和EasyDarwin结合是服务器端,EasyClient为客户端。可以做到有Client端观看时,EasyCamera才向EasyDarwin推流,没有Client观看时自动停止推流。对于3G/4G摄像机来说是个福音,很好的节约了网络流量。当EasyClient请求nginx是当客户端请求RTMP流时,由nginx转发的。EasyNVR和EasyCamera相同,是可以接入EasyCMS的设备端。
EasyClient控制、对讲功能实现
EasyCamera、EasyClient与EasyCMS服务器交互的命令参考EasyDarwin/Doc/EasyDarwin Protocol v1.1.pdfAndroid EasyClient代码中如下:
public boolean onTouch(View v, MotionEvent event) { if (TextUtils.isEmpty(mDevSerial)) { return true; } switch (event.getAction()) { case MotionEvent.ACTION_DOWN: switch (v.getId()) { case R.id.btMoveUp: sendControlCommand(ControlCmd.CMD_MOVEUP, ControlType.TYPE_CONTINUE); break; case R.id.btMoveDown: sendControlCommand(ControlCmd.CMD_MOVEDOWN, ControlType.TYPE_CONTINUE); break; case R.id.btMoveLeft: sendControlCommand(ControlCmd.CMD_MOVELEFT, ControlType.TYPE_CONTINUE); break; case R.id.btMoveRight: sendControlCommand(ControlCmd.CMD_MOVERIGHT, ControlType.TYPE_CONTINUE); break; } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: sendControlCommand(ControlCmd.CMD_MOVESTOP, ControlType.TYPE_CONTINUE); break; default: break; } return false; } void sendControlCommand(ControlCmd cmd, ControlType type) { String url = String.format("http://%s:%s/api/v1/ptzcontrol?device=%s&channel=%d&actiontype=%s&command=%s&speed=5&protocol=onvif", MyApplication.getInstance().getIp(), MyApplication.getInstance().getPort(), mDevSerial, mChannelId, type.GetDes(), cmd.GetDes()); MyApplication.asyncPost(url, new CallbackWrapper<DeviceInfoBody>(DeviceInfoBody.class) { @Override public void onError(Call call, Exception e) { Toast.makeText(EasyPlayerActivity.this, "onError:" + e.toString(), Toast.LENGTH_SHORT); } }); }
下载地址
Android EasyCamera app下载:https://fir.im/EasyCameraAndroid EasyClient app下载:https://fir.im/EasyClient
EasyCamera Demo代码下载:https://github.com/EasyDarwin/EasyCamera
EasyClient Demo代码下载:https://github.com/EasyDarwin/EasyClient
EasyDarwin服务器下载:https://github.com/EasyDarwin/EasyDarwin
获取更多信息
邮件:support@easydarwin.orgWEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2017
![](http://www.easydarwin.org/skin/easydarwin/images/wx_qrcode.jpg)
相关文章推荐
- 基于EasyDarwin云平台实现的EasyClient客户端与EasyCamera摄像机之间的对讲与云台控制功能
- EasyClient实现IPCamera摄像机远程云台控制、语音对讲等功能
- 开源流媒体客户端EasyClient手机端控制摄像机EasyCamera云台PTZ控制实现
- 开源流媒体客户端EasyClient手机端控制摄像机EasyCamera云台PTZ控制实现
- Android EasyClient 云台控制开源流媒体摄像机EasyCamera
- Android EasyClient 云台控制开源流媒体摄像机EasyCamera
- EasyDarwin开源摄像机访问EasyCamera中海康摄像头语音对讲和云台控制转发实现
- EasyDarwin开源摄像机访问EasyCamera中海康摄像头语音对讲和云台控制转发实现
- 采用Jquery,在table上实现对行的单击、双击、返回选中行数据的功能,可作为GridView控制客户端的扩展
- 第三页(客户端) :远程资源管理器 c#应用源代码,SERVICE + CLIENT 模式 可实现远程文件管理,下载功能
- C#基于TCP&UDP实现服务器与多个客户端之间的通信(客户端之间直接通信,不靠服务器端转发消息)
- 艾伟_转载:基于.NET平台的Windows编程实战(五)—— 问卷管理功能的实现
- 艾伟_转载:基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现
- 基于.NET平台的Windows编程实战(七)—— 问卷统计功能的实现
- 基于角色-功能-资源的权限控制模型的设计与实现-引子
- Xianfeng轻量级Java中间件平台:基于RBAC模型实现权限控制的原理
- 采用Jquery,在table上实现对行的单击、双击、返回选中行数据的功能,可作为GridView控制客户端的扩展
- RCP(Rich Client Platform)富客户端平台是基于Eclipse插件开发的一种应用
- 基于角色-功能-资源的权限控制模型的设计与实现-引子
- 艾伟:基于.NET平台的Windows编程实战(六)—— 题目管理功能的实现