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

相关文章

Redis 命令详解与实战案例

《Redis命令详解与实战案例》本文详细介绍了Redis的基础知识、核心数据结构与命令、高级功能与命令、最佳实践与性能优化,以及实战应用场景,通过实战案例,展示了如何使用Redis构建高性能应用系统... 目录Redis 命令详解与实战案例一、Redis 基础介绍二、Redis 核心数据结构与命令1. 字符

交换机救命命令手册! 思科交换机排障命令汇总指南

《交换机救命命令手册!思科交换机排障命令汇总指南》在交换机配置与故障排查过程中,总会遇到那些“关键时刻靠得住的命令”,今天我们就来分享一份思科双实战命令手册... 目录1. 基础系统诊断2. 接口与链路诊断3. L2切换排障4. L3路由与转发5. 高级调试与日志6. 性能与QoS7. 安全与DHCP8.

故障定位快人一步! 华为交换机排障命令汇总

《故障定位快人一步!华为交换机排障命令汇总》在使用华为交换机进行故障排查时,首先需要了解交换机的当前状态,通过执行基础命令,可以迅速获取到交换机的系统信息、接口状态以及配置情况等关键数据,为后续的故... 目录基础系统诊断接口与链路诊断L2切换排障L3路由与转发高级调试与日志性能、安全与扩展IT人无数次实战

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

java中ssh2执行多条命令的四种方法

《java中ssh2执行多条命令的四种方法》本文主要介绍了java中ssh2执行多条命令的四种方法,包括分号分隔、管道分隔、EOF块、脚本调用,可确保环境配置生效,提升操作效率,具有一定的参考价值,感... 目录1 使用分号隔开2 使用管道符号隔开3 使用写EOF的方式4 使用脚本的方式大家平时有没有遇到自

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java