Pārlūkot izejas kodu

新增CVR配置文件

zhangqiankun 2 gadi atpakaļ
vecāks
revīzija
84ece1bcc8

+ 10 - 0
resourcesFile/sdk_camera_stream.json

@@ -0,0 +1,10 @@
+[
+	{
+		"cameraIndexCode": "5741564asfsg54s6gbdsf",
+		"streamId": "18083116593134708100",
+		"cvrIp": "192.168.0.27",
+		"cvrPort": 8080,
+		"username": "admin",
+		"password": "admin"
+	}
+]

+ 60 - 0
src/main/java/com/persagy/cameractl/conf/CameraStream.java

@@ -0,0 +1,60 @@
+package com.persagy.cameractl.conf;
+
+/**
+ * 
+ * @version 1.0.0
+ * @company persagy 
+ * @author zhangqiankun
+ * @date 2022年6月30日 下午12:10:52
+ */
+public class CameraStream {
+	private String streamId;
+	private String cvrIp;
+	private int cvrPort;
+	private String username;
+	private String password;
+	private String cameraIndexCode;
+	
+	public String getStreamId() {
+		return streamId;
+	}
+	public void setStreamId(String streamId) {
+		this.streamId = streamId;
+	}
+	public String getCvrIp() {
+		return cvrIp;
+	}
+	public void setCvrIp(String cvrIp) {
+		this.cvrIp = cvrIp;
+	}
+	public int getCvrPort() {
+		return cvrPort;
+	}
+	public void setCvrPort(int cvrPort) {
+		this.cvrPort = cvrPort;
+	}
+	public String getUsername() {
+		return username;
+	}
+	public void setUsername(String username) {
+		this.username = username;
+	}
+	public String getPassword() {
+		return password;
+	}
+	public void setPassword(String password) {
+		this.password = password;
+	}
+	public String getCameraIndexCode() {
+		return cameraIndexCode;
+	}
+	public void setCameraIndexCode(String cameraIndexCode) {
+		this.cameraIndexCode = cameraIndexCode;
+	}
+	@Override
+	public String toString() {
+		return "CameraStream [streamId=" + streamId + ", cvrIp=" + cvrIp + ", cvrPort=" + cvrPort + ", username="
+				+ username + ", password=" + password + ", cameraIndexCode=" + cameraIndexCode + "]";
+	}
+	
+}

+ 5 - 5
src/main/java/com/persagy/cameractl/controller/RemoteConfigTask.java

@@ -1,13 +1,13 @@
 package com.persagy.cameractl.controller;
 
-import static com.persagy.cameractl.cvr.PlayBackController.hCNetSDK;
-
 import java.io.FileOutputStream;
 import java.io.IOException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.persagy.cameractl.init.SystemInit;
+
 /**
  * 视频回放的定时器任务
  * 
@@ -34,9 +34,9 @@ public class RemoteConfigTask extends java.util.TimerTask {
 	public void run() {
 		logger.info("========= remoteConfigTask start =========");
 
-		int nextRemoteConfig = hCNetSDK.NET_DVR_GetNextRemoteConfig(startRemoteConfig, null, 0);
+		int nextRemoteConfig = SystemInit.hCNetSDK.NET_DVR_GetNextRemoteConfig(startRemoteConfig, null, 0);
 		if (nextRemoteConfig < 0) {
-			logger.info("get all remoteConfig faliure, errorCode: " + hCNetSDK.NET_DVR_GetLastError());
+			logger.info("get all remoteConfig faliure, errorCode: " + SystemInit.hCNetSDK.NET_DVR_GetLastError());
 			endStatus = true;
 		}
 		
@@ -46,7 +46,7 @@ public class RemoteConfigTask extends java.util.TimerTask {
 		}
 		
 		if (nextRemoteConfig == 1003) {
-			logger.info("get all remoteConfig exception, errorCode: " + hCNetSDK.NET_DVR_GetLastError());
+			logger.info("get all remoteConfig exception, errorCode: " + SystemInit.hCNetSDK.NET_DVR_GetLastError());
 			endStatus = true;
 		}
 

+ 4 - 5
src/main/java/com/persagy/cameractl/cvr/DownloadTask.java

@@ -1,10 +1,9 @@
 package com.persagy.cameractl.cvr;
 
-import static com.persagy.cameractl.cvr.PlayBackController.hCNetSDK;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.persagy.cameractl.init.SystemInit;
 import com.sun.jna.ptr.IntByReference;
 
 /**
@@ -31,16 +30,16 @@ public class DownloadTask extends java.util.TimerTask {
 		logger.info("========= playback download Task start =========");
 
 		IntByReference nPos = new IntByReference(0);
-		if (!hCNetSDK.NET_DVR_PlayBackControl_V40(m_lLoadHandle, HCNetSDK.NET_DVR_PLAYGETPOS, null, 0,
+		if (!SystemInit.hCNetSDK.NET_DVR_PlayBackControl_V40(m_lLoadHandle, HCNetSDK.NET_DVR_PLAYGETPOS, null, 0,
 				nPos.getPointer(), new IntByReference(0))) {
 			endStatus = true;
-			logger.info("playback download faliure, errorCode: " + hCNetSDK.NET_DVR_GetLastError());
+			logger.info("playback download faliure, errorCode: " + SystemInit.hCNetSDK.NET_DVR_GetLastError());
 		}
 
 		if (nPos.getValue() > 100) {
 			m_lLoadHandle = -1;
 			endStatus = true;
-			logger.info("playback download exception exit, errorCode: " + hCNetSDK.NET_DVR_GetLastError());
+			logger.info("playback download exception exit, errorCode: " + SystemInit.hCNetSDK.NET_DVR_GetLastError());
 		}
 
 		if (nPos.getValue() == 100) {

+ 31 - 65
src/main/java/com/persagy/cameractl/cvr/PlayBackController.java

@@ -10,16 +10,17 @@ import java.util.Timer;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.persagy.cameractl.conf.CameraApiConfig;
+import com.persagy.cameractl.conf.CameraStream;
 import com.persagy.cameractl.cvr.HCNetSDK.NET_DVR_USER_LOGIN_INFO;
 import com.persagy.cameractl.cvr.HCNetSDK.NET_DVR_VOD_PARA;
+import com.persagy.cameractl.init.StreamInfoInit;
+import com.persagy.cameractl.init.SystemInit;
 import com.persagy.cameractl.utils.Camera;
 import com.persagy.cameractl.utils.OtherTools;
 import com.persagy.cameractl.utils.ResultClass;
@@ -27,6 +28,7 @@ import com.sun.jna.Pointer;
 import com.sun.jna.ptr.IntByReference;
 
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.StrUtil;
 
 /**
  * 
@@ -39,20 +41,27 @@ import cn.hutool.core.date.DateUtil;
 public class PlayBackController {
 	public static Logger logger = LoggerFactory.getLogger(PlayBackController.class);
 
-	public static volatile HCNetSDK hCNetSDK;
-	
-	private volatile boolean isInit = false;
-	
-	@Autowired
-	private CameraApiConfig cameraApiConfig;
-
 	@RequestMapping(value = "/playback/{operType}", method = RequestMethod.POST)
 	public ResultClass play(@RequestBody Camera camera, @PathVariable("operType") String operType) throws Exception {
 		ResultClass returnResult = new ResultClass();
 		returnResult.name = false;
 		
+		// 验证是否需要走配置
+		if (StrUtil.isBlank(camera.streamId)) {
+			CameraStream stream = StreamInfoInit.CAMERA_2_STREAM.get(camera.cameraIndexCode);
+			if (stream == null) {
+				returnResult.reason = "不存在此设备的配置信息";
+				return returnResult;
+			}
+			camera.cameraIp = stream.getCvrIp();
+			camera.cameraPort = stream.getCvrPort();
+			camera.userName = stream.getUsername();
+			camera.password = stream.getPassword();
+			camera.streamId = stream.getStreamId();
+		}
+		
 		// SDK初始化
-		boolean init = this.init();
+		boolean init = SystemInit.init();
 		if (!init) {
 			returnResult.reason = "SDK初始化失败";
 			return returnResult;
@@ -60,10 +69,10 @@ public class PlayBackController {
         
         //登录设备,每一台设备分别登录; 登录句柄是唯一的,可以区分设备
         HCNetSDK.NET_DVR_DEVICEINFO_V40 m_strDeviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V40();//设备信息
-        NET_DVR_USER_LOGIN_INFO m_strLoginInfo = this.getLoginObject(cameraApiConfig.getDecodeDeviceUserName(), cameraApiConfig.getDecodeDevicePassword(), cameraApiConfig.getDecodeDeviceIp(), (short)cameraApiConfig.getDecodeDevicePort());
-        int lUserID = hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
+        NET_DVR_USER_LOGIN_INFO m_strLoginInfo = SystemInit.getLoginObject(camera.userName, camera.password, camera.cameraIp, (short)camera.cameraPort);
+        int lUserID = SystemInit.hCNetSDK.NET_DVR_Login_V40(m_strLoginInfo, m_strDeviceInfo);
         if (lUserID == -1) {
-        	int errCode = hCNetSDK.NET_DVR_GetLastError();
+        	int errCode = SystemInit.hCNetSDK.NET_DVR_GetLastError();
         	returnResult.reason = "设备注册失败,失败码: " + errCode;
 			return returnResult;
         }
@@ -86,7 +95,7 @@ public class PlayBackController {
 		}
         
         //退出程序时调用,每一台设备分别注销
-        if (hCNetSDK.NET_DVR_Logout(lUserID)) {
+        if (SystemInit.hCNetSDK.NET_DVR_Logout(lUserID)) {
             logger.info("logout success");
         }
         
@@ -114,16 +123,16 @@ public class PlayBackController {
 	 */
 	public String playBackBytime(File file, String startParam, String endParam, int userID, String streamId) throws IOException {
 		NET_DVR_VOD_PARA net_dvr_vod_para = getPlayBackHkTime(startParam, endParam, streamId);
-		int iPlayBack = hCNetSDK.NET_DVR_PlayBackByTime_V40(userID, net_dvr_vod_para);
+		int iPlayBack = SystemInit.hCNetSDK.NET_DVR_PlayBackByTime_V40(userID, net_dvr_vod_para);
 		if (iPlayBack <= -1) {
-			logger.warn("playback failure, errorCode: " + hCNetSDK.NET_DVR_GetLastError());
-			return "取流失败,失败码: " + hCNetSDK.NET_DVR_GetLastError();
+			logger.warn("playback failure, errorCode: " + SystemInit.hCNetSDK.NET_DVR_GetLastError());
+			return "取流失败,失败码: " + SystemInit.hCNetSDK.NET_DVR_GetLastError();
 		}
 		
 		// 开启取流
-		if (!hCNetSDK.NET_DVR_PlayBackControl_V40(iPlayBack, HCNetSDK.NET_DVR_PLAYSTART, null, 0, null, new IntByReference(0))) {
-			logger.warn("NET_DVR_PlayBackControl_V40 failure, errorCode: " + hCNetSDK.NET_DVR_GetLastError());
-			return "取流失败,失败码: " + hCNetSDK.NET_DVR_GetLastError();
+		if (!SystemInit.hCNetSDK.NET_DVR_PlayBackControl_V40(iPlayBack, HCNetSDK.NET_DVR_PLAYSTART, null, 0, null, new IntByReference(0))) {
+			logger.warn("NET_DVR_PlayBackControl_V40 failure, errorCode: " + SystemInit.hCNetSDK.NET_DVR_GetLastError());
+			return "取流失败,失败码: " + SystemInit.hCNetSDK.NET_DVR_GetLastError();
 		}
 
 		// 保存回调函数的音频数据
@@ -131,7 +140,7 @@ public class PlayBackController {
 		
 		// 设置回放回调函数
 		PlayDataCallBack playBackCallBack = new PlayDataCallBack(outputStream);
-		hCNetSDK.NET_DVR_SetPlayDataCallBack_V40(iPlayBack, playBackCallBack, Pointer.NULL);
+		SystemInit.hCNetSDK.NET_DVR_SetPlayDataCallBack_V40(iPlayBack, playBackCallBack, Pointer.NULL);
 
 		// 开始计时器
 		Timer playbacktimer = new Timer();// 新建定时器
@@ -149,7 +158,7 @@ public class PlayBackController {
 
 		// 如果还没有释放回放资源,需要调用NET_DVR_StopPlayBack释放
 		if (iPlayBack > 0) {
-			hCNetSDK.NET_DVR_StopPlayBack(iPlayBack);
+			SystemInit.hCNetSDK.NET_DVR_StopPlayBack(iPlayBack);
 			iPlayBack = -1;
 		}
 
@@ -157,49 +166,6 @@ public class PlayBackController {
 		return "true";
 	}
 
-	/**
-	 * 获取登录对象
-	 * 
-	 * @param m_sUsername
-	 * @param m_sPassword
-	 * @param m_sDeviceIP
-	 * @param wPort
-	 * @return
-	 * @date 2022年6月23日 下午1:21:08
-	 */
-	private HCNetSDK.NET_DVR_USER_LOGIN_INFO getLoginObject(String m_sUsername, String m_sPassword, String m_sDeviceIP, short wPort) {
-		HCNetSDK.NET_DVR_USER_LOGIN_INFO m_strLoginInfo = new HCNetSDK.NET_DVR_USER_LOGIN_INFO();//设备登录信息
-
-        m_strLoginInfo.sDeviceAddress = new byte[HCNetSDK.NET_DVR_DEV_ADDRESS_MAX_LEN];
-        System.arraycopy(m_sDeviceIP.getBytes(), 0, m_strLoginInfo.sDeviceAddress, 0, m_sDeviceIP.length());
-
-        m_strLoginInfo.sUserName = new byte[HCNetSDK.NET_DVR_LOGIN_USERNAME_MAX_LEN];
-        System.arraycopy(m_sUsername.getBytes(), 0, m_strLoginInfo.sUserName, 0, m_sUsername.length());
-
-        m_strLoginInfo.sPassword = new byte[HCNetSDK.NET_DVR_LOGIN_PASSWD_MAX_LEN];
-        System.arraycopy(m_sPassword.getBytes(), 0, m_strLoginInfo.sPassword, 0, m_sPassword.length());
-
-        m_strLoginInfo.wPort = wPort; //SDK端口
-        m_strLoginInfo.bUseAsynLogin = false; //是否异步登录:0- 否,1- 是
-        m_strLoginInfo.write();
-        
-        return m_strLoginInfo;
-	}
-
-    /**
-     * 初始化SDK
-     * 
-     * @return
-     */
-	private boolean init() {
-		if (!isInit) {
-			// 初始化
-			hCNetSDK = HCNetSDK.INSTANCE;
-			isInit = hCNetSDK.NET_DVR_Init();
-		}
-		return isInit;
-	}
-	
     /**
      * 获取海康录像机格式的时间
      * 

+ 6 - 7
src/main/java/com/persagy/cameractl/cvr/PlaybackTask.java

@@ -1,13 +1,12 @@
 package com.persagy.cameractl.cvr;
 
-import static com.persagy.cameractl.cvr.PlayBackController.hCNetSDK;
-
 import java.io.FileOutputStream;
 import java.io.IOException;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.persagy.cameractl.init.SystemInit;
 import com.sun.jna.ptr.IntByReference;
 
 /**
@@ -37,18 +36,18 @@ public class PlaybackTask extends java.util.TimerTask {
 		logger.info("========= playbackTask start =========");
 
 		IntByReference nPos = new IntByReference(0);
-		boolean bret = hCNetSDK.NET_DVR_PlayBackControl_V40(iPlayBack, HCNetSDK.NET_DVR_PLAYGETPOS, null, 0, nPos.getPointer(), new IntByReference(0));
+		boolean bret = SystemInit.hCNetSDK.NET_DVR_PlayBackControl_V40(iPlayBack, HCNetSDK.NET_DVR_PLAYGETPOS, null, 0, nPos.getPointer(), new IntByReference(0));
 		if (bret) {
 			logger.info("playback download progress: " + nPos.getValue());
 		} else {
-			logger.info("get playback progress faliure, errorCode: " + hCNetSDK.NET_DVR_GetLastError());
+			logger.info("get playback progress faliure, errorCode: " + SystemInit.hCNetSDK.NET_DVR_GetLastError());
 			endStatus = true;
 		}
 
 		// 网络异常导致回放连接断开
 		if (nPos.getValue() > 100) {
 			// 停止回放,释放资源
-			hCNetSDK.NET_DVR_StopPlayBack(iPlayBack);
+			SystemInit.hCNetSDK.NET_DVR_StopPlayBack(iPlayBack);
 			iPlayBack = -1;
 			if (outputStream != null) {
 				try {
@@ -58,13 +57,13 @@ public class PlaybackTask extends java.util.TimerTask {
 				}
 			}
 			endStatus = true;
-			logger.info("playback exception exit, errorCode: " + hCNetSDK.NET_DVR_GetLastError());
+			logger.info("playback exception exit, errorCode: " + SystemInit.hCNetSDK.NET_DVR_GetLastError());
 		}
 
 		// 回放结束
 		if (nPos.getValue() == 100) {
 			// 停止回放,释放资源
-			hCNetSDK.NET_DVR_StopPlayBack(iPlayBack);
+			SystemInit.hCNetSDK.NET_DVR_StopPlayBack(iPlayBack);
 			iPlayBack = -1;
 			if (outputStream != null) {
 				try {

+ 2 - 2
src/main/java/com/persagy/cameractl/cvr/TestController.java

@@ -35,7 +35,7 @@ public class TestController {
 		
 		streamInfoInit.queryStreamIds(addressConfig.getUsername(), addressConfig.getPassword(), addressConfig.getAddress(), addressConfig.getPort());
 		
-		returnResult.resultData = StreamInfoInit.STREAM_IDS;
+		//returnResult.resultData = StreamInfoInit.STREAM_IDS;
 		returnResult.name = true;
 		returnResult.reason = "回放文件生成成功";
 		return returnResult;
@@ -55,7 +55,7 @@ public class TestController {
 		
 		streamInfoInit.queryAddressByStreamId(streamId, addressConfig.getUsername(), addressConfig.getPassword(), addressConfig.getAddress(), addressConfig.getPort());
 		
-		returnResult.resultData = StreamInfoInit.STREAM_IDS;
+		//returnResult.resultData = StreamInfoInit.STREAM_IDS;
 		returnResult.name = true;
 		returnResult.reason = "回放文件生成成功";
 		return returnResult;

+ 1 - 1
src/main/java/com/persagy/cameractl/init/DevInfoCallBack.java

@@ -40,7 +40,7 @@ public class DevInfoCallBack implements FRemoteConfigCallBack {
 				String streamId = new String(strStreamInfo.byID);
 				logger.info("stream id: {}", streamId);
 				if (StrUtil.isNotBlank(streamId)) {
-					StreamInfoInit.STREAM_IDS.add(streamId.trim());
+					//StreamInfoInit.STREAM_IDS.add(streamId.trim());
 				}
 				break;
 			default:

+ 54 - 6
src/main/java/com/persagy/cameractl/init/StreamInfoInit.java

@@ -1,8 +1,10 @@
 package com.persagy.cameractl.init;
 
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.nio.charset.Charset;
+import java.util.HashMap;
+import java.util.Map;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -11,9 +13,10 @@ import org.springframework.boot.ApplicationArguments;
 import org.springframework.boot.ApplicationRunner;
 import org.springframework.core.annotation.Order;
 import org.springframework.stereotype.Component;
+import org.springframework.util.ResourceUtils;
 
-import com.persagy.cameractl.conf.AddressConfig;
 import com.persagy.cameractl.conf.CVRConfig;
+import com.persagy.cameractl.conf.CameraStream;
 import com.persagy.cameractl.cvr.HCNetSDK;
 import com.persagy.cameractl.cvr.HCNetSDK.NET_DVR_STREAM_INFO;
 import com.persagy.cameractl.cvr.HCNetSDK.NET_DVR_STREAM_SRC_INFO_V40;
@@ -21,6 +24,9 @@ import com.persagy.cameractl.cvr.HCNetSDK.NET_DVR_USER_LOGIN_INFO;
 import com.sun.jna.ptr.IntByReference;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
 
 /**
  * 
@@ -33,8 +39,13 @@ import cn.hutool.core.collection.CollectionUtil;
 @Order(10)
 public class StreamInfoInit implements ApplicationRunner {
 	public static Logger logger = LoggerFactory.getLogger(StreamInfoInit.class);
+	/** 项目根路径*/
+	public static final String SERVER_ROOT_PATH = System.getProperty("user.dir");
 
-	public static final Set<String> STREAM_IDS = new HashSet<String>(64);
+	/** cameraIp -> stream */
+	public static final Map<String, CameraStream> CAMERA_2_STREAM = new HashMap<String, CameraStream>(64);
+	
+	//public static final Set<String> STREAM_IDS = new HashSet<String>(64);
 	
 	@Autowired
 	private CVRConfig cvrConfig;
@@ -53,10 +64,46 @@ public class StreamInfoInit implements ApplicationRunner {
 		}
 		
 		// 获取流ID集合
-		List<AddressConfig> addressConfigs = cvrConfig.getAddressConfig();
+		/*List<AddressConfig> addressConfigs = cvrConfig.getAddressConfig();
 		for (AddressConfig addressConfig : addressConfigs) {
 			this.queryStreamIds(addressConfig.getUsername(), addressConfig.getPassword(), addressConfig.getAddress(), addressConfig.getPort());
+		}*/
+		
+		// 获取SDK 流配置文件
+		File file = this.getFile();
+		if (file == null || !file.exists()) {
+			return;
+		}
+		JSONArray readJSONArray = JSONUtil.readJSONArray(file, Charset.forName("UTF-8"));
+		if (readJSONArray == null || readJSONArray.size() == 0) {
+			return;
+		}
+		
+		this.cameraStreams(readJSONArray);
+	}
+	
+	private void cameraStreams(JSONArray readJSONArray) {
+		for (int i = 0; i < readJSONArray.size(); i++) {
+			CameraStream cameraStream = new CameraStream();
+			JSONObject jsonObject = readJSONArray.getJSONObject(i);
+			cameraStream.setCameraIndexCode(jsonObject.getStr("cameraIndexCode"));
+			cameraStream.setStreamId(jsonObject.getStr("streamId"));
+			cameraStream.setCvrIp(jsonObject.getStr("cvrIp"));
+			cameraStream.setCvrPort(jsonObject.getInt("cvrPort"));
+			cameraStream.setUsername(jsonObject.getStr("username"));
+			cameraStream.setPassword(jsonObject.getStr("password"));
+			CAMERA_2_STREAM.put(cameraStream.getCameraIndexCode(), cameraStream);
+		}
+	}
+	
+	private File getFile() throws FileNotFoundException {
+		File file = null;
+		try {
+			file = ResourceUtils.getFile(SERVER_ROOT_PATH + "/resourcesFile/sdk_camera_stream.json");
+		} catch (Exception e) {
+			e.printStackTrace();
 		}
+		return file;
 	}
 	
 	/**
@@ -144,6 +191,7 @@ public class StreamInfoInit implements ApplicationRunner {
         NET_DVR_STREAM_INFO struStreamID = new NET_DVR_STREAM_INFO();
         struStreamID.dwSize = struStreamID.size();
         struStreamID.byID = streamId.getBytes();
+        struStreamID.dwChannel = 0xffffffff;
         struStreamID.write();
         
         NET_DVR_STREAM_SRC_INFO_V40 stream_src_info_v40 = new NET_DVR_STREAM_SRC_INFO_V40();

+ 2 - 2
src/main/java/com/persagy/cameractl/service/HkCameraExecuteApi.java

@@ -121,7 +121,7 @@ public class HkCameraExecuteApi {
 			// 传输协议(传输层协议),0:UDP 1:TCP 默认是TCP 注:GB28181 2011及以前版本只支持UDP传输
 //			jsonBody.put("transmode", 1);
 			String expandStr = "transcode=" + hkCamera.transcode + "&resolution=" + hkCamera.resolution + "&bitrate="
-					+ hkCamera.bitrate + "&videotype=" + hkCamera.videotype;
+					+ hkCamera.bitrate + "&videotype=" + hkCamera.videotype + "&streamform=rtp";
 			jsonBody.put("expand", expandStr);
 			String body = jsonBody.toString();
 			ResultClass sendRequest = SendRequest(url, body);
@@ -184,7 +184,7 @@ public class HkCameraExecuteApi {
 			// 传输协议(传输层协议),0:UDP 1:TCP 默认是TCP 注:GB28181 2011及以前版本只支持UDP传输
 //			jsonBody.put("transmode", 1);
 			String expandStr = "transcode=" + hkCamera.transcode + "&resolution=" + hkCamera.resolution + "&bitrate="
-					+ hkCamera.bitrate + "&videotype=" + hkCamera.videotype;
+					+ hkCamera.bitrate + "&videotype=" + hkCamera.videotype + "&streamform=rtp";
 			jsonBody.put("expand", expandStr);
 			String body = jsonBody.toString();
 			logger.info("params: {}", body);

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 1 - 1
src/main/resources/application.yml