1.配置录像机web页面

这里明确端口号
2.java代码
// 业务代码中调用 public String getRTSPUrl(String username, String password, int channel) { // 测试阶段写死设备 IP String deviceIP = "122.226.147.54"; // 初始化 SDK boolean initResult = hCNetSDK.NET_DVR_Init(); if (!initResult) { System.out.println("SDK 初始化失败"); return null; } // 登录设备(使用测试 IP) Login_V40(deviceIP, (short)8001, username, password); if (lUserID >= 0) { // 可以添加检查设备状态的逻辑 // 例如,尝试获取设备的一些基本信息,判断设备是否正常响应 } else { System.out.println("设备未登录"); } try { // 获取 RTSP 配置 HCNetSDK.NET_DVR_RTSPCFG rtspConfig = new HCNetSDK.NET_DVR_RTSPCFG(); rtspConfig.dwSize = rtspConfig.size(); boolean result = hCNetSDK.NET_DVR_GetRtspConfig( lUserID, HCNetSDK.NET_DVR_GET_RTSP_CONFIG, rtspConfig, rtspConfig.dwSize ); //此录像机被硬件改了,默认端口554是内网。555是公网。 if (result) { int portNum = rtspConfig.wPort; System.out.println("【调试】获取的 RTSP 端口: " + portNum); return String.format("rtsp://%s:%s@%s:%d/Streaming/Channels/%d", username, password, deviceIP, 555, channel); } else { int errorCode = hCNetSDK.NET_DVR_GetLastError(); System.out.println("【错误】获取 RTSP 配置失败,错误码: " + errorCode); // 临时调试:强制使用 554 端口 System.out.println("【调试】使用默认端口 554"); return String.format("rtsp://%s:%s@%s:554/Streaming/Channels/%d", username, password, deviceIP, channel); } } finally { // 释放资源 hCNetSDK.NET_DVR_Logout(lUserID); hCNetSDK.NET_DVR_Cleanup(); } }
这只是一个测试方法,通过main调用。
文章中登录方法,初始化方法,这些就不一一贴图了,在HCNetSDK类中有
生成的RTSP连接大概如下:
之前本人一直用通道33,因为录像机的第一个摄像头通道我们是33,所以一直无法使用,结果问了海康的技术支持才发现,主码流是101,次码流是102,其实前两位,10代表通道,摄像头插在录像机的第一个口,就是通道1,第二个口,这里就是201。(海康的web页面没有注明,任何地方也没写,这点很坑)