Android平台GB28181设备接入端PTZ对接详解

简介: 上一篇blog“Android平台GB28181设备接入模块之球机/云台控制探究”谈到,Android平台做国标GB28181设备接入端的时候,PTZ控制要不要处理?如果处理,难度大不大?

PTZCmd实现背景

上一篇blog“Android平台GB28181设备接入模块之球机/云台控制探究”谈到,Android平台做国标GB28181设备接入端的时候,PTZ控制要不要处理?如果处理,难度大不大?


首先说要不要处理:如果只是做执法记录仪相关,Android终端作为数据采集模块,一般不具备云台上下、左右指令控制能力,但有一点,镜头的变倍(Zoom),如果有诉求的话,还是有技术必要性,特别是国标平台终端,对前端设备细节感兴趣的时候,可以通过Zoom In、Zoom Out来调整Android GB28181设备接入终端,实现摄像头的变焦。


其次,我们说一下技术实现难度:需要明确的一点是,目标设备不发送应答命令,所以实现起来,对我们已经有扩展性非常好的技术框架来说,难度不太大,如果从头实现,相对麻烦一些。


PTZ指令我们之前有提到过,如下图所示,Bit5和 Bit4不应同时为1,Bit3和 Bit2不应同时为1;Bit1和 Bit0不应同 时为1。镜头变倍指令、云台上下指令、云台左右指令三者可以组合。

2d67bd7df94343d1b0fd1f479870c3ea.png

技术实现细节

GB28181的云台控制命令,对Android平台设备接入端来说,难度不大,只需要把相应的云台控制命令字段回调到上层,上层做个解析,然后进行相应的命令控制即可。


让我们先来看看,国标平台侧发过来的控制消息:

MESSAGE sip:34020000001380000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.6:15060;rport;branch=z9hG4bK623469675
From: <sip:34020000002000000001@3402000000>;tag=119469675
To: <sip:34020000001380000001@3402000000>
Call-ID: 696469675
CSeq: 342 MESSAGE
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: GB28181 Agent
Content-Length: 267
<?xml version="1.0" encoding="GB2312"?>
<Control>
  <CmdType>DeviceControl</CmdType>
  <SN>204469675</SN>
  <DeviceID>34020000001380000001</DeviceID>
  <PTZCmd>A50F0110000010D5</PTZCmd>
  <Info>
    <ControlPriority>5</ControlPriority>
  </Info>
</Control>

由于PTZCmd无需发送应答命令,只需要回复200 OK即可:

SIP/2.0 200 OK
CSeq: 342 MESSAGE
Call-ID: 696469675
From: <sip:34020000002000000001@3402000000>;tag=119469675
To: <sip:34020000001380000001@3402000000>
Via: SIP/2.0/UDP 192.168.1.6:15060;rport=15060;branch=z9hG4bK623469675;received=192.168.1.6
Content-Length: 0

针对PTZ命令回调,大牛直播SDK的处理如下:

    @Override
    public void ntsOnDeviceControlPTZCmd(String deviceId, String typeValue) {
        handler_.postDelayed(new Runnable() {
            @Override
            public void run() {
                Log.i(TAG, "DaniuSDK ntsOnDeviceControlPTZCmd device_id:" + device_id_ + " PTZType:" + ptz_type_);
                if (null == ptz_type_)
                    return;
                ptz_type_ = ptz_type_.trim();
                if (ptz_type_.length() != 16)
                    return;
                int instruction = hexStringToInt(ptz_type_.substring(6, 8));
                int combination_code2 = hexStringToInt(ptz_type_.substring(12, 14));
                if ((instruction & 0xc0) == 0 ) {
                    if ((instruction & 0x20) != 0) {
                        // Zoom Out
                        int zoom_speed = getZoomSpeed(combination_code2);
                        Log.i(TAG, "ntsOnDeviceControlPTZCmd device_id:" + device_id_ + " PTZType:" + ptz_type_ + " Zoom Out, speed:" +zoom_speed);
                        cameraZoom(true, zoom_speed);
                    }
                    else if ((instruction & 0x10) != 0) {
                        // Zoom In
                        int zoom_speed = getZoomSpeed(combination_code2);
                        Log.i(TAG, "ntsOnDeviceControlPTZCmd device_id:" + device_id_ + " PTZType:" + ptz_type_ + " Zoom In, speed:" +zoom_speed);
                        cameraZoom(false, zoom_speed);
                    }
                }
            }
            private String device_id_;
            private String ptz_type_;
            public Runnable set(String device_id, String ptz_type) {
                this.device_id_ = device_id;
                this.ptz_type_ = ptz_type;
                return this;
            }
        }.set(deviceId, typeValue),0);
    }

PTZ命令的解析非常简单,只需要针对字段按照相关规范解出来即可,获取到zoom in,zoom out和zoom speed后,直接调用cameraZoom()实现针对Android摄像头变焦即可。

总结

国标平台侧通过PTZ指令,特别是针对Android的国标接入终端,实现摄像头的实时变焦,实际场景下,非常实用,特别是,如果Android平台国标设备接入端,对接有可以云台控制的RTSP摄像头,做PTZ指令的二次转发操作,也非常方便。

相关文章
|
7天前
|
机器学习/深度学习 传感器 vr&ar
探索安卓与iOS平台下的虚拟现实技术发展
随着移动设备的普及和技术的不断进步,安卓和iOS平台上的虚拟现实(VR)技术发展迅速。本文将探讨安卓与iOS平台下虚拟现实技术的最新进展,包括技术特点、应用场景以及未来发展趋势。
11 0
|
7天前
|
机器学习/深度学习 人工智能 安全
探索Android与iOS平台的安全性:一场永无止境的较量
【5月更文挑战第31天】在数字时代,移动操作系统的安全性成为了全球用户关注的焦点。本文将深入探讨Android和iOS这两大主流平台的安全机制,分析它们的安全特性、面临的挑战以及未来的发展趋势。通过比较研究,我们将揭示这两个系统在保护用户数据和隐私方面的不同策略和成效。
|
8天前
|
安全 物联网 测试技术
构建未来:Android与IoT设备的无缝交互深入探索软件自动化测试的未来趋势
【5月更文挑战第30天】在物联网(IoT)技术快速发展的当下,Android系统因其开放性和广泛的用户基础成为了连接智能设备的首选平台。本文将探讨如何通过现代Android开发技术实现智能手机与IoT设备的高效、稳定连接,并分析其中的挑战和解决方案。我们将深入挖掘Android系统的底层通信机制,提出创新的交互模式,并通过实例演示如何在Android应用中集成IoT控制功能,旨在为开发者提供一套可行的指导方案,促进IoT生态系统的进一步发展。
|
13天前
|
API vr&ar 开发工具
构建未来:安卓平台上的AR应用开发全解析
【5月更文挑战第25天】随着增强现实(AR)技术的不断成熟,安卓平台上的AR应用开发正吸引着越来越多的关注。本文深入剖析了在安卓系统上开发AR应用的核心技术和流程,探讨了ARCore SDK的使用、3D渲染技术、用户交互设计以及性能优化等关键要素。通过实例演示和代码分析,揭示了创建高效、沉浸式AR体验的策略和最佳实践,为开发者提供指引,同时对未来AR应用的发展趋势做出展望。
|
13天前
|
Shell 开发工具 Android开发
|
14天前
|
传感器 人工智能 vr&ar
构建未来:安卓平台上的AR应用开发探索
【5月更文挑战第25天】 随着增强现实(AR)技术的飞速发展,其在移动设备上的应用变得日益广泛。特别是在安卓平台上,开发者们正在利用ARCore这样的工具集来创建沉浸式体验和创新的应用程序。本文将深入探讨在安卓系统上开发AR应用的关键技术、挑战以及未来的发展趋势,旨在为开发者提供一个全面的技术概览和实践指南。
|
API 网络安全 Android开发
Android 设备唯一标识(适配Android版本)
Android 设备唯一标识(适配Android版本)
809 0
Android 设备唯一标识(适配Android版本)
|
存储 API Android开发
Android设备唯一标识的获取和构造
设备唯一标识对于app开发是很重要的一个点,主要应用于统计,有时也应用于业务。 Android平台提供了很多获取唯一标识的API,但都不是很稳定。 一、获取唯一标识 Android开发者网站上的一篇文章Identifying App Installations给出了几种获取方式; 中文博文也有很多,这是其中一篇 Android获取设备唯一ID的几种方式。
1752 0
|
算法 Android开发 数据安全/隐私保护
Android设备的唯一标识
Android设备的唯一标识 IMEI 权限 获取IMEI /** * 获取IMEI * * @return IMEI */ private String ...
948 0
|
17小时前
|
Java API 开发工具
OpenCV On Android开发 - Android Studio上环境配置
OpenCV On Android开发 - Android Studio上环境配置
3 0