onvif学习笔记9:OSD命令学习

2024-02-10 02:48
文章标签 学习 命令 笔记 osd onvif

本文主要是介绍onvif学习笔记9:OSD命令学习,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

几个月前写了篇介绍OSD坐标系统的文章:《onvif学习笔记6:onvif的OSD坐标小记》,但没有涉及接口,因为当时并不懂。后面发现网络上除了ONVIF官网外,基本没有什么资料介绍ONVIF的OSD功能。于是抽空去了解一下,形成此文。本文只对OSD部分字段做解释,详细具体的参考文后给出的官网地址。

与OSD有关的命令有:CreateOSD、DeleteOSD、GetOSDs、GetOSD、SetOSD、GetOSDOptions。下面根据实际编程经验使用的顺序逐一介绍。

GetOSDOptions:

获取当前相机具备的OSD选项。如字体大小范围、OSD总数、日期时间格式,等等。下面介绍其中的字段。
MaximumNumberOfOSDs,最大OSD叠加数量字段。如果支持不同类型的OSD,如Image、PlainText、DateAndTime等,要返回这些类型的最大数量。比如一般相机都有日期时间,则DateAndTime为1。
Type,叠加类型,如'Text'、'Image'、'Extended'。
PositionOption,叠加位置选项。固定的有左上,右上、左下、右下,即UpperLeft、UpperRight、LowerLeft、LowerRight。不过最多还是使用Custom自定义坐标。
TextOption,叠加文字选项。其中有类型、字体大小范围、字体颜色、字体透明程度、背景颜色。如果当前叠加的文字是日期时间,则类型为DateAndTime;如果是普通文字,则其类型为PlainText。
另外TextOption还有可选的Extension。比如某些型号相机会叠加相机通道(如"Camera 01"),则使用扩展字段表示当然的叠加文字是Channel。
ImageOption,图像选项,目前未研究,不表。
注:在实践中,还有字体颜色范围、颜色空间的字段,我见过的颜色空间一般用YUV,即颜色空间值为"http://www.onvif.org/ver10/colorspace/YCbCr"。不过在ONVIF官网的WSDL中看不到,可能还没更新吧。

GetOSDs:

获取当前相机所有OSD项目。包括OSDtoken、叠加类型、字体大小、字体颜色、字体空间、背景颜色,等。
注意,使用这个接口时,必须传入视频源配置token(VideoSourceConfigurationToken)。每个视频源配置都有对应的OSD。比如相机有3路视频输出,则每路都可以叠加独立的字符,不互相干扰。返回值是一个vector,每个元素都是一个叠加的字符及其属性。

GetOSD:

基本同getOSDs。但传入参数是OSDtoken,而不是视频源配置token。

CreateOSD:

创建OSD,成功后会返回设备上标识的OSD token。——首次接触这个接口时,曾经一度纠结为什么我指定的token不生效,原来真正的token是由相机返回的。
创建的OSD属性参考上面所述。在实际编程中这个接口比较繁琐,因为要视频源配置token,还有字符内容、字符位置、字体大小、颜色,另外,其使用的结构体也要注意内存空间的分配,因为很多个字段都是指针,是没有空间的。
一般设备会有自己OSD的管理机制,比如固定的token:osd_0、osd_1、osd_2,等等,如果已经存在osd_0、osd_2时,则该命令创建时,会返回osd_1。

SetOSD:

设置OSD。与CreateOSD基本一样,但该命令使用的是相机已经存在的OSDtoken。因为这个命令描述为“修改OSD”更妥当一些。

DeleteOSD:

删除OSD,传入的OSDToken是相机已经存在的。

注:token是ONVIF中应用比较广的一个概念。可以理解为标识符。OSD模块有token,视频源配置有token,编码配置也有token,等等。接触ONVIF这么久,实然发现,ONVIF编程除了编码麻烦之外,需要理解其概念之外,也没有什么难搞的地方。

由于ONVIF可参考资料较少,文中难免有错漏之处,欢迎指正,一起学习,共同进步。

参考资料:http://www.onvif.org/ver10/media/wsdl/media.wsdl


李迟 2016.6.11 周六  端午假期

这篇关于onvif学习笔记9:OSD命令学习的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/695961

相关文章

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

使用mvn deploy命令上传jar包的实现

《使用mvndeploy命令上传jar包的实现》本文介绍了使用mvndeploy:deploy-file命令将本地仓库中的JAR包重新发布到Maven私服,文中通过示例代码介绍的非常详细,对大家的学... 目录一、背景二、环境三、配置nexus上传账号四、执行deploy命令上传包1. 首先需要把本地仓中要

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

linux打包解压命令方式

《linux打包解压命令方式》文章介绍了Linux系统中常用的打包和解压命令,包括tar和zip,使用tar命令可以创建和解压tar格式的归档文件,使用zip命令可以创建和解压zip格式的压缩文件,每... 目录Lijavascriptnux 打包和解压命令打包命令解压命令总结linux 打包和解压命令打

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操