diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index 9a664fc..e7eaac7 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -94,6 +94,49 @@ public class SIPCommander implements ISIPCommander {
return ptzCmd(device, channelId, 0, 0, inOut, 0, zoomSpeed);
}
+ /**
+ * 云台指令码计算
+ *
+ * @param leftRight 镜头左移右移 0:停止 1:左移 2:右移
+ * @param upDown 镜头上移下移 0:停止 1:上移 2:下移
+ * @param inOut 镜头放大缩小 0:停止 1:缩小 2:放大
+ * @param moveSpeed 镜头移动速度 默认 0XFF (0-255)
+ * @param zoomSpeed 镜头缩放速度 默认 0X1 (0-255)
+ */
+ public static String cmdString(int leftRight, int upDown, int inOut, int moveSpeed, int zoomSpeed) {
+ int cmdCode = 0;
+ if (leftRight == 2) {
+ cmdCode|=0x01; // 右移
+ } else if(leftRight == 1) {
+ cmdCode|=0x02; // 左移
+ }
+ if (upDown == 2) {
+ cmdCode|=0x04; // 下移
+ } else if(upDown == 1) {
+ cmdCode|=0x08; // 上移
+ }
+ if (inOut == 2) {
+ cmdCode |= 0x10; // 放大
+ } else if(inOut == 1) {
+ cmdCode |= 0x20; // 缩小
+ }
+ StringBuilder builder = new StringBuilder("A50F01");
+ String strTmp;
+ strTmp = String.format("%02X", cmdCode);
+ builder.append(strTmp, 0, 2);
+ strTmp = String.format("%02X", moveSpeed);
+ builder.append(strTmp, 0, 2);
+ builder.append(strTmp, 0, 2);
+ strTmp = String.format("%X", zoomSpeed);
+ builder.append(strTmp, 0, 1).append("0");
+ //计算校验码
+ int checkCode = (0XA5 + 0X0F + 0X01 + cmdCode + moveSpeed + moveSpeed + (zoomSpeed << 4 & 0XF0)) % 0X100;
+ strTmp = String.format("%02X", checkCode);
+ builder.append(strTmp, 0, 2);
+ return builder.toString();
+}
+
+
/**
* 云台控制,支持方向与缩放控制
*
@@ -115,7 +158,7 @@ public class SIPCommander implements ISIPCommander {
ptzXml.append("DeviceControl");
ptzXml.append("" + (int)((Math.random()*9+1)*100000) + "");
ptzXml.append("" + channelId + "");
- ptzXml.append("" + "");
+ ptzXml.append("" + cmdString(leftRight, upDown, inOut, moveSpeed, zoomSpeed) + "");
ptzXml.append("");
ptzXml.append("");
ptzXml.append("");
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index bec0e00..7e6bc40 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -26,7 +26,8 @@ spring:
server:
port: 8080
sip:
- ip: 10.200.64.63
+# ip: 10.200.64.63
+ ip: 192.168.0.102
port: 5060
# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
# 后两位为行业编码,定义参照附录D.3
@@ -34,7 +35,8 @@ sip:
domain: 3701020049
id: 37010200492000000001
# 默认设备认证密码,后续扩展使用设备单独密码
- password: admin
+ password: admin123
media:
- ip: 10.200.64.88
+# ip: 10.200.64.88
+ ip: 192.168.0.102
port: 10000
\ No newline at end of file