大华监控前端实时预览(踩坑)

文章主要介绍了在前端如何处理大华摄像头的接入,包括下载插件,解决安装问题,使用DHPlayer.js进行视频播放,并提到对讲功能的实现主要依赖后端接口。在过程中遇到的难点如createSuccess方法未被调用的问题,通过修改源码得以解决。
摘要由CSDN通过智能技术生成

难点在后端,前端主要是文档太少了,前端难点主要是接入摄像头,摄像头接入了,剩下什么对讲、调整方向、变焦之类的就简单了。
大华官网:https://open-icc.dahuatech.com/#/home
1.到官网下载插件或者demo,我是下载的插件然后安装了(安装选安装位置的时候记得单独建立一个文件夹,因为安装后里面的东西是直接散开的,没有自己的文件夹),

在这里插入图片描述

ps:如果安装后页面仍然报找不到插件的错,或者重启电脑后播放视频显示找不到插件,多半是因为插件没有运行,1.安装的时候,最后询问是否允许启动,一定要选允许
2.如果已经选了不允许,在安装包里双击运行这个,插件就运行了(每次都要手动点击运行,建议卸载重装,执行第一点的方法)

在这里插入图片描述

2. 安装完之后会有个demo文件,可以直接点开index.html里面有例子和一些api也可以看,也可以在这里试试,填写后端给你的通道号和rtsp地址能不能播放,*本地测试接口未通的情况下需要电脑链接摄像头的网线接口

在这里插入图片描述

3.可以播放的话,就可以把视频接入项目中了,demo里面这个文件里面有使用方法可以看看
在这里插入图片描述
3.1 引入
复制DHPlayer.js进项目里,找个地方放,我放在util文件下的
在main.js 引入

import DHPlayer from '@/utils/DHPlayer'
Vue.use(DHPlayer)

vue页面:
windowType:视频类型 0 实时,1录像
createSuccess: 插件创建成功时调用
video-id 记得给宽高,#dhplayer

        <DHPlayer
          ref="dhplayer"
          video-id="dhplayer"
          :window-type="0"
          @createSuccess="createSuccess"
        />

*在网上搜的例子用到createSuccess,我们也需要找个方法,这个初始化成功之后,才能给视频播放地址,否则会报错。但是这个方法一直没被调用,可能是引入dhplayer.js版本问题,后面看源码就是没emit出去,于是手动改了源码(格式化一下dhplayer.js ,找到找个方法,加个emit)

 createSuccess(){
    this.$refs.dhplayer.setRealTime({
        channelId: this.channelId,//后端给通道号
        stdRtsp: true, // 默认false
        path: `${this.playerUrl}?token=${this.playerToken}`,//后端给的地址,看你们咋拼接,需不需要token
      });
 }

setRealTime这个方法是我在demo文件DHplayer.vue里自己找的,你们有需要也可以看下这个文件,看有没有需要的,毕竟文档太少了
到这步视频就可以播放了。
剩下的就没啥难度了

4.对讲
对讲直接调后端接口+大华api接口就可以了
逻辑:点击开始对讲后,调后端接口,后端返回参数给你后,调setTalk方法。
结束对讲,再调后端接口就行了,不需要再调setTalk方法。所以难点都在后端

     this.$refs.dhplayer.setTalk({
        path: `${data.url}?token=${data.token}`, //restp地址
        audioType: data.audioType, // 音频类型 int  0-default 1-PCM 2-G711a 3-AMR 4-G711U 5-G726 6-AAC 7-G722 8-G711
        audioBit: data.audioBit, // 位数 int   8  16
        sampleRate: data.sampleRate, // 采样频率  8000 16000 32000 48000 8192
        talkType: 1, // 对讲类型: 1 设备  2通道
      });

剩下的按照文档的例子来就行了。

放了一个demo包,可以运行下里面index.html 可以看页面功能对应的源码,我在网页自己下载的demo好像没这个功能,所以放上来你们可以看看。

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
以下是一个使用Java对接大华SDK视频监控实时播放和回放的示例代码: 1. 导入大华SDK的jar包 在项目中导入大华SDK的jar包,可以在官网下载SDK并按照文档进行安装。 2. 初始化SDK 在程序入口处初始化SDK,代码如下: ```java HCNetSDK hCNetSDK = HCNetSDK.INSTANCE; boolean initSuc = hCNetSDK.NET_DVR_Init(); if (!initSuc) { System.out.println("SDK初始化失败"); return; } ``` 3. 登录设备 使用SDK提供的登录方法登录设备,代码如下: ```java HCNetSDK.NET_DVR_DEVICEINFO_V30 deviceInfo = new HCNetSDK.NET_DVR_DEVICEINFO_V30(); int lUserID = hCNetSDK.NET_DVR_Login_V30("设备IP地址", 端口号, "用户名", "密码", deviceInfo); if (lUserID < 0) { System.out.println("设备登录失败"); return; } ``` 4. 实时预览视频 使用SDK提供的预览方法进行实时预览,代码如下: ```java NativeLong lRealHandle = hCNetSDK.NET_DVR_RealPlay_V40(lUserID, previewInfo, null); if (lRealHandle.longValue() < 0) { System.out.println("预览失败"); return; } ``` 其中,previewInfo是一个NET_DVR_PREVIEWINFO结构体,可以通过以下代码进行初始化: ```java HCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new HCNetSDK.NET_DVR_PREVIEWINFO(); previewInfo.lChannel = 1; // 预览的通道号 previewInfo.dwStreamType = 1; // 码流类型,1-主码流,2-子码流 previewInfo.bBlocked = true; // 是否阻塞取流 ``` 5. 停止预览 使用SDK提供的停止预览方法停止实时预览,代码如下: ```java hCNetSDK.NET_DVR_StopRealPlay(lRealHandle); ``` 6. 回放视频 使用SDK提供的回放方法进行视频回放,代码如下: ```java NativeLong lPlayHandle = hCNetSDK.NET_DVR_PlayBackByTime_V40(lUserID, playbackInfo, null); if (lPlayHandle.longValue() < 0) { System.out.println("回放失败"); return; } ``` 其中,playbackInfo是一个NET_DVR_PLAYCOND结构体,可以通过以下代码进行初始化: ```java HCNetSDK.NET_DVR_TIME startTime = new HCNetSDK.NET_DVR_TIME(); startTime.dwYear = 2022; startTime.dwMonth = 2; startTime.dwDay = 1; startTime.dwHour = 0; startTime.dwMinute = 0; startTime.dwSecond = 0; HCNetSDK.NET_DVR_TIME endTime = new HCNetSDK.NET_DVR_TIME(); endTime.dwYear = 2022; endTime.dwMonth = 2; endTime.dwDay = 1; endTime.dwHour = 23; endTime.dwMinute = 59; endTime.dwSecond = 59; HCNetSDK.NET_DVR_PLAYCOND playbackInfo = new HCNetSDK.NET_DVR_PLAYCOND(); playbackInfo.struStartTime = startTime; playbackInfo.struStopTime = endTime; playbackInfo.byDrawFrame = 1; playbackInfo.byStreamType = 0; ``` 7. 停止回放 使用SDK提供的停止回放方法停止视频回放,代码如下: ```java hCNetSDK.NET_DVR_StopPlayBack(lPlayHandle); ``` 以上是一个简单的使用Java对接大华SDK视频监控实时播放和回放的示例,具体实现还需要根据自己的需求进行改进。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值