Android LiveClient 云台控制开源流媒体摄像机LiveCamera

LiveCamera是EasyDarwin开源团队开发的一款植入摄像机内部的嵌入式程序,功能是将普通IP Camera与EasyDarwin流媒体云平台对接,上传数据、接受指令控制,形成一套云摄像机方案。

LiveCamera目前已经提供了云台控制的功能。本文就介绍下Android客户端如何实现对LiveCamera的云台控制。

首先,简单介绍下Android客户端(LiveClient)如何与EasyCamera交互的。LiveClient并不直接与LiveCamera进行通信。LiveCamera开机时会将中心管理服务器(LiveCMS)发送注册请求、发送快照等,并且一直定时发送注册、快照进行保活。LiveCMS记录了所有当前在线的LiveCamera信息。当Android客户端LiveClient打开时,首先会向LiveCMS获取当前在线的LiveCamera列表。LiveClient请求某个Camera视频时,LiveCMS会通知对应的LiveCamera将视频流推送到指定的LiveDarwin服务器上,LiveClient从该LiveDarwin服务器上获取到实时视频流进行播放。

从LiveClient上云台控制LiveCamera,是LiveClient向EasyCMS服务器发送一个请求,内容包括设备序列号、动作等。LiveCMS回复MSG_SC_PTZ_CONTROL_ACK给LiveClient后,会将请求内容发送给对应的EasyCamera进行控制。

我定义了两个枚举,枚举了控制类型(单步还是连续),控制动作(上下左右停等)。

 

enum 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;
    }
}

 

 

在LivePlayerActivity.java中增加4个按键, 分别为上下左右,并增加OnTouchListener接口,当按键按下时持续转动,释放按键时停止转动。

 

@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;
    }


邮件:[support@liveqing.com](mailto:support@liveqing.com) 

技术交流QQ群:615081503

咨询电话:15156896292

**LiveQing**视频流媒体无插件直播方案:[www.liveqing.com](http://www.liveqing.com)

Copyright © LiveQing Team 2016-2019

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值