zhaowenyu
2026-01-06 4e8a1c02b45f72f6377603778e8c8746ed82f374
ard-device/src/main/java/com/ard/device/component/sdk/dh/service/impl/DaHuaSDK.java
@@ -17,6 +17,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.*;
@@ -102,7 +103,8 @@
    public void login(ArdCamera camera) {
        try {
            NetSDKLib.NET_DEVICEINFO_Ex m_stDeviceInfo = new NetSDKLib.NET_DEVICEINFO_Ex();
            NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(), camera.getPassword(), m_stDeviceInfo);
            NetSDKLib.LLong loginId = LoginModule.login(camera.getIp(), camera.getPort(), camera.getUsername(),
                    camera.getPassword(), m_stDeviceInfo);
            if (loginId.longValue() <= 0) {
                camera.setChanNum(0);
                camera.setLoginId(-1L);
@@ -116,7 +118,7 @@
            camera.setChanNum(m_stDeviceInfo.byChanNum);
            camera.setStartChan(1);
            camera.setLoginId(loginId.longValue());
            GlobalVariable.loginMap.put(camera.getId(), loginId);
            //获取最新通道
            List<ArdChannel> ardChannelList = getChannels(camera);
            if (!ardChannelList.isEmpty()) {
@@ -135,11 +137,8 @@
     * 2023/10/17 8:28:13
     */
    @Override
    public void logout(String cameraId) {
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return;
        }
        NetSDKLib.LLong loginId = (NetSDKLib.LLong) GlobalVariable.loginMap.get(cameraId);
    public void logout(ArdCamera ardCamera) {
        NetSDKLib.LLong loginId = new NetSDKLib.LLong(ardCamera.getLoginId());
        LoginModule.logout(loginId);
    }
@@ -149,13 +148,9 @@
     * 2023/10/17 8:28:13
     */
    @Override
    public boolean isOnLine(CameraCmd cmd) {
    public boolean isOnLine(ArdCamera ardCamera) {
        try {
            String cameraId = cmd.getCameraId();
            if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                return false;
            }
            NetSDKLib.LLong loginId = (NetSDKLib.LLong) GlobalVariable.loginMap.get(cameraId);
            NetSDKLib.LLong loginId = new NetSDKLib.LLong(ardCamera.getLoginId());
            NetSDKLib.NET_WORKSTATE dh_ptz_location_info = new NetSDKLib.NET_WORKSTATE();
            boolean b = ConfigModule.queryDevState(loginId, NET_DEVSTATE_ONLINE, dh_ptz_location_info);
            if (!b) {
@@ -185,8 +180,8 @@
            channel.setDeviceId(camera.getId());
            channel.setChanNo(i);
            //获取视频编码
            CameraCmd cameraCmd = new CameraCmd(camera.getId(), channel.getChanNo());
            VideoCompressionCfg videoCompressionCfg = getVideoCompressionCfg(cameraCmd);
            camera.setChanNo(i);
            VideoCompressionCfg videoCompressionCfg = getVideoCompressionCfg(camera);
            if (StringUtils.isNotNull(videoCompressionCfg)) {
                channel.setVideoCode(videoCompressionCfg.getVideoEncType());
            }
@@ -202,16 +197,12 @@
    }
    @Override
    public VideoCompressionCfg getVideoCompressionCfg(CameraCmd cmd) {
        String cameraId = cmd.getCameraId();
        Integer chanNo = cmd.getChanNo();
        if (!GlobalVariable.loginMap.containsKey(cameraId)) {
            return null;
        }
        NetSDKLib.LLong loginId = (NetSDKLib.LLong) GlobalVariable.loginMap.get(cameraId);
    public VideoCompressionCfg getVideoCompressionCfg(ArdCamera ardCamera) {
        NetSDKLib.LLong loginId = new NetSDKLib.LLong(ardCamera.getLoginId());
        NetSDKLib.CFG_ENCODE_INFO cfg_encode_info = new NetSDKLib.CFG_ENCODE_INFO();
        cfg_encode_info.nChannelID = chanNo - 1;
        boolean b = ConfigModule.GetNewDevConfig(loginId, chanNo - 1, CFG_CMD_ENCODE, cfg_encode_info);
        cfg_encode_info.nChannelID = ardCamera.getChanNo() - 1;
        boolean b = ConfigModule.GetNewDevConfig(loginId, ardCamera.getChanNo() - 1, CFG_CMD_ENCODE, cfg_encode_info);
        if (b) {
            int emCompression = cfg_encode_info.stuMainStream[0].stuVideoFormat.emCompression;//视频格式
            String videoEncType;