返回

轻松搞定!使用Java解码Web前端直接预览海康威视摄像头

后端

海康威视摄像头轻松集成:使用 Java 实现实时预览

背景

在现代网络应用程序中,摄像头集成已成为一项重要功能,可实现实时视频流、监视和安全目的。本文将指导你使用 Java 语言解码 Web 前端,直接预览海康威视摄像头的实时图像,从而轻松集成摄像头功能。

前期准备

在开始之前,请确保已完成以下准备工作:

  • 安装 Java 开发环境
  • 获知海康威视摄像头的 IP 地址和端口号
  • 获取海康威视摄像头的用户名和密码

导入相关依赖

在 Java 项目中,需要导入以下依赖项:

<dependency>
  <groupId>com.github.fengjundev</groupId>
  <artifactId>hikvision-sdk</artifactId>
  <version>4.0.2</version>
</dependency>

代码实现

登录摄像头

int userID = HCNetSDK.INSTANCE.NET_DVR_Login_V30(IP_ADDRESS, PORT, USERNAME, PASSWORD);

设置预览参数

NET_DVR_PREVIEWINFO previewInfo = new NET_DVR_PREVIEWINFO();
previewInfo.lChannel = 1; // 通道号
previewInfo.dwStreamType = 0; // 码流类型:0-主码流,1-子码流
previewInfo.bBlocked = 1; // 是否阻塞预览

开始预览

int previewHandle = HCNetSDK.INSTANCE.NET_DVR_RealPlay_V40(userID, previewInfo, new RealPlayCallBack());

结束预览

HCNetSDK.INSTANCE.NET_DVR_StopRealPlay(previewHandle);

示例代码

完整的示例代码如下:

import com.hikvision.sdk.HCNetSDK;
import com.hikvision.sdk.NET_DVR_PREVIEWINFO;
import com.hikvision.sdk.RealPlayCallBack;

public class CameraPreview {

    private static final String IP_ADDRESS = "192.168.1.1";
    private static final int PORT = 8000;
    private static final String USERNAME = "admin";
    private static final String PASSWORD = "12345";

    public static void main(String[] args) {
        // 初始化SDK
        HCNetSDK.INSTANCE.NET_DVR_Init();

        // 登录摄像头
        int userID = HCNetSDK.INSTANCE.NET_DVR_Login_V30(IP_ADDRESS, PORT, USERNAME, PASSWORD);
        if (userID == -1) {
            System.out.println("登录摄像头失败!");
            return;
        }

        // 设置预览参数
        NET_DVR_PREVIEWINFO previewInfo = new NET_DVR_PREVIEWINFO();
        previewInfo.lChannel = 1; // 通道号
        previewInfo.dwStreamType = 0; // 码流类型:0-主码流,1-子码流
        previewInfo.bBlocked = 1; // 是否阻塞预览

        // 开始预览
        int previewHandle = HCNetSDK.INSTANCE.NET_DVR_RealPlay_V40(userID, previewInfo, new RealPlayCallBack());
        if (previewHandle == -1) {
            System.out.println("预览摄像头失败!");
            return;
        }

        // 等待预览结束
        try {
            Thread.sleep(5000); // 预览5秒钟
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 停止预览
        HCNetSDK.INSTANCE.NET_DVR_StopRealPlay(previewHandle);

        // 注销用户
        HCNetSDK.INSTANCE.NET_DVR_Logout_V30(userID);

        // 释放SDK
        HCNetSDK.INSTANCE.NET_DVR_Cleanup();
    }
}

常见问题解答

1. 预览失败,提示“登录摄像头失败”

  • 检查 IP 地址、端口号、用户名和密码是否正确。
  • 确保摄像头已连接到网络。
  • 确认摄像头已启用 RTSP 服务。

2. 预览失败,提示“预览摄像头失败”

  • 确保通道号正确。
  • 检查码流类型是否正确。
  • 尝试不同的预览参数。

3. 预览图像模糊或卡顿

  • 检查网络连接是否稳定。
  • 尝试降低码率或分辨率。
  • 检查摄像头镜头是否干净。

4. 停止预览失败

  • 确保预览句柄有效。
  • 尝试多次调用 NET_DVR_StopRealPlay 函数。

5. 注销用户失败

  • 确保用户 ID 有效。
  • 尝试多次调用 NET_DVR_Logout_V30 函数。

结论

本文介绍了使用 Java 解码 Web 前端,直接预览海康威视摄像头的完整指南。通过遵循本教程,你可以轻松集成摄像头功能,为你的应用程序增添实时视频流和监视能力。