> 技术文档 > 通过java取海康威视摄像头RTSP视频流_java获取海康视频流

通过java取海康威视摄像头RTSP视频流_java获取海康视频流


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页面没有注明,任何地方也没写,这点很坑)
 

3.VLC进行测试

4.通道号正确就可以访问了

5.有取RTSP码流方面的问题,可以直接访问海康提供的网站

网页渠道