在vue中实现海康摄像头播放,采用海康web无插件3.2开发包,采用Nginx代理IIS服务器实现;

1 摄像头要求,支持websocket

2 Nginx反向代理的结构

3 vue前端显示视频流代码

参考地址:
https://blog.csdn.net/Vslong/article/details/118517641?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-118517641-blog-123397690.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-4-118517641-blog-123397690.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=4

3.1 在海康威视的官网进行下载开发包

https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10&id=4c945d18fa5f49638ce517ec32e24e24

3.2 配置自己的webVideo.js和html

(1)新建webVideo.js文件,assets/script/webVideo.js,内容如下:

export function WebVideo() {this.g_iWndIndex = 0this.szDeviceIdentify = ''this.deviceport = ''this.rtspPort = ''this.channels = []this.ip = ''this.port = '80'this.username = ''this.password = ''this.init = function(ip, username, password) {this.ip = ipthis.username = usernamethis.password = password// var self = this// 检查插件是否已经安装过// var iRet = WebVideoCtrl.I_CheckPluginInstall();// if (-1 == iRet) {//     alert("您还未安装过插件,双击开发包目录里的WebComponentsKit.exe安装!");//     return;// }// 初始化插件参数及插入插件WebVideoCtrl.I_InitPlugin(454, 315, {szColorProperty: 'plugin-background:#102749; sub-background:#102749; sub-border:#18293c; sub-border-select:red',bWndFull: true, // 全屏// iPackageType: 2,iWndowType: 1, //分屏bNoPlugin: true, // 支持无插件cbInitPluginComplete: function () {WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin");}});}// 登录this.clickLogin = function () {var self = thisif ("" == self.ip || "" == self.port) {return;}debuggerself.szDeviceIdentify = self.ip + "_" + self.port;WebVideoCtrl.I_Login(self.ip, 1, self.port, self.username, self.password, {success: function (xmlDoc) {        setTimeout(function () {console.log('登录成功');self.getChannelInfo();self.getDevicePort();}, 10);setTimeout(function() {self.clickStartRealPlay()}, 500)},error: function (status, xmlDoc) {console.log('登录失败');}});}// 退出this.clickLogout = function() {var self = thisself.channels = []if (null == self.szDeviceIdentify) {return;}var iRet = WebVideoCtrl.I_Logout(self.szDeviceIdentify);if (0 == iRet) {self.getChannelInfo();self.getDevicePort();}}// 获取通道this.getChannelInfo = function() {var self = thisself.channels = []if (null == self.szDeviceIdentify) {return;}// 模拟通道WebVideoCtrl.I_GetAnalogChannelInfo(self.szDeviceIdentify, {async: false,success: function (xmlDoc) {var oChannels = $(xmlDoc).find("VideoInputChannel");$.each(oChannels, function (i) {var id = $(this).find("id").eq(0).text(),name = $(this).find("name").eq(0).text();if ("" == name) {name = "Camera " + (i < 9 ? "0" + (i + 1) : (i + 1));}self.channels.push({id: id,name: name})});console.log('获取模拟通道号成功')},error: function (status, xmlDoc) {console.log('获取模拟通道号失败')}});}// 获取端口this.getDevicePort = function() {var self = thisif (null == self.szDeviceIdentify) {return;}var oPort = WebVideoCtrl.I_GetDevicePort(self.szDeviceIdentify);if (oPort != null) {self.deviceport = oPort.iDevicePort;self.rtspPort = oPort.iRtspPort;}console.log('获取端口号成功')}// 开始预览this.clickStartRealPlay = function() {var self = thisvar oWndInfo = WebVideoCtrl.I_GetWindowStatus(self.g_iWndIndex),iChannelID = self.channels[0].idif (null == self.szDeviceIdentify) {return;}var startRealPlay = function () {WebVideoCtrl.I_StartRealPlay(self.szDeviceIdentify, {iChannelID: iChannelID,bZeroChannel: false,iStreamType: 2,success: function () {console.log('预览成功')},error: function (status, xmlDoc) {if (403 === status) {console.log('设备不支持Websocket取流')} else {console.log('预览失败')}}});};if (oWndInfo != null) {// 已经在播放了,先停止WebVideoCtrl.I_Stop({success: function () {startRealPlay();}});} else {startRealPlay();}}// 停止预览this.clickStopRealPlay = function() {var self = thisvar oWndInfo = WebVideoCtrl.I_GetWindowStatus(self.g_iWndIndex)if (oWndInfo != null) {WebVideoCtrl.I_Stop({success: function () {console.log('停止预览成功')},error: function () {console.log('停止预览失败')}});}}
}

(2)再建立一个vue界面,内容如下

<template><el-main><div><h1>进入页面</h1></div><div class="video-play"><div id="divPlugin" class="divPlugin" style="width: 454px;height: 315px" /></div></el-main>
</template>
<script>import { WebVideo } from '@/assets/script/webVideo.js'export default {name: 'VideoPlay',// mixins: [resize],data() {return {webVideo: '',hkvInfo: {ip: '10.196.43.200',username: 'admin',password: 'hik12345+'}}},created() {},mounted() {this.initVideoPlay()},beforeDestroy() {this.stopVideoPlay()},methods: {initVideoPlay() {this.webVideo = new WebVideo()this.$nextTick(() => {this.webVideo.init(this.hkvInfo.ip, this.hkvInfo.username, this.hkvInfo.password)this.webVideo.clickLogin()})},stopVideoPlay() {this.webVideo.clickStopRealPlay()this.webVideo.clickLogout()}}}
</script><style>.plugin {width: 500px;height: 300px;}
</style>

(3)引用海康开发包
将海康开发包,放到Public文件下

在index.html文件中引用相关js文件,如下图

  <script type="text/javaScript" src="./webVideoCtrl.js"></script><script type="text/javaScript" src="./cryptico.min.js"></script><script type="text/javaScript" src="./jquery-1.12.1.min.js"></script>

4 IIS正常发布网站

网站端口号为Nginx中配置的端口号9007

5 nginx环境部署

5.1 nginx配置

海康无插件开发包中地址打开nginx.conf文件
WEB无插件开发包_20211014_20211019120439\nginx-1.10.2\conf\nginx.conf

修改内容如下,
本地IP为10.196.43.220,127.0.0.1/localhost都可换成10.196.43.220
本地IIS配置IP端口号:127.0.0.1:9007
Nginx反向代理为localhost:9008

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';access_log  logs/access.log  main;#access_log      off;client_max_body_size 50m;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;upstream netitcast{ #代理http://netitcastserver 127.0.0.1:9008 weight=2; #iis发布网站 weight权重#server 127.0.0.1:7244 weight=1; }# 配置虚拟主机server { listen       9007; #配置监听端口server_name  localhost; #配置服务器名称#charset koi8-r; #字符集 koi8-r(俄罗斯)access_log  logs/host.access.log  main;#websocket相关配置proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header X-real-ip $remote_addr;proxy_set_header X-Forwarded-For $remote_addr;location / { #location匹配#root   "../webs"; #文件地址#index  index.html index.htm; #文件首页proxy_pass  http://netitcast;  #转发代理 upstream netitcast#proxy_redriedic index.html;}location ~ /ISAPI|SDK/ {if ($http_cookie ~ "webVideoCtrlProxy=(.+)") {proxy_pass http://$cookie_webVideoCtrlProxy;break;}}location ^~ /webSocketVideoCtrlProxy {#web socketproxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;if ($http_cookie ~ "webVideoCtrlProxyWs=(.+)") {proxy_pass http://$cookie_webVideoCtrlProxyWs/$cookie_webVideoCtrlProxyWsChannel?$args;break;}if ($http_cookie ~ "webVideoCtrlProxyWss=(.+)") {proxy_pass http://$cookie_webVideoCtrlProxyWss/$cookie_webVideoCtrlProxyWsChannel?$args;break;}}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# error_page  302  /50x.html;# location = /50x.html {#     root   html;# }# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

5.2 双击 start.bat 启动Nginx代理

6 前端访问

http://10.196.43.220:9007
访问地址一定要是本机的IP:10.196.43.220
127.0.0.1/localhost访问都是不会显示视频画面

海康摄像头web无插件3.2,vue开发,Nginx代理IIS服务器相关推荐

  1. php对接海康视频教程_EasyNVR无插件互联网直播平台对接海康摄像头如何通过SDK将视频在前端网页播放...

    原标题:EasyNVR无插件互联网直播平台对接海康摄像头如何通过SDK将视频在前端网页播放 市场上常见的海康.大华.宇视等网络摄像头只要支持RTSP协议,都可以接入到EasyNVR中,今天主要给大家分 ...

  2. Java版基于springboot+maven海康摄像头sdk抓拍功能的二次开发

    相信在用Java开发海康摄像头的小袁袁都很苦恼官网给的SDK,官方的SDK中有demo,有文档,可那大多都是基于C写的文档,找了半天终于找到一个java版本的,进去一看还是用Jfream写的C/S版的 ...

  3. 海康视频流html无插件播放,RTSP_ONVIF协议视频流媒体网页无插件直播服务器EasyNVR配置海康大华等安防摄像头通道地址的方法...

    EasyNVR流媒体服务支持RTSP稳定拉流接入,支持Onvif协议接入,支持RTMP/HLS/HTTP-FLV分发,将传统安防监控设备互联化,无插件直播等. 通道配置 点击通道配置进入通道配置页,然 ...

  4. 海康摄像头web集成播放,ffmpeg+nginx方案

    首先介绍下海康设备对接方案,目前主流的是通过海康的api对接和硬件sdk,api的话需要配套海康的萤石平台或者安防平台,官网可以下载,他们提供健全的api接口满足正常的web浏览器调用,sdk的话对于 ...

  5. 海康视频流html无插件播放,[原创.数据可视化系列之二十一]如何让海康大华实时视频在浏览器上无插件播放之二...

    我在上一篇文章中提出一个使用海康大华的监视视频在chrome中无插件显示的办法,也可以勉强事情,但是实际使用的过程中,有很多问题,比较适合复杂环境中使用. 还有另外一个模式可以进行处理,那就是在浏览器 ...

  6. LiveNVR安防摄像头Web无插件直播平台页面的快速集成方法

    Onvif/RTSP流媒体服务 适合局域网络监控,将摄像机的rtsp流拉转分发,搭建试用入口 演示地址 http://nvr.liveqing.com 关闭接口鉴权 允许游客访问 默认的接口鉴权是开启 ...

  7. 海康威视web无插件开发包webVideoCtrl.js+vue做网页开发

    最近项目需要在网页上预览海康的摄像头实时画面,遇到一些问题和踩了一些坑,在这里梳理一下. 我本次前端开发使用的是vue-admin-template. 一.上来第一步,先不要着急开发,先看看公司的摄像 ...

  8. 海康、大华摄像头网页无插件直播监控流媒体服务EasyNVR使用web和安卓浏览器能正常使用,苹果手机无法打开问题解决

    海康.大华摄像头网页无插件直播监控流媒体服务EasyNVR使用web和安卓浏览器能正常使用,苹果手机无法打开问题解决 参考文章: (1)海康.大华摄像头网页无插件直播监控流媒体服务EasyNVR使用w ...

  9. HTML网页调用海康摄像头,[FastVideo]Web Html5 无插件方式连接海康摄像头[2]

    [实例简介] 此程序可以在Web Html通过Url或者 JS的方式调用海康摄像头,不需要在客户机浏览器安装插件.可以安装为服务,为Web提供后台服务. [实例截图] [核心代码] FastVideo ...

最新文章

  1. html旋转三角菜单,css3 这个三角怎么旋转_html/css_WEB-ITnose
  2. 软件工程--第五章-- 总体设计
  3. 到底什么是跨域?附解决方案
  4. 动态类型var和dynamic和传统确定类型区别和效率
  5. tf.Variable、tf.get_variable、tf.variable_scope以及tf.name_scope
  6. group by 后面加条件_无论炖什么肉,只要加这“两种”调料,肉质鲜嫩入味,越炖越香...
  7. Principle --03
  8. linux中哪个命令可以压缩部分文件,可以使用Linux解压缩命令,解压缩任意格式的压缩文件。...
  9. Mootools:Hash中的null值
  10. QT3D场景的快速绘制
  11. 蓝桥杯 摔手机----耐摔指数
  12. JAVA多态的理解及应用
  13. 按文件名批量分类文件到文件夹
  14. 二叉树前序遍历--递归
  15. 安装pytorch 后torch.cuda.is_available()返回False的解决方法
  16. 微信小程序音乐播放器
  17. 移动端web开发技巧 -- 转载
  18. 神奇的Grails:自关联的树状Domain一行代码获取所有子节点
  19. 几何算法——6.曲线曲面求交的方法总结(国内外文献调研、思考和总结)
  20. 艾永亮:是亲情还是束缚?小天才电话手表是怎么火爆市场的?

热门文章

  1. BUG修复 expected type
  2. go的微服务框架go-zero
  3. CTF 常用python库
  4. Faiss安装之问题重重
  5. 管理类联考——写作——素材篇——论说文——写作素材02——志篇:毅力·坚持
  6. 如何短视频App功能
  7. 云和恩墨大讲堂 x 长江鲲鹏 x openGauss Meetup(武汉站)圆满落幕!
  8. 从2013到2017 CGU 草根战队的电竞梦
  9. SPSS在餐饮业中的应用
  10. 开启Excel的自动保存功能(转)