海康摄像头取流地址

URL规定:

rtsp://username:password@<ipaddress>/<videotype>/ch<number>/<streamtype>

01主码流:

rtsp://admin:12345@172.6.22.106:554/h264/ch1/main/av_stream

01子码流:

rtsp://admin:12345@172.6.22.106:554/h264/ch1/sub/av_stream

 

NVR地址:

rtsp://username:password@<address>:<port>/Streaming/Channels/<id>(?parm1=value1&parm2-=value2…)

2通道

rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102?transportmode=unicast       (单播)

rtsp://admin:12345@172.6.22.106:554/Streaming/Channels/102?transportmode=multicast     (多播)

 

回放取流地址

rtsp://username:password@<address>:<port>/Streaming/tracks/<id>(?parm1=value1&parm2-=value2…)

通道1样例

rtsp://admin:12345@172.6.22.106:554/Streaming/tracks/101?starttime=20120802t063812z&endtime=20120802t064816z

 

注意:如果之前尝试多次取流错误,请重启取流摄像头

### Java 实现海康威视摄像头视频流获取 为了实现实时从海康威视摄像头获取视频流并保存至文件的功能,可以通过调用海康威视官方提供的 SDK 来完成。以下是基于已有资料整理的技术实现方法。 #### 配置开发环境 在开始编码之前,需确保已正确安装 JDK 和 IDE(如 IntelliJ IDEA 或 Eclipse)。同时需要引入海康威视的 SDK 库文件,并将其路径配置到项目的依赖中[^2]。 #### 初始化 SDK 初始化 SDK 是连接设备的第一步操作。以下是一个简单的代码片段用于加载库和登录设备: ```java import com.hikvision.netsdk.HCNetSDK; import com.hikvision.netsdk.NET_DVR_DEVICEINFO_V30; public class HikCamera { public static void main(String[] args) { HCNetSDK hCNetSDK = HCNetSDK.INSTANCE; // 加载HCNetSDK实例 boolean initResult = hCNetSDK.NET_DVR_Init(); // 初始化SDK if (!initResult) { System.out.println("Failed to initialize the SDK."); return; } NET_DVR_DEVICEINFO_V30 deviceInfo = new NET_DVR_DEVICEINFO_V30(); int userId = hCNetSDK.NET_DVR_Login_V30( "192.168.1.64".getBytes(), // 设备IP地址 8000, // 端口号 "admin".getBytes(), // 用户名 "password".getBytes(), // 密码 deviceInfo // 存储设备信息的对象 ); if (userId < 0) { // 如果返回值小于0,则表示登录失败 System.out.println("Login failed with error code: " + hCNetSDK.NET_DVR_GetLastError()); hCNetSDK.NET_DVR_Cleanup(); // 清理资源 return; } System.out.println("Login successful!"); // 后续逻辑处理... } } ``` 上述代码展示了如何通过 `NET_DVR_Login_V30` 方法来登录目标摄像机设备。 #### 开始预览与抓视频流 一旦成功登录设备后,就可以启动实时预览功能或者直接捕获视频数据包。下面展示了一个基本的例子说明如何开启预览窗口: ```java int previewHandle = hCNetSDK.NET_DVR_RealPlay_V30(userId, new HCNetSDK.NET_DVR_CLIENT_INFO() {{ hWnd = GetHwnd(); // 设置显示画面句柄 }}, null); if(previewHandle < 0){ System.err.println("Real play start fail! Error Code:" + hCNetSDK.NET_DVR_GetLastError()); } else{ System.out.println("Start real time video successfully !"); } // 停止预览 hCNetSDK.NET_DVR_StopRealPlay(previewHandle); ``` 此部分实现了对指定通道号上的视频进行实时监控[^1]。 #### 将视频流转存为文件 如果希望不仅仅只是观看直播图像还想把它们记录下来的话,那么就需要利用回调函数机制接收每一帧的数据再写入磁盘形成完整的录像文件。注意这里可能涉及到同步问题以及缺少必要的音轨支持等问题[^3]。 ```java byte[] buffer = new byte[1024 * 1024]; // 缓冲区大小设置适当即可 long filePointer = hCNetSDK.NET_DVR_SaveRealData(userId, channelNo, filePath.getBytes()); while(true){ int readSize = hCNetSDK.NET_DVR_Read(filePointer, buffer.length, buffer); if(readSize > 0){ try(FileOutputStream fos = new FileOutputStream(new File(filePath), true)){ fos.write(buffer, 0 ,readSize); }catch(Exception e){e.printStackTrace();} }else break; } hCNetSDK.NET_DVR_CloseSaveFile(filePointer); ``` 以上代码段演示了怎样连续不断地读来自服务器端传来的字节序列并将这些内容追加进最终的目标媒体文档当中去。 #### 错误排查 当遇到诸如错误码169之类的情况时,请确认是否已经开放了相应的短信服务(SMS)所需监听的服务端口比如7660等[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值