海康OSD添加获取及清除

函数

NET_DVR_SHOWSTRING_V30 // OSD信息集
NET_DVR_GetDVRConfig// 获取
NET_DVR_SetDVRConfig// 设置

添加

    /**
     * 设置 OSD 字符叠加参数
     *
     * @param iUserID  loginId
     * @param iChan    通道号
     * @param contents 内容
     */
    public static void SetOSDString(int iUserID, int iChan, String[] contents) throws UnsupportedEncodingException {
        if (iUserID < 0) return;
        if (null == contents || contents.length <= 0) return;

        NET_DVR_SHOWSTRING_V30 cfg = new NET_DVR_SHOWSTRING_V30();
        if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_SHOWSTRING_V30, iChan, cfg)) {
            System.out.println("NET_DVR_GET_SHOWSTRING_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError());
            return;
        } else {
            System.out.println("NET_DVR_GET_SHOWSTRING_V30 succ!");
        }


        int iIndex = 0;
        for (int i = 0; i < contents.length; i++) {
            if ("".equals(contents[i]))
                continue;
            if (iIndex >= cfg.struStringInfo.length)//防止超限
                break;

            byte[] tempBytes = new byte[128];
            byte[] osd = contents[i].getBytes("GBK");
            System.arraycopy(osd, 0, tempBytes, 0, osd.length);
            cfg.struStringInfo[iIndex].wShowString = 1;//1为显示,0为不显示
            cfg.struStringInfo[iIndex].sString = tempBytes;//叠加的字符串
            cfg.struStringInfo[iIndex].wStringSize = osd.length;//字符串大小
            // 显示范围704*576
            cfg.struStringInfo[iIndex].wShowStringTopLeftX = 550;//坐标x
            cfg.struStringInfo[iIndex].wShowStringTopLeftY = 50 + (iIndex * 38);//坐标y
            iIndex++;
        }
        HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_SHOWSTRING_V30, iChan, cfg);
    }

获取

    /**
     * 获取 OSD 字符叠加参数
     *
     * @param iUserID loginId
     * @param iChan   通道号
     */
    public static String[] GetOSDString(int iUserID, int iChan) throws UnsupportedEncodingException {

        if (iUserID < 0) return null;
        NET_DVR_SHOWSTRING_V30 cfg = new NET_DVR_SHOWSTRING_V30();
        if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_SHOWSTRING_V30, iChan, cfg)) {
            System.out.println("NET_DVR_GET_SHOWSTRING_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError());
            return null;
        }
        System.out.println("NET_DVR_GET_SHOWSTRING_V30 succ!");

        String[] OSDStrings = new String[cfg.struStringInfo.length];
        for (int i = 0; i < cfg.struStringInfo.length; i++) {
            if (cfg.struStringInfo[i].wShowString == 1) {
                OSDStrings[i] = new String(cfg.struStringInfo[i].sString, "GBK");
            }
        }
        return OSDStrings;
    }

清除

    /**
     * 清除OSD
     *
     * @param iUserID loginId
     * @param iChan   通道号
     */
    public static void ClearOSD(int iUserID, int iChan) {
        if (iUserID < 0) return;
        NET_DVR_SHOWSTRING_V30 cfg = new NET_DVR_SHOWSTRING_V30();
        if (!HCNetSDK.getInstance().NET_DVR_GetDVRConfig(iUserID, HCNetSDK.NET_DVR_GET_SHOWSTRING_V30, iChan, cfg)) {
            System.out.println("NET_DVR_GET_SHOWSTRING_V30 faild!" + " err: " + HCNetSDK.getInstance().NET_DVR_GetLastError());
            return;
        } else {
            System.out.println("NET_DVR_GET_SHOWSTRING_V30 succ!");
        }

        for (int i = 0; i < cfg.struStringInfo.length; i++) {
            cfg.struStringInfo[i].wShowString = 0;//1为显示,0为不显示
        }
        HCNetSDK.getInstance().NET_DVR_SetDVRConfig(iUserID, HCNetSDK.NET_DVR_SET_SHOWSTRING_V30, iChan, cfg);
    }

使用及注意

  • 单行字符的长度,不能大于44 个字符
  • 获取字符时,注意空字符及编解码问题,获取到的字符集是填满的
  • 注意判断边界,防止越界异常

添加OSD

String[] content = new String[3];
content[0] = "test1: 123";
content[1] = "测试2: 我真帅";
content[2] = "it's three";
try {
    DevOSDConfig.SetOSDString(VideoFragment.m_iUserID, 1, content);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

获取OSD

try {
    String[] strings = DevOSDConfig.GetOSDString(VideoFragment.m_iUserID, 1);
    if (strings != null && strings.length > 0)
        for (String string : strings) {
            if (string != null && !string.isEmpty()) {
                L.e(string.trim());
            }
        }

} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}

清除OSD

DevOSDConfig.ClearOSD(VideoFragment.m_iUserID, 1);
易语言是一种面向中文编程的编程语言,它简单易学,适合初学者。海康威视是一家专业从事视频监控领域的公司,提供了各种安防产品和解决方案。 当我们说"易语言海康OSD源码"时,意思是使用易语言编程语言来修改海康威视的OSD(On-Screen Display,屏幕显示)的源代码。 OSD是用于在视频监控系统中显示日期、时间、摄像头名称等信息的功能。通过修改OSD源码,我们可以自定义显示的内容和样式。 使用易语言改OSD源码的步骤如下: 1. 首先,我们需要了解易语言的基本语法和编程逻辑,这样才能正确理解源码并进行修改。 2. 其次,需要获取海康威视的OSD源码。这可能需要与海康威视公司联系,购买相关的软件开发工具或获取SDK(软件开发工具包)。 3. 在获取到源码后,使用易语言的开发环境打开源码文件,并进行代码的编辑。根据需求,我们可以修改显示的内容、字体、颜色、位置等各个方面。 4. 在修改完成后,我们可以执行编译操作,将代码转换为可执行的程序。 5. 最后,将生成的程序安装到目标设备上,通过设备的配置界面启用自定义的OSD显示。 需要注意的是,修改OSD源码需要具备一定的编程知识,对涉及的视频监控设备和监控系统也要有一定的了解。同时,为了确保修改的稳定性和兼容性,我们还需要测试修改后的代码,以验证其正确性和可靠性。 综上所述,易语言海康OSD源码是指使用易语言编程语言来修改海康威视的OSD显示功能的源代码。通过理解易语言编程规则、获取源码、修改代码、编译并安装到设备上,实现自定义的OSD显示效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值