海康威视javaSDK调用步骤以及下载无法播放的解决方案

由于之前公司项目中需要用到海康威视的摄像头,所以之前也在网上调研过,虽然也是给我一点启示,但是还是满足不了很多疑问,下面是自己踩的坑

  1. 首先下载官方的sdk,注意请先确认自己是linux版本 还是windows版本的,sdk是有差异的,调用的插件文件也是不一样的。官网下载自己对应的sdk
  2. 解压完打开最后一个txt文件,按照说明将制定文件copy到指定目录
    在这里插入图片描述
  3. 然后将实例demo导入到IDE中,注意examples.jar和jna.jar要导入到项目中,然后打开HCNetSDK.java,找到
  HCNetSDK INSTANCE = (HCNetSDK) Native.loadLibrary("C:\\Users\\Administrator\\Desktop\\项目资料\\摄像头sdk\\CH-HCNetSDK(Windows64)V5.3.1.21_build20170811\\Demo示例\\4- Java 开发示例\\ClientDemo-NetBeansPro\\HCNetSDK",
            HCNetSDK.class);

我这里HCNetSDK是放到c盘的目录下面的,根据自己的目录调整路径,然后启动项目就可以看demo啦。如图
在这里插入图片描述
输入摄像头的信息就可以点击预览了。

  1. 下面是我在开发过程中遇到的问题,和解决方案,希望对大家有所帮助

在客流量统计模块,按照开发文档的流程,编写了demo发现回调函数不走
第一种原因是,完全按照官方文档来,布防以后,回调函数还没来得及执行,就直接撤防了,导致回调函数不走,这个要根据自己的情况进行撤防和释放资源。
第二种原因是摄像头没有摄像硬件布防,登录网站
http://摄像头ip/doc/page/config.asp进行配置(配置教程

  1. 视频下载模块,因为我们是用CVR将多个摄像头上面的情况,在视频下载中有个通道号设置
 HCNetSDK.NET_DVR_PLAYCOND netDvrPlaycond = new HCNetSDK.NET_DVR_PLAYCOND();
            //通道号
            netDvrPlaycond.dwChannel = Integer.valueOf(1);
            netDvrPlaycond.struStartTime = struStartTime;
            netDvrPlaycond.struStopTime = struStopTime;

这个netDvrPlaycond.dwChannel设置非常重要,每个摄像头将视频传到cvr中的时候都有一个唯一的通道号,我们就是根据这个通道号去查询对应的摄像头视频,去保存到我们自己服务器上。

  1. 我们的需求是将下载的视频在页面上直接播放,但是在播放的时候发现播放不出来,尝试了各种视频插件都不行。在大佬的指导下才知道原来是视频的音频格式不对。下面大佬的问答

因为你的音频不是mpeg4容器支持的音频格式。通过mediainfo分析可知,你的音频格式是pcm_alaw,并且还有一行警告信息:
FileExtension_Invalid : mpeg mpg m2p vob vro pss evo
你的视频格式应该是MPEG-PS格式,但是后缀却是mp4,其实是一个非法的MP4。mediainfo还会告诉你合法的后缀应该是上述那几个。由于你的音频格式根本不被浏览器支持,但是视频格式是被浏览器支持的(H.264/AVC)。那么解决方案其实也简单,抽调音频即可。参考ffmpeg命令行(不转码,直接复制流):
ffmpeg -i demo.mp4 -c copy -an demp_enc.mp4
速度很快,使用-an参数屏蔽掉音频流,将封装格式转为mp4。再次用mediainfo查看,格式已经显示MPEG-4,是一个标准的mp4容器封装了,在当今主流的浏览器都能直接播放。

下载ffmpeg解码工具官网下载ffmpeg,解压安装找到ffmpeg.exe。下面是我的java测试代码

  private static String ffmpegEXE = "E:\\ffmpeg-20190425-1ae5a64-win64-static\\bin\\ffmpeg.exe";

    public static void main(String[] args) {
        try {
            convetor("E:\\ffmpeg-20190425-1ae5a64-win64-static\\bin\\demo.mp4","E:\\ffmpeg-20190425-1ae5a64-win64-static\\bin\\test.mp4");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    //ffmpeg -i demo.mp4 -c copy -an demp_enc.mp4
    public static void convetor(String videoInputPath, String videoOutPath) throws Exception {
        List<String> command = new ArrayList<String>();
        command.add(ffmpegEXE);
        command.add("-i");
        command.add(videoInputPath);
        command.add("-c");
        command.add("copy");
        command.add("-an");
        command.add(videoOutPath);
        ProcessBuilder builder = new ProcessBuilder(command);
        Process process = null;
        try {
            process = builder.start();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // 使用这种方式会在瞬间大量消耗CPU和内存等系统资源,所以这里我们需要对流进行处理
        InputStream errorStream = process.getErrorStream();
        InputStreamReader inputStreamReader = new InputStreamReader(errorStream);
        BufferedReader br = new BufferedReader(inputStreamReader);
        String line = "";
        while ((line = br.readLine()) != null) {
        }
        if (br != null) {
            br.close();
        }
        if (inputStreamReader != null) {
            inputStreamReader.close();
        }
        if (errorStream != null) {
            errorStream.close();
        }

    }

运行完就会多一个视频文件,然后就可以用通用播放器播放这个新的视频了,至于老的视频任凭自己需求处理掉就行啦

  • 最后在附上官方开发人员的邮箱 sdk@hikvision.com 。感谢海康威视在开发中对我的疑问做出解答
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
qt是一种跨平台的集成开发环境,而海康威视是一个著名的安防产品和解决方案提供商。对于海康威视sdk调用教程,qt提供了丰富的支持和且易于使用的方法。 首先,使用qt的前提是安装好qt的开发环境。接下来,需要下载海康威视sdk并进行配置。在qt中,可以使用Qt Creator作为集成开发环境进行开发。在项目中添加海康威视sdk,并设置相应的路径。 一般情况下,海康威视sdk提供了一些示例代码,以供参考。可以在qt中创建一个新的项目,并使用Qt Creator进行代码编写和调试。根据海康威视sdk的文档和示例代码,可以了解sdk提供的功能和使用方法。可以在qt的项目中引入相关的头文件和库文件,以便能够正确地调用sdk的接口和函数。 在编写代码的过程中,可以使用qt的信号和槽机制来处理海康威视sdk的回调函数和事件。可以将海康威视sdk的函数和操作与qt的界面进行交互,在界面中显示视频流或者控制相机等功能。 此外,qt还提供了丰富的文档和开发者社区来帮助开发者解决问题和获取更多的技术支持。可以在网上搜索相关的教程和案例,以便更好地理解和使用海康威视sdk。 总体而言,qt对于海康威视sdk调用提供了强大的支持和易用的方法。通过合理配置和编写代码,可以实现与海康威视的设备和产品的连接和操作。使用qt开发海康威视的应用程序,可以更加高效地实现各种安防监控和视频处理功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值