zoukankan      html  css  js  c++  java
  • 海康威视二次开发笔记

    最近遇到客户需要在web页面实时查看监控视频,故写此文章。为记录、也为分享,希望大家对本文的不足之处加以指正。

    这里将我用到的方法一一说明,页面尾部附下载连接。

    首先设置页面宽高

    var oPlugin = {
            iWidth: 730,
            iHeight: 400
        };
    oPlugin

    其次传递参数

    var oLiveView = {
            iProtocol: 1, // 协议 1:http, 2:https
            szIP: "@ip", // ip
            szPort: "@port", //  port
            szUsername: "@userName", //  username
            szPassword: "@password", //  password
            iStreamType: 1, // stream 1:main stream  2:sub-stream  3:third stream  4:transcode stream
            bZeroChannel: false
        };
    oLiveView

    检查插件是否已安装(安装插件完成后需要重新启动浏览器),未安装则提示安装插件。其次也要考虑插件版本问题。登录设备开始预览实时画面(这里需注意登录设备时存在无法播放的情况,需要先行登出设备以防无法播放影响用户体验)。

    var szDeviceIdentify = oLiveView.szIP + "_" + oLiveView.szPort;
    $(function () {
             //检查插件是否已经安装过
            var iRet = WebVideoCtrl.I_CheckPluginInstall();
            if (-1 == iRet) {
                alert("您还未安装过插件,双击开发包目录里的WebComponents.exe安装!");
                return;
            }
            // 初始化插件参数及插入插件
            WebVideoCtrl.I_Logout(szDeviceIdentify); //登出
            WebVideoCtrl.I_InitPlugin(oPlugin.iWidth, oPlugin.iHeight, {
                bWndFull: true, //是否支持单窗口双击全屏,默认支持 true:支持 false:不支持
                iWndowType: 1,
                cbInitPluginComplete: function () {
                    WebVideoCtrl.I_InsertOBJECTPlugin("divPlugin");
    
                    // 检查插件是否最新
                    if (-1 == WebVideoCtrl.I_CheckPluginVersion()) {
                        alert("检测到新的插件版本,双击开发包目录里的WebComponentsKit.exe升级!");
                        return;
                    }
    
                    // 登录设备
                    WebVideoCtrl.I_Login(oLiveView.szIP, oLiveView.iProtocol, oLiveView.szPort,
                        oLiveView.szUsername, oLiveView.szPassword, {
                            success: function (xmlDoc) {
                                getChannelInfo(); //获取通道
                                // 开始预览
                                setTimeout(function () {
                                    WebVideoCtrl.I_Stop();
                                    WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, {
                                        iStreamType: oLiveView.iStreamType,
                                        iChannelID: oLiveView.iChannelID,
                                        bZeroChannel: oLiveView.bZeroChannel
                                    });
                                }, 1000);
                            }
                        });
                }
            });
    View Code

    获取模拟通道、数字通道、零通道

    function getChannelInfo() {
                var channels = $("#channels").empty();
                // 模拟通道
                WebVideoCtrl.I_GetAnalogChannelInfo(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));
                            }
                            channels.append("<li><a onclick=clickStartRealPlay('" + id + "')> " + name + "</a></li>");
                        });
                        //获取模拟通道成功;
                    },
                    error: function (status, xmlDoc) {
                        //获取模拟通道失败!
                    }
                });
                // 数字通道
                WebVideoCtrl.I_GetDigitalChannelInfo(szDeviceIdentify, {
                    async: false,
                    success: function (xmlDoc) {
                        var oChannels = $(xmlDoc).find("InputProxyChannelStatus");
    
                        $.each(oChannels, function (i) {
                            var id = $(this).find("id").eq(0).text(),
                                name = $(this).find("name").eq(0).text(),
                                online = $(this).find("online").eq(0).text();
                            if ("false" == online) { // 过滤禁用的数字通道
                                return true;
                            }
                            if ("" == name) {
                                name = "IPCamera " + (i < 9 ? "0" + (i + 1) : (i + 1));
                            }
                            channels.append("<li><a onclick=clickStartRealPlay('" + id + "')> " + name + "</a></li>");
                        });
                        //获取模拟通道成功;
                    },
                    error: function (status, xmlDoc) {
                        //获取模拟通道失败!
                    }
                });
                // 零通道
                WebVideoCtrl.I_GetZeroChannelInfo(szDeviceIdentify, {
                    async: false,
                    success: function (xmlDoc) {
                        var oChannels = $(xmlDoc).find("ZeroVideoChannel");
    
                        $.each(oChannels, function (i) {
                            var id = $(this).find("id").eq(0).text(),
                                name = $(this).find("name").eq(0).text();
                            if ("" == name) {
                                name = "Zero Channel " + (i < 9 ? "0" + (i + 1) : (i + 1));
                            }
                            if ("true" == $(this).find("enabled").eq(0).text()) { // 过滤禁用的零通道
                                channels.append("<li><a onclick=clickStartRealPlay('" + id + "')> " + name + "</a></li>");
                            }
                        });
                        //获取模拟通道成功;
                    },
                    error: function (status, xmlDoc) {
                        //获取模拟通道失败!
                    }
                });
            }
    getChannelInfo

    以上是HTML页面所有内容。

    注意此种方式目前只支持IE浏览器观看视频。

    所以浏览器也需设置一些内容以防止安全性较高的浏览器将我们的ActiveX插件自动拦截或过滤。

    IE浏览器打开设置-->Internet选项-->安全-->点击自定义级别-->找到ActiveX控件和插件 设置以下内容:

    a)对标记为可安全执行脚本的ActiveX控件执行脚本。启用
    b)对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本。提示
    c)二进制和脚本行为。启用
    d)下载未签名的ActiveX控件。提示
    e)下载已签名的ActiveX控件。提示
    f)允许运行以前未使用的ActiveX控件而不提示。启用
    g)运行ActiveX控件和插件。启用
    h)设置完毕后重启浏览器。

    在这里需要说明一下,安装插件是一定要注意插件版本及操作系统的版本。

    附件下载连接 提取码:16b4

    使用该文件时将codebase文件夹放至项目根目录。

    以上内容就是本次的开发过程,为记录、也为分享。

  • 相关阅读:
    二分练习题4 查找最接近的元素 题解
    二分练习题5 二分法求函数的零点 题解
    二分练习题3 查找小于x的最大元素 题解
    二分练习题2 查找大于等于x的最小元素 题解
    二分练习题1 查找元素 题解
    code forces 1176 D. Recover it!
    code forces 1173 B. Nauuo and Chess
    code forces 1173 C. Nauuo and Cards
    吴恩达深度学习课程笔记-15
    吴恩达深度学习课程笔记-14
  • 原文地址:https://www.cnblogs.com/A-aron/p/10273120.html
Copyright © 2011-2022 走看看