开源流媒体客户端EasyClient手机端控制摄像机EasyCamera云台PTZ控制实现
2016-08-30 11:53
471 查看
本文转自EasyDarwin开源团队成员kim的博客:http://blog.csdn.net/jinlong0603/article/details/51835308
EasyCamera是EasyDarwin开源团队开发的一款植入摄像机内部的嵌入式程序,功能是将普通IP Camera与EasyDarwin流媒体云平台(EasyCMS、EasyDarwin、EasyRMS等云服务器)对接,上传数据、接受指令控制,形成一套云摄像机方案。
EasyCamera目前已经提供了云台控制的功能,大家可以查阅EasyDarwin的协议文档。本文就介绍下Android客户端如何实现对EasyCamera的云台控制。
首先,简单介绍下Android客户端(EasyClient)如何与EasyCamera交互的。EasyClient并不直接与EasyCamera进行通信。EasyCamera开机时会将中心管理服务器(EasyCMS)发送注册请求、发送快照等,并且一直定时发送注册、快照进行保活。EasyCMS记录了所有当前在线的EasyCamera信息。当Android客户端EasyClient打开时,首先会向EasyCMS获取当前在线的EasyCamera列表。EasyClient请求某个Camera视频时,EasyCMS会通知对应的EasyCamera将视频流推送到指定的EasyDarwin服务器上,EasyClient从该EasyDarwin服务器上获取到实时视频流进行播放。
从EasyClient上云台控制EasyCamera,是EasyClient向EasyCMS服务器发送一个请求,内容包括设备序列号、动作等,参见协议文档4.9节。EasyCMS回复MSG_SC_PTZ_CONTROL_ACK给EasyClient后,会将请求内容发送给对应的EasyCamera进行控制。
我定义了两个枚举,枚举了控制类型(单步还是连续),控制动作(上下左右停等)。
[java] view plain copyenum ControlType{
TYPE_SINGLE("single"),
TYPE_CONTINUE("continuous");
private String des;
private ControlType(String string) {
des=string;
}
public String GetDes() {
return des;
}
}
enum ControlCmd{
CMD_MOVESTOP("stop"),
CMD_MOVEUP("up"),
CMD_MOVEDOWN("down"),
CMD_MOVELEFT("left"),
CMD_MOVERIGHT("right"),
CMD_ZOMEIN("zoomin"),
CMD_ZOMEOUT("zoomout");
private String des;
private ControlCmd(String string) {
des=string;
}
public String GetDes() {
return des;
}
}
在EasyPlayerActivity.java中增加4个按键, 分别为上下左右,并增加OnTouchListener接口,当按键按下时持续转动,释放按键时停止转动。
[java] view plain copy@Override
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;
}
源码参见Github上EasyClient,地址:https://github.com/EasyDarwin/EasyClient
WEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2016
EasyCamera是EasyDarwin开源团队开发的一款植入摄像机内部的嵌入式程序,功能是将普通IP Camera与EasyDarwin流媒体云平台(EasyCMS、EasyDarwin、EasyRMS等云服务器)对接,上传数据、接受指令控制,形成一套云摄像机方案。
EasyCamera目前已经提供了云台控制的功能,大家可以查阅EasyDarwin的协议文档。本文就介绍下Android客户端如何实现对EasyCamera的云台控制。
首先,简单介绍下Android客户端(EasyClient)如何与EasyCamera交互的。EasyClient并不直接与EasyCamera进行通信。EasyCamera开机时会将中心管理服务器(EasyCMS)发送注册请求、发送快照等,并且一直定时发送注册、快照进行保活。EasyCMS记录了所有当前在线的EasyCamera信息。当Android客户端EasyClient打开时,首先会向EasyCMS获取当前在线的EasyCamera列表。EasyClient请求某个Camera视频时,EasyCMS会通知对应的EasyCamera将视频流推送到指定的EasyDarwin服务器上,EasyClient从该EasyDarwin服务器上获取到实时视频流进行播放。
从EasyClient上云台控制EasyCamera,是EasyClient向EasyCMS服务器发送一个请求,内容包括设备序列号、动作等,参见协议文档4.9节。EasyCMS回复MSG_SC_PTZ_CONTROL_ACK给EasyClient后,会将请求内容发送给对应的EasyCamera进行控制。
我定义了两个枚举,枚举了控制类型(单步还是连续),控制动作(上下左右停等)。
[java] view plain copyenum ControlType{
TYPE_SINGLE("single"),
TYPE_CONTINUE("continuous");
private String des;
private ControlType(String string) {
des=string;
}
public String GetDes() {
return des;
}
}
enum ControlCmd{
CMD_MOVESTOP("stop"),
CMD_MOVEUP("up"),
CMD_MOVEDOWN("down"),
CMD_MOVELEFT("left"),
CMD_MOVERIGHT("right"),
CMD_ZOMEIN("zoomin"),
CMD_ZOMEOUT("zoomout");
private String des;
private ControlCmd(String string) {
des=string;
}
public String GetDes() {
return des;
}
}
在EasyPlayerActivity.java中增加4个按键, 分别为上下左右,并增加OnTouchListener接口,当按键按下时持续转动,释放按键时停止转动。
[java] view plain copy@Override
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;
}
源码参见Github上EasyClient,地址:https://github.com/EasyDarwin/EasyClient
获取更多信息
邮件:support@easydarwin.orgWEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2016
![](http://www.easydarwin.org/skin/easydarwin/images/wx_qrcode.jpg)
相关文章推荐
- 开源流媒体客户端EasyClient手机端控制摄像机EasyCamera云台PTZ控制实现
- 基于EasyDarwin云平台实现的EasyClient客户端与EasyCamera摄像机之间的对讲与云台控制功能
- Android EasyClient 云台控制开源流媒体摄像机EasyCamera
- Android EasyClient 云台控制开源流媒体摄像机EasyCamera
- 基于EasyDarwin云平台实现的EasyClient客户端与EasyCamera摄像机之间的对讲与云台控制功能
- EasyClient实现IPCamera摄像机远程云台控制、语音对讲等功能
- EasyDarwin EasyClient开源流媒体客户端源码功能框架解析
- easyDarwin--开源流媒体实现
- EasyCamera开源摄像机接入海康威视摄像机PS流转ES流
- EasyDarwin流媒体云平台:EasyCamera开源摄像机接入海康威视摄像机实时视频
- EasyHLS实现将IPCamera摄像机的RTSP转HLS直播输出
- EasyDarwin云平台:EasyCamera开源摄像机接入海康威视摄像机PS流转ES流
- 转‘OpenGl鼠标控制摄像机camera实现三维漫游
- rtsp流媒体协议客户端client Android端实现
- EasyDarwin开源流媒体服务器中一种实现对作用域内new对象自动释放的方法(值得借鉴)
- EasyDarwin开源流媒体服务器中一种实现对作用域内new对象自动释放的方法(值得借鉴)
- EasyDarwin开源摄像机访问EasyCamera中海康摄像头语音对讲和云台控制转发实现
- EasyCamera开源摄像机接入海康威视摄像机PS流转ES流
- EasyHLS实现将IPCamera摄像机的RTSP流转成HLS(ts+m3u8)直播输出
- EasyDarwin开源摄像机访问EasyCamera中海康摄像头语音对讲和云台控制转发实现