海康威视摄像头Java B/S推流播放-项目实际使用、视频清晰流畅

一、准备工作

1、前言

最近在项目中需要在网页和手机app端进行视频预览和控制,本文就如何搭建视频流媒体服务、海康视频推流和拉流播放(rtsp流转rtmp流)、云台控制等功能进行讲解。

软件环境:服务器为windows2016,jdk1.8,tomcat9,mysql8.0,Springboot1.5。

2、业务分析

1.使用海康威视的官方SDK访问摄像头,获取摄像头可用通道号,组装rtsp地址,获取摄像头的实时rtsp视频流。

2.使用FFmpeg将rtsp流转换成rtmp流供网页显示。(注:rtsp流不可以直接用网页播放)
-注1:FFmpeg支持转mp4,webm,ogg等多种前言音视频文件的格式转换;
-注2:本文使用rtmp流,有其他需求的小伙伴可以使用FFmpeg转成其他格式;

3.服务器搭建集成nginx-rtmp插件的nginx服务,将转换的rtmp流推送至nginx制定代理地址,实现外网访问。

4.前端页面使用免费的前端H5插件video.js实现实时预览
-注1:video.js支持mp4,webm,ogg三种格式的文件的播放。
-注2:rtmp流属于flv格式只能用flash播放,故需要flash插件支持;(谷歌浏览器从2020年12月31日后不再支持flash(目前2020年12月15日还能播放),可以使用360浏览器播放)
-注3:video.js只有一些版本支持flash,故要选好版本(本文使用的是v5.20.5);–v6、7版本不支持flash

二、环境安装

第一步:安装VLC播放器,测试摄像头是否正常。
(文章最后的下载链接中有地址,注意区分是32位还是64位,我用的是vlc-3.0.6-win64.exe)

vlc–打开媒体–网络–输入以下url–下拉中选择播放,即可预览视频。

rtsp://admin:a123456@10.192.44.101:554/h264/ch1/main/av_stream

解释说明:
admin:设备登录账号;
a123456:设备登录密码;
10.192.44.101:设备的内网IP地址:
554:默认端口(注:不要变,这是取rtsp流的默认端口);
h264:是视频流编码格式;
ch1:通道号;
在这里插入图片描述
第二步:下载FFempg(多媒体处理程序),并配置环境变量

下载地址:https://ffmpeg.zeranoe.com/builds/ 我们选择static版本,下载之后,将压缩包解压到你想安装的地方然后复制ffmpeg.exe文件所在路径,添加至系统环境变量;
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在项目的pom文件中需要引入jar文件(将rtsp流转换成rtmp流就是用这个jar包结合ffmpeg程序和海康dll进行操作)
在这里插入图片描述
在这里插入图片描述

第三步:下载Nginx

1.下载已经集成nginx-rtmp插件的nginx。
传送门:https://github.com/illuspas/nginx-rtmp-win32,解压到指定文件夹,打开conf/nginx.conf文件,这里的live就是上边代码中的rtmp://localhost:1935/live/中的live,可以自己定义。
在这里插入图片描述
2.启动nginx
双击nginx.exe即可启动,在“任务管理器”中可以看到启动后的进程。
在这里插入图片描述
推流就是将rtsp流转为rtmp流并推送至nginx中。而产生的rtmp流地址为:rtmp://xxx.xxx.xxx.xxx:1935/live/appName,这里的xxx.xxx.xxx.xxx是流媒体所在服务器的外网ip;

三、编码

1.在海康官网下载海康威视的最新SDK,选择适合自己环境的SDK下载。
https://www.hikvision.com/cn/download_61.html 在这里插入图片描述
2.下载之后解压,目录如下:
在这里插入图片描述
Demo示例中的是几种开发语言的demo,其中java的是用swing写客户端(亲测可用),C/S架构的,可以参考。库文件中是需要使用的dll运行库;是需要引进项目中的。那个txt文件里说了,有几个文件和文件夹是必须的:HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹。以下是我在项目中放的目录位置:
在这里插入图片描述

– 以下(4、5、6、7)为具体的Java代码,我会打包放在资源下载中,见文章最后的下载链接,无需自己手敲代码,除非项目中需要改动代码进行一些自定义的操作或者配置。

主要代码见下图:
在这里插入图片描述

4.然后在一个全局工具类里写了一个静态方法获取webapp的路径以获取dll文件的路径;
在这里插入图片描述
5.根据SDK压缩包里的那个txt文件所说,修改SDK文件的路径:
在这里插入图片描述
6.编写工具类的各种方法,初始化,注册设备,获取通道:
6.1初始化环境:
在这里插入图片描述

6.2注册设备:
在这里插入图片描述

6.3获取通道:
在这里插入图片描述

6.4:整体调用获取通道号:(关键的地方)

/**
     * 开始推流并获取推流进程名称
     * @param videoBasic 设备信息
     * @param appName 进程名命名
     * @return 返回结果集{msg:"",tasker:""}
     */
    public Map<String,String> startTranscodeAndGetTasker(VideoBasic videoBasic, String appName){
   
        Map<String,String> result = new HashMap<>();
        int code = 0;
        String[] resultNames = {
   "成功","初始化失败","注册前请关闭预览","注册失败","通道获取失败"};

        if(hcTool.initDevices() == 1) code = 1;//初始化失败
        System.out.println("初始化设备(0-成功),code:"+code);
        int regSuc = hcTool.deviceRegist(videoBasic.getUser_name(),videoBasic.getPwd(),videoBasic.getIp(),videoBasic.getPort());
        if(regSuc != 0) code = regSuc;//注册失败
        int channelNumber = hcTool.getChannelNumber();
        if(channelNumber == -1) code = 4;
        if(code == 0) {
   
            String tasker = VideoUtil.startTranscoding(appName,videoBasic.getUser_name(),videoBasic.getPwd(),videoBasic.getIp(),channelNumber);
            System.out.println("推流进程********tasker:"+tasker);
            result.put("tasker", (StringUtils.isNotEmpty(tasker)) ? tasker : appName);
        }else{
   
            result.put("msg",resultNames[code])</
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
要在Java中获取海康威视摄像头的像素流,您可以使用海康威视SDK提供的Java接口。以下是一些基本的步骤: 1. 首先,您需要安装海康威视SDK,并确保您的摄像头能够正常工作并连接到您的计算机。 2. 在Java项目中导入海康威视SDK的Jar文件,并配置相关的依赖项。 3. 创建一个Java类,用于获取像素流。在类中,您需要进行以下操作: - 初始化SDK,并登录到设备。 - 根据设备的IP地址、端口号、用户名和密码创建一个设备对象。 4. 获取像素流的方法可以参考以下步骤: - 配置并设置像素流的属性,如分辨率、编码格式等。 - 使用设备对象创建一个预览句柄。 - 打开预览,使用预览句柄开始预览像素流。 - 使用回调方法来获取像素流的数据。 5. 可以使用适当的方法将像素流数据保存到文件中,或者将其传输到其他地方进行处理。 6. 当不再需要获取像素流时,记得关闭预览句柄并释放设备。 需要注意的是,具体的代码实现和SDK的使用可能因版本而异。您可以参考海康威视SDK的官方文档和示例代码来更详细地了解如何在Java中获取像素流。 总结:通过海康威视SDK提供的Java接口,您可以在Java项目中获取海康威视摄像头的像素流。您需要初始化SDK,登录设备,设置像素流属性,并使用预览句柄来进行预览。通过合适的方法,您可以保存像素流数据或将其传输到其他地方进行处理。具体的实现细节可以参考海康威视SDK的文档和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山月神话

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值