Login
升级VIP 登录 注册 安全退出
当前位置: 首页 > word文档 > 合同模板 > ONVIF协议珍藏版,onvif协议和海康威视协议

ONVIF协议珍藏版,onvif协议和海康威视协议

收藏

本作品内容为ONVIF协议珍藏版,格式为 docx ,大小 679882 KB ,页数为 297页

ONVIF协议珍藏版


('1范围...........................................................................................................................................162引用标准3术语与定义3.1定义3.2缩写4概述4.1WEB服务4.2IP配置4.3设备发现4.4设备类型4.5设备管理4.5.1功能4.5.2网络4.5.3系统4.5.4系统信息检索4.5.5固件升级4.5.6系统还原4.5.7安全4.6设备IO4.7图像配置4.8媒体配置4.8.1媒体配置文件4.9实时流4.10事件处理4.11PTZ控制4.12视频分析4.13分析设备4.14显示4.15接收器4.15.1同步点4.16存储4.16.1存储模式4.16.2记录4.16.3查找4.16.4回放4.17安全5WEB服务框架5.1服务概述5.1.1服务要求5.2WSDL概述5.3命名空间5.4类型5.5消息5.6操作5.6.1单向操作5.6.2要求-应答操作类型5.7端口类型5.8绑定5.9端口5.10服务5.11错误处理5.11.1协议错误5.11.2SOAP错误常见的故障具体的错误错误5.12安全5.12.1基于用户访问控制5.12.2用户令牌配置文件密码推导例子6IP配置7设备发现7.1概述7.2操作模式7.3发现定义7.3.1终端参考7.3.2服务地址7.3.3Hello类型范围例子地址7.3.4探头和探头匹配7.3.5解决和解决匹配7.3.6BYE7.3.7SOAP错误信息7.4远程发现扩展7.4.1网络情景7.4.2发现代理直接的DP地址配置域名服务记录的查找7.4.3远程hello和探头行为7.4.4客户端行为本地DP配置7.4.5安全本地发现远程发现8设备管理8.1功能8.1.1获取WSDL的URL8.1.2交换的功能8.2网络8.2.1获取主机8.2.2设置主机名8.2.3获取DNS配置8.2.4设置DNS8.2.5获取NTP配置信息8.2.6对设备设置NTP8.2.7获取动态的DNS设置8.2.8设置设备动态DNS8.2.9获取网络接口配置设置网络接口配置获取网络协议设置网络协议获取默认的网关设置默认网关获取0配置设置0配置获取IP地址过滤对IP地址过滤进行配置增加IP地址过滤移除IP地址过滤配置基站模式多种无线网络配置安全配置模式模式模式获取DOT11的性能状态扫描可用的IEEE802.11网络8.3系统8.3.1设备信息8.3.2获取系统的URL8.3.3备份8.3.4恢复8.3.5开始恢复系统8.3.6获取系统日期以及时间8.3.7设置系统日期以及时间8.3.8出厂默认配置8.3.9固件升级开始固件升级获取系统日志获取支持信息重启获取范围参数设置范围参数添加范围参数移除范围参数获取发现模式设置发现模式获取远程发现方式设置远程发现方式获取远程DP地址配置远程DP地址8.4安全8.4.1获取访问策略8.4.2设置访问策略8.4.3获取用户8.4.4创建用户8.4.5删除用户8.4.6对用户进行配置8.4.7IEEE802.1X配置创建IEEE802.1X配置对IEEE802.1X配置获取IEEE802.1X配置获取IEEE802.1X配置删除IEEE802.1X配置8.4.8创建签名证书8.4.9获取证书获取CA证书获取证书状态设置证书状态获取证书请求获取客户证书状态设置客户认证状态下载设备证书利用私有密钥来链接下载设备证书获取证书信息请求下载CA证书删除证书获取远程用户设置远程用户获取终端参数8.5输入与输出8.5.1获取继电器输出8.5.2对继电器输出进行配置8.5.3继电器触发输出8.5.4辅助操作8.6与服务相关的错误代码9设备IO服务9.1视频输出9.1.1获取视频输出集9.2视频输出配置9.2.1获取视频输出配置9.2.2设置视频输出配置9.2.3获取视频输出配置选项集9.3视频源9.3.1获取视频源9.4视频源配置9.4.1获取视频源配置9.4.2设置视频源配置9.4.3获取视频源多个配置选项9.5音频输出9.5.1获取多个音频输出9.6音频输出配置9.6.1获取音频输出配置9.6.2设置音频输出配置9.6.3获取音频输出多个配置选项9.7音频源9.7.1获取音频源9.8音频源配置9.8.1获取音频源配置9.8.2设置音频源配置9.8.3获取音频源多个配置选项9.9继电器输出9.9.1获取多个继电器输出9.9.2设置继电器输出设置9.9.3触发继电器输出9.10服务错误码10图像配置10.1图像设置10.1.1获取图像设置10.1.2设置图像设置10.1.3获取选项10.1.4移动10.1.5获取运行选项10.1.6停止10.1.7获取图像状态10.2服务错误码11媒体配置11.1音视频编解码器11.2媒体文件11.2.1创建媒体文件11.2.2获取多个媒体文件11.2.3获取媒体文件11.2.4添加视频源配置11.2.5添加视频编码器配置11.2.6添加音频源配置11.2.7添加音频源编码器配置11.2.8添加云台配置11.2.9添加视频分析配置添加元数据配置添加音频输出配置添加音频解码器配置移除视频源配置移除视频源编码器配置移除音频源编码器配置移除音频编码器配置移除云台配置移除视频分析配置移除元数据配置移除音频输出配置移除音频编码器配置删除媒体文件11.3视频源11.3.1获取视频源集11.4视频源配置11.4.1获取视频源配置集11.4.2获取视频源配置11.4.3获取多个兼容视频源配置11.4.4获取视频源配置选项11.4.5设置视频源配置11.5视频编码器配置11.5.1获取多个视频编码器配置11.5.2获取视频编码器配置11.5.3获取多个兼容视频解码器配置11.5.4获取视频编码器配置选项集11.5.5修改视频编码器配置11.5.6获取有效的视频编码数量11.6音频源11.6.1获取多个音频源11.7音频源配置11.7.1获取多个音频源配置11.7.2获取音频源配置11.7.3获取兼容音频源配置集11.7.4获取音频源配置选项集11.7.5修改音频源配置11.8音频编码器配置11.8.1获取多个音频编码器配置11.8.2获取音频源编码器配置11.8.3获取多个兼容音频编码器配置11.8.4获取音频编码器配置选项集11.8.5设置音频编码配置11.9视频分析配置11.9.1获取多个视频分析配置11.9.2获取视频分析配置11.9.3获取多个兼容视频分析配置11.9.4修改视频分析配置11.10元数据配置11.10.1获取多个元数据配置11.10.2获取元数据配置11.10.3获取多个兼容元数据配置11.10.4获取元数据配置选项集11.10.5修改元数据配置11.11音频输出11.11.1获取音频输出集11.12音频输出配置11.12.1获取多个音频输出配置11.12.2获取音频输出配置11.12.3获取多个兼容音频输出配置11.12.4获取音频输出配置选项集11.12.5设置音频输出配置11.13音频解码器配置11.13.1获取多个音频解码器配置11.13.2获取音频解码器配置11.13.3获取兼容音频解码器配置集11.13.4获取音频解码器配置选项集11.13.5设置音频解码器配置11.14音频通道模式11.15URI流11.15.1获取Uri流11.16快照11.16.1获取Uri快照11.17组播11.17.1开始组播流11.17.2停止组播流11.18同步点11.18.1设置同步点11.19服务具体的错误码12实时流12.1流媒体协议12.1.1传输格式通过UDP的RTP数据传输通过TCP传输RTP数据12.1.2媒体传输元数据流媒体同步12.1.3同步点12.1.4通过RTP传输JPEG所有包的结构逻辑解码规范支持的彩色空间和采样因素像素长宽比处理隔行扫描处理12.2媒体控制协议12.2.1流控制保持RTSP会话的方法音频和视频同步消息的例子通过HTTP的RSTP12.3往回通道连接12.3.1RTSP协议请求的标签12.3.2双向连接的连接设置例一:没有往回支持的服务例二:使用ONVIF往回通道支持的服务12.3.3组播流例:多播设置12.4错误处理13接收端配置13.1持久性13.2接收端模式13.3接收命令13.3.1获得多个接收器13.3.2获得单个接收器13.3.3创建接收器13.3.4删除接收器13.3.5配置接收器13.3.6设计接收器模式13.3.7获取接收机状态13.4事件13.4.1改变状态13.4.2连接失败13.5服务器错误码14显示服务14.1窗格14.1.1获得多个窗格配置14.1.2获得单个窗格配置14.1.3设置多个窗格配置14.1.4设置单个窗格配置14.1.5创建窗格配置14.1.6删除窗格配置14.2布局14.2.1获得布局14.2.2设置布局14.3显示选项14.3.1获取显示选项14.4事件14.4.1解码错误事件14.5服务错误码15事件处理15.1基本通知接口15.1.1介绍15.1.2要求15.2实时拉点通知接口15.2.1创建pullpointsubscription15.2.2pull消息15.3通知流接口15.4属性15.4.1属性举例15.5通知结构15.5.1通知消息事件例子15.5.2消息格式15.5.3属性举例,持续15.5.4信息描述语言消息描述举例15.5.5消息内容过滤器15.6同步点15.7主题结构15.7.1ONVIF主题名字空间15.7.2主题类型信息15.7.3主题过滤器15.8获取事件属性15.9SOAP错误消息15.10通知例子15.10.1获取事件属性请求15.10.2获取事件属性应答15.10.3创建PULLPOIT订阅15.10.4创建PULLPOIT订阅应答15.10.5拉消息请求15.10.6拉消息应答15.10.7退订请求15.10.8退订应答15.11服务错误码16PTZ控制16.1PTZ模型16.2PTZ节点16.2.1获取所有节点(GetNodes)16.2.2获取节点(GetNode)16.3PTZ配置16.3.1读取所有配置命令(GetConfigurations)16.3.2读取配置命令(GetConfiguration)16.3.3读取配置选项(GetConfigurationOptions)16.3.4设置配置(SetConfiguration)16.4移动操作16.4.1绝对的移动(AbsoluteMove)16.4.2相对移动(RelativeMove)16.4.3连续移动(ContinuousMove)16.4.4停止(Stop)16.4.5读取状态(GetStatus)16.5起始位置操作16.5.1设置预设值(SetPreset)16.5.2读取所有预设值(GetPresets)16.5.3返回预设16.5.4移除预设(RemovePreset)16.6归位点操作16.6.1转到归位点(GotoHomePosition)16.6.2设置归位点(SetHomePosition)16.7辅助操作16.7.1发送辅助命令(SendAuxiliaryCommand)16.8预定PTZ空间16.8.1绝对的位置空间泛化的全方位移动空间泛化的变焦位置空间16.8.2相对的转换空间泛化的方位转换空间泛化的变焦转换空间16.8.3连续的速率空间泛化的方位速率空间泛化的变焦速率空间16.8.4速度空间泛化的方位速度空间泛化的变焦速度空间16.9服务错误码17视频分析17.1场景描述接口17.1.1概述17.1.2画面相关内容时间关系空间关系17.1.3场景元素对象对象树形状描述符17.2规则接口17.2.1规则陈述17.2.2规则描述语言17.2.3规则标准线性检测器域检测器17.2.4规则操作读取支持的操作(GetSupportedRules)读取规则(GetRules)创建规则(CreateRules)修改规则(ModifyRules)删除规则(DeleteRules)17.3分析模块接口17.3.1分析模块配置17.3.2分析模块描述语言17.3.3分析模块操作读取支持的分析模块(GetSupportedAnalysticsModule)读取模块分析(GetAnalyticsModules)创建分析模块(CreateAnalyticsModules)修改分析模块(ModifyAnalyticsModules)删除分析模块(DeleteAnalyticsModules)17.4服务错误码18分析设备18.1概述18.2分析引擎输入18.2.1获取分析引擎输入18.2.2获取分析引擎的输入18.2.3设置分析引擎的输入18.2.4创建分析引擎输入18.2.5删除分析引擎输入18.3视频分析配置18.3.1获取视频分析配置18.3.2设置视频分析配置18.4分析引擎18.4.1获取分析引擎18.4.2获取分析引擎18.5分析引擎控制18.5.1GetAnalyticsEngineControls18.5.2获取分析引擎控制18.5.3设置分析引擎控制18.5.4CreateAnalyticsEngineControl18.5.5删除分析引擎控制18.6获取分析状态18.7输出流配置18.7.1请求流的URL19录制控制19.1介绍19.2一般要求19.3数据结构19.3.1录制设置19.3.2轨迹设置19.3.3录制任务设置19.4创建录制19.5删除录制19.6获取录制集19.7设置录制配置19.8获取录制配置19.9创建轨道19.10删除轨道19.11获取轨道配置19.12设置轨道配置19.13创建录制任务19.14删除录制任务19.15获取录制任务集19.16设置录制任务配置19.17获取录制任务配置19.18设置录制模式19.19获取录制任务状态19.20事件19.20.1录制任务状态变化19.20.2设置变化19.20.3删除数据19.20.4录制和轨道的建立与删除19.21示例19.21.1例1:单摄像头的安装录制19.21.2例2:从一台摄像机录制多个流到一个单录制20记录搜索20.1介绍20.2概念20.2.1搜索方向20.2.2记录事件20.2.3查找对话20.2.4查找范围包括的数据记录信息滤波器20.2.5搜索过滤器20.3数据结构20.3.1记录信息结构20.3.2记录源信息结构20.3.3跟踪信息结构20.3.4列举查找状态20.3.5媒体属性结构20.3.6找事件结果结构20.3.7找PTZ位置结果结构20.3.8PTZ位置过滤结构20.3.9元数据过滤结果找元数据结果结构20.4获取记录概要(GETRECORDINGSUMMARY)20.5读取记录信息(GETRECORDINGINFORMATION)20.6读取媒体属性(GETMEDIAATTRIBUTES)20.7找记录(FINDRECORDINGS)20.8获取记录搜索结果(GETRECORDINGSEARCHRESULTS)20.9找事件(FINDEVENTS)20.10读取事件搜索结果(GETEVENTSEARCHRESULTS)20.11查找PTZ位置(FINDPTZPOSITION)20.12读取PTZ位置搜索结果(GETPTZPOSITIONSEARCHRESULTS)20.13查找元数据(FINDMETADATA)20.14读取元数据搜索结果(GETMETADATASEARCHRESULTS)20.15获取搜索状态(GETSEARCHSTATE)20.16结束搜索(ENDSEARCH)20.17记录事件说明20.18XPATH习惯用法21重放控制21.1使用RTSP协议21.1.1RTSP描述21.2RTP协议头部扩展21.2.1NTP时间戳21.2.2压缩JEPG头扩展的兼容21.3RTSP特性标签21.4启动播放21.4.1领域范围21.4.2速度控制头领域21.4.3帧头字段21.4.4同步点21.5回放21.5.1数据包传输顺序21.5.2RTP传输顺序号21.5.3RTP时间戳21.6RTSP长连接21.7当前记录片段21.8结束片段21.9拖放21.10使用RTCP协议21.11重放命令21.11.1重放命令21.11.2重播配置21.11.3设置重播配置21.11.4获取重播配置21.11.5服务指定的误码22安全22.1传输层安全22.1.1支持密码套22.1.2服务器身份验证22.1.3客户端认证22.2消息安全22.3IEEE802.1X介绍ONVIF的目标是为了实现完全标准化的、可互操作性的网络视频服务,即使是由不同的网络视频供应商组成的产品。规范描述了网络视频模型,接口,数据类型和数据交换模式规范使用了那些已经存在的的相关标准,并同时根据视频网络服务添加制定了一些必要的新规范。这是ONVIF的核心规范,另外,ONVIF已经发布了以下规范:ONVIF架构[ONVIF架构]ONVIF分析服务WSDL[ONVIF分析服务WSDL]ONVIF解析设备服务[ONVIF解析设备服务WSDL]ONVIF设备服务WSDL[ONVIF设备WSDL]ONVIF设备IO服务WSDL[ONVIF设备IOWSDL]ONVIF显示服务WSDL[ONVIF显示WSDL]ONVIF事件服务WSDL[ONVIF事件WSDL]ONVIF图像服务WSDL[ONVIF图像WSDL]ONVIF媒体服务WSDL[ONVIF媒体WSDL]ONVIFPTZ服务WSDL[ONVIFPTZWSDL]ONVIF记录服务WSDL[ONVIF记录WSDL]ONVIF远程发现WSDL[ONVIF远程发现WSDL]ONVIF重放服务WSDL[ONVIF重放WSDL]ONVIF检索服务WSDL[ONVIF检索WSDL]ONVIF主题XML命名空间[ONVIF主题命名空间]文档是按照ONVIF的规范框架所编写的,ONVIF文档被分为以下几个部分:规范的综述:把规范的各个部分给出一个概要,以及它们之间的关联性网络服务框架:对网络服务和基于ONVIF的网络服务规范给出一个简要的介绍IP配置:规定ONVIF网络视频服务的IP配置要求设备发现:描述设备怎样被发现,在当地或远程的网络中设备管理:定义网络视频发射器管理命令设备IO:定义处理物理层的输入输出命令图形和媒体:定义与图像和媒体设置相关的配置命令实时流:为音视频流和元数据流提供需要事件处理:定义怎样同意和接收数据从网络视频事件(通知)PTZ控制:提供命令控制云台全方位(上下、左右)移动及镜头变倍、变焦视频分析:定义了ONVIF分析模式,分析对象描述和解析规则配置视频解析设备:定义命令处理视频解析设备记录控制:定义记录配置机制检索和重播控制:提供用于记录的包括元数据的检索命令安全章节:定义在ONVIF中数据的传输安全级别1范围本标准定义的是网络视频客户端和视频传输设备的通信规范。这个新的规范使不同的厂商提供的产品均可以通过一种统一的接口进行通信成为了可能。这些接口包括功能如:设备管理、实时的音视频流、事件处理,PTZ控制(云台全方位(上下、左右)移动及镜头变倍、变焦控制),视频分析及控制,搜索与回放。ONVIF规范中设备管理和控制部分所定义的接口均以WebServices的形式提供。为了引进网络视频服务,ONVIF规范包含了所有的XML及WSDL(WedServiceDescriptionLanguage)的定义。为了达到完全的即插即用的操作性能,该标准定义了设备发现的规范。ONVIF中设备发现机制可看作是WS-Discovery的延伸。因为网络视频发现机制的需要,关于WS-Discovery的延伸也会在后面被讲到。ONVIF规范不仅具有设备的发现,配置和控制功能,而且在IP网络方面,ONVIF也为媒体和元数据流定义了严格的格式,此外,还在ONVIF中对规范做了一定的扩展,为了就是让制造商给客户提供一个完整的网络视频传输解决方案。2引用标准ISO/IEC14496-3:2005,Informationtechnology--Codingofaudio-visualobjects--Part3:AudioISO/IEC14496-2:2004,Informationtechnology--Codingofaudio-visualobjects--Part2:VisualISO/IEC14496-10:2008,Informationtechnology--Codingofaudio-visualobjects--Part10:AdvancedVideoCodingITU-TG.711,Pulsecodemodulation(PCM)ofvoicefrequenciesITU-TG.726,40,32,24,16kbit/sAdaptiveDifferentialPulseCodeModulation(ADPCM)RSALaboratories,PKCS#10v1.7:CertificationRequestSyntaxStandard,RSALaboratoriesFIPS180-2,SECUREHASHSTANDARDIETFRFC2131,DynamicHostConfigurationProtocolIETFRFC2136,DynamicUpdatesintheDomainNameSystem(DNSUPDATE)IETFRFC2246,TheTLSProtocolVersion1.0IETFRFC2326,RealTimeStreamingProtocol(RTSP)IETFRFC2435,RFC2435-RTPPayloadFormatforJPEG-compressedVideoIETFRFC2616,HypertextTransferProtocol--HTTP/1.1IETFRFC2617,HTTPAuthentication:BasicandDigestAccessAuthenticationIETFRFC2782,ADNSRRforspecifyingthelocationofservices(DNSSRV)IETFRFC2818,HTTPoverTLSIETFRFC3268,AdvancedEncryptionStandard(AES)CiphersuitesforTransportLayerSecurity(TLS)IETFRFC3315,DynamicHostConfigurationProtocolforIPv6(DHCPv6)IETFRFC3548,TheBase16,Base32,andBase64DataEncodingsIETFRFC3550,RTP:ATransportProtocolforReal-TimeApplicationsIETFRFC3551,RTPProfileforAudioandVideoConferenceswithMinimalControlIETFRFC3927,DynamicConfigurationofIPv4Link-LocalAddressesIETFRFC3984,RTPPayloadFormatforH.264VideoUniversallyUniqueIDentifier(UUID)URNNamespaceIETFRFC4346,TheTransportLayerSecurity(TLS)ProtocolVersion1.1IETFRFC4566,SDP:SessionDescriptionProtocolIETFRFC4571,FramingReal-timeTransportProtocol(RTP)andRTPControlProtocol(RTCP)PacketsoverConnection-OrientedTransportIETFRFC4585,ExtendedRTPProfileforReal-timeTransportControlProtocol(RTCP)-BasedFeedback(RTP/AVPF)IETF4702,TheDynamicHostConfigurationProtocol(DHCP)ClientFullyQualifiedDomainName(FQDN)OptionIETF4861,NeighborDiscoveryforIPversion6(IPv6)IETF4862,IPv6StatelessAddressAutoconfigurationIETF5104,CodecControlMessagesintheRTPAudio-VisualProfilewithFeedback(AVPF)IETF5246,TheTransportLayerSecurity(TLS)ProtocolVersion1.2W3CSOAPMessageTransmissionOptimizationMechanism,W3CSOAP1.2,Part1,MessagingFrameworkW3CSOAPVersion1.2Part2:Adjuncts(SecondEdition)W3CWebServicesAddressing1.0–CoreOASISWebServicesBaseNotification1.3XMLSOAP,WebServicesDynamicDiscovery(WS-Discovery)”,J.Beattyetal.,April2005.OASISWebServicesSecurity:SOAPMessageSecurity1.1(WS-Security2004)OASISWebServicesTopics1.3OASISWebServicesSecurityUsernameTokenProfile1.0W3CWebServicesDescriptionLanguage(WSDL)1.1W3CXMLSchemaPart2:DatatypesSecondEditionW3CXML-binaryOptimizedPackagingIEEE802.11,Part11:WirelessLANMediumAccessControl(MAC)andPhysicalLayer(PHY)SpecificationsIEEE802.1X,Port-BasedNetworkAccessControl3术语与定义3.1定义Ad-hocnetwork自组织网络,经常作为一个本地独立的基本服务设置术语来使用,在[IEEE802.11-2007].中定义BasicServiceSet基础服务集,一组成功加入到一个公共网络中的IEEE802.11工作站,见[IEEE802.11-2007]Capability功能命令,允许一个客户端通过设备请求服务的功能ConfigurationEntity配置实体,一个网络视频设备抽象组件,用于在网络上产生媒体流,也就是音视频流ControlPlane控制平台,由媒体的控制功能组成如:设备控制,媒体配置和PTZ命令DigitalPTZ数字PTZ,通过调整图像的位置和比例来减小或扩大一张图像ImagingService成像功能曝光时间,高增益和白平衡参数等等功能Infrastructurenetwork网络构架,一个IEEE802.11网络包括一个接入口,如【IEEE802.11】定义Input/Output(I/O).输入/输出,一般的端口和音视频输入输出口Layout布局,定义在监视器上显示区域的安排MediaEntity媒体实体,媒体配置实体例如视频源,编码器,音频源,PTZ和解析器MediaPlane媒体平台,由媒体流组成如音视频和元数据MediaProfile媒体属性,管理一个音视频源或一个音频输出到一个视频或一个音频解码器,还管理音频解码器、PTZ、分析器配置Metadata元数据,除了音视频外的所有流数据,包括视频分析结果,PTZ位置数据和其他元数据(如系统应用的文本数据)NetworkVideoTransmitter(NVT)网络视频发射器,网络视频服务(例如一个IP网络摄像机或一个解码驱动器)通过一个IP网络送媒体数据给客户端NetworkVideoDisplay(NVD)网络视频显示器,网络视频接收器(例如一个网络监视器)通过IP网络从NVT接收媒体数据NetworkVideoStorage(NVS)网络视频存储器,一个存储从流设备接收到的媒体数据和元数据,如一个NVT,通过IP网络传送到一个永久存储媒介。网络视频服务器也能使能客户端查看存储器中的数据NetworkVideoAnalytics(NVA)网络视频分析器,用于分析从流设备收到的数据,如一个NVT或一个存储设备例如一个NVSOpticalZoom变焦改变NVT的焦距Pane窗格在一块屏面上定义一定区域PKCS公钥加密标准指的是一些RSA安全机构设计和发布的公钥标准PreSharedKey设备静态码设备的静态密钥PTZNodePTZ节点低级的PIZ实体管理PTZ设备和它的功能PullPoint拖曳消息资源通过拖曳消息,通知不会被防火墙阻塞Recording记录表示当前的存储媒介和在NVS上从单一数据源接收的元数据,一个记录可以包含一个或多个轨道,一个记录能有多个同类型的轨道,如在同时记录两个具有不同设置的视频轨道RecordingEventAPI记录事件一个事件与一个记录相关联,通过一个应用接口消息表现出来RecordingJob记录工作通过特定地配置,让传送数据从一个数据源到指定的一条记录数据中RemoteDiscoveryProxy(RemoteDP)远程设备搜索服务器此服务器允许一台NVT在远程设备搜索服务器上注册,并在客户端上通过RemoteDP找到注册的NVTs,即使NVC和NVT在不同的网络管理域中。SceneDescription场景描述通过视频分析器把场景的位置和行为转换为元数据输出ServiceSetID服务ID一个IEEE802.11无线网络服务身份号Track轨道一段独有的由音视频或元数据组成的数据信道,这个定义与[RFC2326]中的轨道定义一致VideoAnalytics视频分析算法用于分析视频数据和产生数据描述的算法或程序Wi-FiProtectedAccessWi-Fi授权程序一套由Wi-Fi联盟创建用于保证安全的程序3.2缩写AAC(AdvancedAudioCoding)高级音频编码ASN(AbstractSyntaxNotation)信息的抽象句法AVP(Audio/VideoProfile)音视频情景AVPF(Audio/VideoProfileforrtcpFeedback)实时的音视频情景BLC(BackLightCompensation)背光补偿BSSID(BasicServiceSetIdentification)基础服务集鉴定CA(CertificateAuthority)认证授权CBC(Cipher-BlockChaining)加密块链模式CCMP(CountermodewithCipher-blockchainingMessageauthenticationcodeProtocol)计数器模式密码块链消息完整码协议DER(DistinguishedEncodingRules)可辨别编码规则DHCP(DynamicHostConfigurationProtocol)动态主机设置协议DHT(DefineHuffmanTable)定义霍夫曼表DM(DeviceManagement)设备管理DNS(DomainNameServer)域名服务器DQT(DefineQuantizationTable)定义量化表DP(DiscoveryProxy)查找服务DRI(DefineRestartInterval)定义重启间隔EOI(EndOfImage)图像的结束FOV(FieldOfView)视场GW(Gateway)网关HTTP(HypertextTransferProtocol)超文本传输协议HTTPS(HypertextTransferProtocoloverSecureSocketLayer)超文本传输协议安全IO(I/OInput/Output)输入/输出IP(InternetProtocol)互联网协议IPv4(InternetProtocolVersion4)互联网协议4版IPv6(InternetProtocolVersion6)互联网协议6版Ir(Infrared)红外线JFIF(JPEGFileInterchangeFormat)文件交换格式JPEG(JointPhotographicExpertGroup)联合图像专家组MPEG-4(MovingPictureExpertsGroup–4)运动图像专家组4MTOM(MessageTransmissionOptimizationMechanism)消息传输优化机制NAT(NetworkAddressTranslation)网络地址转换NFC(NearFieldCommunication)近距离无线通讯技术NTP(NetworkTimeProtocol)网络时间协议NVA(NetworkVideoAnalyticsDevice)网络视频分析器NVC(NetworkVideoClient)网络视频客户端NVD(NetworkVideoDisplay)网络视频显示NVT(NetworkVideoTransmitter)网络视频发射器NVS(NetworkVideoStorageDevice)网络视频存储设备OASIS(OrganizationfortheAdvancementofStructuredInformationStandards)促进信息结构标准进步的组织机构ONVIF(OpenNetworkVideoInterfaceForum)公开的网络视频接口论坛POSIX(PortableOperatingSystemInterface)可移植性操作系统接口PKCS(PublicKeyCryptographyStandards)公钥标准PSK(PreSharedKey)预共享密钥PTZ(Pan/Tilt/Zoom)云台全方位(上下、左右)移动及镜头变倍、变焦控制REL(RightsExpressionLanguage)权限表达语言RSA(Rivest,SharmirandAdleman)公钥加密算法RTCP(RTPControlProtocol)实时控制传输协议RTP(RealtimeTransportProtocol)实时传输协议RTSP(RealTimeStreamingProtocol)实时流传输协议SAML(SecurityAssertionMarkupLanguage)安全断言标记语言SDP(SessionDescriptionProtocol)会话描述协议SHA(SecureHashAlgorithm)安全散列算法SOAP(SimpleObjectAccessProtocol)简单对象访问协议SOI(StartOfImage)图像的开始SOF(StartOfFrame)侦开始SOS(StartOfScan)扫描开始SR(SenderReport)发送报告SSID(ServiceSetID)服务集标识符TCP(TransmissionControlProtocol)传输控制协议TLS(TransportLayerSecurity)传输层安全TKIP(TemporalKeyIntegrityProtocol)临时密钥完整性协议TTL(TimeToLive)生存时间UDDI(UniversalDescription,DiscoveryandIntegration)通用描述、发现与集成服务UDP(UserDatagramProtocol)用户数据报协议URI(UniformResourceIdentifier)统一资源标识符URN(UniformResourceName)统一资源名称USB(UniversalSerialBus)通用串行总线UTC(CoordinatedUniversalTime)世界标准时间UTF(UnicodeTransformationFormat)Unicode(统一码)转换格式UUID(UniversallyUniqueIdentifier)通用唯一识别码WDR(WideDynamicRange)宽动态范围WPA(Wi-FiProtectedAccess)Wi-Fi网络安全存取WS(WebServices)网络服务WSDL(WebServicesDescriptionLanguage)Web服务描述语言WS-I(WebServicesInteroperability)网络服务的互通性XML(eXtensibleMarkupLanguage)可扩展标记语言4概述ONVIF是基于网络视频的使用案例,适用于局域网和广域网。规范始于一个核心套接口函数配置和通过定义它们的服务类接口实现控制网络视频设备。网络视频设备包括NVT、NVD、NVS和NVA。这个架构在未来还会慢慢扩展和增强。该框架涵盖不同网络视频环境下的各个阶段,从网络视频设备部署和配置阶段到实时流处理阶段。这个规范涵盖了设备发现、设备配置、事件、PTZ控制、视频分析和实时流媒体直播功能,以及搜索,回放和录像录音管理功能。所有的服务使用同一种的XMLschema(XML文档的结构),所用到的数据类型都在“ONVIFschema”中定义。不同的服务在各章节和WSDL文档中定义。4.1Web服务web服务是一种集成应用程序的标准化方法的名称,它是基于IP网络,使用了开放的,平台独立的web服务标准,如XML,SOAP1.2[prat1]和WSDL1.1,其中XML被用做数据描述的语法,SOAP用于消息传递,WSDL用来描述服务。这个框架是建立在web服务标准上的,定义在标准里的所有配置服务都表示为web服务操作,并在WSDL中定义,使用HTTP作为底层的通信机制。图1:基于web服务的开发原理图1对Web服务开发的基本原理进行了一个概括。服务供应者(设备)实现ONVIF的服务或者其它服务,这些服务采用基于XML的WSDL语言进行描述,然后,由WSDL描述的文档将作为服务请求(客户端)实现或者整合的基础。WSDL编译工具的使用简化了客户端的整合过程,WSDL编译工具能生成与平台相关的代码,也就是说,客户端开发者可以通过这些代码把web服务整合到应用程序中。Web服务端和客户端的数据交互采用SOAP消息交换协议。SOAP是一个轻量级的,基于XML的消息传递协议,对Web服务请求和应答消息进行SOPA封装,形成SOPA请求和应答消息,然后再传送到网络。SOAP消息独立于任何的操作系统或协议,而且可以使用各种不同的网络传输协议进行传送。ONVIF定义了一致的SOAP消息传输协议,用于描述Web服务。在规范中,Web服务概述部分讲解了各种ONVIF服务,命令语法,错误处理机制和采用的网络安全机制。为了确保互操作性,所有定义的服务都遵循Organization(WS-I)basicprofile2.0的建议和使用文档/文字封装模型。4.2IP配置IP配置部分主要讲IP配置需要服从的要求和建议。IP配置包括:\uf06cIP网络通信功能\uf06c静态IP配置\uf06c动态IP配置4.3设备发现在本规范中定义的配置接口都是基于WS-Discovery标准的Web服务接口。该标准的使用,使得重复使用一个合适的现有的Web服务发现框架成为可能,而不是需要定义一个全新的服务或者寻址服务定义。这个标准介绍了一种适用于视频监控目的,具体的发现行为。例如,一个完全可互操作的设备发现,需要一个完整的服务定义和服务搜索标准,为了实现这种方式,规范包含设备类型和范围定义。一个成功的发现会提供设备服务地址,一旦客户端有了设备的地址,客户端就能通过设备服务接收详细的设备信息,详见4.5章节。除了标准的网络服务发现协议,规范还支持远程发现代理,即使客户端和设备处于不同的管理网络域内,也可以通过远程发现代理找到注册设备。4.4设备类型设备类型体现了一个设备的基本功能。规范定义了以下几种设备类型:\uf06c网络视频传输设备(NVT)\uf06c网路视频显示设备(NVD)\uf06c网路视频存储设备(NVS)\uf06c网络视频分析设备(NVA)对于每个设备类型的一些服务是强制性的,详细请参考5.1.1,一个设备可以支持其他可选的服务,设备通过设备发现机制发布有效的可选服务。4.5设备管理设备管理功能都是通过网络服务来实现。设备服务是设备提供其他所有服务的入口点。设备服务WSDL详见设备管理WSDL文件。设备管理接口由以下几类组成:\uf06c功能\uf06c网络\uf06c系统\uf06c安全4.5.1功能客户端可以通过功能类命令获取设备提供的服务,并且确定哪些是设备通用的服务,哪些是备供应商特定的服务。功能由不同的设备服务构成并进一步划分出子类功能如下:\uf06c分析\uf06c设备\uf06e功能\uf06e网络\uf06e系统\uf06e输入/输出\uf06e安全\uf06c事件\uf06c成像\uf06c媒介\uf06cPTZ\uf06c驱动IO\uf06c显示\uf06c记录\uf06c查找\uf06c重放\uf06c分析设备对于不同类型的功能,它们的服务命令和参数设置只对特定的服务和子类服务有效。4.5.2网络网络的规范化管理功能命令:\uf06c读取和设置主机名,\uf06c读取和配置DNS,\uf06c读取和配置NTP,\uf06c读取和设置动态的DNS,\uf06c读取和配置网络接口,\uf06c使能/不使能和列出网络协议,\uf06c读取和配置默认的网关\uf06c读取和配置zero\uf06c读取和设置默认的网关、读取、增加和删除IP地址滤波器。4.5.3系统系统命令用于管理以下的设备系统设置:\uf06c读取设备信息\uf06c进行系统备份\uf06c读取和设置系统数据和时间\uf06c恢复出厂设置\uf06c固件升级\uf06c读取系统日志\uf06c读取设备信息(支持信息)\uf06c重启\uf06c读取和设定设备发现参数。4.5.4系统信息检索系统信息,如系统日志,供应商特定支持信息和配置备份图像,能够通过MTOM或HTTP协议恢检索。MTOM方式通过GetSystemLog,GetSystemSupportInformation和GetSystemBackup命令来实现。HTTP方式通过GetSystemUris命令来实现,文件可以用HTTPGET命令重检索的URIs中下载。4.5.5固件升级关于固件升级,提供了两种方式。第一种是用MTOM通过UpgradeSystemFirmware命令发送新的固件映像。第二种要分为两个阶段进行,第一阶段客户端送StartFirmwareUpgrade命令告知设备准备固件升级,然后通过HTTPPOST发送固件映像。HTTP方式用于资源受限设备,该设备在正常工作状态下不能接收新的固件映像。4.5.6系统还原系统还原允许设备从一个备份映像中恢复设备配置信息,系统还原也提供了两种实现方式。第一种通过MTOM用RestoreSystem命令发送备份映像;第二种用StartSystemRestore命令,然后用HTTPPOST协议发送备份映像。4.5.7安全设备安全管理配置命令:\uf06c读取和设置使用的安全策略,\uf06c处理用户凭证和设置,\uf06c处理HTTPS服务证书,\uf06c使能/不使能HTTPS客户身份认证,\uf06c密钥生成和证书下载功能,\uf06c处理IEEE802.1X客户端证书,\uf06c处理IEEE802.1X认证授权,\uf06cIEEE802.1X配置4.6设备IO设备IO服务提供指令用于恢复和配置设备的输入输出。设备IO服务支持以下设备接口:\uf06c视频输出\uf06c视频源\uf06c音频输出\uf06c音频源\uf06c中继输出现有接口命令表:\uf06cGetVideoOutputs-读取设备所有的视频输出\uf06cGetVideoSources–读取设备所有的视频源\uf06cGetAudioOutputs–读取设备所有的音频输出\uf06cGetAudioSources–读取设备所有的音频源\uf06cGetRelayOutputs–读取设备所有的中继输出视频输出,视频源,音频输出和音频源支持的命令:\uf06c设置设备名称配置(SetConfiguration)-改变某个接口的配置\uf06c读取设备名称配置(GetConfiguration)-读取某个接口的配置\uf06c读取设备名称配置选项(GetConfigurationOptions)-读取某个接口的属性值。中继输出支持的命令:\uf06cSetRelayOutputSettings-改变一个中继输出的配置\uf06cSetRelayOutputState-设置逻辑状态设备IO服务的WSDL在[DeviceIOService.wsdl]中有详细说明。4.7图像配置图像服务提供了图像属性的配置和控制服务,WSDL作为架构一部分,详见图像WSDL文件。\uf06c图像配置包括以下操作:\uf06c读取和配置成像参数(如曝光时间,增益和白平衡)\uf06c读成像配置选项(对于成像参数的范围)\uf06c变焦\uf06c停止正在进行的调焦\uf06c读取读取位置和焦距状态4.8媒体配置媒体配置通过媒体服务来处理。媒体配置用于决定在规范中定义的流媒体属性,设备通过媒体服务提供媒体配置。媒体服务WSDL详见媒体WSDL文件。4.8.1媒体配置文件实时视频流和音频流配置通过媒体配置文件控制,一个媒体配置文件管理一个音视频源到一个音视频编码器、PTZ和分析配置。根据不同的功能,NVT呈现出不同的配置文件(配置文件可以动态的改变)。图2:一个媒体配置剖析一个具有媒体配置服务的设备在启动后至少提供一个媒体配置文件。一个设备应该提供一些,现成的,最常见的媒体配置文件以供使用。配置文件含有一个“固定”属性,该属性表示用于表示配置文件能否被删除,这个属性可以通过NVT定义。一个配置文件由一系列相关联的配置实体构成。通过NVT能够创建静态或动态的配置,例如,根据现有编码资源,NVT能够创建一个动态的配置。一个配置实体是以下的其中之一:\uf06c视频源配置\uf06c音频源配置\uf06c视频编码器配置\uf06c音频编码器配置\uf06cPTZ配置\uf06c视频分析配置\uf06c元数据配置\uf06c音频输出配置\uf06c音频解码器配置一个配置文件由全部的或部分的配置实体组成,NVT的功能决定了一个特定的的配置实体能否成为配置文件的一部分。例如,只有在支持音频的设备中,其配置文件才能包含音频源和音频编码两个配置实体。一个完整的配置文件举例,如图3:媒体配置文件图3:完整的属性配置文件图3:完整的配置文件一个媒体配置文件描述的是,在媒体流中如何给予和给予什么给客户端,同时怎样处理PTZ的输入和分析。读取源列表命令:\uf06cGetVideoSources–在设备上读取所有存在的视频源\uf06cGetAudioSources–在设备上读取所有存在的音频源\uf06cGetAudioOutputs–在设配上读取所有存在的音频输出管理媒体配置文件命令:\uf06cCreateProfile–创建一个新的媒体配置文件\uf06cGetProfiles–读取所有存在的媒体配置文件\uf06cGetProfile–读取某个媒体配置文件\uf06cDeleteProfile–删除某个媒体配置文件\uf06cAdd–增加某个配置实体到媒体文件\uf06cRemove–从配置文件中删除某个配置实体管理配置实体命令:\uf06cGetOptions–读取某个配置实体的当前属性值\uf06cSet–设置一个配置实体\uf06cGets–读取某类的所有配置实体\uf06cGet–读取某个配置实体\uf06cGetCompatibles–读取某个媒体配置文件所有的配置实体配置实体是指配置实体的类,例如一个用于读取一个视频编码器配置的完整命令:GetVideoEncoderConfiguration初始化和操作音视频流命令:\uf06cGetStreamUri–为某个媒体请求一个有效地RTSP或HTTP流标识符\uf06cStartMulticastStreaming–利用某个配置文件开始多路出送\uf06cStopMulticastStreaming–停止多路传输\uf06cSetSynchronizationPoint–在正在进行的流传输中插入一个同步节点\uf06cGetSnapshotUri–为某个能获取JPEG快照的配置文件请求一个有效地HTTP标识符举例说明一个配置文件是如何在一个客户端运行实现的,请详见第五章。4.9实时流本标准规定了流媒体的选项和格式。首先要区分媒体平面和控制平面,如图4所示。为了提供可互操作性的媒体流服务,媒体流(音视频、元数据)服务选项都是使用RTP协视频视频源配置视频编码器配置视频源音频音频源音频源配置音频编码器配置元数据分析PTZ状态事件串行数据PTZ控制音频音频输出PTZ节点音频输出配置元数据配置视频解析器配置PTZ配置音频解码器配置议进行描述的。元数据流容器格式支持定义良好的,实时流分析,PTZ状态和消息数据。媒体配置是通过SOAP/HTTP协议完成的,在4.6章会详细的讨论媒体配置服务。媒体控制通过在RFC2326中定义的RTSP协议完成,这个标准利用了RTP,RTCP和RTSP协议分析,以及基于RTP扩展的JPEG和组播控制机制。这个标准介绍了基于RTSP标准的扩展,用于允许双向的流连接。流配置支持的视频编解码:\uf06cJPEG(通过RTP),见12.1.3\uf06cMPEG-4简单级(SP)[ISO14496-2]\uf06cMPEG-4高级简单级(ASP)[ISO14496-2]\uf06cH.264,基准[ISO14496-10]\uf06cH.264,要点[ISO14496-10]\uf06cH.264,扩展[ISO14496-10]\uf06cH.264,高级的[ISO14496-10]支持的音频编解码:\uf06cG.711[ITU-TG.711]\uf06cG.726[ITU-TG.726]\uf06cAAC[ISO14496-3]4.10事件处理事件处理是基于OASISWS-BaseNotification和WS-Topics规范,这些规范可以重用丰富的通知架构,而不需要重新定义处理原则、基本格式和通信方式。按照WS-BaseNitification协议,通过pullpoint通知模式可实现防火墙穿越,然而这个模式不支持实时通知,因此,这个规范定义了一个可供选择的pullpoint通知模式和服务接口这种模式在使用WS-BaseNotification架构时,允许客户端在防火墙后接收实时通知。一个完全标准的事件需要规范的通知。然而通知的主题在很大程度上依赖于应用需求,这个规范定义了一系列基本的通知主题,建议设备支持这些通知主题,详细请参阅附录A。此外,对于一些服务,这个规范扩展了基本的,含有强制事件的通知主题。事件及相关扩展服务的WSDL在事件WSDL文件中进行详细的说明。4.11PTZ控制PTZ服务用于控制视频编码设备的云台全方位(上下、左右)移动及镜头变倍、变焦控制。PTZ服务的WSDL应用详见PTZWSDL文件。PTZ控制原则遵循媒体配置模式(见4.8),主要由三部分组成:\uf06cPTZNode–用于管理PTZ设备和功能的低级PTZ实体\uf06cPTZConfiguration–保存某个PTZ节点的PTZ配置\uf06cPTZControlOperation–PTZ,预设和状态操作?一个具有PTZ功能的NVT可能有一个或许多个PTZ节点,一个PTZ节点可以是一个机械PTZ设备驱动,也可以是一个上传到视频编码器上的PTZ驱动或是一个数字的PTZ设备驱动。PTZ节点是PTZ控制中最低级的实体,它指定支持的PTZ功能。PTZ配置在每个媒体配置文件中设置,并通过以下配置命令实现:\uf06c读取和配置摄像机转动,倾斜,变焦\uf06c读取摄像机转动,倾斜,变焦配置参数该标准定义了以下的PTZ控制操作:\uf06cPTZ完全的,相对的,连续的动作操作\uf06c停止操作\uf06c读取PTZ状态信息(如位置,错误和移动状态)\uf06c读取,设置,删除和移动预设位置\uf06c读取,设置和移动到中心位置4.12视频分析视频分析应用被分为图像分析和具体应用两部分。这两部分之间的接口产生一个抽象概念,即可根据出现的对象来描述一个场景,视频分析应用简化为对场景描述的比较和场景规则(如被禁止通过的虚拟线或定义的一个多边形保护区域),其他的规则可以是表示内部物体的行为,如物体紧跟另一个物体(对追尾的侦测),这些规则也可以用来禁止某些物体行为,如限速。如图6所示:视频分析应用对应的两部分又可简称为视频分析引擎和规则引擎,再加上事件和行为部分,构成了一个视频分析框架。视频分析架构由元素和接口组成,每个元素提供了一个功能,在一个完整的视频分析解决方案中,对应到一个语义上独特的实体。接口是单向性的,并且是具有特定内容的信息实体。对于规范来说,只有接口是受支配的。架构的核心能力就是分配任何元素或邻近元素组到网络中的任何设备。在规范中定义了以下接口:\uf06c分析配置接口\uf06c场景描述接口\uf06c规则配置接口\uf06c事件接口规范定义了一个视频分析引擎的配置框架。这个架构使设备能按照客户端的配置进行分析,这样的模块配置能够通过客户端动态的增加,删除或修改。假如设备支持的话,允许客户端并行地运行多个视频分析模块。视频分析引擎的输出被称作场景描述。场景描述是真实场景基于对象的抽象,不管场景是静态的还是动态的,它们都可看作真实场景的一部分。本规范定义了一个基于XML的场景描述接口,它包括数据类型和数据传输机制。规则描述了怎样解读场景和怎样处理这方面的信息。规范定义了标准的规则语法和方式,用于应用程序和设备之间的交流。一个事件表示场景描述分析的状态和相关连的规则,事件接口包括事件引擎元素的输入和输出,事件接口通过一般的通知和主题架构来处理(见4.10).视频分析服务的WSDL是onvif框架的一部分,在分析的WSDL文件中描述。4.13分析设备分析设备服务必须用于独立的分析设备,用于执行对媒体数据流或元数据增强媒体流的评估过程,在同一时间,评估可能包含多个媒体流或元数据增强媒体流。分析设备服务是从现场或储存设备中接收媒体流或元数据增强数据流。假如分析器正在分析未压缩数据,那说明设备具有解码功能。分析设备服务是由客户端操作的,用于配置独立分析设备的属性和功能。独立分析设备不具备反向通道功能。使用事件服务可以获得分析设备服务的输出,此外,分析设备服务还支持GetStreamUri命令。4.14显示显示服务用于客户端控制和配置显示设备。服务提供了窗格显示的功能,就是每个窗格占用物理显示(实际显示设备屏幕)的一定区域。窗格显示可以配置多个音频输入,输出与视频输出之间的映射关系,配置也引用了一个接收对象,即接收显示数据的对象。除此之外,显示服务还支持显示窗格属性的检索和配置。layout定义了窗格在显示器的布局情况(例如单个显示或分成4块显示)。服务提供了获取面板显示和改变显示布局命令。和显示布局命令一样,服务还介绍了获取视频输出的编解码信息的命令。4.15接收器一个接收器是就是一个RTSP客户终端。接收器被用于其他处理媒体流的设备服务中,如显示、记录和分析设备服务。一个接收器对应一个配置,配置决定RTSP终端连接到哪里和使用那些连接参数。一个接收器能够运行在三种不同的模式下:总是连接-接收器尝试保持一个持续的连接到设置端点断开连接-接收器不尝试连接自动连接-当媒体流在发出请求连接时连接一个单一的接收器可以被多个用户使用。例如,为了录制并分析一个流数据,那么录制工作作和分析引擎就要使用同一接收器。假如接收端使用“自动连接”模式,那么只要记录或解析引擎是工作的,接收器都会处于连接状态,只有它们都不工作时才会断开。在接收服务中,通过调用CreateReceiver和DeleteReceiver操作,可以手动的创建和删除接收器,或在其他服务中,也可自动的创建和删除接收器。例如,假如创建一个带有“AutoCreateReceiver”属性的录制工作,那么它就会自动创建一个接收器,并将录制工作附加到这个接收器上,删除记录工作的同时也会删除接收器。4.15.1同步点因为接收器利用RTSP地址来确定流数据的来源,所以它们并不需要使用传输设备的web服务接口,也就意味着它们不能使用SetSynchronizationPoint命令,具体请参考11.18.1。取而代之的是,接收器应该用PLI消息来请求一个同步点,PLI消息详见[RFC4585]。4.16存储标准提供了一系列的接口,用于支持可互操作的网络存储设备,例如网络存储器(NVR),数字视频接收器(DVR)和嵌入式存储摄像机。存储服务支持以下功能:\uf06c记录控制\uf06c查找\uf06c回放这些功能通过三个相关联的服务来提供。记录服务使客户端能管理记录和配置数据源到记录器的数据传输。管理记录包括记录的创建和删除。搜索服务是使客户端能查找存储器中的记录信息,例如,首先生成一个可见时间列表方式的记录视图,接着通过搜索包含在元数据跟踪记录中的事件,在一组记录中查找我们感兴趣的数据。回放服务使客户端能回放记录的数据,包括音频、视频和元数据。回放服务提供媒体流开始,停止播放,以及改变播放速度和回放方向的功能,也允许客户端从存储设备中下载数据,支持设备数据导出功能。4.16.1存储模式在本标准的存储接口提出了一个数据在存储设备上的逻辑视图,该视图与数据可能在磁盘上的真实存储方式完全无关。在存储模式中关键的概念是记录(recording),在规范中术语记录代表一个容器,容器中是一整套相关联的音视频和元数据轨道(tracks),通常这些数据来自于同一数据源,例如摄像机。一条记录可以容纳任何数量的轨道,一条轨道可看作是一个可以无限长的时间轴,在某个时间段保存的数据。一条记录最少能够容纳三种类型的轨道,分别是音频,视频,元数据。在一些实现的记录服务的中,每种类型的轨道又可以包含多条轨道,例如,同一个记录能够容纳两个视频轨道,一个包含低分辨率或低帧率流和一个包含高分辨率或高帧率流。值得注意的是,存储接口不能说明设备的内部存储结构,特别是,一个记录并不代表是在磁盘上的一个单一的文件,而在很多存储设备中,一个记录存储了一系列的文件。比如,一些摄像机通过创建不同的文件来记录每一个发生的警报,尽管每一个文件可以作为不同的记录来描述,但是在标准中这种模式的目的就是为了把他们聚合在一条记录中。在一条记录内数据记录的区域用一对事件来表示,每对事件都由记录开始时间的事件和记录结束时间的事件构成。通过使用查找服务的FindRecordings和FindEvents方式,客户端可以构建记录的逻辑画面。假如元数据被记录,元数据轨道就能保存所有数据源产生的事件(请参考事件处理和元数据配置相关章节)。另外,设备也能够记录ONVIF定义的历史事件(请参考查找服务中的记录事件描述),这里包括像记录数据范围的开始和结束的信息,设备也能够记录关于供应商的一些历史事件。设备产生的事件不会被插入到已存在的元数据记录轨道中。查找服务中的FindEvents模式能帮助找到所有的记录事件。4.16.2记录记录服务使客户端能管理记录和配置数据源到记录的数据传输。管理记录包括记录和轨道的创建和删除。记录工作是从一个记录源传送数据到一个记录。一个记录源可以是一个接收服务创建的接收对象,也可以是一个在本地设备上编码数据的媒体文件。媒体文件可以用作一个在嵌入式存储摄像机的源。存储数据到一条记录,一个客户端首先要创建一条记录和确保记录有必要的轨道。然后客户端创建一个记录工作,这个工作能从一个或多个源获取数据并存储到记录的轨道中。客户端可以创建多个记录工作,并把所有工作的数据都记录到同一条记录中,假如多个记录工作都处于活动状态,设备就会根据优先权原理在记录中定义的轨道之间选择。客户端可以在任何时候改变记录工作的模式,因此需要提供实现报警记录或人工记录特征的方法。尽管接收对象由ReceiverTokens鉴定,但是为了从其它设备接收数据,记录工作依赖于接收服务。4.16.3查找查找服务使客户端能够查找在存储器设备中的记录信息,例如,首先生成一个可见时间列表方式的记录视图,接着通过搜索包含在元数据跟踪记录中的事件,在一组记录中查找我们感兴趣的数据。查找服务提供以下功能:\uf06c查找每个recordings的记录和信息\uf06c在元数据和历史数据中查找事件\uf06c在元数据中查找PTZ位置\uf06c在元数据中查找信息如从EPOS(电子销售点)系统中实际的搜索通过查找和结果获取两个操作实现,并且是异步进行的。每一个查找操作启动一个搜索对话,客户端就可以从查找对话中用增量的方式获取搜索结果,或者一次获取所以结果,这依赖于具体的实现和搜索的范围。有四对查找操作分别对应记录,记录事件,PTZ位置和元数据.FindRecordingsandGetRecordingSearchResultsFindEventsandGetEventSearchResultsFindPTZPositionandGetPTZPositionSearchResultsFindMetadataandGetMetadataSearchResults4.16.4回放回放服务提供了一种机制,用于对存储的视频、音频和元数据进行回放,这个机制也可以用来从存储设备中下载数据以便提供导出功能。回放服务是基于RTSP[RFC2326]协议的,然而因为RTSP不能直接地支持所有的回放需求,所以加入了一些协议的扩展。尤其是一个RTP头扩展被定义允许一个绝对的时间戳与每个接入单元(视频帧)相关联,以及传输信息的流连续性。在回放服务中GetReplayUri命令返回记录的RTSPURL来允许它用RTSP来回放。4.17安全这个条款描述了网络视频安全需求,规范定义了两个不同等级的安全机制:传输级安全消息级安全规范也定义了如下的基于端口的网络安全:IEEE802.1X一般安全的要求,定义和传输安全要求在22章有详细的说明。消息级安全要求在5.12有详细的说明。IEEE802.1X要求在8.4.7安全管理章节有详细的说明,通过设备管理服务实现安全管理,详细请参考4.5.7。5Web服务框架所有管理和配置命令都是基于web服务的。标准的目的是:\uf06c设备(NVT,NVD,NVS,NVA)是服务提供者\uf06c客户端(client)是服务请求者一个典型的网络视频系统可以由多个客户端来处理一台设备的所有配置和管理业务,但是,控制和网络视频接收功能之间可能存在区别。提供服务的设备,也可以作为客户端,未来的规范可能会在系统中引入其它的实体和接口。Web服务还需要一个共同的方式来发现服务提供者,这个可以通过使用UUDI实现,即“统一描述、发现和集成协议”([UDDIAPIver2],[UDDIDataStructurever2])。UDDI协议使用了服务代理来发现服务,因为本规范的目的是设备,而UDDI模型不是以设备为导向的,所以UDDI和服务代理不在本协议之内规定。根据本协议规定,设备(服务提供者)使用基于[WS-Discovery]技术的WS发现机制。设备发现的原理在第7章描述。web服务允许开发者自由地定义服务和消息交换机制,这可能会引起互操作性的问题。Web服务互操作性组织(WS-I)开发了标准的配置文件和指引,以创建可互操作的Web服务。设备和客服端应该遵守在[WS-IBP2.0]定义的指引。本协议的服务描述遵循[WS-IBP2.0]的建议。5.1服务概述一个遵循ONVIF的设备需要支持许多规范定义的web服务。例如在本规范定义的web服务:\uf06c设备服务\uf06c媒体服务\uf06c事件服务设备服务是符合ONVIF标准的设备的目标服务,并且是所有其他设备服务的入口点。设备管理的入口点绑定在:5.1.1服务要求一个设备应提供设备管理和事件服务。根据设备的功能,设备可以支持任何其它的服务。根据设备类型(NVT,NVD,NVS,NVA)的不同,必须为它们追加额外的服务。确切的合规性要求看做是本规范中不同服务定义的一部分。如果设备支持某一种服务,那么设备就应该能够响应所有命令(相应的WSDL服务命令)。假如服务不需要某一命令并且设备不支持这个命令,那么设备就应该响应一个错误码:env:Receiver,ter:ActionNotSupported错误码的定义,详见5.11.2。表一:设备类型的服务请求表一显示了对于不同类型的设备要求哪些服务。其中“M”代表强制性的的服务(Mandatory),一个强制性的服务被一些相关特性的设备支持的话用“C”来标记。5.2WSDL概述WSDL是一种的XML格式文档,它把web服务描述成一组能够操作面向文档或者是面向过程信息的端点。这些操作和消息被描述得很抽象,然后绑定到一个具体的网络协议和消息格式来定义一个端点。相关的具体端点结合成抽象的端点(服务)。WSDL可以扩展到描述端点和端点的信息,而不管信息的格式或者使用何种网络协议通信。这个规范遵循WSDL1.1的规范,并使用了文档的规范模式。WSDL文档由以下几部分组成:\uf06c类型:定义数据类型,使用XML格式定义\uf06c消息:定义输入和输出消息的内容\uf06c操作:如何定义输入和输出信息相关的逻辑操作。\uf06c端口类型:多个操作集合在一起\uf06c绑定:一个特定端口类型用于交换信息的协议规范。\uf06c端口:指定绑定的端口地址\uf06c服务:通常是指一组相关的端口集合5.3命名空间在本标准前中使用的前缀和命名空间列于表1。这些前缀不是标准的一部分,标准可以用任何前缀实现表二:本规范定义命名空间前缀命名空间URI描述tt此规范中为XML格式描述tdsWSDL设备服务的名字空间trtWSDL媒体服务名字空间timgWSDL成像服务的名字空间tevWSDL事件服务的名字空间tptzPTZ控制服务的名字空间tan分析服务的名字空间terONVIF定义错误的名字空间dn次规范中用于远程设备发现服务的名字空间tns1ONVIF主题名字空间tadWSDL分析设备服务的名字空间tmdONVIF主题设备名字空间tlsWSDL显示设备服务的名字空间trvWSDL接收端服务的名字空间trcWSDL记录服务的名字空间trpWSDL重播服务的名字空间tseWSDL搜寻服务的名字空间表三:引用的命名空间(前缀)前缀URI名字空间描述wsdlWSDL网络框架的命名空间wsoap12WSDLSOAP1.2的绑定名字空间httpWSDLHTTPGET&POSTbinding的名字空间soapencSOAP1.2[SOAP1.2,Part2]定义的编码空间soapenvSOAP1.2[SOAP1.2,Part1]定义的信封命名空间xsXS[XML-Schema,Part1]and[XMLSchema,Part2]定义的信封命名空间xsiXML格式的信封命名空间d定义在[WS-Discovery].中的设备发现命名空间wsadis在[WSDiscovery].提及的设备寻址空间wsa定义在[WS-Addressing].中的设备寻址空间wstop[WSTopics]规范的格式命名空间wsnt[WSBaseNotification]空间的格式命名空间xopXML-binaryOptimized包装优化的命名空间此外,本标准里提及没有前缀的命名空间列于表三。表四:引用的命名空间(没有前缀)5.4类型数据类型在XMLSchema描述的第一和第二部分中定义。此规范中所有定义的数据类型都包括在[ONVIFSchema]中,并且能够从下网址下载。5.5消息根据WSDL1.1可知,操作使用基于XML格式的输入和输出消息描述,消息部分包含了信息内容。在这个规范中,一个消息应包括两个主要的要素:\uf06c消息的名称\uf06c消息的部件消息名称指定元素的名字,并且这个名字在WSDL文档中的操作定义会被使用。消息的名称确定了这个消息的具体名字。WSDL的消息部件要素用来定义消息的实际格式。尽管在WSDL定义消息可能有多个部件,但这个规范遵循了[WS-IBP2.0]规定,不允许多个部件元素出现在一个消息中。因此我们一直用同一个名称“parameters”作为消息部件的名字。此标准中,以下的WSDL符号是用于消息的:respective,这里的“prefix”是命名空间的前缀,消息是在该名空间中定义的。在这个规范中使用消息的具体类型,这些类型封装了多个部件,允许消息中含有多个参数或者数据。5.6操作操作是定义在WSDL端口类型声明中的。操作可能是下面两种类型之一:\uf06c单向:服务提供者接收消息。\uf06c请求-应答(双向):服务提供者接收到消息并发出相应的消息。根据操作,可以使用不同的端口类型。操作名称就确定了此操作的名字在此规范中操作使用下表五中的列出的信息来定义:表五:本规范所用的操作描述操作名字操作类型信息名字描述操作名字的请求请求信息的描述Typer1Namer1[ar1][br1]Typer2Namer2[ar2][br2]TypernNamern[arn][brn]操作名字的应答应答信息的描述Types1Names1[as1][bs2]Types2Names2[as2][bs2]:TypesnNamesn[asn][bsn]错误信息的名字在操作具体故障已经定义的情况下,这一领域介绍了错误消息的结构定义误码描述CodeSubcodeSubcode指定的错误操作码的描述表5描述栏包含一个元素列表,这个列表在请求消息和响应消息中是分开表示的。括号里的值表示具体类型的元素允许出现的次数的上限和下,例如,Names2出现了至少as2次,最多bs2次。大多数命令并没有定义任何具体错误消息,如果一个消息定义了,那么将出现在应答消息之后,并它遵从上表的约束。5.6.1单向操作当服务提供者收到一个控制消息,并且还没有发出任何确认的消息时,就用到了单向操作类型。此规范中,单向操作仅仅是用来实现设备发现和事件。此操作类型由单一的输入消息来定义的。用下表来描述单向的操作类型:本表对应WSDL符号:5.6.2要求-应答操作类型当服务提供者收到一个消息,并以相应的消息应答的时候,就用到请求—应答操作类型了。这种类型是通过一个消息输入,一个消息输出,多个故障信息来定义的。使用如下表来描述要求—应答操作类型此表相应的WSDL符号:=“Fault”message=“’prefix’:’FaultMessage_Name’”>5.7端口类型一个端口的类型是一组有名字的抽象操作的和抽象信息。一个单独端口的类型是由不同的操作组合起来的。在这个规范中所有的操作名称都被归了种类,每个操作类包含了一个或者多个操作,但每个种类只有一种操作类型,并且被整合成了单一的端口类型。一个单向操作和一个请求—应答操作绝不可能出现在相同的端口类型中去。5.8绑定绑定为一个特定的端口类型定义了具体协议和数据传输格式规范。对于一个给定的端口类型,都有可能包含任何数量的绑定。端口类型是先前定义的类型并且“绑定”是一个以大写字母的开始字符串,它定义了绑定的名称。在本标准中,设备绑定的定义应遵循[WS-IBP2.0]中的要求,这意味着WSDLSOAP1.2绑定将被使用。SOAP绑定可以有不同的方式,一个设备在操作层面上应该使用“文档”的绑定方式。对于各自的服务,它们的绑定均定义在WSDL规范中5.9端口对于一个绑定,各自的终端被一个唯一的地址来指定。每个端口都应该赋予一个独一无二得名字。端口定义包含一个名称和一个绑定属性本规范不强制任何端口命名规则5.10服务服务是一组相关的端口。这个规范不强制任何服务的命名规则。5.11错误处理就像其他任何协议一样,错误可能在通信,协议和信息加工的时候产生。该规范错误处理可以处理以下类别的错误:\uf06c协议错误\uf06cSOAP的错误\uf06c应用程序的错误5.11.1协议错误协议错误是指错误协议消息,(它可能包含非法的头值,也有可能在非期望时间或经历了一个套接字超时的时候被接收了)。为了说明和解释协议错误,HTTP和RTSP协议已经定义了一套标准的状态码[例如,1XX,2XX,3XX,4XX,5XX]。通过此标准,当收到故障报告的时候,设备和客户端将采用合适的RTSP和HTTP协议定义状态码来报告错误5.11.2SOAP错误SOAP错误一般是由于web服务操作错误或者是在SOAP消息处理期间导致的。所有这些SOAP错误需要使用SOAP错误消息机制报告和处理。通过SOAP错误机制,SOAP规范提供了一个定义良好的框架来处理错误。一个SOAP错误信息是在消息实体中带有一知名元素(soapenv:Fault)的SOAP信息。为了更详细地理解错误,SOAP定义了SOAP错误信息结构,该结构含有各种成分:\uf06c错误码\uf06c子码\uf06c原因\uf06c节点和角色\uf06c错误细节子码和错误细节是用来携带应用的具体的错误信息。本标准对具体的错误使用了一个单独的名字空间对于不同的web服务,SOAP错误信息被看作是各子web服务定义中的一部分。就像本规范规定的那样,服务器和客户端应当使用SOAP1.2错误信息处理机制,并且要遵循WS-I基本简介2.0错误处理建议。如下的例子就是故障信息:HTTP/1.1500InternalServerErrorCONTENT-LENGTH:bytesinbodyCONTENT-TYPE:application/soap+xml;charset=”utf-8”DATE:whenresponsewasgeneratedfaultcodeter:faultsubcodeter:faultsubcodefaultreasonnode/ultimateReceiverrole/ultimateReceiverfaultdetail表总结了一般的SOAP错误代码(错误码定义在SOAP1.2第1部分:消息框架中)服务器和客户端可以定义应用程序使用的,额外的错误子码。我们区分一般错误和具体的错误。任何命令都能产生一般错误信息,具体的错误涉及到一个特定的命令或命令集。特定命令的具体错误在命令的定义表中说明。在下面的表格,错误码,子码??和错误原因是一些标准值。说明列添加其它信息。常见的故障表五列出了常见的错误码和字码,所有的服务器和客户端必须实现对如下表所列的错误进行处理,任何web服务的命令会返回一个或者几个通用的错误码。列出的无子码错误没有任何子码值表六:常见的故障具体的错误具体的错误,仅适用于特定的命令或命令集。具体的错误被声明为服务的一部分定义在这个标准里面。错误如果服务器开始等待入栈的消息并且没有接收到SOAP消息,服务器不会产生一个常见的SOAP故障,相反会发送一个HTTP错误作为回应。表七:HTTP错误服务器应该避免将其内部错误报告出来,因为这可能会成为一个安全隐患,可能被外界所利用。5.12安全定义在该标准中的服务应该确保使用WS安全框架。WS安全规范定义了一套可以用来提供服务消息完整性和保密性标准的SOAP的扩展。这个框架允许多个不同的使用令牌的安全模块。以下是目前已经定义了的令牌:\uf06c用户名令牌简介[WS-UsernameToken]\uf06cX.509安全令牌简介[WS-X.509TOKEN]\uf06cSAML令牌简介[WS–SAMLTOKEN]\uf06cKERBEROS令牌简介[WS–KERBEROSTOKEN]\uf06c权利表达语言令牌简介[WS–RELTOKEN]服务器和客户端将支持用户名令牌就像在WS安全和5.12.2中指定的那样。也可能支持WS安全规范定义的其它配置文件。用户名令牌文件仅仅是给出了一个基本层面的安全。在一个安全性很重要的系统里面,建议把设备接入方式配置成是基于TLS安全技术的。这样的话,用户名令牌消息层面的安全就与TLS,客户端,服务器身份验证有机结合起来了,这样就保护了传输级的安全性,在许多系统中就得到一个可以接受的安全水平了。NVIF兼容设备在RTSP和HTTP验证时,使用与web服务一样的证书。对于使用令牌配置文件的用户,在RTSP和HTTP验证中,还要使用摘要式身份验证[RFC2617]。ONVIF兼容设备应该能在WS层上验证WS请求。HTTP在这只是用来作一种传输协议,并且设备不能在此层上验证WS请求。ONVIF兼容设备应该能在RTSP层上验证RTSP请求,如果HTTP是用于隧道协议,那么在此水平上,RTSP请求不应该验证。在认证RTSP和HTTP的方法的时候,ONVIF兼容设备将使用和WS部分一样的用户证书。对于使用令牌配置文件的用户,在RTSP和HTTP验证中,还要使用摘要式身份验证[RFC2617]。5.12.1基于用户访问控制在SOAP的消息层面上,WS安全架构允许保护和认证。对于ONVIF设备来说,这些认证机制是用来为onvif服务建立一个访问安全策略。这个规范允许安全策略架构基于四个不同的用户层:1.管理员2.操作员3.媒体使用户4.匿名用户使用这些分类可以定义不同用户的详细接入策略。未经授权的用户被划分到匿名类并且设备不允许用户被添加到匿名用户的类别。设备的用户或者系统管理员可以明确的定义访问安全策略。策略配置文件的确切格式在本规范之外。获取和设置访问安全策略的命令被定义在8.4章节。5.12.2用户令牌配置文件WS安全规范强制需要实现令牌配置只有是用户令牌配置[WS-UsernameToken]。客户端应该使用在[WS-UsernameToken]定义的随机数和时间戳,且服务器应当拒绝任何不使用随机数和时间戳的用户名令牌。本标准定了一套命令来管理用户名称的令牌文件证书。这这些命令允许用户结合不同的用户级别使用,用户级别定义在5.12.1中。密码推导使用几个相同证书的设备会在不经意间引进了一些安全风险。然而要求用户为每个设备提供单独的证书是不可取的,客户端应实施以下密码算法的推导:UA表示任意一个用户(arbitraryuser)。P_UA表示用户UA接入系统中设备要使用的密码。此外,NEP表示系统中一个特定设备的设备终端服务点的参考值。最后,PE_UA表示客户端用于访问某个特定的设备的密码,客户端应该按照如下方法来计算PE_UA的密码:PE_UA=base64(HMAC_SHA-1(UA+P_UA,NEP+“ONVIFpassword”))出现”+”的地方表示连续,这里“ONVIFpassword”是一个ASCLL字符串,该字符串不包含字符长度或者null结尾。例如下面的十六进制值:4F4E5649462070617373776F7264。HMAC_SHA-1是作为一种基本算法,一种被定义在[RFC2104]usingSHA-1[FIPS180-2]中的算法。用于HMAC功能中的关键值就是用户密码,P_UA直接映射为等值的二进制数。类似地,在传输PE_UA值到设备之前,它的值应该用ASCLL码表示。BASE64被描述在[RFC3548]中,注意BASE64的操作结果是就是实际密码,并且将使用这个密码。例子假设以下是密码,由客户端(ASCLL):“用户”和““VRxuNzpqrX”组成UA=75736572P_UA=565278754E7A70717258接下来,假设设备具有如下设备服务终端的参考值:Urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6那么由此产生的密码将被计算为:PE_UA=base64(HMAC_SHA-1(P_UA,NEP+”ONVIFpassword”))=base64(16E5C5A94DDE8A976DD72F55785FC2D06BDA534A)=FuXFqU3eipdt1y9VeF/C0GvaU0o=那么由此产生“FuXFqU3eipdt1y9VeF/C0GvaU0o=”这个密码,在一个特定的设备中将被客户端用来配置用户凭据,并且也可以被客户端用来接入设备。6IP配置设备和客户端通过开放或封闭的IP网络进行通信。本标准对使用那种网络类型没有任何限制和要求。然而,根据在标准4中指定的体系架构建立实体之间的通信链路应该是可行的。设备的IP配置包括多个参数,如IP地址和默认网关。设备应至少有一个网络接口,可以接入IP网络,同样,客户端也应该至少有一个网络接口可以接入IP网络,允许数据在设备和客户端之间传输。该设备和客户端应该支持IPV4协议,也应该支持IPV6协议。通过网络或者本地配置接口可以完成设备的静态IP配置。根据[RFC3927]规范,设备应支持本地链路地址的动态IP配置。根据[RFC4862规范],一个支持IP6的设备应该支持无状态的IP配置,并且能支持邻居发现([RFC4861]规范)。根据[RFC2131]规范,设备应该支持动态的IP配置。根据[RFC3315]规范,支持IPV6的设备可以支持有状态的IP配置。该设备可以支持一些额外的配置机制。设备的网络配置可以通过一个IP网络接口或本地接口(诸如USB接口,串行接口,蓝牙接口,或者NFC)。通过一个本地的接口的IP配置是在本规范以外。通过指定在8.2章节的参数配置接口应能配置设备的IP配置。通过这个网络配置接口规范,一个设备用户可以启用或禁用任何IP地址的配置选项。默认的设备配置将使DHCP和动态本地链接地址配置直接启用。即使设备通过一个静态地址配置,它也应该有本地连接的默认地址。当设备链接到IPV4网络,应该要考虑地址分配优先权(本地链路与路由的地址),就像[rfc3927]中推荐的那样。更多说明IP网络如何连接实现的具体方法不在的本标准之内。7设备发现7.1概述客户端可以使用动态服务发现协议[WS-Discovery]来发现可用的设备,一个兼容于此规范的设备应该实现在[WS-Discovery]中指定的目标服务和客户端两个角色。发现代理的角色就像在[WS-Discovery]里面描述的那样,不应该被设备或客户端支持。(本规范会在7.4节中介绍一种可选的发现代理角色)。如在[WS-Discovery]的第3节描述那样,实现了客户端角色的设备将忽略与发现代理的交互方式。相反,本规范定义了一个新的允许远程发发现的发现代理角色。远程发现的实现需要存在一个发现代理和一个系统提供者,该提供者在系统中愿意提供远程发现服务,并实现了在第7.4节中定义的发现代理角色。[WS-Discovery]描述了UUID,参考2.6节,建议端点使用URI格式的UUID,但在本协议中改写了该建议,相反,采用了[RFC4122]中的URN格式,即统一资源命名。(详细请看7.3.1节)7.2操作模式设备可以有两种操作模式:\uf06c可发现的\uf06c不可发现的根据[WS-Discovery]规范,设备处于可发现模式时,一旦接入网络,就组播“hello”消息,或者发送状态改变消息。此外,它始终监听探测和解析消息,并发送相应的响应。一个设备处于不可发现模式时,不会监听,也不会回应这些信息。设备的默认模式是可发现模式,为了阻止拒绝服务攻击,可以通过在定义的操作来将设备设置成不可发现模式。7.3发现定义7.3.1终端参考一个设备或一个充当客户端角色的端点,使用一个URN:UUID[RFC4122]作为其端点引用的地址属性。一个设备或一个充当客户端角色的端点,应该使用一个稳定的,全局唯一标识符作为其端点引用的地址属性,并且在跨网络接口的情况下是不变的。Wsadi:address和wsadis:referenceproperties结合起来提供了一个固定的全球唯一标识符。7.3.2服务地址包含在Hello消息中的元素为设备服务地址或设备地址。该设备应提供一个80端口作为设备服务入口点,以便允许防火墙穿越。7.3.3Hello类型设备应该包含设备管理服务的端口类型,比如tds:Device,在中声明的。考虑到向后兼容的原因,ONVIF兼容设备还应当包括在中声明的dn:NetworkVideoTransmitter。下面的例子显示了在SOAP“hello”实体中的端口类型是如何编码的。tds:Device.该消息可能包括其他类型。范围在Hello消息中,设备还应包括属性范围。该设备范围是通过使用[RFC3986]的URIs来设置的。本规范定义范围属性如下:方案属性:ONVIF权威属性:这意味着,所有ONVIF定义范围的URI都有以下格式:该设备可能有其他范围的URIs。这些URI是没有限制在ONVIF规定范围中。表八定义了一个设备的基本能力和其他属性。除了这些标准参数以外,还可以设置设备所有者定义的任何范围参数。通过定义在8.3节中的命令,可以列出和设置范围参数。未来版本的规范可能会引入更多的标准化范围参数。设备还可能有其他范围的URI。这些URI是没有限制的在ONVIF规定范围中。表八:范围参数类目定义值说明类型视频编码器一个视频编码器暗示了这个设备是具有视频编码设备,一个带有网络视频编码的设备应该将网络视频编码器的型号包括在其内。云台一个云台范围暗示了这个设备是一个具有云台设备带有云台支持的设备包括一个值在其范围内的范围输入视频解析一个视频解析的范围暗示了这个设备支持视频解析就像17部分的那样,一个带有视频解析支持的设备应该包括一个值在其范围清单内的范围输入音频编码器一个音频编码器范围说明这个设备是一个具有音频编码的设备一个带有音频编码支持的设备应该包括一个值在其范围清单内的范围输入网络视频发射机一个网络视频发射机的范围暗示了这个设备是否是一个NVT兼容设备,一个NVT应该包括一个其值在其范围清单内的范围输入网络视频解码器一个网络视频的显示范围暗示了这个设备是否是一个NVD兼容设备,一个NVD应该包括一个值在其范围清单内的范围输入网络视频的存储一个网络视频的存储范围暗示了这个设备是否是一个NVS兼容设备,一个NVS应该包括一个其值在其范围清单内的范围输入网络视频的解析一个网络视频的解析范围暗示了这个设备是否是一个NVA兼容设备,一个NVA应该包括一个值在其范围清单内的范围输入方位任何字符串和路由值方位为这个设备定义了一个物理方位,位置值可能是字符串为这个设备描述的物理装置,一个设备应该至少包括一个方位。硬件任何字符串和路由值一个字符串或路径描述装置的硬件,一个设备应该包括至少一个硬件入口在其范围内名字任何字符串和路由值搜索设备的名称,一个设备应该包括至少一个名字入口在它的范围清单内在范围清单的位置、硬件和名称类别中,一个设备在各个类别中至少包含一个该类型的条目。一个设备可能包含在范围清单内,其他任何额外的范围属性。在其范围清单内,一个设备可以包括任意个范围,这意味着,例如,一个单元可以定义多个不同位置的范围。“探头”匹配所有范围清单。例子下面的例子说明了范围值的使用方法,这仅仅是个例子,并不表示这些范围参数的类型就是NVT配置中的一部分。在这个例子中,我们假设NVT用以下的范围来配置:一个探测设备的客户端使用以下范围的:可以找到一个匹配的。类似地,具有下范围的设备探头:可以给出一个匹配具有下范围的设备探头探头:,无法给出一个匹配地址设备在“hello”消息中可能包含带有设备服务地址的元素。在中为设备定义了IP地址配置的规则。7.3.4探头和探头匹配设备匹配探头类型,范围和地址定义,看7.3.3HELLO章节。设备将至少支持范围中的匹配规则。此范围匹配的定义与[WS-Discovery]中的范围定义略有不同,因为[RFC2396]由[RFC3986]代替。设备在探头匹配的消息中应该包含带有设备服务地址的元素,这个元素在大多数情况下只包含一个地址来管理和配置接口,就像5.1规定的那样。7.3.5解决和解决匹配这个规范要求终端地址信息被包含到“HOLLO”信息和探头匹配信息中去,在大多数情况下,没有必要解决匹配和匹配的交换问题.然而,为了与[WS-Discovery]规范能兼容,一个设备应该能处理解决匹配的回应。7.3.6BYE就像在WS-Discovery中描述的那样,当设备准备离开网络的时候,设备应该发出一个单向的BYE消息.7.3.7SOAP错误信息如果存在一个多播数据包错误,该设备和客户端必须悄悄的丢弃,并且忽略请求。如果所有设备对同一个请求都发送错误响应信息,有可能造成数据包风暴,所以建议不发送错误响应信息。考虑到完整性,单播数据包错误处理描述在下面。如果一个设备接收单播探头消息,而且它不支持匹配规则,那么此探头可能不会发送探头匹配消息,相反会产生一个SOAP错误(遵循SOAP1.2标准),就像如下所示的那样:[Code]s12:Sender[Subcode]d:MatchingRuleNotSupported[Reason]E.g.,thematchingrulespecifiedisnotsupported[Detail]在扩展或应用中引起的所有错误要遵守SOAP1.2中的错误消息规范。在传送一个SOAP故障信息给发送者后,应该通知应用程序已经发生错误了。7.4远程发现扩展本节描述的发现扩展需要覆盖更复杂的网络情景。ONVIF兼容终端并不要求支持这些扩展。,一个支持远程服务发现的设备应当支持本节中定义的发现扩展机制。此规范中,在本节中定义的远程发现扩展机制可以与本规范定义的基于WS-Discovery普通组播方法结合起来使用。比如远程发现扩展机制可以与普通的本地发现一起并行工作。7.4.1网络情景如果客户端和设备不在同一管理区域,客户端使用多播探头去找到和连接设备是不可能的。例如,如果设备或客户端驻留在网络防火墙或NAT(网关)后面,这就不可能连接到一多播探头。因此需要使用其他的方法,此规范使用了四种不同的网络情景:1.该设备驻留在一个私有管理域中,尔客户端在公共网络中,如图8。2.该设备在公共网络中,客户端在一个私有管理域,如图9。3.该设备在一个私有管理域中,客户端在另一个私有管理域中,如图10。4.这设备和客户都位于公共网络中,如图11。图8:一个设备,例如一个NVT,在一个管理域(私人)和客户端(NVT)在公共网络图9:一个设备,例如NVT在公共网络和客户端(NVT)的管理域(私人)图10:一个NVT设备,在一个管理域(私人)和客户端(NVT)在另一个管理域(私人)图11:一个设备,例如NVT,和客户端(NVT)在公共网络这个[WS-Discovery]规范介绍了一个发现代理(DP)来解决其中的一些情景。但是[WS-Discovery]规范并不支持所有在这介绍的网络情景。这个规范定义了一个对于更多复杂的网络情景都可以即插即用的DP,但这个DP规范不兼容于[WS-Discovery]规范。7.4.2发现代理网络管理员为跨越几个管理域的NVT广域网配置网络参数,需要在系统中引进一个DP终端。DP执行将下面的任务:1.听取设备HELLO消息并且响应,这些部分定义7.4.32.负责代表注册设备响应来自客户端的探测检查。这个DP可以与设备处在一个管理域中。为了支持这样的网络情景,即客户和设备处在不同的域中,并且它们之间没有组播连接关系,这时可以把DP放到一个公开的网络中,使得设备和客户端都能访问它。设备应当可以找到它的本地DP的网络地址,并通过发送“hello”消息到本地DP,以宣告自己存在。根据本规范,本地DP网络地址可以由以下方式获得:1.直接的地址配置2.使用域名服务记录查找来发现DP设备在接入网络或者本地DP网络地址改变的时候,将尝试使用上述任一方式去连接本地DP(发现代理)。还可以启用/禁用的设备远程发现注册。支持远程发现的设备应该实现在这定义在中定义的远程“HELLO”禁用/启用操作。没有配置本地DP地址的设或禁止远程“HELLO”消息的设备不会发送一个远程HELLO这定义在7.4.3。直接的DP地址配置本规范在节和节中,介绍了通过网络接口配置本地DP地址的设备管理命令。支持远程发现的设备也可能提供在本地配置“本地DP”的方式。这些配置是通过设备本地接口完成的,例如设备的串口或者usb接口。这些本地配置的方法不在本规范定义。域名服务记录的查找如果一个设备启用了远程发现,但没有远程DP地址配置,它将试着用DNS来查找“本地DP”地址。应使用以下的记录名称和协议定义[rfc2782]:_onvifdiscover._tcp为了避使用DNSSVR查找DP,设备在启用远程发现之前,先使用直接地址配置方式,将DP地址配置好。为了使设备用DP成功的查询到其他设备,管理员需要将DP地址,端口,优先级这些信息记录到使用SRVS的DSN服务器中。需要有一个或者几个登记服务器,确切的数量由系统负载确定,这些在本协议规范之外。7.4.3远程hello和探头行为定义在[WS-Discovery]中的本地发现模式对远程发现情景不起作用,如果这个设备在防火墙后面,像图8和图10中的情景那样。如果设备不返回一个公共的网络地址,来自DP的单播探头不会自动找到该设备。此外,如果设备在一个防火墙后面,跟随单播匹配探头的设备不可能返回到发现代理中去。该规范针对远程发现定义了一个稍微不同的通信模式来解决这个问题。配置了远程“hello”的设备,当加入网络或者自身的元数据改变时,除了组播“hello”消息外,还发送一个远程“hello”消息到它的“本地DP”。这个消息是作为一个web服务请求操作而发送的,通过使用HTTP绑定(在ONVIFDPWSDL中定义),从设备发到DP。远程hello应该在“hello”消息中包含它的范围清单。一旦“本地DP”收到来自其他任何设备的“hello”消息时,它将立马回一个hello响应消息用以确认设备注册情况。类似的,一旦设备准备离开这个网络,它应该给远程DP发送一个BYE请求。远程DP(发现代理)通过一个BYE应答来确认收到了BYE请求。Hello请求和hello应答,BYE请求和BYE应答是由一个dp服务实现的,它的WSDL描写在[ONVIFDPWSDL]中。使用这些扩展,发现信息能够到达一个理想的终端。图12:远程发现消息交换模式之间的装置(NVT和一个家庭DP)7.4.4客户端行为对于远程发现情况,客户端需要发送探测信息到“本地dp”,然后,客户端需要配置,使得它能够直接连接到“本地DP”。本地DP配置配置客户端通过本地DP能直接探测新设备,这种情况下,本地DP发现服务地址应预先配置到客户端,具体的配置方法则在本规范之外。配置了远程发现的客户端直接发送探测请求到它的“本地DP”,这个消息是作为一个web服务请求操作而发送的,通过使用HTTP绑定(在ONVIFDPWSDL中定义),从客户端发到DP。一旦“本地DP“从任何一个客户端哪里收到一个探测消息,它将以相应的探测匹配消息来回应,并使用正常的WS-Discovery的消息交互模式,看图13的序列图图13:为客户(NVC)的消息序列预先配置的家庭DP地址7.4.5安全本地发现安全和发现被视为一对矛盾的目标。虽然发现协议背后的主要想法是公布服务存在,但还是很难排除其它端点接入该服务公告系统。WS-Discovery不提供任何额外的接入服务(如何使用了本规范定义的其它安全机制),即使在同一局域网中。它仅仅宣布它们的存在。此外,本地发现仅仅在组播达到的范围内才起作用。因此,主要WS-Discovery安全的隐患是设备受到拒绝服务攻击的风险,或是隐私问题,如果在网络上隐藏设备的存在是重要的。这两个问题的风险将很大程度上取决于设备的部署环境。为了减少这些威胁,此规范引进了两种不同的发现模式,看7.2章节,这就让是允许客户端关闭设备发现的功能,在不可发现模式下,一个设备不会用hello消息来宣称它的存在,也不会回应探测或处理的请求。远程发现在远程网络情景中,DP部署在互联网中的,并且它是很脆弱的。应该采取额外的安全措施,来防止DP被攻击。远程hello和探测及探测匹配信息应该通过HTTPS发送。这种传输虽然不能防止拒绝服务的攻击,但是如果使用客户端认证,它可以防止非法设备的注册如果拒绝服务时受到保护是主要目的话,还需要采纳其他的措施,(目前规范之外的一些措施)。一个基于发现代理的设备,在注册设备之前应该验证设备,以确保是一个存在的合法的设备,例如通过使用客户端认证。客户端证书规定范围在现行规范范围之外。客户端应该通过HTTPS发送远程探测和探测匹配的消息到DP。DP在回应一个探测请求之前应该验证NVC,这可以使用TLS客户认证或者任何其他合适的客户身份验证机制来完成。8设备管理设备服务可以分为五种不同类型的命令集:功能,网络,系统,输入输出(I/O)以及安全。这组命令可以用来获取设备的功能和配置信息,或者配置设备。设备应支持在[ONVIFDMWSDL]中规定的设备管理服务。一套基本的操作必须支持设备管理服务,其它的操作建议或者可选择性的支持该服务。在后面的命令说明中将会列出详细的规定。8.1功能8.1.1获取WSDL的URL终端可能请求到一个URL,利用这个URL来检索设备完整的概要信息和WSDL定义。该命令返回一个URL链接地址;在这地址里,可以检索到必要的产品信息;这些信息都是与WSDL和概要定义相关的。通过使用GetWsdlUrl命令,设备必须能返回一个用于下载WSDL和概要信息的URL。表9:GetWSDLURL命令GetWsdlUrl请求与应答信息名称相应功能及参数描述GetWsdlUrlRequest请求信息中不含有任何信息GetWsdlUrlResponse应答信息包含请求的URLxs:anyURIWsdlUrl[1][1]错误代码原因分析没有与命令相关的错误代码8.1.2交换的功能通过功能交换的请求与应答操作,任何终端都能够查询设备的功能。通过调用GetCapabilities命令,设备在应答信息中应表明设备在ONVIF协议所包含的所有功能。返回的功能清单包含相关的服务地址,该服务实现了该类别中接口的操作。表11描述如何理解指定的功能,除了地址的功能,还有在本规范的可选功。表10:GetCapabilities命令GetCapabilities请求与应答信息名称信息内容以及功能GetCapabilitiesRequest请求信息包含对设备功能查询的请求。客户端既可以查询设备拥有的所有功能或者仅仅其中具体一种服务的功能。如果没有指定要查询的类别,那设备就会在应答信息中包含设备所有功能。tt:CapabilityCategoryCategory[0][unboundedGetCapabilitiesResponse在应答的信息中包含一个采用XML分层能力结构体,用这个结构体来表示要查询设备功能tt:CapabilitiesCapabilities[1][1]错误代码原因分析env:Receiver设备不支持请求信息提到的WSDL服务类别ter:ActionNotSupportedter:NoSuchService表11:GetCapabilitie命令中的功能类别功能功能描述分析XAddr分析服务地址。如果此字段是空的,设备支持分析,但不支持这规则或模块接口。RuleSupport表明设备支持第17.2节中提到接口规则和语法规则。AnalyticsModuleSupport设备支持在17.3节中提到的场景分析模块接口节规则。设备XAddr设备的服务地址设备网络IPFilter表明设备支持使用IP过滤控制命令,(在,,和提到的)。ZeroConfiguratio表明设备支持在和节定义的零配置命令IPVersion6表明设备支持IP协议第6版本DynDNS表明设备支持动态DNS配置(8.2.7和8.2.8)。Dot11Configuration表明设备支持对IEEE802.11的配置(节)设备与系统DiscoveryResolve表明设备能对解决请求进行响应(如7.3.5节所述)DiscoveryBye表明设备能够发送字节信息(第7.3.6节所述)RemoteDiscovery表明设备支持远程发现(如7.4节中指定)SupportedVersions设备所能支持ONVIF标准规范的版本清单SystemBackup表明设备支持系统备份和恢复(如8.3.3和8.3.5节)。FirmwareUpgrade表明设备支持固件升级(第节)。SystemLogging表明设备支持系统日志检索(第节)。HttpSystemBackup表明设备支持使用HTTPGET和POST机制进行系统备份和恢复HttpFirmwareUpgrade表明设备支持使用HTTPPOST机制进行硬件升级HTTPSystemLogging表明设备支持使用HTTPGet进行系统日志检索(参见8.3.2节)HTTPSupportInformation表明设备支持使用HTTPGET机制检索支持的信息(参见8.3.2)。设备被I/OInputConnectors输入连接的数。...RelayOutputs继电器输出的数Auxiliary表明支持清单里的辅助命令设备安全TLS1.0支持传输层安全协议TLS1.0TLS1.1支持传输层安全TLS1.1TLS1.2支持传输层安全TLS1.2OnboardKeyGeneration表明设备支持板载密??钥生成和创建自签名证书(参见第8.4.8节)。AccessPolicyConfig表明设备支持检索和加载设备访问控制策略(参见第8.4.1和第8.4.2)。X.509Token设备支持网络安全协议X.509令牌[WS-X.509Token]SAMLToken表明设备支持网络服务安全的SAML令牌协议(WS-SecurityWS-SAML)KerberosToken表明设备支持WS-Security的Kerberos令牌协议[WS-KerberosToken]。RELToken表明设备支持网络服务安全的REL的令牌协议[WS-RELToken]。Dot1X表明设备支持IEEE802.1X基于端口网络身份验证协议SupportedEAPMethod设备支持EAP方法。这些数字与IANA(互联网数字分配)机构注册的数字对应。RemoteUserHandling表明设备是否支持远程用户处理和应答的方法(参考和)事件XAddr事件服务地址WSSubscriptionPolicySupport表明设备是否支持WS付费政策(参考15.1.2节)WSPullPointSupport表明设备是否支持WS拉点(参考第15.1.2)WSPausableSubscription-ManagerInterfaceSupport表明设备支持WS可暂停认购管理接口(参考15.1.2节)图像XAddr图像服务地址媒体XAddr媒体服务地址媒体流RTPMulticast表明支持UDP的组播述(参考第RTP_TCP表明设备支持基于TCP的RTP协议,(请参阅第)。RTP_RTSP_TCP指示如果设备支持RTP/RTSP/TCP传输,(参考第)。媒体类别MaximumNumberOfProfiles设备所支持最大媒体访问量云台XAddr云台服务的地址接收终端XAddr服务接收地址。RTP_Multicast表明设备能够收到的RTP协议组播RTP_TCP表明设备能够收到基于TCP的RTP协议的传输。RTP_RTSP_TCP表明设备支持接收基于RTSP/RTP/TCP协议传输的信息SupportedReceivers设备所能支持最大接收数MaximumRTSPURILength实时传输流中URL最大允许长度记录XAddr记录控制服务地址DynamicRecordings表明设备支持动态创建和删除记录(参考19.4与19.5节)DynamicTracks表明设备支持动态创建和删除追踪(参考见19.9节19.10)。DeleteData表明设备支持明确的数据删除,参阅(Fehler!verweisquellekonntegefundenwerden..)搜索XAddr记录搜索服务的地址MetadataSearch表明设备支持通用搜索的记录的原数据,(参见20.13和20.14节)。回放XAddr重播服务地址。分析设备XAddr分析设备服务地址显示XAddr显示服务的地址显示层FixedLayout表明该器件具有一组特定的预定义布局设备I/OXAddr设备I/O服务的地址VideoSources视频输入数VideoOutputs视频输出数AudioSources音频输入数AudioOutputs音频输出数RelayOutputs继电器输出数8.2网络8.2.1获取主机终端可以通过这个操作来获取设备的主机名。终端调用GetHostname命令,设备必须应答其主机名的配置信息。表12:GetHostname指令GetHostname请求与应答信息名称相应功能以及参数描述GetHostnameRequest请求信息不带任何参数GetHostnameResponse应答信息包括:“FromDHCP”:如果主机名是通过DHCP(动态主机分配协议)获得“NAME”:主机名。在DHCP的主机名的情况下,主机名是通过从DHCP服务获得xs:booleanFromDHCP[1][1]xs:tokenName[0][1]错误代码原因分析没有与此命令相关错误代码8.2.2设置主机名终端可以通过这个操作来设置设备的主机名。终端通过调用SetHostname命令,来设置设备的主机名。注意:调用SetDNS命令可能导致先前的主机名被重新写入设备。表13:SetHostname指令SetHostname请求与应答信息名称相应功能及参数描述SetHostnameRequest请求信息包含:“Name”:将要设置的主机名称xs:tokenName[1][1]SetHostnameResponse应答信息中不包含任何内容错误代码原因分析env:Senderter:InvalidArgValter:InvalidHostname设备不能接受请求信息中设定的主机名8.2.3获取DNS配置通过此操作,终端能够获取设备的DNS配置。终端通过调用GetDNS命令,设备在应答信息中返回其DNS配置给终端。表14:GetDNS命令GetDNS请求与应答信息名称相应功能以及参数描述GetDNSRequest请求信息中不包含任何参数GetDNSResponse应答信息包含:1.“FromDHCP”:如果是通过DHCP获得的DNS服务器。2.“SearchDomain”:如果主机名没资格,进行域搜索.3.“DNSFromDHCP”:如果能够通过“FromDHCP来获取DNS,”DNS”服务清单也通过“FromDHCP”来获取:这意味着:在DNSFromDHCP领域的解析地址是来源于DHCP以及配置状态描述4.“DNSManual”手动给定的DNS服务器列表xs:booleanFromDHCP[1][1]xs:tokenSearchDomain[0][unbounded]tt:IPAddressDNSFromDHCP[0][unbounded]tt:IPAddressDNSManual[0][unbounded]错误代码原因分析没有与此命令相关的错误代码8.2.4设置DNS通过调用SetDNS命令,终端可以对设备的DNS进行配置。表15SetDNS命令SetDNS请求与应答信息名称相应功能以及参数描述SetDNSRequest请求信息包括:1.“FromDHCP”:如果是通过DHCP能够获得的DNS服务2.“SearchDomain”:如果hostname是不完整,进行域搜索。3.“DNSManual”:手动DNS服务器列表xs:booleanFromDHCP[1][1]xs:tokenSearchDomain[0][unbounded]tt:IPAddressDNSManual[0][unbounded]SetDNSResponse应答信息不包含任何信息错误编码原因分析env:Senderter:InvalidArgValter:InvalidIPv6Address?建议的IPv6地址是无效的。env:Senderter:InvalidArgValter:InvalidIPv4Address建议的IPv4地址是无效的8.2.5获取NTP配置信息通过此操作,终端可以获取设备NTP配置。如果设备支持NTP的,那么终端可以通过调用GetNTP命令来获取设备的NTP服务配置。表16:GetNTP指令GetNTP请求与应答信息名称相应功能以及参数描述GetNTPRequest请求信息不含有任何参数GetNTPResponse应答信息包括:1.“FromDHCP”:如果能通过DHCP获得NTP服务。2.“NTPFromDHCP”:如果通过“FromDHCP来获取NTP,”NTP”服务清单也通过“FromDHCP”来获取;这意味着:在NTPFromDHCP领域的地址解决是来源于DHCP以及配置状态描述3.“NTPManual”:手动给NTP服务器列表。xs:booleanFromDHCP[1][1]tt:NetworkHostNTPFromDHCP[0][unbounded]tt:NetworkHostNTPManual[0][unbounded]可能的错误原因分析没有与此命令相关的错误8.2.6对设备设置NTP终端通过此操作来对设备的NTP进行配置。如果设备支持的NTP的,那么终端可以通过SETNTP命令,来对设备的NTP服务进行配置。表17SetNTP指令SetNTP请求与应答信息名称相应功能以及参数描述SetNTPRequest请求信息包含:1.“FromDHCP”:如果通过DHCP获得NTP服务。2.“NTPManual”:当没能通过DHCP获取NTP服务,手动创建的NTP服务器列表。xs:booleanFromDHCP[1][1]tt:NetworkHostNTPManual[0][unboundedSetNTPResponse应答信息是一条空信息,错误代码原因分析env:Senderter:InvalidArgValter:InvalidIPv4Address建议的IPv4地址是无效的env:Senderter:InvalidArgValter:InvalidIPv6Address建议的IPv4地址是无效的env:Senderter:InvalidArgValter:InvalidDnsName建议的NTP服务名是无效的8.2.7获取动态的DNS设置终端调用这个操作来从设备处获取设备动态DNS配置。如果设备支持在[RFC2136]和[RFC4702]中指定的动态DNS配置,那么终端可以通过GetDynamicDNS命令来获得设备动态DNS的类型,名称以及TTL。表18:GetDynamicDNS指令GetDynamicDNS请求与响应信息名称相应功能以及参数描述GetDynamicDNSRequest请求信息不包含任何参数GetDynamicDNSResponse应答信息包含:1.“Type”:更新类型。可能有三种类型:1设备的本身没有更新(NOUPDATE);2.DHCP服务器更新(ServerUpdates);3.设备更新(ClientUpdates)。2.“Name”::在设备未有更新的情况下,DNS名称。3.?“TTL”:生存时间。tt:DynamicDNSTypeType[1][1]tt:DNSNameName[0][1]xs:durationTTL[0][1]错误代码原因分析没有与这类命令相关的错误代码8.2.8设置设备动态DNS终端通过调用这操作来配置设备的动态DNS。如果设备支持在[RFC2136]和[RFC4702]中的动态DNS配置,那么终端可以通过SetDynamicDNS命令来设置设备动态的DNS的类型,名称以及生存时间。表19:SetDynamicDNS指令SetDynamicDNS请求与应答信息名称相应功能以及参数描述SetDynamicDNSRequest请求信息包含:1.“Type”:更新类型。有三种类型:1设备的期望没有更新(NOUPDATE)2设备需要DHCP服务器更新(ServerUpdates)3设备更新本(ClientUpdates)。2.“Name”:在设备更新情况下,DNS名称。3.“TTL”:生存时间。tt:DynamicDNSTypeType[1][1]tt:DNSNameName[0][1]xs:durationTTL[0][1]SetDynamicDNSResponse应答信息不包含任何信息错误代码原因分析没有与这类命令相关的错误代码8.2.9获取网络接口配置终端通过这个操作来获取设备的网络接口配置。终端调用GetNetworkInterfaces命令,设备应返回给终端其网络接口配置,这网络接口配置是已经在网络接口类型中定义好的。表20:GetNetworkInterfaces指令GetNetworkInterfaces请求与应答信息名称相应功能以及参数描述GetNetworkInterfacesRequest请求信息是一条空信息GetNetworkInterfacesResponse应答信号包含一个设备的网络接口的矩阵tt:NetworkInterfaceNetworkInterfaces[0][unbounded]错误代码原因分析没有与此命令相关错误代码设置网络接口配置通过这操作,终端可以对设备的网络接口进行配置。终端通过调用SetNetworkInterfaces命令来设置设备的网络接口。为了与未知IEEE802.11扩展的客户端互通,如果请求信息中的IEEE802.11配置元素不存在,那么设备应该保留它的原来的IEEE802.11配置。表21:SetNetworkInterfaces命令SetNetworkInterfaces请求与应答信息名称相应功能以及参数描述SetNetworkInterfacesRequest请求信息包括:“InterfaceToken”:要打开的网络令牌接口。“NetworkInterface”:需要配置网络接口。tt:ReferenceTokenInterfaceToken[1][1]tt:NetworkInterfaceSetConfigurationNetworkInterface[1][1]SetNetworkInterfacesResponse应答信息包括:“RebootNeeded”:表明:当网络的配置改变,需要进行从新启动xs:booleanRebootNeeded[1][1]错误代码原因分析env:Senderter:InvalidArgValter:InvalidNetworkInterface提供的网络接口令牌不存在env:Senderter:InvalidArgValter:InvalidMtuValueMTU值是无效的env:Senderter:InvalidArgValter:InvalidInterfaceSpeed不支持建议的速度env:Senderter:InvalidArgValter:InvalidInterfaceT不支持建议的网络接口类型env:Senderter:InvalidArgValter:InvalidIPv4Address建议的IPV4地址是无效的env:Senderter:InvalidArgValter:InvalidIPv6Address建议的IPV6地址是无效的env:Receiverter:ActionNotSupportedter:InvalidDot11不支持IEEE802.11配置env:Senderter:InvalidArgValter:InvalidSecurityMode不支持选用的安全模式env:Senderter:InvalidArgValter:InvalidStationMode不支持选择的站模式env:Senderter:InvalidArgValter:MissingDot11在安全配置中IEEE802.11的值丢失或者不存在env:Senderter:InvalidArgValter:MissingPSK在安全配置中PSK值丢失env:Senderter:InvalidArgValter:MissingDot1X在安全配置中IEEE802.1X值丢失或者根本就不存在env:Senderter:InvalidArgValter:IncompatibleDot1X在网络接口安全配置中IEEE802.1X值与网络接口不兼容获取网络协议通过操作,终端可以获取已定义在设备上网络协议,设备应该支持通过GetNetworkProtocols命令来返回其所配置的网络协议。表22:GetNetworkProtocols命令GetNetworkProtocols请求与应答信息名称相应功能以及参数描述GetNetworkProtocolsRequest请求信息是一条空信息GetNetworkProtocolsResponse应答消息返回一个设备支持协议的矩阵。有三个已定义的协议,HTTP,HTTPS和RTSP。对于每个协议,可以检索以下参数:PortEnable/disablett:NetworkProtocolNetworkProtocols[0][unbounded]错误代码原因分析没有与这类命令相关的错误设置网络协议通过操作能够对设备上定义的网络协议进行配置。设备应该支持通过SetNetworkProtocols命令来对已定义的网络协议的进行配置。表23:SetNetworkProtocols命令SetNetworkProtocols请求与应答信息名称相应功能及参数描述SetNetworkProtocolsReques请求信息能够配置一个或者多个设备支持的网络协议。就目前存在三个已定义的信息:HTTP,HTTPS,RTSP;下面分别是对每个协议需要设定的参数:PortEnable/disablett:NetworkProtocolNetworkProtocols[1][unbounde]SetNetworkProtocolsResponse应答信息是一条空信息错误代码原因分析env:Senderter:InvalidArgValter:ServiceNotSupported不支持提供的网络协议获取默认的网关通过这个操作,终端能够获取设备的默认网关配置信息,终端调用GetNetworkDefaultGateway命令来获取设备的默认网关地址。表24:GetNetworkDefaultGateway命令GetNetworkDefaultGateway请求与应答信息名称相应功能以及参数描述GetNetworkDefaultGatewayRequest请求信息是一条空信息GetNetworkDefaultGatewayResponse应答信息包含:“IPv4Address:默认网关IPV4地址IPV6Address:默认的网关IPV6地址tt:IPv4AddressIPv4Address[0][unbounded]tt:IPv6AddressIPv6Address[0][unbounded]错误代码原因分析没有与此相关的错误设置默认网关通过这个操作,能够对设备的默认网关进行设置,设备应该支持通过SetNetworkDefaultGateway命令来配置其默认网关表25:SetNetworkDefaultGateway命令SetNetworkDefaultGateway请求与回答信息名称描述SetNetworkDefaultGatewayRequest请求信息包含:“IPv4Address”:设置默认IPV4网关地址“IPv6Address”:设置默认IPV5网关地址tt:IPv4AddressIPv4Address[0][unbounded]tt:IPv6AddressIPv6Address[0][unbounded]SetNetworkDefaultGatewayResponse应答信息是一条空信息错误的代码描述原因env:Senderter:InvalidArgValter:InvalidGatewayAddress所提供的网关地址是无效获取0配置通过这个操作,能够获取设备的0配置;如果设备支持根据[RFC3927]的动态IP配置,那么设备应该支持通过GetZeroConfiguration命令来返回其IPV40配置地址和状态;表26:GetZeroConfiguration命令GetZeroConfiguration请求与应答信息名称相应功能以及参数描述GetZeroConfigurationRequest请求信息是一条空信息GetZeroConfigurationResponse应答信息包括:“InterfaceToken”:网络接口令牌环“Enabled”如果0配置被使能或者没有“Addresses”IPV40配置地址tt:ReferenceTokenInterfaceToken[1][1]xs:booleanEnabled[1][1]tt:IPv4AddressesAddress[0][unbounded]错误代码原因分析没有与此命令相关的错误代码设置0配置通过这个操作,终端可以对设备进行0配置;如果设备支持[RFC3927]动态的IP配置,那么设备应该支持通过SetZeroConfiguration命令来对设备的IPv40的状态和地址进行配置。表27:SetZeroConfiguration命令GetZeroConfiguration请求与应答信息名称描述GetZeroConfigurationRequest请求信息包含:“InterfaceToken”令牌网络接口操作“Enabled”:0配置使能与否tt:ReferenceTokenInterfaceToken[1][1]xs:booleanEnabled[1][1]GetZeroConfigurationResponse应答信息是一条空信息可能存在的错误原因分析env:Senderter:InvalidArgValter:InvalidNetworkInterface所提供的网络接口令牌不存在获取IP地址过滤此操作可以获取设备IP地址过滤的配置信息。如果设备支持基于IP过滤规则设备访问控制(拒绝或接受的变换IP地址),那么设备应该支持通过GetIPAddressFilter命令来获取其IPaddressfilter配置信息。表28:GetIPAddressFilter指令GetIPAddressFilter请求与应答信息名称相应功能以及参数描述GetIPAddressFilterRequest请求信息是一条空信息GetIPAddressFilterResponse应答信息包括:“Type”:设置是否允许访问过滤.“IPv4Address”:IPv4滤波器地址“IPv6Address”:IPv6滤波器地址tt:IPAddressFilterTypeType[1][1]tt:PrefixedIPv4AddressIPv4Address[0][unbounded]tt:PrefixedIPv6AddressIPv6Address[0][unbounded错误代码原因分析没有与此命令相关的错误代码对IP地址过滤进行配置通过这个操作,终端能够对设备的IP地址过滤进行配置。如果设备支持基于IP过滤规则的设备访问控制,那么终端就可以通过SetIPAddress命令来对设备IP过滤进行配置。表29:SetIPAddressFilter指令SetIPAddressFilter请求与应答信息名称相应功能以及参数描述SetIPAddressFilterRequest请求信息包括:“Type”:设置类型如果滤波器允许访问.“IPv4Address”:IPv4滤波器地址“IPv6Address”:IPv6滤波器地址tt:IPAddressFilterTypeType[1][1]tt:PrefixedIPv4AddressIPv4Address[0][unbounded]tt:PrefixedIPv6AddressIPv6Address[0][unboundedSetIPAddressFilterResponse应答信息为空错误代码原因分析env:Senderter:InvalidArgValter:InvalidIPv6Address建议的IPV6地址无效env:Senderter:InvalidArgValter:InvalidIPv4Address建议的IPV4地址无效增加IP地址过滤通过这个操作可以增加设备的IP地址过滤。如果设备支持基于IP滤波规则的设备访问控制(排斥或者接受动态IP地址),那么设备应该支持调用AddIPAddressFilte命令来增加设备的IP地址过滤。表30:AddIPAddressFilter指令AddIPAddressFilter请求与应答信息名称相应功能以及参数描述AddIPAddressFilterRequest请求信息包含:“IPv4Address”:增加的IPv4滤波地址“IPv6Address”:增加的IPv46滤波地址tt:PrefixedIPv4AddressIPv4Address[0][unbounded]tt:PrefixedIPv6AddressIPv6Address[0][unbounded]SetIPAddressFilterResponse应答信息是一条空信息可能的存在的错误原因分析env:Senderter:InvalidArgValter:IPFilterListIsFullsIPfilter清单已满,不能够继续添加IP滤波地址env:Senderter:InvalidArgValter:InvalidIPv6Address建议的IPV6地址是无效的env:Senderter:InvalidArgValter:InvalidIPv4Address建议的IPV4地址是无效的移除IP地址过滤通过这个操作能够删除设备的一个IP地址过滤。如果设备支持基于IP过滤规则的设备访问控制,那么终端可以调用RemoveIPAddressFilter指令来删除设备的IP地址过滤。表31:RemoveIPAddressFilter命令RemoveIPAddressFilter请求与应答信息名称相应功能以及参数描述RemoveIPAddressFilterRequest请求信息包含:“IPv4Address”:增加的IPv4滤波器地址“IPv6Address”:增加的IPv46滤波器地址tt:PrefixedIPv4AddressIPv4Address[0][unbounded]tt:PrefixedIPv6AddressIPv6Address[0][unbounded]RemoveIPAddressFilterResponse应答信息不存在或者不包含任何信息错误代码原因分析env:Senderter:InvalidArgValter:InvalidIPv6Address请求信息中要移除的IPV6地址无效的env:Senderter:InvalidArgValter:InvalidIPv6Address请求信息中要移除的IPV4地址是无效env:Senderter:InvalidArgValter:NoIPv6Address请求信息要移除的IPV6地址不存在env:Senderter:InvalidArgValter:NoIPv4Address请求信息要移除的IPV4地址不存在配置在这一节以及这一节下的各个小节所讲的内容只针对支持IEEE802.11协议的设备,在这一节以及各个小节中,设备意味着是支持IEEE802.11协议的设备。设备应该支持IEEE802.11的配置,以及对802.11接口中NetworkInterfaces方法进行响应并返回一个基于802.11接口的IANA-IfTypes。设备不会在对GetNetworkInterfaces应答信息中包含的任何链接元素,并且它将忽略SetNetworkInterfaces请求的所有链接元素。对于每一个IEEE802.11网络接口,至少有超过一个可替代的IEEE802.11配置与之对应;这些配置都是是设备应该支持的。在获取与设置网络配置元素中,任意一个IEEE802.11配置元素都是被支持的。以下的信息是需要被处理的:SSIDationmodeMultiplewirelessnetworkconfigurationSecurityconfiguration以下操作被用来帮助管理无线配置:GetIEEE802.11capabilitiesGetIEEE802.11statusScanavailableIEEE802.11networks设备应该支持对SSID的配置。基站模式设备应该支持基本的基站模式结构。设备可以支持ad-hoc网络基站模式,而对于实际ad-hoc的配置(包括:频道数的手动配置)是本协议规范之外的;但是对于支持ad-hoc网络基站模式的设备,协议允许选择以及报告这种模式。多种无线网络配置每一个IEE802.11配置都应该用一个别名进行区分。在网络接口配置中,别名应该是唯一的。客户端在SetNetworkInterfaces请求中信息中应该提供别名。如果客户端想更新存在的无线配置,那么应该用与网络接口相同的别名。包含别名在内的无线网络配置应该唯一存在,因为别名也是网络配置的一部分。在多个可选择的IEEE802.11配置中,设备应该能够通过选择优先值来给予考虑,往往越大的值其优先性也就越大。如果配置中优先值丢失,那么就会被认为是拥有最低的优先级。如果几个无线配置拥有一样的优先级,那么在这些配置中的优先级顺序就没有被定义了。设备使能IEEE802.11配置的优先级列表的算法是本协议规范之外的事情了。安全配置安全配置包含选择安全模式以及进行与模式相关的配置。以下的安全模式被协议所允许:NonePSK(PreSharedKey)(WPA-andWPA2-Personal)IEEE802.1X-2004(WPA-andWPA2-Enterpise)协议允许设备选择或者报告WEP安全模式,但是对于WEP模式配置不在本协议规范之内的事情对于数据的保密性以及其完整性,设备应当按照[IEEE802.112007]规范支持CCMP算法以及设备还可以支持TKIP算法。算法可以被手动或者自动选择。在手动选择模式中,相同的算法应该成对和组密码进行使用。为了能够支持其他算法,一个“Extended”值是可用的。设备应该支持手动或者自动选择模式。模式设备应该支持“None”安全模式。PSK模式设备应该支持PSK安全模式。为了减小对PSK的危害,设备不应该传输任何PSK给客户端,而且不应该在对调用GetNetworkinterfaces操作的应答中返回PSK.在PSK安全模式中,可以运用以下规则来添加无线配置:1.客户端在SetNetworkInterfaces请求中应该包含一个PSK值。2.设备应该检查确保PSK值是被提供,如果没有提供,设备返回一个错误。在PSK安全模式中,当需要对无线配置进行更新时,按以下规则进行:1.如果客户想保留PSK当前的值,那么在SetNetworkInterfaces请求的信息中不应该包含PSK的值2.如果设备接收SetNetworkInterfaces请求信息中不包含PSK的值,那么设备保留其以前用的PSK值。[IEEE802.11-2007]标准声明:应当用一些频带外的方法将PSK分发到SAT上面。在ONVIF协议的安全策略强调PSK应该受到充分的保护。IEEE802.1X-2004模式设备应该支持IEEE802.1x安全模式。对于IEEE802.1x-2004安全模式的详细要求请参考[IEEE802.1Xconfiguration获取DOT11的性能通过这个操作,设备返回一个IEEE802.11的功能能,参见表33.设备支持这个操作表32:GetDot11CapabilitiesGetIEEE802.11Capabilities请求与应答信息名称相应功能以及参数描述GetDot11CapabilitiesRequest请求信息是空信息GetDot11Capabilites-Responsett:Dot11CapabilitiesCapabilities[1][1]可能的存在的错误原因分析env:Receiverter:ActionNotSupportedter:InvalidDot11不支持IEEE802.11配置表33:IEEE802.11capabilitiesCapability具体描述TKIP表明设备支持TKIP算法ScanAvailableNetworks表明设备支持ScanAvailableIEEE802.11Networks操作MultipleConfiguration表明设备多替代性性IEEE802.11配置AdHocStationMode表明设备支持ad-hoc基站模式WEP表明设备支持WEP安全模式GetIEEE802.11状态通过这个操作能够返回一个无线网络接口状态信息,这设备应该支持这个命令,以下是可能返回的状态信息:SSID(shall)BSSID(should)Paircipher(should)Groupcipher(should)Signalstrength(should)Aliasofactivewirelessconfiguration(shall)表34:GetDot11StatusGetDot11Status请求与应答信息名称相应功能以及参数描述GetDot11StatusRequesttt:ReferenceTokenInterfaceToken[1][1]GetDot11StatusResponsett:Dot11StatusStatus[1][1]可能的存在的错误原因分析env:Receiverter:ActionNotSupportedter:InvalidDot11IEEE802.11配置不支持env:Senderter:InvalidArgValter:NotDot11接口不是IEEE802.11接口env:Senderter:InvalidArgValter:InvalidNetworkInterface提供的网络接口令牌不存在env:Receiverter:Actionter:NotConnectedDot11IEEE802.11网络没有连接上扫描可用的IEEE802.11网络通过这个操作返回一个设备周围无线网络的清单。设备应该支持这种操作。以下是每个网络可能返回的状态:SSID(shall)BSSID(should)Authenticationandkeymanagementsuite(s)(should)Paircipher(s)(should)Groupcipher(s)(should)Signalstrength(should)表35:ScanAvailable802.11NetworksScanAvailable802.11Networks请求与应答信息名称相应功能以及参数描述ScanAvailableDot11NetworksRequesttt:ReferenceTokenInterfaceToken[1][1]ScanAvailableDot11NetworksResponsett:Dot11AvailableNetworksNetworks[0][unbounded错误代码原因分析env:Receiverter:ActionNotSupportedter:InvalidDot11不支持IEEE802.11的配置env:Senderter:InvalidArgValter:NotDot11接口不是IEEE802.11接口env:Senderter:InvalidArgValter:InvalidNetworkInterface提供的网络接口令牌不存在env;Receiverter:ActionNotSupportedter:NotScanAvailable设备不支持ScanAvailableDot11Networks8.3系统8.3.1设备信息终端通过这个操作来获取设备信息,如:设备制造商,模型,以及固件版本;终端通过调用GetDeviceInformation命令,设备应该应答其设备信息。表36:GetDeviceInformation指令GetDeviceInformation请求与应答信息名称相应功能以及参数描述GetDeviceInformationRequest请求信息是一条空信息空信息GetDeviceInformationResponse应答信息的包含以下:xs:stringManufacturer[1][1]xs:stringModel[1][1]xs:stringFirmwareVersion[1][1]xs:stringSerialNumber[1][1]xs:stringHardwareId[1][1]错误代码原因分析没有与此命令相关的错误代码8.3.2获取系统的URL这个操作可用于检索URLS;这个URIS可以通过HTTP方式下载系统信息。通过URL可以下载以下的系统信息:1.系统日志:很多系统日志会以不同格式返回。至于返回系统日志确切的格式不是这个协议所规范的。2.支持信息:从设备处获得任意设备的诊断信息;至于返回诊断信息的格式不是本协议所能规范的3.系统备份:接收到的文件是一个备份文件,该备份文件可以用来恢复上一次设备配置信息;备份文件确切的格式不是这个协议所规范。如果设备允许检索系统日志,支持信息或者系统备份数据,那么就可以通过HTTPGET使其成为可能;如果设备支持这些,那么设备就必须支持GetSystemUris命令进行这些操作。表37:GetSystemUris命令GetSystemUris请求与应答信息名称相应功能以及参数描述GetDeviceInformationReques请求信息是一条空信息GetSystemUrisResponse应答信息包含了:一个能用来下载不同信息成分的的URL:tt:SystemLogUriListSystemLogUris[0][1]xs:anyURISupportInfoUri[0][1]xs:anyURISystemBackupUri[0][1]错误代码原因分析没有与此命令相关的错误8.3.3备份通过这个操作可以获得设备备份配置文件,终端调用GetSystemBackup命令,设备应该返回一个设备配置备份文件。返回的备份文件与一个用二进制表示的名字和互联网媒体类型相关;至于确切的格式已经不是这个协议所能规范的了。通过MOTM来传输备份配置文件。表38:GetSystemBackup指令GetSystemBackup请求与应答信息名称相应功能以及参数描述GetSystemBackupRequest请求信息为空信息GetSystemBackupResponse应答信息包含了:备份的配置文件tt:BackupFileBackupFiles[1][unbounded]错误代码原因分析没有与此命令相关的错误代码8.3.4恢复这个操作可以通过早先从设备接收到的备份文件来恢复设备的配置信息;设备应该支持通过RestoreSystem命令来恢复设备的配置文件。至于备份配置文件具体的确切格式已经不是本协议所能规范的了;如果设备支持这个命令,那么设备就支持通过GetSystemBackup命令来接收备份文件来恢复配置信息。通过MOTM来传输备份配置文件。表39:RestoreSystem指令RestoreSystem请求与应答信息名称相应功能以及参数描述RestoreSystemRequest请求信息包含系统备份文件:tt:BackupFileBackupFiles[1][unbounded]RestoreSystemResponse应答信息是一条空信息可能的存在的错误原因分析env:Senderter:InvalidArgValter:InvalidBackupFile备份文件无效8.3.5开始恢复系统这个操作能够通过HTTPPOST机制,并从备份的配置数据中初始化并恢复设备系统。然后设备返回一个用来上传备份文件的HTTPURL作为对这个命令的响应;当HTTPPOST操作一旦完成,恢复就开始了;设备应该支持通过StartSystemRestore命令来进行系统恢复。至于具体备份配置文件的格式已经不是这协议所能规范的了。通过HTTP进行系统恢复会按照以下几步实现:1客户端调用StartSystemRestore命令2服务端回应一个用于上传的URI3.客户端通过HTTPPOST上传配置数据到URL4.服务端采用上传的配置,重启(如果需要)如果由于上传的是无效的文件导致系统恢复失败,这HTTPPOST将会应答一个“415UnsupportedMediaType”;如果系统恢复失败是由于设备的错误,这HTTPPOST将会应答一个“500InternalServerError”。在HTTPPOST中,内容类型头的值的请求应该是“application/octetstream”表40:StartSystemRestore命令StartSystemRestore请求与应答信息名称相应功能以及参数描述StartSystemRestoreRequest请求信息为一条空信息StartSystemRestoreResponse应答信息包含:1.对于用于下载系统配置文件URL2.一个可选的持续时间,这个时间用来指示设备期望在下载后多久不可用xs:anyURIUploadUri[1][1]xs:durationExpectedDownTime[0][1]错误代码原因分析没有这此命令相关的错误代码8.3.6获取系统日期以及时间这种操作可以用来获取设备系统时间以及系统日期。设备应该支持通过GetSystemDateAndTime命令来返回一个夏令设置时间或者人工系统时间或者这NTP时间。虽然UTCDATETIME信息被标记为可选项,设备还是应该提供一个UTCDATETIME信息,这主要是确保能够向后兼容。表41:GetSystemDateAndTime命令GetSystemDateAndTime请求与应答信息名称相应功能以及参数描述GetSystemDateAndTimeRequest请求信息是一条空信息GetSystemDateAndTimeResponse应答信息包含设备的日期以及时间信息:“DateTimeType”:如果系统的时间和日期是通过手动或者NTP设定的“DaylightSavings”:夏令时打开或者关闭"TimeZone":在POSIX1003.1定义的时区(参见8.3节)“UTCDateTime”:在UTC中的日期和时间.“LocalDateTime”:设备当地的时间tt:SetDateTimeTypeDateTimeType[1][1]xs:booleanDayLightSavings[1][1]tt:TimeZoneTimeZone[0][1]tt:DateTimeUTCDateTime[0][1]tt:DateTimeLocalDateTime[0][1]错误代码原因分析没有这此命令相关的错误代码8.3.7设置系统日期以及时间这个操作能够设置设备的系统日期和时间。设备应该支持通SetSystemDateAndTime命令来配置设备的夏令设置以及手动系统的日期和时间或者表示NTP的时间。如果系统时间和日期是手动设置的,那么客户端在请求信息中就应该包含UTCDateTime和LocalDateTime表42:SetSystemDateAndTime指令SetSystemDateAndTime请求与应答信息名称相应功能以及参数描述SetSystemDateAndTimeRequest请求的信息包含了对于设备要设置的日期以及时间:“DateTimeType”:如果系统时间个日期是手动设置的或者通过NTP设置的“DaylightSavings”:夏令时打开或者关闭"TimeZone":在POSIX1003.1定义的时区(参见8.3节)“UTCDateTime”:在UTC中的时间和日期.如果日期时间类型是NTP,UTCDateTime就没有意义.tt:SetDateTimeTypeDateTimeType[1][1]xs:booleanDayLightSavings[1][1]tt:TimeZoneTimeZone[0][1]tt:DateTimeUTCDateTime[0][1]SetSystemDateAndTime-Response应答信息是一个空信息错误代码原因分析env:Sender请求信息中设置的timezone域无效ter:InvalidArgValter:InvalidTimeZoneenv:Senderter:InvalidArgValter:InvalidDateTime请求信息中设置的时间或者日期无效8.3.8出厂默认配置这个操作可以重载设备在出厂时的默认值。设备应该支持通过SetSystemFactoryDefault命令来重载设备在出厂时软件和硬件默认参数值。这就意味着软件出厂的默认参数与具体的产品以及具体的供应商有关。软件出厂默认的操作作用还没有被充分的定义。然而,必须保证设备在配置复位后,能够使用以前使用的IP地址访问。这就意味着基本的网络设置如:IP地址,子网和网关或者DHCP这些设置是不能在软件重置中改变的。表43:SetSystemFactoryDefault指令SetSystemFactoryDefault请求与应答信息名称相应功能以及参数描述SetSystemFactoryDefaultRequest请求的信息包含了设备在出厂时执行的默认配置.“Hard”:所有的参数设置成产品出厂前的默认值“Soft”:除了设备供应商以外的参数都设置出厂前的默认配置tt:FactoryDefaultTypeFactoryDefault[1][1]SetSystemFactoryDefaultResponse应答信息是一条空信息错误代码原因分析没有与此命令相关的错误代码8.3.9固件升级这个操作可以用来升级设备固件版本。如果成功了进行了固件升级,那么会在设备重启之前给出一个应答信息。设备应该支持通过UpgradeSystemFirmware命令来进行固件升级。至于固件数据的具体格式已不是这个协议所能规范的。固件通过MTOM进行传输。表44:UpgradeSystemFirmware命令UpgradeSystemFirmware请求与应答信息名称相应功能以及参数描述UpgradeSystemFirmware-Request请求信息包含了被用来升级的固件。固件升级是“软件”那么就意味着所有参数就要保持为当前值tt:AttachmentDataFirmware[1][1]UpgradeSystemFirmware-应答的信息包含了一条向客户端报告的字符串信息,Response如:“Upgradesuccessful,rebootinginxseconds.”xs:stringMessage[1][1]可能的存在的错误原因分析env:Senderter:InvalidArgster:InvalidFirmware固件无效,或者不被设备支持env:Receiverter:Actionter:FirmwareUpgrade-Failed固件升级失败开始固件升级这个操作可以通过HTTPPOST机制来初始化一个固件升级。然后通过返回一个HTTP的URL来对升级命令进行响应,这个httpurl是用来上传升级文件的;实际上在HTTPPOST操作一旦完成就进行升级操作;设备应该支持通过StartFirmwareUpgrade命令进行固件升级,至于固件文件数据的格式已不是这个协议所能规范的了可以通过如下几步进行固件的升级:1.客户端调用StartFirmwareUpgrade命令。2.服务器通过响应一个用于上传URL和延迟值。3.如果服务器指定延时,那么客户端选择持续等待。4.客户端通过HTTPPOST上传一个固件图像到URL。5.通过上传镜像文件,服务器重编自身程序,然后从新启动。如果因为升级文件无效使得固件升级失败,那么这HTTPPOST将会应答“415UnsupportedMediaType”,如果因为设备错误导致固件升级失败,那么HTTPPOST将响应一个“500InternalServerError”在请求信息中HTTPPOST中内容类型头的值的是“application/octetstream”。表45:StartFirmwareUpgrade指令StartFirmwareUpgrade请求与应答信息名称相应功能以及参数描述StartFirmwareUpgrade-Request请求信息是一条空信息StartFirmwareUpgrade-Response应答的信息包含:上传固件文件的URL选择性的时延;客户端应当等待一定时间在进行初始化固件上载之前表明设备在期待在上载固件文件完成后多久后不可用xs:anyURIUploadUri[1][1]xs:durationUploadDelay[0][1]xs:durationExpectedDownTime[0][1]错误代码原因分析没有与此命令相关的错误获取系统日志这个操作可以从设备中获取系统日志。设备应该支持通过GetSystemLog命令来获取系统日志信息。至于系统日志确切的格式已经不是本协议所规范的。系统日志信息被传送通过MTOM或者一个字符串。表46:GetSystemLog指令GetSystemLog请求与应答信息名称相应功能以及参数描述GetSystemLogRequest请求信息包含了系统日志检索的类型。这支持的日志信息类型被定义成两种类型:“System”:系统日志“Access”:客户端访问日志tt:SystemLogTypeLogType[1][1]GetSystemLogResponse应答的信息包含请求的系统日志信息,设备可以选择以附件或者字符串返回的日志信息否用二进制信息。tt:AttachmentDataBinary[0][1]xs:stringString[0][1]可能的存在的错误原因分析env:Senderter:InvalidArgster:AccesslogUnavailable没有可访问的日志信息env:Senderter:InvalidArgster:SystemlogUnavailable没有可用的访问日志信息获取支持信息这个操作可以获得任意设备的诊断信息。设备可以支持通过GetSystemSupportInformation命令来检索设备的诊断信息。至于检索信息确切的格式已不是本协议所规范的。检索信息以附件或者字符串的形式通过MTOM传输。表47GetSystemSupportInformation命令GetSystemSupportInformation请求与应答信息名称相应功能以及参数描述GetSystemSupportInformationRequest请求信息是空信息GetSystemSupportInformationResponse应答信息包含了设备的支持信息,设备能够选择将支持信息是以二进制或者字符串的形式进行应答tt:AttachmentDataBinaryFormat[0][1]xs:stringStringFormat[0][1]可能的存在的错误原因分析env:Senderter:InvalidArgster:SupportInformationUnavailabl没有可用的支持信息重启通过这个操作能够重启一个设备。在设备重启之前,应答信息就会被发送回来。设备支持通过SystemReboot命令来重启系统。表48:SystemReboot指令SystemReboot请求与应答信息名称相应功能以及参数描述SystemReboot请求信息是空信息SystemRebootResponse应答信息包含了一个字符串应答信息,这个字符串信息向客户端返回报告信息;如:“Rebootinginxseconds.”txs:stringMessage[1][1]错误代码原因分析没有与此命令相关的错误代码获取范围参数这个操作可以获取设备的范围参数。这范围参数被用在设备发现上,用于匹配一个探测信息,参考第七章。范围参数有如下两种不同类型:1.固定的2.可配置的固定的范围参数不能够通过设备管理接口进行修改,因为固定的范围参数在设备固件配置中作为一个永久性的设备特征。在应答的信息返回一个范围参数清单,清单中包含了范围类型。可以通过范围设置与配置范围参数操作来进行范围参数配置,参见和节。设备应该支持通过GetScopes命令来检索发现的范围参数。虽然一些范围参数是固定的,客户总是希望设备响应一个范围清单。表49:GetScopes命令GetScopes请求与应答信息名称相应功能以及参数描述GetScopesRequest请求信息是空信息GetScopesResponse应答信息包含了一个在设备范围定义的URL清单,也可以参考第七章的范围定义tt:Scope:Scopes[1][unbounded]可能的存在的错误原因分析env:Receiver范围清单是是空的ter:Actionter:EmptyScope设置范围参数这个操作可以设置设备的范围参数。在设备发现中,范围参数用来匹配一个探测信息。这个操作可以替换所有可配置的范围参数。(除了固定的参数)如果不想替换所有参数,那么可以通过添加命令来进行配置。设备应该支持通过SetScopes命令来对设备的范围参数进行配。表50:SetScope命令SetScopes请求与应答信息名称相应功能以及参数描述SetScopesRequest请求信息包含一个已经定义的设备范围的URLS清单。参见第七章xs:anyURI:Scopes[1][unbounded]SetScopesResponse应答信息是一条空信息可能的存在的错误原因分析env:Senderter:OperationProhibitedter:ScopeOverwrite设置的范围参数覆盖了固定参数,命令排斥env:Receiverter:Actionter:TooManyScopes请求信息包含的范围清单超出支持的范围数添加范围参数这个操作可以对设备添加新的可配置的范围参数。在设备发现中,范围参数被用来匹配探测信息,参见第七章。设备应该支持通过AddScopes命令来添加发现范围参数。表51:AddScopes命令AddScopes请求与应答信息名称相应功能以及参数描述AddScopesRequest请求信息包含一个用于添加进已存在的配置范围清单的URL清单;参见第七章xs:anyURI:ScopeItem[1][unbounded]AddScopesResponse应答信息是空信息可能的存在的错误原因分析env:Receiverter:Actionter:TooManyScopes请求信息设置的范围清单超出范围支持的数量移除范围参数通过这个操作可以删除设备可配置的范围参数。在设备发现中,范围参数被用在匹配一个探测信息。参见第七章,设备应该支持通过RemoveScopes命令删除设备发现范围参数。表52:RemoveScopes命令RemoveScopes请求与应答信息名称相应功能以及参数描述RemoveScopesRequest请求信息包含一个URL清单;xs:anyURI:ScopeItem[1][unbounded]RemoveScopesResponse应答信息包含一个从设备范围参数移除的URL清单xs:anyURI:ScopeItem[0][unbounded]可能的存在的错误原因分析env:Receiverter:Actionter:TooManyScopes企图移除固定的范围参数,命令排斥env:Senderter:InvalidArgValter:NoScope请求移除信息包含一个不存在的范围获取发现模式这个操作可以获取设备的发现模式。参见7.2节不同设备定义的发现模式。设备应该支持通过GetDiscoveryMode命令来检索设备的发现模式。表53:GetDiscoveryMode指令GetDiscoveryMode请求与应答信息名称相应功能以及参数描述GetDiscoveryModeRequest请求信息是一条空信息GetDiscoveryModeResponse应答信息包含当前发现模式的设定可发现和不可发现tt:DiscoveryMode:DiscoveryMode[1][1]错误代码原因分析没有与此命令相关的错误设置发现模式通过这个操作可以设置设备的发现模型。参见7.2对各种不同发现模式的定义。设备应该支持通过SetDiscoveryMode命令来对设备的发现模式进行定义。表54:SetDiscoveryMode命令SetDiscoveryMode请求与应答信息名称相应功能以及参数描述SetDiscoveryModeRequest请求信息包含对设备发现模式设定:显露或者非显露tt:DiscoveryMode:DiscoveryMode[1][1]SetDiscoveryModeResponse应答信息是一条空信息错误代码原因分析没有与此命令相关的错误代码获取远程发现方式这个操作可以获取设备的远程发现方式。参见7.4节对远程发现的定义。一个支持远程发现的设备应当支持通过GetRemoteDiscoveryMode命令来检索设备远程发现方式。表55:GetRemoteDiscoveryMode命令GetRemoteDiscoveryMode请求与应答信息名称相应功能以及参数描述GetRemoteDiscoveryMode-Request请求信息是空信息GetRemoteDiscoveryMode-Response应答信息包含当前远程发现方式的设定:可发现和不可发现tt:DiscoveryMode:RemoteDiscoveryMode[1][1]错误代码原因分析没有与此命令相关的错误代码设置远程发现方式通过这个操作可以设置设备远程发现方式。参见7.4节远程发现以及远程拓展定义。支持远程发现的设备,同样应当支持通过SetRemoteDiscoveryMode命令来设置设备远程发现方式。表56:SetRemoteDiscoveryMode指令SetRemoteDiscoveryMode请求与应答信息名称相应功能以及参数描述SetRemoteDiscoveryMode-Request请求信息包含远程发现方式的设定:显露或者非显露tt:DiscoveryMode:RemoteDiscoveryMode[1][1]SetRemoteDiscoveryMode-Response应答信息是一条空信息错误代码原因分析没有与此命令相关的错误代码获取远程DP地址通过这个操作可以获取设备远程的DP地址或者设备地址。如果设备支持远程发现,就像7.4节所定义的那样。那么设备应该支持通过GetDPAddresses命令来检索远程DP地址。表57:GetDPAddresses指令GetDPAddresses请求与应答信息名称相应功能以及参数描述GetDPAddressesRequest请求信息是一条空信息GetDPAddressesResponse应答信息包含配置的远程DP地址或者地址。如果没有远程的DP地址配置,那么将返回一个空的清单tt:NetworkHost:DPAddress[0][unbounded]错误代码原因分析没有与此命令相关的错误代码配置远程DP地址通过这个操作可以对设备远程的DP地址或者地址进行配置。如果设备支持远程发现,正如7.4节所讲的那样;设备应该支持通过SetDPAddresses命令来配置设备的远程DP地址表58:SetDPAddresses指令SetDPAddresses请求与应答信息名称相应功能以及参数描述SetDPAddressesRequest请求的信息包含对设备配置的DP地址或者地址tt:NetworkHost:DPAddress[0][unbounded]SetDPAddressesResponse应答信息是一条空信息错误代码原因分析没有与此命令相关的错误代码8.4安全在这一节包含了一系列的安全管理操作。这些操作对于网络攻击非常敏感;以及为了不危及设备,通过适当的授权级别来对这些操作进行保护。8.4.1获取访问策略访问不同的服务以及服务子集应该服从于访问控制。这WS-security架构给了终端认证提供保障。通过安全访问策略,从而决定授权发生。本协议标准并不强制指定任何特定的策略描述格式或安全政策,但是这些都取决于设备制造商或系统供应商选择的策略和策略描述格式。然而,通过一些命令能够请求一个安全策略。如果设备支持基于WS-Security认证的访问策略,那么设备就应该支持这命令表59:GetAccessPolicy指令GetAccessPolicy请求与应答信息名称相应功能以及参数描述GetAccessPolicyRequest请求信息是空信息GetAccessPolicyResponse应答信息包含请求的策略文件tt:BinaryDataPolicyFile[1][1]错误代码原因分析env:Receiverter:Actionter:EmptyPolicy设备的访问策略文件不存在或者是空的8.4.2设置访问策略通过这个命令来设置设备的安全访问策略(关于安全访问的策略的详细信息请参考8.4.1节的Getcomd命令),如果设备支持基于WS-Security认证的安全访问策略,那么设备应该支持这命令。表60:SetAccessPolicy指令SetAccessPolicy请求与应答信息名称相应功能以及参数描述SetAccessPolicyRequest请求信息包含设置的策略文件tt:BinaryDataPolicyFile[1][1]SetAccessPolicyResponse应答信息是空信息可能的存在的错误原因分析env:Senderter:InvalidArgster:PolicyFormat由于不知道策略文件格式,请求信息的策略不能够被设置8.4.3获取用户通过这个操作,可以列举所有已注册用户以及用户对设备操作的相应的操作等级。设备应该支持通过GetUsers命令来检索已注册设备用户以及作为用户权限。表61:GetUsers指令GetUsers请求与应答信息名称相应功能以及参数描述GetUsersRequest请求信息是一条空信息]GetUsersResponse应答信息包含了一个用户清单以及作为用户的相应凭据每一行包括:用户名称(用户的密码不会包含在相应中)用户等级tt:User:User[0][unbounded]错误代码原因分析没有与此命令相应的错误代码8.4.4创建用户这个操作可以创建一个新的设备用户以及新用户相应权限,参见5.12用户权限定义。设备应该支持通过CreateUsers命令来创建设备用户以及这些用户相应的操作权限。要么是所有的用户被成功的创建或者返回一个错误信息,没有创建任何用户。建议遵守ONVIF协议的设备支持28字节的密码长度,因为客户可能遵循密码的求导机制,而这种机制将导致passwordequivalent\'oflength28bytes表62:CreateUsers指令CreateUsers请求与应答信息名称相应功能以及参数描述CreateUsersRequest请求信息包含对创建一个新用户的所需参数元素每条目录包含:用户名密码用户等级tt:User:User[1][unbounded]CreateUsersResponse应答信息是一条空信息可能的存在的错误原因分析env:Senderter:OperationProhibitedter:UsernameClash创建的用户名已经存在env:Senderter:OperationProhibitedter:PasswordTooLong设置密码太长env:Senderter:OperationProhibitedter:UsernameTooLong用户名太长env:Senderter:OperationProhibitedter:Password密码太弱env:Receiverter:Actionter:TooManyUsers超出了最大支持的用户数量env:Sender未设置用户等级ter:OperationProhibitedter:AnonymousNotAllowedenv:Senderter:OperationProhibitedter:UsernameTooShort用户设置的用户名太短8.4.5删除用户这个操作可以删除设备上用户以及他们的操作权限,参见5.12节对用户权限的定义。设备应当支持通过DeleteUsers命令来删除设备用户以及这些用户权限。设备可以有一个或者更多不能删除的固定的用户。对于这个命令,要么所有用户都成功的被删除要么返回一个错误信息,没有任何用户被删除。表63:DeleteUsers指令DeleteUsers请求与应答信息名称相应功能以及参数描述DeleteUsersRequest请求信息包含要删除的用户名称xs:string:Username[1][unbounded]DeleteUsersResponse应答信息是空信息可能的存在的错误原因分析env:Senderter:InvalidArgValter:FixedUser用户名不被识别env:Senderter:InvalidArgValter:FixedUser删除的用户是固定用户8.4.6对用户进行配置通过这个操作可以更新设备上一个或者多个用户的权限以及类别。设备应该支持通过SetUser命令来更新设备用户以及他们的权限。对于这条命令,要么所有修改请求被成功处理,要么返回一条错误信息,没有更改请求被处理。表64:SetUser指令SetUser请求与应答信息名称相应功能以及参数描述SetUserRequest请求信息包含一个要更新用户清单以及用户权限凭据用户名称密码用户等级tt:User:User[1][unbounded]SetUserResponse应答信息是空信息可能的存在的错误原因分析env:Sender用户名不被识别ter:InvalidArgValter:UsernameMissingenv:Senderter:OperationProhibitedter:PasswordTooLong设置密码太长env:Senderter:OperationProhibitedter:PasswordTooWeak密码太弱env:Senderter:OperationProhibitedter:AnonymousNotAllowed用户等级不允许8.4.7IEEE802.1X配置这个协议定义以下参数将作为IEEE802.1X配置参数:\uf06c令牌配置这个参数与IEEE802.1X配置参数相关,它被定义在\'Dot1XConfigurationToken\'in[ONVIFSchema];对于在编写源代码的时候,Dot1X命名的习惯被用来更好的读取schema元素\uf06cEAP识别这个参数表明申请链接IEEE802.1X的用户名,这个在【ONVIFSchema】定义为“identity”。\uf06cEPA方式这个参数表明被使用的认证方式,这个参数在[ONVIFSchema]被定义为EAPMethod\'。\uf06cCA证书ID这个参数表示用于核实认证服务CA执照的ID,这个在[ONVIFSchema].被定义为CACertificateID。各自选定的EAP方法的配置参数根据选择EAP方法,一些如下相关参数是被需要的:[EAP-MD5],[EAP-PEAP/MSCHAP-V2],[EAP-TTLStypes]:认证密码,以便认证服务能使用指定的密码验证设备用户(设备)。[EAP-MD5]不适用于802.11(WPA-Enterprise)规范。[EAP-TLS]:客户端的证书编号,RADIUS服务能够通过指定的证书来确认用户在进行某网络接口配置的安全配置时,IEEE802.1X参数将会被用到。对于细节上的东西,请参考。这个规范假定在IEEE802.1X管理网络之外,完成在设备的IEEE802.1X配置。为了对IEEE802.1X进行重新设置,这里同样的假设设置在802.1X管理网络之外进行。注意:在ONVIF2.0协议对IEEE802.1X支持只限制在IEEE802.11接口中。创建IEEE802.1X配置通过这个操作可以创建对设备802.1X的配置参数。如果设备支持802.1x,那么设备就应该支持这个命令。如果设备收到一个已经存在的令牌请求,那么设备就应该响应\'一个ter:ReferenceToken\'来表明有配置的冲突。表65:CreateDot1XConfiguration命令CreateDot1XConfiguration请求与应答信息名称相应功能以及参数描述CreateDot1XConfigurationRequest请求信息包含:tt:Dot1XConfigurationDot1XConfiguration[1][1]CreateDot1XConfigurationResponse应答信息是空信息错误代码原因分析env:Receiverter:ActionNotSupportedter:EAPMethodNotSupported不支持建议的EAP方法设备env:Receiverter:Actionter:MaxDot1XIEEE802.1X配置能够到达的最大数量env:Senderter:OperationProhibitedter:CertificateID无效的证书ID错误env:Senderter:InvalidArgValter:ReferenceTokenDot1XConfigurationToken已经存在env:Senderter:InvalidArgValter:InvalidDot1X无效的IEEE802.1X配置对IEEE802.1X配置当CreateDot1XConfiguration命令试图创建一个新的参数配置时,通过这个操作可以修改设备已经存在的配置参数。支持IEEE802.1X的设备都应该支持这个命令。表66:SetDot1XConfigurationRequest指令SetDot1XConfiguration请求与应答信息名称相应功能以及参数描述SetDot1XConfigurationRequest请求信息包含:tt:Dot1XConfigurationDot1XConfiguration[1][1]SetDot1XConfigurationResponse应答信息是空信息错误代码原因分析env:Receiverter:ActionNotSupportedter:EAPMethodNotSupported设备不支持建议的EAP方法env:Senderter:OperationProhibitedter:CertificateID无效的ID错误env:Sender无效的Dot1XConfiguration令牌错误ter:OperationProhibitedter:ReferenceTokenenv:Senderter:InvalidArgValter:InvalidDot1X无效的IEEE802.1X配置获取IEEE802.1X配置通过这个操作能够通过相关的令牌来获取IEEE802.1X配置参数。如果一个设备支持IEEE802.1x,那么设备就应该支持这个命令。在检索配置时,无论802.1x方法是否有密码请求,设备都不应该在返回的响应中包含密码元素。表67:GetDot1XConfiguration指令GetDot1XConfiguration请求与应答信息名称相应功能以及参数描述GetDot1XConfigurationRequest请求信息包含:tt:ReferenceTokenDot1XConfigurationToken[1][1]GetDot1XConfigurationResponse应答信息包含:tt:Dot1XConfigurationDot1XConfiguration[1][1]可能的存在的错误原因分析env:Senderter:OperationProhibitedter:ReferenceToken无效的Dot1XConfigurationToke获取IEEE802.1X配置通过这个操作可以从设备中获取所有已经存在的IEEE802.1X设置。设备应该将对客户端应答其所有的IEEE802.1X配置,这样客户端才能知道有多少IEEE802.1X配置已经存在,以及它们是怎么被配置的。一个支持IEEE802.1X的设备应该支持这个命令无论在检索配置802.1x方法是否需要密码,设备在应答时候都不应该包含密码。表68:GetDot1XConfigurations指令GetDot1XConfigurations请求与应答信息名称相应功能以及参数描述GetDot1XConfigurationsRequest请求信息是空信息GetDot1XConfigurationsResponse应答信息包含:tt:Dot1XConfigurationDot1XConfiguration[0][unbounded]错误代码原因分析没有与此命令相关的错误代码删除IEEE802.1X配置这个操作可以删除设备上的IEEE802.1X的配置参数。在请求的信息中会指定哪一个配置被删除。如果设备支持IEEE802.1X,那么设备就应该支持这个命令。表69:DeleteDot1XConfigurations命令DeleteDot1XConfigurations请求与应答信息名称相应功能以及参数描述DeleteDot1XConfigurationRequest请求信息包含任何:tt:ReferenceTokenDot1XConfigurationToken[1][1]DeleteDot1XConfigurationResponse应答信息是一条空信息可能的存在的错误原因分析env:Senderter:OperationProhibitedter:ReferenceToken无效的Dot1XConfigurationTokenenv:Receiverter:OperationProhibitedter:ReferenceToken不能删除与IEEE802.1x相关的配置8.4.8创建签名证书通过这个操作可以产生一个公钥/私钥对,在生成密钥对后会产生一个设备自签名证书。使用一个合适的板载密钥对产生机制来创建证书。如果设备支持板载密钥对产生。支持TLS的设备应该支持证书创建指令。以及,如果设备支持板载密钥对的产生,那么支持IEEE802.1X协议的设备应该支持密钥对产生命令。通过证书ID来标识证书和密钥对,这个ID既可以被证书创建的申请者来选择,也可以通过设备来选择。表70:CreateCertificate指令CreateCertificate请求与应答信息名称相应功能以及参数描述CreateCertificateRequest请求信息包含请求的证书ID以及其他的请求参数:主题,之前有效或者之后有效xs:tokenCertificateID[0][1]xs:stringSubject[0][1]xs:dateTimeValidNotBefore[0][1]xs:dateTimeValidNotAfter[0][1]CreateCertificateResponse应答信息包含自签名证书tt:CertificateNvtCertificate[1][1]可能的存在的错误原因分析env:Receiverter:Actionter:KeyGeneration产生私钥/公钥失败env:Senderter:InvalidArgValter:CertificateID证书已经存在env:Senderter:InvalidArgValter:InvalidDateTimeValidNotBeforeorValidNotAfterparameter参数是无效的8.4.9获取证书通过这个操作可以获取所有以TLS认证为目的服务器证书,以及所有以IEEE802.1x为目的的设备客户端证书。这个命令仅仅列举了设备的TLS服务端证书和IEEE802.1X客户端证书,证书以二进制数据进行返回;支持TLS的设备应该支持这个命令,以及证书应该通过[X.681],[X.682],[X.683]DER[X.690]编码规则进行编码表71:GetCertificates指令GetCertificates请求与应答信息名称相应功能以及参数描述GetCertificatesRequest请求信息是一条空息GetCertificatesResponse应答信息包含设备证书清单tt:CertificateNvtCertificate[0][unbounded]错误代码原因分析没有与此命令相关的错误代码获取CA证书在如下两种情况,设备能够对CA证书进行下载以及使用证书:1.在TLS服务功能中,进行TLS客户认证;2..在IEEE802.1x功能中,进行服务的认证。这个操作能够获取所有下载进设备的CA证书。如果设备支持TLS客户认证或者IEEE802.1x,那么设备就应该支持这个命令,并返回一个通过[X.681],[X.682],[X.683]DER[X.690]编码规则的证书表72:GetCACertificates指令GetCertificates请求与应答信息名称相应功能以及参数描述GetCACertificatesRequest请求信息是一条空信息GetCACertificatesResponse应答信息包含CA证书清单tt:CertificateCACertificate[0][unbounded]错误代码原因分析没有与此命令相关的错误代码获取证书状态此操作是特定于TLS功能。这个操作能够获取设备TLS服务证书的状态。如果一个设备支持TLS,那么设备就应该支持这个命令表73:GetCertificatesStatus指令GetCertificatesStatus请求与应答信息名称相应功能以及参数描述GetCertificatesStatusRequest请求信息是一条空信息GetCertificatesStatusResponse应答信息包含与设备服务证书,ID相关状态清单,状态被定义为布尔型:tt:CertificateStatusCertificateStatus[0][unbounded]错误代码原因分析没有与此命令相关的错误代码设置证书状态此操作是只适用于TLS功能。通过这个操作可以设置设备TLS服务证书的状态,一个支持TLS的设备应该支持这个命令。一次只能使能一个设备服务证书。表74:SetCertificatesStatus指令SetCertificatesStatus请求与应答信息名称相应功能以及参数描述SetCertificatesStatusRequest请求信息包含了与ID和请求证书状态相关的设备服务证书清单:tt:CertificateStatusCertificateStatus[0][unbounded]SetCertificatesStatusResponse应答信息不包含任何信息错误代码原因分析env:Senderter:InvalidArgValter:CertificateID请求信息包含的证书未知获取证书请求这个操作向设备请求一个PCK#10签名证书,这返回的信息要么被完全格式化为指定PKCS#10]格式或者采用PEM编码为PKCS#10格式。为了让这个命令能够被执行,设备必须有一个私钥/与公钥对。这密钥对与输入的CertificateID的参数有关。这CertificateID是通过CreateCertificate命令才产生的。如果一个设备支持板载密钥对的产生,也就是说设备支持通过TLS或者IEEE802.1X来产生密钥对,那么设备就支持这个命令。表75:GetPkcs10Request指令GetPkcs10Request请求与应答信息名称相应功能以及参数描述GetPkcs10RequestRequest请求信息包含一个相关证书以及和这个证书相关的一些参数。这些属性被作为DERASN.1目标进行编码xs:tokenCertificateID[1][1]xs:stringSubject[0][1]xs:BinaryDataAttributes[0][1]GetPkcs10RequestResponse应答信息包含PKCS#10请求数据结构tt:BinaryDataPkcs10Request[1][1]可能的存在的错误原因分析env:Senderter:InvalidArgValter:CertificateID无效的CertificateIDenv:Receiverter:Actionter:SignaturePKCS#10签名创建失败获取客户证书状态这个操作是特定的TLS功能。通过这个操作可以获取设备TLS的客户认证状态。支持TLS的设备应该支持这个命令。表76:GetClientCertificateMode指令GetClientCertificateMode请求与应答信息名称相应功能以及参数描述GetClientCertificateMode-Request请求信息是一条空信息GetClientCertificateMode-Response应答信息包含设备客户的认证状态:xs:booleanEnabled[1][1]错误代码原因分析没有与此命令相关的错误代码设置客户认证状态这个是特定的TLS功能。通过这个操作可以设置设备TLS客户认证状态。一个支持TLS的设备应该在支持这个命令。表77:SetClientCertificateMode指令SetClientCertificateMode请求与应答信息名称相应功能以及参数描述SetClientCertificateMode-Request请求信息包含对设备客户认证状态的请求状态xs:booleanEnabled[1][1]SetClientCertificateMode-Response应答信息是一条空信息可能的存在的错误原因分析env:Receiverter:InvalidArgValter:ClientAuth使能客服认证,但是客户认证不被支持或者不支持配置下载设备证书通过使用PCK#10证书请求命令创建的TLS服务证书或者IEEE802.1X客户证书,这些证书能够通过命令来下载到设备中。在请求信息中应该包含证书ID。设备可以根据证书的公钥以及主题信息对证书分类。在请求信息中的证书ID是客户希望拥有的ID。设备被假想来扫描存在于设备中钥匙对,进而来确定谁是下载的证书的密钥对,然后对证书和密钥对进行连接。如果支持TLS或者IEEE802.1X的的板载密钥对产生的设备应该支持这命令。证书应该通过ASN.1[X.681],[X.682],[X.683]DER[X.690]编码规则来进行编码。尽管这参数由于历史原因被称为NVTCertificate,但这个命令能够被用在任何设备类型。表78:LoadCertificates命令LoadCertificates请求与应答信息名称相应功能以及参数描述LoadCertificatesRequest请求信息包含要上传的设备证书清单tt:CertificateNVTCertificate[1][unbounded]LoadCertificatesResponse应答信息是空信息可能的存在的错误原因分析env:Receiverter:InvalidArgValter:ClientAuthenv:Senderter:InvalidArgValter:CertificateFormat证书格式不可用,或者设备不支持这证书格式env:Senderter:InvalidArgValter:CertificateIDCertificateID已经存在env:Senderter:InvalidArgValter:InvalidCertificate无效的证书利用私有密钥来链接下载设备证书这里可能存在关于证书授权或者一些其他一些没有PKCS#10证书签名的情况。在这些情况下,证书将与私钥进行捆绑。这个命令将在这样的情况下使用。在请求信息的证书ID是被选择性的赋予客户希望的值。如果在请求的信息中没有指定证书的ID,那么设备可以根据具体情况选择ID。这个操作会输入一个私钥/公钥对进设备。证书能够使用ASN.1[X.681],[X.682],[X.683]DER[X.690]编码规则进行编码。如果设备不支持板载密钥对生成,以及不支持使用客户证书的TLS或者IEEE802.1X,那么设备就应该支持这个命令。而支持板载密钥对的生成的设备可以支持这个命令。支持这个操作设备的安全策略应该确保私钥受到充当保护。表79:LoadCertificateWithPrivateKey指令LoadCertificateWithPrivateKey请求与应答信息名称相应功能以及参数描述LoadCertificateWithPrivateKeyRequest请求信息包含要输入的私钥公钥对tt:CertificateWithPrivateKeyCertificateWithPrivateKey[1][unbounded]LoadCertificateWithPrivateKeyResponse应答信息是一条空信息可能的存在的错误原因分析env:Senderter:InvalidArgValter:CertificateFormat证书格式不可用,或者设备不支持这证书格式env:Senderter:InvalidArgValter:CertificateIDCertificateID已经存在env:Senderter:InvalidArgValter:KeysNotMatching公钥与私钥不匹配获取证书信息请求通过这个操作可以用来请求与指定ID相关的证书信息。设备应该响应“IssuerDN”,“SubjectDN”,“Keyusage”,"Extendedkeyusage”,“KeyLength”,“Version”,“SerialNumber”,“SignatureAlgorithm”and“Validity”这样的证书信息,只要设备能够检索相关证书的这些信息。这IssuerDN和SubjectDN应该通过[RFC4514]的方式进行编码。支持TLS或者IEEE802.1X协议的设备应该都支持这个命令。表80:GetCertificateInformation指令GetCertificateInformation请求与应答信息名称相应功能以及参数描述GetCertificateInformationRequest请求信息包含:CertificateID:Thetokenofthecertificate.xs:tokenCertificateID[1][1]]GetCertificateInformationResponse应答信息包含tt:CertificateInformationCertificateInformation[1][1]可能的存在的错误原因分析env:Senderter:InvalidArgValter:CertificateID无效的证书ID下载CA证书当为了进行确认如:在TLS中客户服务的确认或者在IEEE802.1X功能中对服务证书的确认,这是很有必要下载一个信任的CA证书或者下载一个信任的根证书,这时候下载CA证书这个命令就会被用到。支持TLS或者IEEE802.1x协议的设备支持LoadCACertificates这个命令,设备必须支持DER格式,而其他格式也可以被设备支持。设备应该可以根据公钥和主题信息来分类接收到的证书。要么是所有的CA证书被成功的下载或者返回一个没有下载任何CA证书的错误信息。表81:LoadCACertificates指令LoadCACertificates请求与应答信息名称相应功能以及参数描述LoadCACertificatesRequest请求信息包含一个用于上传的CA证书设备清单tt:CertificateCACertificate[1][unbounded]LoadCACertificatesResponse应答信息是一个空信息错误代码原因分析env:Senderter:InvalidArgValter:CertificateFormat格式错误或者设备不支持这种格式env:Senderter:InvalidArgValter:CACertificateIDCA证书的ID已经存在env:Receiverter:OperationProhibitedter:MaxCertificates超过了最大可下载的证书数量删除证书这个操作可以删除一个或者多个证书。设备也可以删除一个与证书相耦合的私钥/公钥对。如果设备支持TLS或者支持IEEE802.1X,那么设备就应该支持通过DeleteCertificates删除一个或者多个证书。对于这个命令,要么是所有证书被删除,要么返回一个没有删除任何证书的信息。表82:DeleteCertificates命令DeleteCertificates请求与应答信息名称相应功能以及参数描述DeleteCertificatesRequest请求信息包含一个删除证书的CertificateIDparameter.xs:tokenCertificateID[1][unboundedDeleteCertificatesResponse应答信息是一条空信息错误代码原因分析env:Senderter:InvalidArgValter:CertificateID请求信息中包含的证书不可知env:Receiverter:OperationProhibitedter:CertificateID不能够删除指定的证书获取远程用户通过这个操作可以返回远程用户的配置信息。支持远程用户处理的设备应该支持这个操作。此操作仅仅作为WS-UserToken类别或者HTTP/RTSP的用户是有效。对于派生密码使用的算法在前面的5.12.2节已经描述了。表83:GetRemoteUser指令GetRemoteUser请求与应答信息名称相应功能以及参数描述GetRemoteUserRequest请求信息是一条空信息GetRemoteUserResponse应答信息包含对远程用户的配置。这些值列举如下:xs:stringUsername[1][1]xs:booleanUseDerivedPassword[1][1]注意:设备不应该放回远程用户的密码tt:RemoteUser:RemoteUser[0][1]代码错误原因分析env:Receiverter:ActionNotSupportedter:NotRemoteUser不支持远程用户处理设置远程用户这个操作能够设置远程用户。如果一个设备支持远程用户处理,那么设备就应该支持这个操作。这操作仅仅对于WS-UserToken类别的用户或者HTTP/RTSP用户是有效的。这设置的密码应该是原密码而不是派生密码。如果要设置派生密码,那么在连接到一个远程设备上时,进行求导。派生密码使用的具体算法在节进行描述。为了将移除用户,应该在对SetRemoteUser命令进行调用时不带RemoteUser参数。表84:SetRemoteUse指令SetRemoteUser请求与应答信息名称相应功能以及参数描述SetRemoteUserRequest请求信息包含:远程用户;值如下:xs:stringUsername[1][1]xs:stringPassword[0][1]xs:booleanUseDerivedPassword[1][1]tt:RemoteUser:RemoteUser[0][1]SetRemoteUserResponse应答信息是一条空信息:错误代码原因分析env:Receiverter:ActionNotSupportedter:NotRemoteUser不支持远程用户处理获取终端参数一个客户端可以询问设备服务的终端相关的地址属性,利用这个属性可以用来衍生远程用户的密码,设备应该支持通过GetEndpointReference命令来获取设备服务终端相关地址服务属性。表85:GetEndpointReference命令GetEndpointReference请求与应答信息名称相应功能以及参数描述GetEndpointReferenceRequest请求信息是一条空信息GetEndpointReferenceResponse应答信息包含请求的URLxs:stringGUID[1][1]错误代码原因分析没有与此命令相关的错误代码8.5输入与输出这一节描述的命令与第九章相关输入输出命令被用来控制状态或者观察I/O口的状态;如果设备拥有I/0口,那么设备支持I/O命令。8.5.1获取继电器输出通过这个操作可以获得所有可用的继电器清单及他们配置。表86:GetRelayOutputs命令GetRelayOutputs请求与应答信息名称相应功能以及参数描述GetRelayOutputsRequest请求信息不包含任何参数GetRelayOutputsResponse应答信息包含一个继电器输出矩阵:tt:RelayOutputRelayOutputs[0][unbounded]错误代码原因分析没有与此命令相关的错误代码8.5.2对继电器输出进行配置这个操作用于对继电器输出进行配置继电器可以工作在以下两种模式:1.Bistable–如果设置这种状态,继电器将保持在这种状态.2.Monostable–如果继电器设置这种状态,那么继电器将在规定时间内返回其空闲状态。继电器输出的物理理想状态能够通过设置IdleState进行open或者close来进行配置空闲状态open意味着当通过触发命令来设置继电器的状态成inactive/active来打开/关闭继电器。空闲状态close意味着通过触发命令来将状态设置为‘active/inactive来关闭/打开继电器。表87:SetRelayOutputSettings命令SetRelayOutputSettings请求与应答信息名称相应功能以及参数描述SetRelayOutputSettingsRequest请求信息包含:“RelayToken”:与令牌环相关的继电器输出“RelayOutputSettings”:设置的延时tt:ReferenceTokenRelayOutputToken[1][1]tt:RelayOutputSettingsRelayOutputSettings[1][1]SetRelayOutputSettingsResponse应答信息是一个空信息错误代码原因分析env:Senderter:InvalidArgValter:RelayToken相关的令牌未知env:Senderter:InvalidArgValter:ModeError单稳态延时时间无效8.5.3继电器触发输出通过这个操作可以触发一个继电器输出。表88:SetRelayOutputState指令SetRelayOutputState请求与应答信息名称相应功能以及参数描述SetRelayOutputStateRequest请求信息包含:RelayToken”:与继电器输出相关的命令.“LogicalState”:触发请求i.e.,activeorinactivettt:ReferenceTokenRelayOutputToken[1][1]tt:RelayLogicalStateLogicalState[1][1]SetRelayOutputStateResponse应答信息是一个空信息错误代码原因分析env:Senderter:InvalidArgValter:RelayToken相关继电器令牌未知8.5.4辅助操作这一节描述的操作是用来管理设备支持的辅助命令,控制与设备相关的设备,比如:一个红外线灯,一个加热器或者一个温度计。可以从GetCapabilities命令的响应中检索到辅助的参数。通过这类命令转换的命令应该与响应的辅助数据的命令清单中的一种命令相匹配。如果命令响应的清单上只有irlampon命令,那么这SendAuxiliary命令的参数也将会是irlampon,这也可以表明链接的IR灯被打开。支持辅助服务能力的设备应该支持这个命令。表89:Sendauxiliary命令SendAuxiliaryCommand请求与应答信息名称相应功能以及参数描述SendAuxiliaryCommandRequest请求信息包含辅助命令:tt:AuxiliaryDataAuxiliaryCommand[1][1]SendAuxiliaryCommandResponse应答信息是一个辅助的应答tt:AuxiliaryDataAuxiliaryCommandResponse[0][1]错误代码原因分析env:Senderter:InvalidArgValter:AuxiliaryDataNotSupported请求信息的辅助命名不支持8.6与服务相关的错误代码表90列举与设备服务相关的错误代码,另外每一个命令也能产生相似错误,参见表6.表90:一类错误定义成一个子代码,在这些子代码下是具体的错误。表90:Deviceservicespecificfaultcodes错误代码父类子码错误原因描述子码env:Receiverter:Action策略是空的设备策略文件不存在或者是空的ter:EmptyPolicyenv:Receiverter:Action范围清单是空的范围清单是空的ter:EmptyScopeenv:Receiverter:Action升级失败固件升级失败ter:FirmwareUpgradeFailedenv:Receiverter:Action生成密钥失败私钥/公钥生成失败。ter:KeyGenerationenv:Receiverter:Action创建一个签名失败。PKCS#10签名创建失败ter:Signatureenv:Receiverter:InvalidArgVal不支持客户认证使能客户认证,但是客户认证不被支持或者没有配置ter:ClientAuthenv:Receiverter:Action太多使用者超出最大使用者的数量ter:TooManyUsersenv:Receiverter:Action范围清单太大范围清单超出了支持的范围数量ter:TooManyScopesenv:Receiverter:ActionNotSupported不支持这样的服务设备不支持这请求的WDSL服务类别ter:NoSuchServiceenv:Senderter:InvalidArgs没有日志可供访问这里不存在可供访问的日志信息ter:AccesslogUnavailableenv:Senderter:InvalidArgVal无效的格式无效的证书格式或者设备不支持这样的格式ter:CertificateFormatenv:Senderter:InvalidArgVa无效的证书ID不能识别提到证书或者证书的ID已经存在ter:CertificateIDenv:Senderter:InvalidArgVal无效的证书IDCA证书不被识别或者CA证书参数已经存在ter:CACertificateIDenv:Senderter:InvalidArgVal无效的文件备份的文件无效ter:InvalidBackupFileenv:Senderter:InvalidArgVal无效的日期和时间指定的是一个无效的日期和时间ter:InvalidDateTimeenv:Senderter:InvalidArgVal无效的名字建议的NTP服务名字是无效的ter:InvalidDnsNameenv:Senderter:InvalidArgs无效固件固件无效;不被设备支持ter:InvalidFirmwareenv:Senderter:InvalidArgVal无效的地址提供的网关地址无效ter:InvalidGatewayAddressenv:Senderter:InvalidArgVal无效的名字设备不能够接受请求信息中的设置的主机名ter:InvalidHostnameenv:Senderter:InvalidArgVal无效的速度建议的速度不被支持ter:InvalidInterfaceSpeedenv:Senderter:InvalidArgVal无效的类型建议的网络接口类型不被支持ter:InvalidInterfaceTypeenv:Senderter:InvalidArgVal无效的地址建议设置的IPV4地址是无效的ter:InvalidIPv4Addressenv:Senderter:InvalidArgVal地址不存在IPV4地址被移除了或者不存在ter:NoIPv4Addressenv:Senderter:InvalidArgVal无效的地址建议设置的IPV6地址是无效的er:InvalidIPv6Addressenv:Senderter:InvalidArgVal地址不存在IPV6地址被移除或者根本不存在ter:NoIPv6Addressenv:Senderter:InvalidArgVal无效的数据MTU值无效ter:InvalidMtuValueenv:Senderter:InvalidArgVal无效的令牌环支持的网络接口令牌环不存在ter:InvalidNetworkInterfaceenv:Senderter:InvalidArgVal无效的数据指定的是一个无效的时间区域ter:InvalidTimeZoneenv:Senderter:InvalidArgVal清单满了由于清单满了,不能够添加IP滤波器了ter:IPFilterListIsFullenv:Senderter:InvalidArgVal无效数据单稳延时无效ter:ModeErrorenv:Senderter:InvalidArgs无效格式由于不知道策略的格式,请求的策略不能够设置ter:PolicyFormatenv:Senderter:InvalidArgVal无法识别继电器的令牌参考的令牌无法识别ter:RelayTokenenv:Senderter:InvalidArgVal不支持这种服务提供的网络服务不被支持ter:ServiceNotSupportedenv:Senderter:InvalidArgVal没有可用的支持信息不存在支持的可用信息ter:SupportInformationUnavailableenv:Senderter:InvalidArgs没有可用的系统日志不存在可用的日志信息ter:SystemlogUnavailableenv:Senderter:InvalidArgVal不能识别使用者的名字不能识别使用者的名字ter:UsernameMissingenv:Senderter:OperationProhibited企图删除固定的范围参数企图删除固定的范围参数,产生命令排斥ter:FixedScopeenv:Senderter:InvalidArgVal范围不存在试图删除不存在的范围ter:NoScopeenv:Senderter:OperationProhibited密码太弱密码太弱ter:Passwordenv:Senderter:OperationProhibited密码太长密码太长ter:PasswordTooLongenv:Senderter:OperationProhibited太长的密码密码太短ter:UsernameTooShortenv:Senderter:OperationProhibited试图修改永久设备范围参数试图修改永久设备的范围设置ter:ScopeOverwriteenv:Senderter:OperationProhibited用户名已经存在用户名已经存在ter:UsernameClashenv:Senderter:OperationProhibited用户名太长用户名太长ter:UsernameTooLongenv:Senderter:ActionNotSupported不支持IEEE802.11的配置不被支持ter:InvalidDot11env:Senderter:InvalidArgVal不支持选择的安全模式不被支持ter:InvalidSecurityModeenv:Senderter:InvalidArgVal不支持选择的基站模式不被支持ter:InvalidStationModeenv:Senderter:InvalidArgValIEEE802.11值丢失在安全配置中,IEEE802.11值丢失ter:MissingDot11env:Senderter:InvalidArgValPSK值丢失在安全配置中PSK的值丢失ter:MissingPSKenv:Senderter:InvalidArgValIEEE802.1X值丢失IEEE802.1的值在安全配置中丢失或者不存在ter:MissingDot1Xenv:Senderter:InvalidArgValIEEE802.1X值不兼容IEEE802.1X的值在与网络接口的安全配置中不兼容ter:IncompatibleDot1Xenv:Senderter:InvalidArgValNotIEEE802.11接口不是IEEE802.11接口ter:NotDot11env:Senderter:InvalidArgVal无效的IEEE802.11配置与IEEE802.11的相关配置是无效的ter:InvalidDot1Xenv:Senderter:ActionIEEE802.11没有连接IEEE802.11网络没有连接ter:NotConnectedDot11env:Senderter:ActionNotSupported不支持扫描可用的IEEE802.11网络不支持扫描可用的IEEE802.11网络ter:NotScanAvailableenv:Senderter:ActionNotSupported不支持远程用户处理远程用户处理不被支持ter:NotRemoteUserenv:Senderter:ActionNotSupported建议的EAP方法不被支持建议的EAP方法不被支持不被支持ter:EAPMethodNotSupporedenv:Senderter:Action已经达到最大的IEEE802.1X配置数量已经到达设备最大的IEEE802.1X配置数量ter:MaxDot1Xenv:Senderter:OperationProhibited不能够删除相关的IEEE802.1X配置不可能删除与IEEE802.1X相关的配置ter:ReferenceTokenenv:Senderter:OperationProhibited不能删除相关的证书不可能删除相关的证书ter:CertificateIDenv:Senderter:OperationProhibited无效的DOTX令牌环配置相关的证书ID是无效的ter:ReferenceTokenenv:Senderter:OperationProhibited无效的证书ID相关的证书ID是无效的ter:CertificateIDenv:Senderter:InvalidArgValDot1XConfigurationToken已经存在相关的Dot1XConfigurationToken在设备中已经存在ter:ReferenceTokenenv:Senderter:InvalidArgVal无效的证书相关的证书是无效的ter:InvalidCertificateenv:Senderter:OperationProhibited已经达到允许下已经到达设备的最大证书载的最大证书数量下载数量ter:MaxCertificatesenv:Senderter:OperationProhibited密码太弱密码太弱ter:PasswordTooWeakenv:Senderter:InvalidArgVal请求的辅助命令不被支持;不支持请求的辅助命令。ter:AuxiliaryDataNotSupportedenv:Senderter:InvalidArgVal相关的Timeout值无效相关的Timeout值无效ter:InvalidTimeOutValueenv:Senderter:OperationProhibited超出可用的字节数超出可用的字节数ter:DataLengthOverenv:Senderter:OperationProhibited不支持的字符序列或者分隔符不支持的字符序列或者分隔符ter:DelimiterNotSupportenv:Senderter:OperationProhibited对于操作命令设备没有准备对于操作命令,设备没有准备ter:InvalidModeenv:Senderter:InvalidArgVal移除固有的使用者客户端试图删除固有的用户ter:FixedUserenv:Senderter:OperationProhibited用户等级没被定义用户等级没定义ter:AnonymousNotAllowedenv:Senderter:InvalidArgVal密码不匹配公钥与私钥不匹配ter:KeysNotMatching9设备IO服务这个服务提供的命令集可以用来检索和配置设备的输入和输出端口。请求设备返回有效的音视频输入输出端口和返回有效的继电器的命令定义是一样的,这个服务还提供获取和修改音视频输入输出端口配置信息的功能。有输入源和输出端口的设备必须支持在[DeviceIOService.wsdl]中描述的服务。这个服务定义的功能,有一部分同媒体服务中定义的重叠,如果一个设备(例如一个NVT设备)需要同时实现这两个服务,那些重叠部分的功能实现必须以这个服务为准,通过该服务中定义的命令集去实现音频的输入输出或视频源的配置。9.1视频输出视频输出类型表示设备的视频输出接口,即用于连接显示器并输出视频信号的接口。该结构包含使用显示服务配置的布局设置(见第14章)。9.1.1获取视频输出集该命令列出设备所有有效的视频输出端口。有一个或多个视频输出端口的设备支持通过GetVideoOutputs命令列出的有效的视频输出。表91:GetVideoOutputs命令GetVideoOutputs请求-响应消息名称描述GetVideoOutputsRequest这是一个空消息。GetVideoOutputsResponse包含描述设备所有有效视频输出的结构清单。如果一个设备没有视频输出则返回一个空清单。tt:VideoOutputVideoOutputs[0][unbounded]错误码描述没有具体的错误代码。9.2视频输出配置9.2.1获取视频输出配置此操作请求视频输出配置。有一个或多个视频输出端口的设备支持通过此命令检索视频输出配置。表92:GetVideoOutputConfiguration命令GetVideoOutputConfiguration请求-响应消息名称描述GetVideoOutputConfiguration-Request此消息包含视频输出令牌。tt:ReferenceTokenVideoOutputToken[1][1]GetVideoOutputConfiguration-Response此消息包含了与请求信息中的令牌相对应视频输出配置。tt:VideoOutputConfigurationVideoOutputConfiguration[1][1]错误码描述env:Senderter:InvalidArgValter:NoVideoOutput请求信息中令牌指定的视频输出配置不存在。9.2.2设置视频输出配置此操作修改视频输出配置。有一个或多个视频输出端口的设备支持通过这个命令设置其视频输出配置。表93:SetVideoOutputConfiguration命令SetVideoOutputConfiguration请求-响应消息名称描述SetVideoOutputConfiguration-Request配置元素包含要修改的视频输出配置。ForcePersistence元素决定是否在重新启动后存储配置更改和保持。如果为真,改变是永久的。如果为假,可能会在重启后恢复到变化以前的值。tt:VideoOutputConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetVideoOutputConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgValter:NoVideoOutput要求的视频输出不存在。env:Senderter:InvalidArgValter:ConfigModify配置参数无法设置。9.2.3获取视频输出配置选项集此操作请求视频输出的视频输出配置选项集。有一个或多个视频输出的设备支持通过此命令检索视频输出配置选项集。表94:GetVideoOutputConfigurationOptions命令GetVideoOutputConfigurationOptions请求-响应消息名称描述GetVideoOutputConfiguration-OptionsRequestVideoOutputToken元素指定目标选项,设备中必须存在视频输出。tt:ReferenceTokenVideoOutputToken[1][1]GetVideoOutputConfiguration-OptionsRequest设备响应视频输出选项集。tt:VideoOutputConfigurationOptionsVideoOutputOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoVideoOutput请求视频输出不存在。9.3视频源视频源代表视频输入端口。结构中包含视频像素分辨率,帧率和成像设置。例如,成像设置可以通过成像服务对对焦、曝光、亮度的参数进行操纵。9.3.1获取视频源此操作列出了设备所有有效的视频源。有一个或多个视频输入端口的设备支持通过GetVideoSources命令列出有效的视频源。表95:GetVideoSources命令GetVideoSources请求-响应消息名称描述GetVideoSourcesRequest空消息GetVideoSourcesResponse包含了设备所有描述有效视频源的结构清单。如果一个设备没有视频源,则返回一个空清单tt:VideoSourceVideoSource[0][unbounded]错误码描述没有具体的错误代码。9.4视频源配置视频源配置包含一个相关视频源和描写视频边界的结构,该结构可以包含整个视频源的全部或者一部分像素面积。结构和视频源定义了流向客户的图像。9.4.1获取视频源配置此操作列出了视频源的视频源配置。有一个或多个视频源的设备支持GetVideoSourceConfigurations命令。表96:GetVideoSourceConfiguration命令GetVideoSourceConfiguration请求-响应消息名称描述GetVideoSourceConfiguration-Request此消息包含视频输入的令牌。tt:ReferenceTokenVideoSourceToken[1][1]GetVideoSourceConfiguration-Response此消息包含请求匹配令牌的视频源配置。tt:VideoSourceConfigurationVideoSourceConfiguration[1][1]错误码描述env:Senderter:InvalidArgValter:NoVideoSource请求信息中视频令牌指定的视频源不存在。9.4.2设置视频源配置此操作修改一个视频输入配置。有一个或多个视频源的设备通过这个命令支持设置视频源配置。表97:SetVideoSourceConfiguration命令SetVideoSourceConfiguration请求-响应消息名称描述SetVideoSourceConfiguration-RequestConfiguration元素包含要修改的视频信号源设置。配置包含一个指定的要修改的视频源设置元素。视频源必须存在于设备中。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:VideoSourceConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetVideoSourceConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgValter:NoVideoSource请求的视频源不存在。env:Senderter:InvalidArgValter:ConfigModify配置参数无法设置。9.4.3获取视频源多个配置选项此操作请求视频源多个配置选项。有一个或多个视频源的设备支持此命令。表98:GetVideoSourceConfiguartionOptions命令GetVideoSourceConfiguartionOptions请求-响应消息名称描述GetVideoSourceConfiguration-OptionsRequest视频源令牌元素指定目标视频输入选项。视频输入存在于设备中。tt:ReferenceTokenVideoSourceToken[1][1]GetVideoSourceConfiguartion-OptionsResponseVideoSourceOptions返回有效的界以及提供给视频源令牌有效的元素。此栏设置请求的源的选项。tt:VideoSourceConfigurationOptionsVideoSourceOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoVideoSource请求的视频输入不存在。9.5音频输出音频输出表示可以连接到扬声器的音频输出端口。9.5.1获取多个音频输出此命令列出所有有效的音频输出设备。有一个或多个音频输出端口的设备支持通过GetAudioOutputs命令列出有效的音频输出。表99:GetAudioOutputs命令GetAudioOutputs请求-响应消息名称描述GetAudioOutputsRequest空消息。GetAudioOutputsResponse包含一个描述所有有效的音频输出设备的结构清单。如果设备没有音频输出,则返回一个空清单。tt:AudioOutputAudioOutputs[0][unbounded]错误码描述env:Receiverter:ActionNotSupportedter:AudioOutputNotSupported设备不支持音频或音频输出。9.6音频输出配置音频输出配置包含了现有的音频输出的参考。音频输出配置包含一个参数来控制输出电平。9.6.1获取音频输出配置此操作请求音频输出配置。有一个或多个音频输出的设备支持通过此命令检索音频输出配置。表100:GetAudioOutputConfiguration命令GetAudioOutputConfiguration请求-响应消息名称描述GetAudioOutputConfigurationRequest此消息包含音频输出令牌。tt:ReferenceTokenAudioOutputToken[1][1]GetAudioOutputConfigurationResponse此消息包含请求与令牌匹配的音频输出配置。tt:AudioOutputConfigurationAudioOutputConfiguration[1][1]错误码描述env:Senderter:InvalidArgValter:NoAudioOutput指示请求的音频输出不存在音频输出令牌。9.6.2设置音频输出配置此操作修改音频输出配置。有一个或多个音频输出的设备通过这个命令设置音频输出配置。表101:SetAudioOutputConfiguration命令SetAudioOutputConfiguration请求-响应消息名称描述SetAudioOutputConfiguration-RequestConfiguration元素包含修改后的音频输出配置。配置包含一个存在于设备中的指定要修改其配置的音频输出元素。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:AudioOutputConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetAudioOutputConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgValter:NoAudioOutput所请求的音频输出不存在。env:Senderter:InvalidArgValter:ConfigModify配置参数无法设置。9.6.3获取音频输出多个配置选项此操作请求音频输出多个配置选项。有一个或多个音频输出的设备支持此命令。表102:GetAudioOutputConfigurationOptions命令GetAudioOutputConfigurationOptions请求-响应消息名称描述GetAudioOutputConfiguration-OptionsRequestAudioOutputToken元素选择指定的存在于设备中的音频输出。tt:ReferenceTokenAudioOutputToken[1][1]GetAudioOutputConfiguration-OptionsResponseAudioOutputsOptions返回有效值范围为发送优先级和输出电平与音频输出令牌一样。此字段为设置请求源的输出选项。tt:AudioOutputConfigurationOptionsAudioOutputOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoAudioOutput所请求的音频输出不存在。9.7音频源音频源表示未编码的音频输入和输入通道的数量状态。9.7.1获取音频源此操作列出了所有有效的音频源设备。有一个或多个音频源设备通过GetAudioSources命令列出有效的音频输入清单。表103:GetAudioSources命令GetAudioSources请求-响应消息名称描述GetAudioSourcesRequest空消息。GetAudioSourcesResponse包含一个描述设备所有有效的音频源的结构清单。如果一个设备没有音频输入,则返回一个空清单。tt:AudioSourceAudioSource[0][unbounded]错误码描述env:Receiverter:ActionNotSupportedter:AudioOutputNotSupportedNVT不支持音频。9.8音频源配置音频源配置包含了音频信号源的参考。9.8.1获取音频源配置此操作列出了一个音频输入配置。有一个或多个音频输入的设备支持GetAudioSourceConfiguration命令。表104:GetAudioSourceConfiguration命令GetAudioSourceConfiguration请求-响应消息名称描述GetAudioSourceConfiguration-Request此消息包含音频源令牌。tt:ReferenceTokenAudioSourceToken[1][1]GetAudioSourceConfiguration-Response此消息包含请求与令牌匹配的音频源配置。tt:AudioSourceConfigurationAudioSourceConfiguration[1][1]错误码描述env:Senderter:InvalidArgValter:NoAudioSource请求的音频源令牌AudioSourceToken不存在。9.8.2设置音频源配置此操作修改音频源的配置。有一个或多个音频源的设备支持通过这个命令设置音频源配置。表105:SetAudioSourceConfiguration命令SetAudioSourceConfiguration请求-响应消息名称描述SetAudioSourceConfiguration-Request配置元素包含修改后的音频源配置。配置包含一个存在设备中的要修改音频源的配置元素。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:AudioSourceConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetAudioSourceConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgValter:NoAudioSource请求的音频源不存在。env:Senderter:InvalidArgValter:NoAudioSource配置参数无法设置。9.8.3获取音频源多个配置选项此操作请求音频源多个配置选项。有一个或多个音频源的设备支持此命令。表106:GetAudioSourceConfigurationOptions命令GetAudioSourceConfigurationOptions请求-响应消息名称描述GetAudioSourceConfiguration-OptionsRequestAudioSourceToken元素指定其请求的音频输入选项。音频源应存在于设备中。tt:ReferenceTokenAudioSourceToken[1][1]GetAudioSourceConfiguration-Response音源选项返回有效的音频源令牌。这里应该设置成请求选项的源。tt:AudioSourceConfigurationOptionsAudioSourceOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoAudioSource请求音频输入不存在。9.9继电器输出输入/输出(I/O)命令是用来控制或观察I/O端口的状态。如果设备有I/O端口,那么就应支持I/O命令。继电器输出也在“设备管理”被定义(见输入/输出(I/O))。继电器输出可以同时访问设备管理服务和设备的IO。9.9.1获取多个继电器输出此操作获取所有有效继电器输出和设置清单。表107:GetRelayOutputs命令GetRelayOutputs请求-响应消息名称描述GetRelayOutputsRequest空消息。GetRelayOutputsRequest此消息包含一个继电器输出数组。tt:RelayOutputRelayOutputs[0][unbounded]错误码描述没有具体的错误命令!9.9.2设置继电器输出设置此操作设置一个继电器输出的配置。继电器可以工作在两个中继模式:双稳态-设置状态后,继电器保持在这种状态下。单稳态-设置状态后,继电器在设定的时间后返回到闲置状态。可设置继电器输出端口闲置状态的配置为“开启”或“关闭”(反转继电器行为)。闲置状态“开启”是将继电器通过触发命令设置继电器状态为“无效”(见8.5.3节),通过相同的命令设置“启动”则是关闭状态。闲置状态\'关闭\'是继电器闭合时将继电器状态通过触发命令设置为“无效”(见8.5.3节),通过相同的命令设置“启动”则是开放状态。表108:SetRelayOutputSettings命令SetRelayOutputSettings请求-响应消息名称描述SetRelayOutputSettingsRequest此消息包含:“RelayOutputToken”:继电器输出的参考令牌。“RelayOutputSettings”:继电器设置集。tt:ReferenceTokenRelayOutputToken[1][1]tt:RelayOutputSettingsRelayOutputSettings[1][1]SetRelayOutputSettingsResponse空消息。错误码描述env:Senderter:InvalidArgValter:RelayToken未知继电器参考令牌。env:Senderter:InvalidArgValter:ModeError单稳延时时间无效9.9.3触发继电器输出此操作触发继电器输出2。表109:SetRelayOutputState命令SetRelayOutputState请求-响应消息名称描述SetRelayOutputStateRequest此消息包含:“RelayOutputToken“:令牌要求继电器输出。“LogicalState”:触发请求,即有效或无效。tt:ReferenceTokenRelayOutputToken[1][1]tt:RelayLogicalStateLogicalState[1][1]SetRelayOutputStateResponse空消息。错误码描述env:Senderter:InvalidArgValter:RelayToken未知继电器参考令牌。2没有GetRelayState命令;继电器输出电流的逻辑状态是通过发送通知和它们的属性确定的。9.10服务错误码表110列出设备IO服务特定的错误代码。此外,每个命令还可以导致一个通用的错误,见表6。表110:设备IO服务的具体错误码错误码母码错误原因描述子码env:Senderter:InvalidArgVal无效的配置参数配置参数无法设置。ter:ConfigModifyenv:Senderter:InvalidArgVal视频输出令牌不存在。要求的视频输出标示与视频输出令牌不存在。ter:NoVideoOutputenv:Senderter:InvalidArgVal视频源令牌不存在。要求的视频源标示与视频源令牌不存在。ter:NoVideoSourceenv:Senderter:InvalidArgVal音频输出令牌不存在。要求的音频输出标示与音频输出令牌不存在。ter:NoAudioOutputenv:Senderter:InvalidArgVal音频源令牌不存在。要求的音频源标示与音频源令牌不存在。ter:NoAudioSourceenv:Senderter:InvalidArgVal未知的继电器参考。要求的继电器输出标示与继电器输出令牌不存在。ter:RelayTokenenv:Senderter:InvalidArgVal单稳延时时间不正确ter:ModeError10图像配置图像服务提供对设备的图像性能进行控制和配置的操作。有一个或多个视频源的设备支持[ONVIF的影像WSDL]中定义的图像服务。图像设置是视频源实体的一部分。也就是说,图像参数直接影响一个指定的视频源。10.1图像设置图像服务提供操作来获取或设置图像参数和这些参数的有效范围。有些参数如果没有在一个特定的模式中设置则是无效的。在图像配置中的一些参数需要特定的图像功能支持可以通过GetOptions命令获取图像功能信息。以下设置都可以通过影图像服务操作:BacklightCompensation:开启/关闭背光补偿模式(开/关)。\uf06cOnO可选的级别参数(无单位)。\uf06cOffBrightness:调整图像的亮度(无单位)。ColorSaturation:调整图像的色彩饱和度(无单位)。Sharpness:调整图像的清晰度(无单位)。Contrast:调整图像的对比度(无单位)。Exposure(曝光):\uf06cAuto-启用设备上的曝光算法:OPriority-设置优先曝光模式(低噪音/帧率)。OWindow-矩形曝光掩模。OMin/MaxExposureTime-曝光时间范围内允许被使用的算法。OMin/MaxGain-传感器增益范围,允许所使用的算法。OMin/MaxIris-光圈范围允许被使用的算法。\uf06cManual-禁用设备上的曝光算法:OExposureTime-图像传感器使用固定的曝光时间(?s)。OGain-图像传感器所使用的固定增益(dB)。OIris–光圈影响的输入光固定衰减(dB)。0dB图为一个完全开放光圈。Focus(焦点):\uf06cAuto(参数,适用于自动模式):ONear/FarLimit-焦镜头的限度(m)。\uf06cManual(适用于手动模式的参数):ODefaultspeed-焦点移动操作的默认速度(当速度参数不存在时)。通过移动命令实现手动控制,请参阅第10.1.4节。Ircutfilter(红外滤光片):在开、关和自动之间切换红外截止滤波器的状态。自动状态让曝光算法处理的红外滤光片打开或关闭时机。Whitebalance(白平衡):\uf06c自动白平衡模式(自动/手动)。\uf06c手动(适用于手动模式的参数):ORgain(无量纲)OBgain(无量纲)WideDynamicRange:宽动态范围(开/关):\uf06cOnO可选的级别参数(无量纲)。\uf06cOff有效的图像设置可以通过媒体服务的一部分--GetVideoSources命令检索,指定在第11.3.1节。图像设置是视频源的一部分。10.1.1获取图像设置此操作请求设备上的视频源的图像设置。如果视频源支持任何在[ONVIF的架构]定义的图像设置类型,那么它可以通过GetImagingSettings命令从设备检索到图像设置。图像设置参数参照10.1节中的描述。表111:GetImagingSettings命令GetImagingSettings请求-响应消息名称描述GetImagingSettingsRequest此消息包含成像设置集请求的视频源的参考。tt:ReferenceTokenVideoSourceToken[1][1]GetImagingSettingsResponse此消息包含视频源请求的成像设置集。tt:ImagingSettings20ImagingSettings[1][1]错误码描述env:Senderter:InvalidArgValter:NoSource请求的视频源不存在。env:Receiverter:ActionNotSupportedter:NoImagingForSource请求的视频源不支持图像设置。10.1.2设置图像设置此操作设置设备上的视频源的图像设置。如果设备支持的任何成像类型在[ONVIF的架构]中被定义,那么它可以通过SetImagingSettings命令在设备中配置这些参数。在10.1节描述可配置的图像设置参数。通过在10.1.3节中定义的命令设置选项。表112:SetImagingSettings命令SetImagingSettings请求-响应消息名称描述SetImagingSettingsRequest此消息包含一个被设置的视频源和成像设置集的参考。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:ReferenceTokenVideoSourceToken[1][1]tt:ImagingSettings20ImagingSettings[1][1]xs:booleanForcePersistence[0][1]SetImagingSettingsResponse此消息不包含任何响应。错误码描述env:Senderter:InvalidArgVater:NoSource请求的视频源不存在。env:Receiverter:ActionNotSupportedter:NoImagingForSource请求的视频源不支持图像设置。env:Senderter:InvalidArgVal请求的设置不正确。ter:SettingsInvalid10.1.3获取选项此操作得到设备图像参数的具体有效范围。如果设备支持SetImagingSettings命令设置设备上的图像参数,则应该支持通过GetOptions命令得到配置选项。表113:GetOptions命令GetOptions请求-响应消息名称描述GetOptionsRequest请求的视频源成像参数选项参考。tt:ReferenceTokenVideoSourceToken[1][1]GetOptionsResponse此消息包含分类成像设备的具体参数的有效范围。tt:ImagingOptions20ImagingOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoSource请求的VideoSource不存在。env:Receiverter:ActionNotSupportedter:NoImagingForSource请求的VideoSource不支持图像设置。10.1.4移动Move命令以绝对,相对或连续的方式从当前位置移动对焦镜头。速度参数必须是连续的、可选择用绝对值或相对值控制。如果没有速度参数,则使用默认速度。通过焦距调整操作来关闭自动对焦。支持远程焦距控制的设备支持通过Move操作进行绝对、相对或连续控制。图像功能指出了这个操作所支持具体操作。此操作需要至少有一个焦距控制性能起作用。Move操作包含以下命令:Absolute–规定位置参数和可选的速度参数。聚焦位置和速度默认为一个无单位的类型。或者,如果支持的话,定位可能会被要求在m-1个单位。Relative–规定距离参数和可选的速度参数。负距离参数意味着反方向。Continuous–规定速度参数。负速度参数意味着反方向。表114:Move(focus)命令Move请求-响应消息名称描述MoveRequestVideoSource移动(焦点)操作要求的参考。tt:ReferenceTokenVideoSourceToken[1][1]tt:FocusMoveFocus[1][1]MoveResponse空消息。错误码描述env:Sender请求的视频源不存在。ter:InvalidArgValter:NoSourceenv:Receiverter:ActionNotSupportedter:NoImagingForSource请求的视频源不支持图像设置。10.1.5获取运行选项GetMoveOptions命令可用于检索在第10.1.4节定义的Move命令对对焦镜头的移动选项。支持镜头移动操作的设备也应支持GetMoveOptions命令。表115:GetMoveOptions(focus)命令GetMoveOptions请求-响应消息名称描述GetMoveOptions视频源对请求移动选项的参考。tt:ReferenceTokenVideoSourceToken[1][1]GetMoveOptionsResponse此消息包含对焦镜头移动选项的有效范围。tt:MoveOptions20MoveOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoSource请求的视频源不存在。env:Receiverter:ActionNotSupportedter:NoImagingForSource请求的视频源不支持图像设置。10.1.6停止Stop命令停止所有正在进行的透镜焦点运动。如果设备支持对焦,则可以通过停止操作停止对焦。操作不会影响正在进行的自动对焦操作。表116:Stop(focus)命令Stop请求-响应消息名称描述StopRequest对焦运动在哪停止的视频源的参考。tt:ReferenceTokenVideoSourceToken[1][1]StopResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoSource请求的视频源不存在。env:Receiverter:ActionNotSupportedter:NoImagingForSource请求的视频源不支持图像设置。10.1.7获取图像状态GetStatus命令请求当前的图像设备状态。如果设备支持焦点移动控制,那么它可以通过GetStatus命令得到有效的图像状态。图像状态包含:·焦点位置,移动状态和错误信息。O表示无单位类型的焦点位置。O移动状态可能是在运行中,空闲或未知的状态。O通过一个字符串提供错误信息,例如:apositioningerrorindicatedbythehardware。表117:GetStatus(focus)命令GetStatus请求-响应消息名称描述GetStatusRequest此消息包含要求成像状态的视频源的参考。tt:VideoSourceTokenVideoSourceToken[1][1]GetStatusResponse此消息包含所要求的成像状态。tt:ImagingStatus20ImagingStatus[1][1]错误码描述env:Senderter:InvalidArgValter:NoSource请求的视频源不存在。env:Receiverter:ActionNotSupportedter:NoImagingForSource请求的视频源不支持图像设置。10.2服务错误码表118列出了影像服务的具体的错误代码。此外,每个命令还可以生成一个通用的错误,见表6。具体错误是作为一个通用的错误子码定义的,请参阅第。母公司通用的子码是下面每一行的顶部的子码,具体的错误子码是在最底层。表118:成像的具体错误码错误码母码错误原因描述子码env:Receiverter:ActionNotSupportedVideoSource不支持成像设置。请求的VideoSource不支持成像设置。ter:NoImagingForSourceenv:Senderter:InvalidArgVal无效的配置请求的设置不正确。ter:SettingsInvalidenv:Senderter:InvalidArgVal视频源不存在。请求的视频源不存在。ter:NoSource11媒体配置媒体服务用于配置NVT的流媒体属性。NVT支持[ONVIFMediaWSDL]指定的媒体服务。媒体服务允许客户端配置媒体和其他实时流配置。媒体配置通过媒体文件处理。ONVIF的媒体配置模型请参阅4.8节。媒体服务指令分为两大类:·媒体配置:OMediaprofilecommands(媒体文件命令)OVideosourcecommands(视频源命令)OVideencodercommands(视频编码器命令)OAudiosourcecommands(音频源命令)OAudioencodercommands(音频编码器命令)OVideoanalyticscommands(视频分析命令)OMetadatacommands(元数据命令)OAudiooutputcommands(音频输出命令)OAudiodecodercommands(音频解码器命令)?·流媒体:ORequeststreamURI(请求URI流)OGetsnapshotURI(获取URI快照)OMulticastcontrolcommands(组播控制命令)OMediasynchronizationpoint(媒体同步)11.1音视频编解码器NVT流的音频和视频数据使用适当的编码算法。NVT也能解码音频。NVT根据制造商的选择支持任何音频和视频编解码器,比特率和分辨率。为了确保客户端和NVT之间的互操作性,标准规定以下的编解码器配置文件:·NVT支持JPEGQVGA。·NVT支持G.711μLaw(仅简单摄像机话筒,1ch)[ITU-TG.711]11.2媒体文件媒体文件包含了一套媒体配置。媒体文件被NVT的客户端媒体流配置属性所使用。NVT在启动时提供至少有一个媒体文件。NVT上应提供可以即用的,包含设备最常见的媒体配置的配置文件。文件由一组相互关联的配置实体组成。配置由NVT提供,可以由NVT的静态或动态创建。例如,动态的配置可由NVT根据当前有效的编码器资源创建。配置实体为以下之一:·Videosourceconfiguration(视频源配置)·Audiosourceconfiguration(音频源配置)·Videoencoderconfiguration(视频编码器配置)·Audioencoderconfiguration(音频编码器配置)·PTZconfiguration(PTZ配置)·Videoanalyticsconfiguration(视频分析配置)·Metadataconfiguration(流媒体配置)·Audiooutputconfiguration(音频输出配置)·Audiodecoderconfiguration(音频解码器配置)文件包括所有这些配置实体或者一个子集。根据NVT的性能,一个特定的配置实体可以是文件的一部分。例如,音频源和音频编码器配置的文件只能存在于支持音频的设备。11.2.1创建媒体文件此操作将创建一个新的空白媒体文件。媒体文件建立在NVT中且持续的(在重新启动后保持)。NVT支持通过CreateProfile命令创建在本标准定义的媒体文件。创建的文件是可删除的,NVT可以对返回的文件的“fixed”属性设置成无效。表119:CreateProfile命令CreateProfile请求-响应消息名称描述CreateProfileRequest包含友好的要创建的文件的名称以及一个可选的令牌参数,指定唯一标识符的新的媒体文件。tt:NameName[1][1]tt:ReferenceTokenToken[0][1]CreateProfileResponse没有配置实体返回一个空的文件结构。tt:ProfileProfile[1][1]错误码描述env:Senderter:InvalidArgValter:ProfileExists文件令牌ProfileToken已经存在。env:Receiverter:Actionter:MaxNVTProfiles支持的文件已达到最大数量。11.2.2获取多个媒体文件任何端点都可以使用GetProfiles命令请求NVT现有的媒体文件。预配置或动态配置文件都可以使用此命令检索。该命令列出设备所有配置的文件。客户端不需要知道媒体文件就能使用该命令。NVT支持通过GetProfiles命令检索媒体文件。NVT在所有传回的资料元素中包括“fixed”属性。表120:GetProfiles命令GetProfiles请求-响应消息名称描述GetProfilesRequest空消息。GetProfilesResponse响应包含一个文件清单。每个文件包含了一套可用于流媒体、分析学、元数据流等定义了特定配置的配置实体。tt:ProfileProfiles[0][unbounded]错误码描述没有具体的错误命令!11.2.3获取媒体文件如果文件令牌是已知的,则可以通过GetProfile命令获取文件。NVT支持通过GetProfile命令检索特定的媒体文件。NVT在传回的资料元素中包括“fixed”属性。表121:GetProfile命令GetProfiles请求-响应消息名称描述GetProfilesRequest此消息包含所要求的文件令牌。tt:ReferenceTokenProfileToken[1][1]GetProfilesResponse响应中包含表明令牌参数的文件。每个文件包含了一套可用于流媒体,分析学,元数据流等定义了特定配置的配置实体。tt:ProfileProfile[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。11.2.4添加视频源配置此操作增加了一个视频源配置到现有的媒体文件。如果这样的配置存在于媒体文件,它会被永久替换。NVT支持通过AddVideoSourceConfiguration命令添加文件的视频源配置。表122:AddVideoSourceConfiguration命令AddVideoSourceConfiguration请求-响应消息名称描述AddVideoSourceConfigurationRequest包含新添加的视频源配置的参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddVideoSourceConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig配置令牌表示的视频源配置不存在。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加的冲突,继续添加会引起媒体文件冲突。11.2.5添加视频编码器配置此操作添加了视频编码器配置到现有媒体文件。如果配置存在于媒体文件,它会被永久替换。NVT支持通过AddVideoEncoderConfiguration命令添加视频编码器配置到文件。添加视频编码器配置到文件是指一个使用配置文件的流将包含该视频数据。视频编码器配置应在添加一个视频源配置后被添加。表123:AddVideoEncoderConfiguration命令AddVideoEncoderConfiguration请求-响应消息名称描述AddVideoEncoderConfigurationRequest包含新添加的视频编码器配置的参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddVideoEncoderConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig配置令牌表示的视频编码器配置不存在。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加一个冲突,继续添加会引起媒体文件冲突。11.2.6添加音频源配置此操作将添加音频源配置到一个现有的媒体文件。如果配置在媒体文件存在,它会被永久替换。支持从NVT到客户的音频流NVT支持通过AddAudioSourceConfiguration命令添加音频源配置到文件。表124:AddAudioSourceConfiguration命令AddAudioSourceConfiguration请求-响应消息名称描述AddAudioSourceConfigurationRequest包含新添加的视频编码器配置的参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddAudioSourceConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfigConfigurationToken表示的音频源配置不存在env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加的冲突,继续添加会引起媒体文件冲突。env:Receiverter:ActionNotSupportedter:AudioNotSupported不支持音频。11.2.7添加音频源编码器配置此操作将添加音频编码器配置到一个现有的媒体文件。如果配置存在于媒体文件,它会被永久替换。支持从NVT到客户端的音频流的NVT支持通过AddAudioEncoderConfiguration命令添加音频编码器配置到配置文件。将音频编码器配置添加到媒体文件意味着使用媒体文件的流将包含该音频数据。音频编码器配置在添加一个音频源配置后被添加。表125:AddAudioEncoderConfiguration命令AddAudioEncoderConfiguration请求-响应消息名称描述AddAudioEncoderConfigurationRequest包含新添加的音频编码器配置的参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddAudioEncoderConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig配置令牌表示的音频编码配置不存在。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加的冲突,继续添加会引起媒体文件冲突。env:Receiverter:ActionNotSupportedter:AudioNotSupported不支持音频。11.2.8添加云台配置此操作增加了PTZ配置到现有的媒体文件。如果配置在媒体文件上存在,它会被永久替换。支持PTZ控制的NVT通过AddPTZConfiguration命令支持PTZ添加配置文件。添加PTZ配置到媒体文件意味着使用该媒体文件的流可以包含PTZ状态(元数据),以及媒体文件可用于控制PTZ运动,见第16章。表126:AddPTZConfiguration命令AddPTZConfiguration请求-响应消息名称描述AddPTZConfigurationRequest包含新添加的云台配置的参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddPTZConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig配置令牌表示的PTZ配置不存在。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加的冲突,继续添加会引起媒体文件冲突。env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ。11.2.9添加视频分析配置此操作添加了视频分析配置到现有的媒体文件。如果配置在媒体文件存在,它会被永久替换。支持视频分析的NVT支持通过AddVideoAnalyticsConfiguration命令添加视频分析配置到配置文件。添加视频分析配置到媒体文件意味着使用该媒体配置文件的流可以包含视频分析数据(元数据)所提交的参考配置定义。视频分析数据指定在第17.1节,分析配置是通过在11.9节中定义的命令管理的。文件只包含一个视频分析配置,而没有视频信号源配置是不完整的。因此,客户应先添加一个视频源配置一个文件,然后再添加视频分析配置。添加视频源配置之前NVT拒绝添加视频分析配置。在这种情况下,它会提示与配置冲突的错误。表127:AddVideoAnalytics命令AddVideoAnalytics请求-响应消息名称描述AddVideoAnalyticsRequest包含新添加的视频分析的参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddVideoAnalyticsResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig配置令牌表示的VideoAnalytics不存在。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加的冲突,继续添加会引起媒体文件冲突。env:Receiverter:ActionNotSupportedter:VideoAnalyticsNotSupported不支持视频分析。添加元数据配置此操作添加了元数据配置到现有的媒体文件。如果配置在媒体文件上存在,它会永久代替。NVT支持文件通过AddMetadataConfiguration命令添加一个元数据配置。添加元数据配置到文件中意味着使用该文件流时包含元数据。元数据可以包含事件,PTZ状态,和/或视频分析数据。处理元数据配置通过在11.10和11.9.4节定义的命令。表128:AddMetadataConfiguration命令AddMetadataConfiguration请求-响应消息名称描述AddMetadataConfigurationRequest包含新添加的元数据配置参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddMetadataConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig配置令牌表示的数据流配置不存在。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加的冲突,继续添加会引起媒体文件冲突。添加音频输出配置此操作添加了一个音频输出配置到现有的媒体文件。如果配置在媒体文件存在,它会被永久替换。一个有音频输出的NVT支持通过AddAudioOutputConfiguration命令添加音频输出配置到文件。表129:AddAudioOutputConfiguration命令AddAudioOutputConfiguration请求-响应消息名称描述AddAudioOutputConfigurationRequest包含添加音频输出配置参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddAudioOutputConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig配置令牌表示的音频输出配置不存在。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加的冲突,继续添加会引起媒体文件冲突。env:Receiverter:ActionNotSupportedter:AudioOutputNotSupported不支持音频或音频输出。添加音频解码器配置此操作添加音频解码器配置到现有的媒体文件。如果有一个配置在媒体文件,它将永久替换。有音频解码性能的NVT支持通过AddAudioDecoderConfiguration命令添加音频解码器配置给文件。表130:AddAudioDecoderConfiguration命令AddAudioDecoderConfiguration请求-响应消息名称描述AddAudioDecoderConfigurationRequest包含添加音频解码器配置参考和目标文件。tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenConfigurationToken[1][1]AddAudioDecoderConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Sender配置令牌表示的音频解码器配置不存在。ter:InvalidArgValter:NoConfigenv:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置和新添加的冲突,继续添加会引起媒体文件冲突。env:Receiverter:ActionNotSupportedter:AudioDecodingNotSupported不支持音频或音频解码。移除视频源配置此操作会从现有的媒体文件的删除一个视频源配置。如果媒体文件不包含一个视频源配置,操作无效。删除是永久性的。NVT支持通过RemoveVideoSourceConfiguration命令从文件删除视频源配置。视频源配置仅在视频编码器从媒体文件删除后才能被删除。表131:RemoveVideoSourceConfiguration命令RemoveVideoSourceConfiguration请求-响应消息名称描述RemoveVideoSourceConfigurationRequest包含应被删除的视频源配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemoveVideoSourceConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在视频源配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于视频源配置,删除它会导致媒体文件的冲突。移除视频源编码器配置此操作会从一个现有的媒体文件删除视频编码器配置。如果媒体文件不包含视频编码器的配置,操作无效。删除具有永久性。NVT支持通过RemoveVideoEncoderConfiguration命令从文件删除视频编码器配置。表132:RemoveVideoEncoderConfiguration命令RemoveVideoEncoderConfiguration请求-响应消息名称描述RemoveVideoEncoderConfigurationRequest包含应被删除的视频解码器配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemoveVideoEncoderConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在视频解码器配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于视频解码器配置,删除它会导致媒体文件的冲突。移除音频源编码器配置此操作会从一个现有的媒体文件删除音频源配置。如果媒体文件不包含音频信号源的配置,操作无效。删除是永久性的。支持音频流从NVT到客户端的NVT支持通过RemoveAudioSourceConfiguration命令从文件删除音频源配置。仅支持从媒体文件删除音频编码器配置后删除音频源配置。表133:RemoveAudioSourceConfiguration命令RemoveAudioSourceConfiguration请求-响应消息名称描述RemoveAudioSourceConfigurationRequest包含应被删除的音频源配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemoveAudioSourceConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在音频源配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于音频源配置,删除它会导致媒体文件的冲突。env:Receiverter:ActionNotSupportedter:AudioNotSupported不支持音频。移除音频编码器配置此操作会从一个现有的媒体文件删除音频编码器配置。如果媒体文件不包含音频编码器的配置,操作无效。删除具有永久性。NVT支持通过RemoveAudioEncoderConfiguration命令从文件删除音频编码器配置。表134:RemoveAudioEncoderConfiguration命令RemoveAudioEncoderConfiguration请求-响应消息名称描述RemoveAudioEncoderConfigurationRequest包含应被删除的音频解码器配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemoveAudioEncoderConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在音频解码器配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于音频解码器配置,删除它会导致媒体文件的冲突。env:Receiverter:ActionNotSupportedter:AudioNotSupported不支持音频。移除云台配置此操作会从现有的媒体文件删除PTZ配置。如果媒体文件不包含一个PTZ配置,操作无效。删除是永久性的。支持PTZ控制的NVT支持通过RemovePTZConfiguration命令从文件删除PTZ配置。表135:RemovePTZConfiguration命令RemovePTZConfiguration请求-响应消息名称描述RemovePTZConfigurationRequest包含应被删除的PTZ配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemovePTZConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在PTZ配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于PTZ配置,删除它会导致媒体文件的冲突。env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ。移除视频分析配置此操作会从现有的媒体文件删除视频分析配置。如果媒体文件不包含一个视频分析配置,操作无效。删除是永久性的。支持视频分析的NVT支持通过RemoveVideoAnalyticsConfiguration命令从文件删除视频分析配置。表136:RemoveVideoAnalyticsConfiguration命令RemoveVideoAnalyticsConfiguration请求-响应消息名称描述RemoveVideoAnalyticsConfigurationRequest包含应被删除的视频分析配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemoveVideoAnalyticsConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在视频分析配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于视频分析配置,删除它会导致媒体文件的冲突。env:Receiverter:ActionNotSupportedter:VideoAnalyticsNotSupported不支持视频分析。移除元数据配置此操作会从现有的媒体文件删除元数据配置。如果媒体文件不包含一个元数据配置,操作无效。删除是永久性的。NVT支持通过RemoveMetadataConfiguration命令从文件删除元数据配置。表137:RemoveMetadataConfiguration命令RemoveMetadataConfiguration请求-响应消息名称描述RemoveMetadataConfigurationRequest包含应被删除的元数据配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemoveMetadataConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在元数据配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于元数据配置,删除它会导致媒体文件的冲突。移除音频输出配置此操作会从现有的媒体文件删除音频输出配置。如果媒体文件不包含一个音频输出配置,操作无效。删除是永久性的。具有至少一个音频输出的NVT支持通过RemoveAudioOutputConfiguration命令从文件删除音频输出配置。表138:RemoveAudioOutputConfiguration命令RemoveAudioOutputConfiguration请求-响应消息名称描述RemoveAudioOutputConfigurationRequest包含应被删除的音频输出配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemoveAudioOutputConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在音频输出配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于音频输出配置,删除它会导致媒体文件的冲突。env:Receiverter:ActionNotSupportedter:AudioOutputNotSupported不支持音频或音频输出。移除音频编码器配置此操作会从现有的媒体文件删除音频解码器配置。如果媒体文件不包含一个音频解码器配置,操作无效。删除是永久性的。支持音频解码的NVT支持通过RemoveAudioDecoderConfiguration命令从文件删除音频解码器配置。表139:RemoveAudioDecoderConfiguration命令RemoveAudioDecoderConfiguration请求-响应消息名称描述RemoveAudioDecoderConfigurationRequest包含应被删除的音频解码器配置的媒体文件参考。tt:ReferenceTokenProfileToken[1][1]RemoveAudioDecoderConfigurationResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig当前的媒体文件不存在音频解码器配置。env:Receiverter:Actionter:ConfigurationConflict其他媒体文件的配置依赖于音频解码器配置,删除它会导致媒体文件的冲突。env:Receiverter:ActionNotSupportedter:AudioDecodingNotSupported不支持音频或音频解码。删除媒体文件此操作永久删除文件。NVT支持通过DeleteProfile命令删除媒体文件。表140:DeleteProfile命令DeleteProfile请求-响应消息名称描述DeleteProfileRequest包含应被删除的媒体文件的ProfileToken。tt:ReferenceTokenProfileToken[1][1]DeleteProfileResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile所请求的文件令牌ProfileToken不存在。env:Senderter:Actionter:DeletionOfFixedProfile固定文件不能被删除。11.3视频源代表未编码的视频源的视频输入。结构中包含视频的像素分辨率、帧率和图像设置。例如,例如,如果图像设置支持和包含对焦、曝光和亮度参数,图像设置可以通过图像服务实现。详情请参阅第10章。11.3.1获取视频源集此操作列出了所有有效的视频信号源设备。NVT支持通过GetVideoSources命令列出有效视频源。表141:GetVideoSources命令GetVideoSources请求-响应消息名称描述GetVideoSourcesRequest空消息。GetVideoSourcesResponse包含了所有有效的视频源配置描述结构清单。tt:VideoSourceVideoSources[0][unbounded]错误码描述没有具体的错误命令。11.4视频源配置一个视频源配置包含视频源参考和边界结构,其中边界结构是指视频源像素全部或者一部分面积。该配置定义传输给客户的视频流。如果视频源配置在配置文件中使用,它的UseCount需要加1,表示改变该配置可能影响其它用户。11.4.1获取视频源配置集此操作列出了设备现有的NVT的所有视频源配置。客户端不需要知道任何有关的视频源配置,就可以使用该命令。NVT支持通过GetVideoSourceConfigurations命令列出有效视频源配置。表142:GetVideoSourceConfigurations命令GetVideoSourcesConfigurations请求-响应消息名称描述GetVideoSourcesConfigurations-Request空消息。GetVideoSourcesConfigurations-Response此消息包含NVT所有有效的视频源配置描述结构清单。视频源配置不总是指示SourceToken元素的实时视频源。tt:VideoSourceConfigurationsConfigurations[0][unbounded]错误码描述没有具体的错误命令。11.4.2获取视频源配置如果视频源配置令牌是已知的,NVT支持通过GetVideoSourceConfiguration命令检索获取视频信号源的配置。表143:GetVideoSourceConfiguration命令GetVideoSourcesConfiguration请求-响应消息名称描述GetVideoSourcesConfigurationRequest此消息包含要求的视频源配置的令牌。tt:ReferenceTokenConfigurationToken[1][1]GetVideoSourcesConfigurationResponse此消息包含与请求的令牌匹配的视频源配置。视频源配置不总是指示源令牌元素的实时视频源。tt:VideoSourceConfigurationConfigurations[1][1]错误码描述env:Senderter:InvalidArgValter:NoConfig表明请求配置的配置令牌不存在。11.4.3获取多个兼容视频源配置此操作请求获取NVT所有的,与对应的媒体文件兼容的视频源配置。每个返回的配置应是一个有效的可以作为媒体文件上的AddVideoSourceConfiguration命令的输入参数。结果因设备的配置和设置情况而不同。NVT支持通过GetCompatibleVideoSourceConfigurations命令列出(与特定文件)兼容的视频源配置。表144:GetCompatibleVideoSourceConfigurations命令GetCompatibleVideoSource-Configurations请求-响应消息名称描述GetCompatibleVideoSource-ConfigurationsRequest包含现有媒体文件的令牌。tt:ReferenceTokenProfileToken[1][1]GetCompatibleVideoSource-ConfigurationsResponse包含一个兼容媒体文件的视频源配置清单。tt:VideoSourceConfigurationConfigurations[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile表明请求的文件令牌ProfileToken不存在。11.4.4获取视频源配置选项当视频源参数被重新配置是,该操作返回有效的配置选项,如果使用了特定的视频源配置,选项应该关注这些特定的配置。指定的媒体文件选项应与该媒体文件兼容。NVT支持通过GetVideoSourceConfigurationOptions命令列出有效视频源参数选项(对于一个给定的文件和配置)。表145:GetVideoSourceConfigurationOptions命令GetVideoSourceConfigurationOptions请求-响应消息名称描述GetVideoSourceConfiguration-OptionsRequest此消息包含一个视频源配置的可选令牌和媒体文件。ConfigurationToken指定一个现有的配置选项。ProfileToken所指定的选项应当是兼容现有的媒体文件。tt:ReferenceTokenConfigurationToken[0][1]tt:ReferenceTokenProfileToken[0][1]GetVideoSourceConfiguration-OptionsResponse此消息包含视频配置选项。视频源配置选项指定特定的配置。指定的媒体文件选项应与该媒体文件兼容。如果没有指定标记,选项应被视为通用设备。tt:VideoSourceConfigurationOptionsOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile表明请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig请求配置不存在。11.4.5设置视频源配置此操作修改一个视频源配置。ForcePersistence标志表示NVT重启后是否保留这些更改。使用该配置运行的流可能立即更新配置。除非客户端请求一个新的URI流,并重新启动任何受影响的流,否则所做的更改不保证生效。改变运行流的NVC方法超出本规范的范围。NVT支持通过SetVideoSourceConfiguration命令修改视频源参数。表146:SetVideoSourceConfiguration命令SetVideoSourceConfiguration请求-响应消息名称描述SetVideoSourceConfigurationRequest此消息包含一个视频源配置的可选令牌和媒体文件。ConfigurationToken指定一个现有的配置选项。ProfileToken所指定的选项应当是兼容现有的媒体文件。tt:ReferenceTokenConfigurationToken[0][1]tt:ReferenceTokenProfileToken[0][1]SetVideoSourceConfigurationResponse此消息包含视频配置选项。视频源配置选项指定特定的配置。指定的媒体文件选项应与该媒体文件兼容。如果没有指定标记,选项应被视为通用设备。tt:VideoSourceConfigurationOptionsOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoConfig配置不存在。env:Senderter:InvalidArgValter:ConfigModify配置参数无法设置。env:Receiverter:Actionter:ConfigurationConflict新设置与其他配置冲突。11.5视频编码器配置一个VideoEncoderConfiguration包含以下视频编码数据参数配置:·Encoder–用于视频数据的编码器。·Resolution–用于编码的视频数据像素分辨率。·Quality–决定视频的质量。的支持质量范围的值越高意味着更高的质量。·RateControl–配置比特率[kbps]的定义参数,以及一个编码间隔参数(间隔图像进行编码和传输)和FrameRateLimit[FPS]参数来配置输出帧率。·MPEG4/H264specifics–定义编码文件和GOV长度[帧]。视频编码器配置结构还包含组播参数和会话超时来定义视频流的行为。如果视频编码器配置在配置文件中使用,它的UseCount需要加1,表示改变该配置可能影响其它用户。11.5.1获取多个视频编码器配置此操作列出NVT所有现有的视频编码器配置。该命令列出设备的所有配置的视频编码器配置。客户端不需要事先知道任何有关的视频编码器配置就能使用该命令。NVT支持通过GetVideoEncoderConfigurations命令列出现有的视频编码器配置。表147:GetVideoEncoderConfigurations命令GetVideoEncoderConfigurations请求-响应消息名称描述GetVideoEncoderConfigurations-Request空消息。GetVideoEncoderConfigurations-Response此消息包含NVT所有现有的视频编码器清单配置。tt:VideoEncoderConfigurationConfigurations[0][unbounded]错误码描述没有具体的错误命令。11.5.2获取视频编码器配置如果视频编码器配置令牌是已知的,可以通过GetVideoEncoderConfiguration命令获取编码器的配置。NVT支持通过GetVideoEncoderConfiguration命令检索一个特定的视频编码器配置。表148:GetVideoEncoderConfiguration命令GetVideoEncoderConfiguration请求-响应消息名称描述GetVideoEncoderConfigurationRequest此消息包含要求的视频编码器配置令牌。tt:ReferenceTokenConfigurationToken[1][1]GetVideoEncoderConfigurationResponse此消息包含请求视频编码器配置的匹配令牌。tt:VideoEncoderConfigurationConfiguration[1][1]错误码描述env:Senderter:InvalidArgVater:NoConfig表示请求的配置的ConfigurationToken不存在。11.5.3获取多个兼容视频解码器配置此操作列出NVT所有与媒体文件兼容的视频编码器配置。每个返回的配置可以作为一个在媒体文件AddVideoEncoderConfiguration命令有效的输入参数。返回结果因设备的功能,配置和设置不同而有变化。NVT支持通过GetCompatibleVideoEncoderConfigurations命令列出(与特定的配置文件)兼容的视频编码器配置。表149:GetCompatibleVideoEncoderConfigurations命令GetCompatibleVideoEncoderConfigurations请求-响应消息名称描述GetCompatibleVideoEncoder-ConfigurationsRequest包含要求的媒体文件令牌。tt:ReferenceTokenProfileToken[1][1]GetCompatibleVideoEncoder-ConfigurationsResponse包含一个兼容媒体文件的视频编码器配置清单。tt:VideoEncoderConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgVater:NoProfile表示请求的文件令牌ProfileToken不存在。11.5.4获取视频编码器配置选项集视频编码器参数的重新配置时,该操作返回有效的选项。NVT支持通过GetVideoEncoderConfigurationOptions命令列出视频参数选项(对于一个给定的文件和配置)。表150:GetVideoEncoderConfigurationOptions命令GetVideoEncoderConfigurationOptions请求-响应消息名称描述GetVideoEncoderConfigurationOptions-Request此消息包含一个可选的视频编码器配置令牌和媒体文件。ConfigurationToken指定一个现有的配置选项。ProfileToken指定一个现有的兼容媒体文件的选项。tt:ReferenceTokenConfigurationToken[0][1]tt:ReferenceTokenProfileToken[0][1]GetVideoEncoderConfigurationOptions-Response此消息包含视频配置选项。选项指定视频编码器配置的特定配置。媒体文件指定的选项应与媒体文件兼容。如果没有指定标记,选项被视为通用设备。tt:VideoEncoderConfigurationOptionsOptions[1][1]错误码描述env:Senderter:InvalidArgVater:NoProfile表示请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig请求的配置不存在。11.5.5修改视频编码器配置此操作修改视频编码配置。ForcePersistence标志表示重新启动NVT后是否保存更改。组播设置的改变是永久的。使用此配置的运行流可立即根据新的设置更新,但不能保证所做的更改生效,除非客户端请求一个新的URI流并重新启动任何受影响的流。如果新设置使,用RTSP谈判达成的任何参数无效,例如改变编解码器类型的任何参数,NVT都不应用这些设置到现有的流。相反,它必须使用旧的设置继续运行流或对受影响的流停止发送数据。用NVC改变运行流的方法超出本规范的范围。NVT支持通过SetVideoEncoderConfiguration命令修改视频编码参数。表151:SetVideoEncoderConfiguration命令SetVideoEncoderConfiguration请求-响应消息名称描述SetVideoEncoderConfiguration-Request配置元素包含修改后的视频编码器配置。配置在NVT存在。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:VideoEncoderConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetVideoEncoderConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgValter:NoConfig请求的配置不存在。env:Senderter:InvalidArgValter:ConfigModify请求的配置不能设置。env:Receiverter:Actionter:ConfigurationConflict新设置与其他使用的设置冲突。11.5.6获取有效的视频编码数量GetGuaranteedNumberOfVideoEncoderInstances命令可用于请求每个视频源配置(应用程序)保证视频编码器实例的最低数量。NVT支持此命令。ONVIF1.02中添加了此命令。表152:GetGuaranteedNumberOfVideoEncoderInstances命令GetGuaranteedNumberOfVideoEncoderInstances请求-响应消息名称描述GetGuaranteedNumberOf-EncoderInstancesRequest这个请求包含一个视频源配置的令牌。tt:ReferenceTokenConfigurationToken[1][1]GetGuaranteedNumberOf-EncoderInstancesResponse此消息中包含每个视频源配置(应用程序)的最低保证总数的编码实例。设备限制了各自的视频编解码器的实例数量,响应包含多少JPEG,H264和MPEG4可在同一时间设置。在其他所有情况下,该设备能够在同一时间独立的从配置的视频编解码器提供流的总数。xs:intTotalNumber[1][1]xs:intJPEG[0][1]xs:intH264[0][1]xs:intMPEG4[0][1]错误码描述env:Senderter:InvalidArgValter:NoConfig请求的配置配置令牌不存在。11.6音频源音频源代表未编码的音频输入和表明输入通道的数量。11.6.1获取多个音频源此操作会列出设备所有有效的音频源。支持音频流从NVT到客户端的NVT设备支持通过GetAudioSources命令列出有效的音频源。表153:GetAudioSources命令GetAudioSources请求-响应消息名称描述GetAudioSourcesRequest空消息GetAudioSourcesResponse包含一个描述所有有效的音频源设备的结构清单。tt:AudioSourceAudioSources[0][unbounded]错误码描述env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.7音频源配置音频源配置包含了输入媒体文件的音频源参考。如果音频源配置在配置文件中使用,它的UseCount需要加1,表示改变该配置可能影响其它用户。11.7.1获取多个音频源配置此操作列出NVT设备所有现有的音频源配置。客户端不需要知道任何有关音频源的配置就能使用该命令。支持音频流从NVT到客户端的NVT设备,支持通过GetAudioSourceConfigurations命令列出有效的音频源配置。表154:GetAudioSourceConfigurations命令GetAudioSourceConfigurations请求-响应消息名称描述GetAudioSourceConfigurations-Request空消息。GetAudioSourceConfigurations-Response此消息包含了NVT所有现有的音频源配置清单。音频源配置SourceToken元素总是指着一个音频源。tt:AudioSourceConfigurationConfigurations[0][unbounded]错误码描述env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.7.2获取音频源配置GetAudioSourceConfiguration命令获取音频源配置令牌已知的音频源配置。支持音频流从NVT到客户端的NVT支持通过GetAudioSourceConfiguration命令检索指定的音频源配置。表155:GetAudioSourceConfiguration命令GetAudioSourceConfiguration请求-响应消息名称描述GetAudioSourceConfiguration-Request此消息包含所要求的音频源配置令牌。音频源配置的源令牌元素总是指着一个音频源。tt:ReferenceTokenConfigurationToken[1][1]GetAudioSourceConfiguration-Response此消息包含了NVT所有现有的音频源配置清单。音频源配置的源令牌元素总是指在一个音频源。tt:AudioSourceConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgValter:NoConfig表明请求的配置的配置令牌不存在的。env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.7.3获取兼容音频源配置集该操作请求获取,与特定媒体配置文件相兼容的设备的所有音频源配置。每个返回的配置应是一个对媒体文件的AddAudioSourceConfiguration命令有效的输入参数。结果因设备的功能,配置和设置而不同。支持音频流从NVT到客户端的NVT支持通过GetCompatibleAudioSourceConfigurations命令列出(与特定的配置文件)兼容的音频源配置。表156:GetCompatibleAudioSourceConfigurations命令GetCompatibleAudioSourceConfigurations请求-响应消息名称描述GetCompatibleAudioSource-ConfigurationsRequest包含现有媒体文件的令牌。tt:ReferenceTokenProfileToken[1][1]GetCompatibleAudioSource-ConfigurationsResponse包含于媒体文件兼容的音频源配置清单。tt:AudioSourceConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgValter:NoProfile表明文件令牌ProfileToken不存在。env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.7.4获取音频源配置选项集当音频源参数被重新配置是,该操作返回有效的配置选项,如果使用了特定的音频源配置,选项应该关注这些特定的配置。指定的选项应与该媒体文件兼容。支持音频流从NVT到客户端的NVT支持通过GetAudioSourceConfigurationOptions命令列出有效的音频参数选项(对于一个给定的文件和配置)。表157:GetAudioSourceConfigurationOptions命令GetAudioSourceConfigurationOptions请求-响应消息名称描述GetAudioSourceConfiguration-OptionsRequest此消息包含一个音频源可选的令牌配置和媒体文件。ConfigurationToken指定一个现有的配置目标选项。ProfileToken指定一个选项必须兼容的现有的媒体文件。tt:ReferenceTokenConfigurationToken[0][1]tt:ReferenceTokenProfileToken[0][1]GetAudioSourceConfiguration-OptionsResponse此消息包含音频的配置选项。指定音频源配置选项应关联特定的配置。指定的选项应与该媒体文件兼容。如果没有指定标记,选项应被视为通用设备。tt:AudioSourceConfigurationOptionsOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile表明文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig请求的配置不存在。env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.7.5修改音频源配置此操作修改音频源的配置。ForcePersistence标志表示是否在重新启动NVT后保留更改。使用此配置的运行流可立即根据新的设置更新,但所做的更改不会生效,除非客户端请求一个新的URI流并重新启动任何受影响的流。如果新的设置无法顺利使用RTSP,例如通过改变编解码器类型的任何参数,NVT不使用这些设置给现有的流,相反它必须继续使用旧的设置运行流或对受影响的流停止发送数据。用NVC改变运行流的方法超出本规范的范围。支持从NVT到客户端传送音频流的NVT支持通过SetAudioSourceConfiguration命令配置音频源的参数。表158:SetAudioSourceConfiguration命令SetAudioSourceConfiguration请求-响应消息名称描述SetAudioSourceConfiguration-Request配置元素包含要修改的音频源配置。配置应存在于NVT。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:AudioSourceConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetAudioSourceConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgValter:NoConfig配置不存在。env:Sender配置参数无法设置。ter:InvalidArgValter:NoConfigenv:Receiverter:Actionter:ConfigurationConflict新设置与其他使用的设置冲突。env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.8音频编码器配置音频编码器配置包含以下对音频数据进行编码的参数:·Encoder–用于音频数据的编码。·Bitrate–输出比特率[kbps]·SampleRate–输出采样率[kHz]音频编码器配置结构还包含组播参数和会话超时,用于定义音频流的行为。如果在配置文件里面使用了一个音频编码配置,该配置的UseCount加1,用于表示改变该配置可能影响其他用户。11.8.1获取多个音频编码器配置此操作列出设备所有现有的音频编码器配置。客户端不需要知道任何有关音频编码器配置就可以使用该命令。支持从NVT到客户端传送音频流的NVT支持通过GetAudioEncoderConfigurations命令列出有效的音频编码器配置。表159:GetAudioEncoderConfigurations命令GetAudioEncoderConfigurations请求-响应消息名称描述GetAudioEncoderConfigurations-Request空消息。GetAudioEncoderConfigurations-Response此消息包含NVT所有现有的音频编码器配置清单。tt:AudioEncoderConfigurationConfigurations[0][unbounded]错误码描述env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.8.2获取音频源编码器配置GetAudioEncoderConfiguration命令获取音频编码器配置令牌已知的音频编码器配置。支持音频流从NVT到客户端的NVT支持通过GetAudioEncoderConfiguration命令列出一个特定的音频编码器配置。表160:GetAudioEncoderConfiguration命令GetAudioEncoderConfiguration请求-响应消息名称描述GetAudioEncoderConfiguration-Request此消息包含请求的音频编码器配置令牌。tt:ReferenceTokenConfigurationToken[1][1]GetAudioEncoderConfiguration-Response此消息包含请求的音频编码配置的匹配令牌。tt:AudioEncoderConfigurationConfigurations[1][1]错误码描述env:Senderter:InvalidArgValter:NoConfig配置不存在。env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.8.3获取多个兼容音频编码器配置此操作要求NVT所有的音频编码器配置与特定的媒体文件兼容。每个返回的配置应是媒体文件AddAudioEncoderConfiguration命令的有效输入参数。结果因设备的功能,配置和设置而异。支持音频流从NVT到客户端的NVT支持通过GetCompatibleAudioEncoderConfigurations命令列出(与特定的配置文件)兼容的音频编码器配置。表161:GetCompatibleAudioEncoderConfigurations命令GetCompatibleAudioEncoderConfigurations请求-响应消息名称描述GetCompatibleAudioEncoder-ConfigurationsRequest包含现有的媒体文件令牌。tt:ReferenceTokenProfileToken[1][1]GetCompatibleAudioEncoder-ConfigurationsResponse包含一个媒体文件兼容的音频编码器配置清单。tt:AudioEncoderConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgValter:NoProfile请求的文件令牌ProfileToken不存在。env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.8.4获取音频编码器配置选项集当音频编码器参数的重新配置时,该操作返回有效的选项。支持音频流从NVT到客户端的NVT支持通过GetAudioEncoderConfigurationOptions命令列出有效的音频编码器(对于一个给定的文件和配置)参数选项。表162:GetAudioEncoderConfigurationOptions命令GetAudioEncoderConfigurationOptions请求-响应消息名称描述GetAudioEncoderConfiguration-OptionsRequest此消息包含选择的音频编码器配置令牌和媒体文件。ConfigurationToken指定一个现有配置的目标选项。ProfileToken指定一个应兼容现有媒体文件的选项。tt:ReferenceTokenConfigurationToken[0][1]tt:ReferenceTokenProfileToken[0][1]GetAudioEncoderConfiguration-OptionsResponse此消息包含音频的配置选项。指定的音频编码器配置选项应关联特定的配置。指定的选项应与该媒体文件兼容。如果没有指定标记,选项应被视为通用设备。tt:AudioEncoderConfigurationOptionsOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig配置不存在。env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.8.5设置音频编码配置此操作修改音频编码器配置。ForcePersistence标志表示在重新启动NVT后是否保持更改。组播设置的改变是永久的。使用此配置的运行流可根据新的设置立即更新,但所做的更改不会生效,除非客户端请求一个新的URI流并重新启动任何受影响的流。用NVC改变运行流的方法超出本规范的范围。支持音频流从NVT到客户端的NVT支持通过SetAudioEncoderConfiguration命令配置音频编码器参数。表163:SetAudioEncoderConfiguration命令SetAudioEncoderConfiguration请求-响应消息名称描述SetAudioEncoderConfiguration-Request配置元素包含修改后的音频编码器配置。配置存在NVT。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:AudioEncoderConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetAudioEncoderConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgValter:NoConfig配置不存在。env:Senderter:InvalidArgValter:ConfigModify请求的配置不能设置。env:Receiverter:Actionter:ConfigurationConflict新设置与其他使用的设置冲突。env:Receiverter:ActionNotSupportedter:AudioNotSupportedNVT不支持音频。11.9视频分析配置视频分析配置包含分析引擎和规则引擎的参数(见4.12节)。因此,分析引擎由分析服务管理的多个分析模块组成。同样,规则引擎由分析服务管理的多个规则组成。随后命令自动完成视频分析配置。举例来说,ModifyVideoAnalyticsConfiguration命令自动操作改变分析和规则引擎配置。当视频分析配置是在文件中,元数据配置可以在RTP流内激活场景描述流(见第11.10节)。设备可能不允许从多个不同的视频源配置的媒体文件引用非常类似的视频分析配置。如果该设备允许的话,它应为每个配置文件生成单独的场景描述,因为一个场景描述的坐标系统,涉及到一个特定的视频源配置。屏蔽和几何规则也涉及到视频源配置的坐标系统即使是指同一视频源也可能需要单独为每个视频源配置整个视频分析处理。由于视频分析配置的选项是动态的且往往由供应商指定的,他们只能通过视频分析服务检索。11.9.1获取多个视频分析配置此操作列出了设备所有的视频分析配置。此命令将列出设备所有配置的视频分析。客户端不需要知道任何关于视频分析就能使用命令。支持视频分析的设备支持通过GetVideoAnalyticsConfigurations命令列出有效的视频分析配置。表164:GetVideoAnalyticsConfigurations命令GetVideoAnalyticsConfigurations请求-响应消息名称描述GetVideoAnalyticsConfigurations-Request空消息。GetVideoAnalyticsConfigurations-Response此消息包含设备所有现有视频分析的配置清单。tt:VideoAnalyticsConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:ActionNotSupportedter:VideoAnalyticsNot-Supported配置不支持视频分析。11.9.2获取视频分析配置GetVideoAnalyticsConfiguration命令获取视频分析令牌已知的视频分析配置。支持视频分析的设备支持通过GetVideoAnalyticsConfiguration命令列出特定的视频分析配置。表165:GetVideoAnalyticsConfiguration命令GetVideoAnalyticsConfiguration请求-响应消息名称描述GetVideoAnalyticsConfiguration-Request此消息包含现有的视频分析配置的令牌。tt:ReferenceTokenConfigurationToken[1][1]GetVideoAnalyticsConfiguration-Response此消息包含请求的视频分析配置。tt:VideoAnalyticsConfigurationConfigurations[1][1]错误码描述env:Senderter:InvalidArgValter:NoConfig表示请求配置的配置令牌不存在。env:Senderter:ActionNotSupportedter:VideoAnalyticsNot-Supported设备不支持视频分析。11.9.3获取多个兼容视频分析配置此操作要求设备所有的视频分析配置都和相关的媒体文件兼容。每个返回的配置应是媒体文件AddVideoAnalyticsConfiguration命令的有效输入参数。结果因设备的功能,配置和设置而异。支持视频分析的设备支持通过GetCompatibleVideoAnalyticsConfigurations命令列出(与特定的配置文件)兼容的视频分析的配置。表166:GetCompatibleVideoAnalyticsConfigurations命令GetCompatibleVideoAnalyticsConfigurations请求-响应消息名称描述GetCompatibleVideoAnalytics-ConfigurationsRequest此消息包含现有的媒体文件令牌。tt:ReferenceTokenProfileToken[1][1]GetCompatibleVideoAnalytics-ConfigurationsResponse包含一个与给定的媒体文件兼容的视频分析配置清单tt:VideoAnalyticsConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgValter:NoProfile请求文件令牌ProfileToken不存在。env:Senderter:ActionNotSupportedter:VideoAnalyticsNotSupported设备不支持视频分析。11.9.4修改视频分析配置使用此命令修改视频分析配置。ForcePersistence标志表示设备在重启后是否保存更改。使用此配置的运行流可根据新的设置立即更新。否则可能由于有非常相似的视频分析配置令牌参考,而在由规则引擎处理的场景描述与分析引擎和规则引擎产生的通知之间出现不一致。支持视频分析的设备支持通过SetVideoAnalyticsConfiguration命令配置视频分析参数。表167:SetVideoAnalyticsConfiguration命令SetVideoAnalyticsConfiguration请求-响应消息名称描述SetVideoAnalyticsConfiguration-Request配置元素包含修改后的视频分析配置。配置应存在设备。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:VideoAnalyticsConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetVideoAnalyticsConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgster:NoConfig配置不存在。env:Senderter:InvalidArgValter:ConfigModify配置参数无法设置。env:Receiverter:Actionter:ConfigurationConflict新设置与其他使用的设置冲突。env:Senderter:ActionNotSupportedter:VideoAnalyticsNot-Supported配置不支持视频分析。11.10元数据配置元数据配置包含的参数用于选择数据放到在元数据流中的。包括PTZ状态、PTZ位置以及订阅和分析数据定义的事件。事件订阅数据是在第15.5节。由分析参数定定义包含来自那一部分文件的分析引擎数据,请参阅11.9节。结构还包含用于配置和控制元数据流组播的组播参数。会话超时参数定义会话超时(见第)如果配置文件里面使用了一个元数据配置,该配置的UseCount加1,用于表示改变该配置可能影响其他用户。11.10.1获取多个元数据配置此操作列出了所有现有的元数据配置。客户端不需要知道任何元数据的情况就能使用命令。支持元数据流的NVT或其他设备应支持通过GetMetadataConfigurations命令列出现有的元数据配置。表168:GetMetadataConfigurations命令GetMetadataConfigurations请求-响应消息名称描述GetMetadataConfigurations-Request空消息。GetMetadataConfigurations-Response此消息包含设备所有现有的元数据配置清单。tt:MetadataConfigurationConfigurations[0][unbounded]错误码描述没有具体的错误命令。11.10.2获取元数据配置GetMetadataConfiguration命令获取元数据令牌已知的元数据配置。支持元数据流的NVT或其他设备支持通过GetMetadataConfiguration命令列出特定的元数据配置。表169:GetMetadataConfiguration命令GetMetadataConfiguration请求-响应消息名称描述GetMetadataConfiguration-Request此消息包含现有的元数据配置令牌。tt:ReferenceTokenConfigurationToken[1][1]GetMetadataConfiguration-Response此消息包含请求的元数据配置。tt:MetadataConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgValter:NoConfig表明请求的配置令牌ConfigurationToken不存在。11.10.3获取多个兼容元数据配置此操作请求设备所有的与相关的媒体文件兼容元数据配置。每个返回的配置应是媒体文件AddMetadataConfiguration命令的有效输入参数。结果因设备的功能,配置和设置而异。支持元数据流的NVT或其他设备支持通过GetCompatibleMetadataConfigurations命令列出(与特定的文件)兼容的元数据配置。表170:GetCompatibleMetadataConfigurations命令GetCompatibleMetadataConfigurations请求-响应消息名称描述GetCompatibleMetadata-ConfigurationsRequest此消息包含现有的媒体文件令牌。tt:ReferenceTokenProfileToken[1][1]GetCompatibleMetadata-ConfigurationsResponse此消息包含与给定媒体文件兼容的元数据配置清单。tt:MetadataConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgValter:NoProfile表明请求文件令牌ProfileToken不存在。11.10.4获取元数据配置选项集此操作返回更改元数据配置的有效的选项。支持元数据流的NVT或其他设备支持通过GetMetadataConfigurationOptions命令列出有效的元数据参数选项(对于一个给定的文件和配置)。表171:GetMetadataConfigurationOptions命令GetMetadataConfigurationOptions请求-响应消息名称描述GetMetadataConfiguration-OptionsRequest此消息包含一个元数据配置可选的令牌和媒体文件。ConfigurationToken指定一个现有的配置的目标选项。ProfileToken指定一个应兼容现有的媒体文件的选项。tt:ReferenceTokenConfigurationToken[0][1]tt:ReferenceTokenProfileToken[0][1]GetMetadataConfiguration-OptionsResponse此消息包含元数据的配置选项。指定的元数据配置选项应关联特定的配置。指定的选项应与该媒体文件兼容。如果没有指定标记,选项应被视为通用设备。tt:MetadataConfigurationOptionsOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile表明请求文件令牌ProfileToken不存在的。env:Senderter:InvalidArgValter:NoConfig请求配置不存在。11.10.5修改元数据配置此操作修改元数据配置。ForcePersistence标志表示设备重启后是否应保持改变。组播设置的改变是永久的。使用此配置的运行流可根据新的设置立即更新。但所做的更改不会生效,除非客户端请求一个新的URI流并重新启动任何受影响的流。用RVC改变运行流的方法超出本规范的范围。支持元数据流的NVT或其他设备支持通过SetMetadataConfiguration命令配置元数据参数。表172:SetMetadataConfiguration命令SetMetadataConfiguration请求-响应消息名称描述SetMetadataConfiguration-Request配置元素包含组播设置以及一套在元数据流中确定列入什么样的数据的过滤器。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:MetadataConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetMetadataConfiguration-Response空消息。错误码描述env:Sender请求配置不存在。ter:InvalidArgValter:NoConfigenv:Senderter:InvalidArgValter:ConfigModify请求配置不能设置。env:Receiverter:Actionter:ConfigurationConflict新设置与其他使用的设置冲突。11.11音频输出音频输出代表可以连接到扬声器的音频输出端口。11.11.1获取音频输出集此命令列出所有有效的音频输出设备。有一个或多个音频输出端口的NVT支持通过GetAudioOutputs命令列出有效的音频输出。表173:GetAudioOutputs命令GetAudioOutputs请求-响应消息名称描述GetAudioOutputsRequest空消息。GetAudioOutputsResponse包含设备描述的所有有效的音频输出的结构清单。如果一个设备没有音频输出则返回一个空清单。tt:AudioOutputAudioOutputs[0][unbounded]错误码描述env:Receiverter:ActionNotSupportedter:AudioOutputNotSupportedNVT不支持音频或音频输出。11.12音频输出配置音频输出配置包含以下参数:·SourceToken:现有的音频输出参考。·OutputLevel:输出音量配置参数。·SendPrimacy:一个NVTs可以使用的,有半双工音频输入/输出来配置活动的传输方向参数(见第11.14节)。如果配置文件里面使用了一个音频输出配置,该配置的UseCount加1,用于表示改变该配置可能影响其他用户。11.12.1获取多个音频输出配置此命令将列出所有现有设备的音频输出配置。NVC不需要知道任何有关音频配置就可以使用此命令。在能够输出音频的NVT上支持通过这个命令列出音频输出配置。表174:GetAudioOutputConfigurations命令GetAudioOutputConfigurations请求-响应消息名称描述GetAudioOutputConfiguration-Request空消息。GetAudioOutputConfigurations-Response包含设备有效的音频输出配置清单。tt:AudioOutputConfigurationConfigurations[0][unbounded]错误码描述env:Receiverter:ActionNotSupportedter:AudioOutputNotSupported设备不支持音频或音频输出。11.12.2获取音频输出配置如果音频输出配置令牌已知,输出配置可以通过GetAudioOutputConfiguration命令获取。有一个或多个音频输出的NVT支持通过GetAudioOutputConfiguration命令检索一个特定的音频输出配置。表175:GetAudioOutputConfiguration命令GetAudioOutputConfiguration请求-响应消息名称描述GetAudioOutputConfigurationRequest此消息包含请求的音频输出配置令牌。tt:ReferenceTokenConfigurationToken[1][1]GetAudioOutputConfigurationResponse此消息包含请求的音频输出配置的匹配令牌。tt:AudioOutputConfigurationConfigurations[1][1]错误码描述env:Senderter:InvalidArgValter:NoConfig表示请求配置的ConfigurationToken不存在。env:Receiverter:ActionNotSupportedter:AudioOutputNotSupported设备不支持音频或音频输出。11.12.3获取多个兼容音频输出配置此命令将列出设备所有的与特定媒体文件兼容的音频输出配置。每个返回的配置应是AddAudioOutputConfiguration命令有效的输入参数。有一个或多个音频输出的NVT支持通过GetCompatibleAudioOutputConfigurations命令列出(与特定的文件)兼容的音频输出配置。表176:GetCompatibleAudioOutputConfigurations命令GetCompatibleAudioOutputConfigurations请求-响应消息名称描述GetCompatibleAudioOutput-ConfigurationsRequest包含请求的媒体文件令牌。tt:ReferenceTokenProfileToken[1][1]GetCompatibleAudioOutput-ConfigurationsResponse包含与给定媒体文件兼容的音频输出配置清单tt:AudioOutputConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgValter:NoProfile请求的文件令牌ProfileToken不存在。env:Receiverter:ActionNotSupportedter:AudioOutputNotSupported设备不支持音频或音频输出。11.12.4获取音频输出配置选项集此操作返回配置音频输出有效的选项。有一个或多个音频输出的NVT支持通过GetAudioOutputConfigurationOptions命令列出有效的音频输出配置选项(对于一个给定的文件和配置)。表177:GetAudioOutputConfigurationOptions命令GetAudioOutputConfigurationOptions请求-响应消息名称描述GetAudioOutputConfiguration-OptionsRequest此消息包含一个音频输出可选的令牌配置和媒体文件ConfigurationToken指定一个现有的配置的目标选项。ProfileToken指定一个与现有的媒体文件兼容的选项。tt:ReferenceTokenConfigurationToken[0][1]tt:ReferenceTokenProfileToken[0][1]GetAudioOutputConfiguration-OptionsResponse此消息包含音频输出配置的选项。指定音频输出配置的选项应关联特定的配置。指定的选项应与该媒体文件兼容。如果没有指定标记,选项应被视为通用设备。tt:AudioOutputConfigurationOptionsOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig请求配置不存在。env:Receiverter:ActionNotSupportedter:AudioOutputNotSupported设备不支持音频或音频输出。11.12.5设置音频输出配置此操作修改音频输出配置。ForcePersistence标志表示设备重启后是否保持改变。有一个或多个音频输出的NVT支持通过SetAudioOutputConfiguration命令修改音频输出参数。表178:SetAudioOutputConfiguration命令SetAudioOutputConfiguration请求-响应消息名称描述SetAudioOutputConfiguration-设备的配置元素包含修改的音频输出配置。RequestForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:AudioOutputConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetAudioOutputConfiguration-Response空消息。错误码描述env:Senderter:InvalidArgValter:NoConfig请求配置不存在。env:Senderter:InvalidArgValter:ConfigModify配置参数不能设置。env:Receiverter:Actionter:ConfigurationConflict新设置与其他使用的设置冲突。env:Receiverter:ActionNotSupportedter:AudioOutputNotSupported设备不支持音频或音频输出。11.13音频解码器配置音频解码器配置不包含任何参数配置解码器。解码器对它接收到的每一个数据(根据其能力)进行解码。如果配置文件里面使用了一个音频解码器配置,该配置的UseCount加1,用于表示改变该配置可能影响其他用户。11.13.1获取多个音频解码器配置此设备列出所有现有的音频解码器配置。NVC不需要知道任何有关音频解码器配置的情况就可以使用此命令。可以解码音频的NVT支持通过此命令列出音频输出配置。表179:GetAudioDecoderConfigurations命令GetAudioDecoderConfigurations请求-响应消息名称描述GetAudioDecoderConfigurations-Request空消息。GetAudioDecoderConfigurations-Response包含设备上有用的音频解码器配置清单。tt:AudioDecoderConfigurationConfigurations[0][unbounded]错误码描述env:Receiverter:ActionNotSupportedter:AudioDecodingNotSupported设备不支持音频或音频解码。11.13.2获取音频解码器配置如果音频解码器配置令牌是已知的,则可以通过GetAudioDecoderConfiguration命令获取解码器配置。一个可以解码音频的NVT支持通过GetAudioDecoderConfiguration命令检索一个特定的音频解码器配置。表180:GetAudioDecoderConfiguration命令GetAudioDecoderConfiguration请求-响应消息名称描述GetAudioDecoderConfigurationRequest此消息包含请求音频解码器配置的令牌。tt:ReferenceTokenConfigurationToken[1][1]GetAudioDecoderConfigurationResponse包含请求音频解码器配置的匹配令牌。tt:AudioDecoderConfigurationConfiguration[1][1]错误码描述env:Senderter:InvalidArgValter:NoConfig请求配置的ConfigurationToken不存在。env:Receiverter:ActionNotSupportedter:AudioDecodingNotSupported设备不支持音频或音频解码。11.13.3获取兼容音频解码器配置集此操作列出了设备所有的,与关联媒体文件兼容的音频解码器的配置。每个返回的配置应是媒体文件AddAudioDecoderConfiguration命令的有效的输入参数。一个可以解码音频的NVT支持通过GetCompatibleAudioDecoderConfigurations命令列出(与特定的配置文件)兼容的音频解码器配置。表181:GetCompatibleAudioDecoderConfigurations命令GetCompatibleAudioDecoderConfigurations请求-响应消息名称描述GetCompatibleAudioDecoder-ConfigurationsRequest包含媒体文件令牌。tt:ReferenceTokenProfileToken[1][1]GetCompatibleAudioDecoder-ConfigurationsResponse包含与给定媒体文件兼容的音频解码器配置清单。tt:AudioDecoderConfigurationConfigurations[0][unbounded]错误码描述env:Senderter:InvalidArgValter:NoProfile请求的文件令牌ProfileToken不存在。env:Receiverter:ActionNotSupportedter:AudioDecodingNotSupported设备不支持音频或音频解码。11.13.4获取音频解码器配置选项集该命令列出设备的一个给定的文件和配置的音频解码能力。一个可以解码音频的设备支持通过这个命令对音频解码器配置选项的检索。表182:GetAudioDecoderConfigurationOptions命令GetAudioDecoderConfigurationOptions请求-响应消息名称描述GetAudioDecoderConfiguration-Options-Request此消息包含一个音频解码器配置可选的令牌和媒体文件。ConfigurationToken指定一个现有的配置的目标选项。ProfileToken指定一个与现有的媒体文件兼容的选项。tt:ReferenceTokenConfigurationToken[0][1]tt:ReferenceTokenProfileToken[0][1]GetAudioDecoderConfiguration-Options-Response此消息包含音频解码器的配置选项。指定的音频解码器配置选项关联特定的配置。指定的选项应与该媒体文件兼容。如果没有指定标记,选项应被视为通用设备。tt:AudioDecoderConfigurationOptionsOptions[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile请求的文件令牌ProfileToken不存在。env:Senderter:InvalidArgValter:NoConfig请求的配置不存在。env:Receiverter:ActionNotSupportedter:AudioDecodingNotSupported设备不支持音频或音频解码。11.13.5设置音频解码器配置此操作修改音频解码器的配置。ForcePersistence标志表示设备是否在重启后保存更改。可以解码音频的设备支持通过SetAudioDecoderConfiguration命令修改音频解码器参数。表183:SetAudioDecoderConfiguration命令SetAudioDecoderConfiguration请求-响应消息名称描述SetAudioDecoderConfiguration-Request配置元素包含修改音频解码器配置。配置必须存在设备上。ForcePersistence元素决定是否在重启后存储和保持配置更改。如果为真,改变是永久的。如果为假,可能会在重新启动后恢复到改变以前的值。tt:AudioDecoderConfigurationConfiguration[1][1]xs:booleanForcePersistence[1][1]SetAudioDecoderConfiguration-Response空消息。错误码描述env:Sender请求的配置不存在。ter:InvalidArgValter:NoConfigenv:Senderter:InvalidArgValter:ConfigModify配置参数不能设置。env:Receiverter:Actionter:ConfigurationConflict新设置与使用的配置冲突。env:Receiverter:ActionNotSupportedter:AudioDecodingNotSupported设备不支持音频或音频解码。11.14音频通道模式一个音频通道可支持不同类型的音频传输。全双工操作不需要任何特殊处理,而半双工操作需要切换传输方向。音频输出配置里面的首选发送参数指示的是目前活动的方向。NVC可以设置音频输出配置,实现在不同的模式之间切换。定义首选发送有下列模式:·服务器允许发送音频数据到客户端。客户端不得在这种模式下通过反向通道向NVT发送音频数据。·允许客户端通过服务器的反向通道发送音频数据。NVT不得在这种模式下向客户端发送音频数据。·它是由设备决定如何处理发送和接收音频数据。取消声学回声超出ONVIF的范围。11.15URI流11.15.1获取Uri流该操作请求一个URI,该URI可以被用来启用一个使用RTSP作为控制协议的实时媒体流。返回URI应无限期地保持有效,即使文件被改变。ValidUntilConnect、ValidUntilReboot和Timeout参数应当相应地设置(ValidUntilConnect=false,ValidUntilREBOOT=false,Timeout=PT0S)。NVT应该支持通过GetStreamUri命令,对一个具体的媒体配置文件,检索一个媒体流URL。与其他ONVIF的服务完全兼容的设备不应该产生超过128个字节的URI。表184:GetStreamUri命令GetStreamUri请求-响应消息名称描述GetStreamUriRequestStreamSetup元素包含两个部分。流类型规定一个单播或组播的流媒体是否请求。运输指定一个链传输协议确定在不同的网络协议的流媒体的通道。ProfileToken元素表示使用媒体文件去定义流的内容的配置。tt:StreamSetupStreamSetup[1][1]tt:ReferenceTokenProfileToken[1][1]GetStreamUriResponse包含被请求的流媒体使用的稳定的URI以及参数定义的完整的URI。ValidUntilConnect和ValidUntilReboot参数设置为假,Timeout参数应设置为PT0S,此URI流是无限期有效,即使文件改变。xs:anyURIUri[1][1]xs:booleanInvalidAfterConnect[1][1]xs:booleanInvalidAfterReboot[1][1]xs:durationTimeout[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile媒体文件不存在。env:Senderter:InvalidArgValter:InvalidStreamSetup不支持StreamSetup的流类型或传输部分的规范。env:Senderter:OperationProhibitedter:StreamConflictStreamSetup的流类型或传输部分的规范与其他流冲突。env:Receiverter:Actionter:IncompleteConfiguration指定媒体文件不包含任何未使用的来源或编码器配置。11.16快照11.16.1获取Uri快照网络客户端使用GetSnapshotUri命令从NVT获得JPEG快照。返回的URI应无限期地保持有效,即使文件改变。ValidUntilConnect、ValidUntilReboot和Timeout参数应相应的设置(ValidUntilConnect=FALSE,ValidUntilReboot=FALSE,Timeout=PT0S)。URI可通过一个HTTPGET操作获取JPEG图像。图像编码总是JPEG的编码设置,忽略在媒体配置文件中的编码设置。NVT支持此命令。表185:GetSnapshotUri命令GetSnapshotUri请求-响应消息名称描述GetSnapshotUriRequestProfileToken元素表示使用媒体文件并将定义源和快照的尺寸。tt:ReferenceTokenProfileToken[1][1]GetSnapshotUriResponse包含被请求的流媒体使用的稳定的URI以及参数定义的完整的URI。ValidUntilConnect和ValidUntilReboot参数设置为假,Timeout参数应设置为PT0S,此URI流是无限期有效,即使文件改变。xs:anyURIUri[1][1]xs:booleanInvalidAfterConnect[1][1]xs:booleanInvalidAfterReboot[1][1]xs:durationTimeout[1][1]错误码描述env:Senderter:InvalidArgValter:NoProfile媒体文件不存在。env:Receiverter:Actionter:IncompleteConfiguration指定媒体文件不包含任何视频编码器配置或视频源配置。11.17组播NVT和客户端组播流的详细讨论见12.1节。11.17.1开始组播流此命令使用NVT的指定媒体文件开始组播流。流持续直至相同的文件呼叫停止组播流。NVT重启后流将持续直到收到一个停止组播流请求。组播地址,端口和TTL分别在视频编码配置、音频编码器配置和元数据配置里分别设置。支持视频、音频或元数据组播流的NVT支持通过StartMulticastStreaming命令启动一个组播流。表186:StartMulticastStreaming命令StartMulticastStreaming请求-响应消息名称描述StartMulticastStreamingRequest包含用来定义组播流的文件令牌。tt:ReferenceTokenProfileToken[1][1]StartMulticastStreamingResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile媒体文件不存在。env:Receiverter:Actionter:IncompleteConfiguration指定的媒体文件不包含一个引用视频编码视频源的配置到音频源或音频编码配置或元数据配置的参考。11.17.2停止组播流此命令停止组播流使用NVT上的媒体文件。支持视频,音频或元数据的NVT支持通过StopMulticastStreaming命令停止指定的组播流。表187:StopMulticastStreaming命令StopMulticastStreaming请求-响应消息名称描述StopMulticastStreamingRequest包含用来定义组播流的文件令牌。tt:ReferenceTokenProfileToken[1][1]StopMulticastStreamingResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile媒体文件不存在。env:Receiverter:Actionter:IncompleteConfiguration指定的媒体文件不包含一个引用视频编码或视频源的配置到音频源或音频编码配置或元数据配置的参考。11.18同步点11.18.1设置同步点同步点允许客户端进行准确解码同步点后的所有数据。例如,如果一个视频流被配置一个大的I-帧距离且客户端丢失一个单包,则客户端不显示视频,直到下一个I-帧传输。在这种情况下,客户可以强制要求NVT尽快添加一个I-帧的同步点。客户可以要求文件的同步点。NVT应为文件添加所有相关联的数据流的同步点。同样,通过元数据流,同步点用于更新完整的PTZ或事件的状态。一个I-帧应加入到与文件相关的视频流。如果一个事件流与文件相关,同步点应请求处理,(如15.6节所述)。如果PTZ元数据流与文件相关,PTZ位置应在元数据流内重做。支持MPEG-4或H.264的NVT支持通过SetSynchronizationPoint命令请求I-帧。表188:SetSynchronizationPoint命令SetSynchronizationPoint请求-响应消息名称描述SetSynchronizationPointRequest包含请求的同步点的文件参考。tt:ReferenceTokenProfileToken[1][1]SetSynchronizationPointResponse空消息。错误码描述env:Senderter:InvalidArgValter:NoProfile文件不存在。11.19服务具体的错误码下表列出了媒体服务的具体错误代码。此外,每个命令还可以生成一个通用的错误,见表6。具体错误是作为一个通用的错误子码被定义的,请参阅第。母公司通用的子码是在下面每一行的顶部的子码,具体的错误子码是在表格的底部。表189:具体的媒体服务错误码错误码母码错误原因描述子码env:Receiverter:ActionNotSupported没有音频功能NVT不支持音频。ter:AudioNotSupportedenv:Receiverter:Action已达最大数已达到支持文件的最大数。ter:MaxNVTProfilesenv:Receiverter:ActionNotSupported没有音频输出能力NVT不支持音频或音频输出。ter:AudioOutputNotSupportedenv:Receiverter:ActionNotSupported没有音频解码能力NVT不支持音频或音频解码。ter:AudioDecodingNotSupportedenv:Receiverter:Action设置不完整指定文件缺失实体要求。ter:IncompleteConfigurationenv:Receiverter:Action使用新设置时冲突新设置与其他使用的设置冲突ter:ConfigurationConflictenv:Senderter:InvalidArgVal文件令牌已存在有ProfileToken文件的已存在。ter:ProfileExistsenv:Senderter:InvalidArgVal配置令牌不存在请求的配置令牌ConfigurationToken不存在。ter:NoConfigenv:Senderter:InvalidArgVal文件令牌不存在请求的文件令牌ProfileToken不存在。ter:NoProfileenv:Senderter:Action固定的文件不能被删除固定的文件不能被删除。ter:DeletionOfFixedProfileenv:Senderter:InvalidArgVal不能设置参数配置参数不能设置。ter:ConfigModifyenv:Senderter:ActionNotSupported没有视频分析能力NVT不支持视频分析。ter:VideoAnalyticsNotSupportedenv:Senderter:InvalidArgVal无效的流安装不支持流类型规格或StreamSetup的传输部分。ter:InvalidStreamSetupenv:Senderter:OperationProhibited流冲突流类型规范或在StreamSetup的传输部分与其他流冲突。ter:StreamConflict12实时流这一章将对实时视频流,实时音频流以及元数据流进行讲解。但是在这一章中不会介绍与实时流相关具体的服务。可以通过在MediaService和ReceiverService中定义的网页服务命令来进行实时配置。12.1流媒体协议12.1.1传输格式实时传输协议(RTP)是一个媒体传输协议(参考12.1.2)。接下来的4节将描述RTP数据的传输。通过UDP的RTP数据传输UDP能以一种有效的方式来传输实时数据,并且具有最小的开销。设备应该支持RTP/UDP协议并且同样的支持RTP/UDP组播。通过TCP传输RTP数据如果通过UDP传输有包丢失,那么协议标准允许通过另外一种媒体传输方式TCP来传输RTP数据。设备可以基于选择性的支持RTP/TCP协议。如果设备支持RTP/TCP协议,那么这协议应该符合[RFC4571](面向连接的帧实时传输协议,面向连接RTP控制协议包传输)。设备应该支持使用RTP/RTSP协议来进行媒体传输;并且RTP/RTSP协议在传输过程中,使用RTSP隧道来穿越防火墙。这一协议应当符合[RFC2326标准](参见10.12节)。为了穿越防火墙,数据流应当通过HTTP发送。设备应当支持通过RTP/RTSP/HTTP/TCP协议来传输媒体。如果设备支持TLS1.0,那么为了穿越防火墙,数据流应当通过HTTPS来进行发送以及接收,以及一个设备应当支持通过RTP/RTSP/HTTP/TCP协议来进行媒体传输。协议应当符合[RFC2326](第节RTSP:嵌入(交错)2进制数据).。(穿越防火墙)隧道的方法也应该符合QuickTime,这QuickTime可以从苹果公司获取。以下文件命令的部分应该被NVT提供。12.1.2媒体传输这RTP协议是提供对两个终端之间流媒体进行实时传输的协议。RTP协议支持排序(序列号),去抖动(时间戳)和媒体同步(同步源表示符)。所有通过RTP协议传输的媒体流应当符合[RFC3550],[RFC3551],[RFC3984],[RFC3016]以及通过RTP传输的JPEG相关规定(参见12.1.3)。012301234567890123456789012345678901VPXCCMPT序列号时间戳同步源标识符图14:RTP头一个RTP头可以用以下值进行填充。表190:RTP头值头字段值描述版本(V):2bits2填充(P):1bit0/1如果有效载荷包含了填充的八位,那么这应该设置为1扩展(X):1bit0/1取决于对RTP头的扩展使用;使用RTP头扩展来传递附加信息可以分为两种情况来:1.通过RTP传输JPEG(参见12.1.3节)2.重播如果使用了扩展,那么扩展位应该被设置CSRC计数(CC):4bit0标志(M):1bit0/1这种方法应当符合所有RFC相关的规定((e.g.[RFC3984]forH.264Video)或者达到这些标准(eg:“JPEGoverRTP”见12.1.3)或者RTP元数据流的(参见)负载类型(PT):7bits参见第六章的[RFC3551]序列号:16bits这“sequencenumber”初始值应当是随机以及不可预知的;这样能够让已知明文攻击更加的困难每发送一个RTP数据包时这值就增1时间戳:32bits时间戳的初始值应当是随机以及不可预测的,这样能够让已知明文的攻击更加困难更详细的规则请查看节媒体同步对时间戳的使用还取决于编码器同步源32bits对于数据流的同步时钟源,协议并没有对之做出相关的限制元数据流元数据流也能够通过RTP协议进行传输。对于元数据传输的RTP协议头中的负载类型,标识以及时间戳,可以通过以下方式来对它们进行定义:在一个RTSP会话建立的过程中,应该对负载类型分配一个动态的负载类型值(96-127)。当XML文件关闭时,这RTP标记位应该置1;推荐使用一个时钟频率为90000HZ的时间戳来表示RTP包的产生时间。在元数据流中只有UTC时间戳会被用到。视频与音频数据流同步是通过RTCP协议来控制。元数据负载是一个拥有根节点的XML文件tt:MetaDataStream。对于XML文件,这里没有对其大小限制。当对于流有一个同步点的请求时,这先前的XML文档应该关闭,然后开始一个新的文件XML文件。推荐在一秒后开始新的XML文档(这是最长的时间)。元数据流的RTP时间戳没有具体的含义;元数据流复用来自不同来源的元数据。本协议分别对视频分析的场景描述、云台云台控制器的状态和事件配置的通知都定义了占位符。设备能够在媒体的配置时选择里面的哪些部分应该被复用进元数据(参见11.10节)。在文件中,每一个部分都可以以任意顺序在文件中出现多次。一个元数据通过反向通道机制进行双向连接(参见12.3节)。元数据流包含以下元素:1.视频分析流2.云台流3.事件流对于不同来源元数据的占位符都是以以下XML结构:以下是一个元数据XML文档的例子...这RTP控制协议提供对RTP提供服务的质量反馈以及同步不同媒体流。这RTCP协议应该符合[RFC3550].对于一个反馈的请求,设备应该支持[RFC4585]和[RFC5104]RTCPSRserverclientRTCPRR图15:RTCP序列媒体同步客户可以从超过一个以上设备同时接受音频和视频流。在这种情况下,每一种流使用不同的时钟(从数据采集到包接收)。RTCP发送报告(SR)被用来同步不同的媒体流。RTCPSR应该符合[RFC3550]这RTCP发送报告(SR)包包含了RTP时间戳以及一个挂钟时间戳(绝对日期和时间,64位网络时间协议)。参考16章一个设备应该支持RTCP发送报告来同步媒体。客户端也应该使用RTCP来同步媒体流。012301234567890123456789012345678901VPRCPT=SR=200LENGTHSSRCofsenderNTPtimestamp,mostsignificantwordNTPtimestamp,leastsignificantwordRTPtimestampsender\'spacketcount图16:RTCP发送报告挂钟应该在设备中是通用的,以及每一个时间戳的值应该确定是正确的值。客户端应该用基于RTP时钟和挂钟时间戳的合适时间来同步不同媒体(见图17)。在有多种设备的情况下,这NTP时间戳应该对所有设备是通用的,以及能够在系统中请求NTP服务。transmitterreceiverRTP(Audio)RTP_timestamp_AudioRTP_timestamp_AudioRTCP(Audio)RTP_timestamp_Audio+NTP_timestampRTP(Video)RTP_timestamp_VideoRTCP(Video)RTP_timestamp_Video+NTP_timestam图17:媒体同步图17:媒体同步12.1.3同步点同步点允许客户在同步点之后编码以及更正使用的数据。在出现错误编码(或者包丢失)情况时,客户可以申请一个同步点来促使设备尽可能快的增加一帧;以及完成对当前云台和事件状态的请求,客户都可以申请一个同步点来解决。另外,设备应该支持在基于11.18.1节和15.6节所讲的基本网络服务方法,这个标准推荐使用在[RFC4585]中的PL1信息来获取一个同步点12.1.4通过RTP传输JPEG所有包的结构根据【RFC2435】的规则来传输JPEG流。像下面指定的那样:通过选择RTP头的扩展,可以在一些RTP数据包中嵌入【RFC2435】限制的数据。然而,这种选择改变了包含这样数据包的帧的确切语义。图18显示了JPEGRTP包的所有格式。012301234567890123456789012345678901根据RFC3500的标准RTP头0xFFD8/0xFFFF扩展长度扩展有效负载:附加JPEG标记段的序列用0XFF填充到总的延伸长度根据RFC2435的RTP/JPEG头熵编码的扫描数据段AudioVideoNTP图18:RTP/JPEG包结构为了能够从其他可能的头扩展中区分任意一个RTP头扩展;在一帧的初始包中,这最先的16bits((四字节扩展头的前两个字节))应该是0XFFD8而一帧的其它RTP包的值是0XFFFF。正如[RFC3550]要求那样,任意存在的头扩展应该通过RTP头X位进行标记;在扩展头范围内扩展长度,这扩展长度用扩展负载后的32位的进行表示。例如,32位的扩展头后是一个0长度区域,那么这就表示是一个空的头扩展。熵编码的扫描数据段不是在所有的RTP包中存在。然而,一个完整的RTP/JPEG头应在每帧的初始数据包和所有包含熵编码的扫描数据段的包中存在,否则可能会丢失。根据[RFC2435],在RTP/JPEG头中,如果不存在头的扩展,那么碎片的偏移区域将被使用。另外,对于一个已经传输的的帧中,如果所有的包都包含一个熵编码扫描数据段,或者没有一个包包含一个熵编码扫瞄数据段但是这些包包含头扩展,那么碎片偏移应该不为0。根据这个协议,如果帧的初始化包中没有头扩展,那么它的碎片偏移区域不应该为0,否则应该设为0。根据3.1.8节的【RFC2435】规定,凡是包括0偏移的的碎片RTP/JPEG头和一个在128-255之间的Q值的包都应该包含量化表头,而其它的包不应该包含这个报头。逻辑解码规范对于解码规范,它是假设在RTP流原始数据包的顺序已根据RTP序列编号恢复。如果帧的初始数据包不包含上述规定RTP头扩展,解码器应产生完整的扫描头和按照[RFC2435]进行解码。扫描数据段和任何遵照这个协议的头扩展应以在流中发生的顺序(忽略碎片偏移值)进行连接,直到下一个有位设置的RTX包到来时结束。否则(至少有一个像上面所讲的空的头扩展存在在这初始化的包中),下列规则适用于每一个这样的帧:1.如果帧的初始数据包不包含一个熵编码的扫描数据段,但包含一个像上面讲的那样的头扩展,那么解码器对遵从这个子序列包协议的头扩展负载进行连接,直到包含有RTP标记位的或者包含熵编码的第一个包出现。2.对有JPEGSOI标记的RTP头扩展负载连接时,有这些标记应该在理论上优先出现。3.在一个帧的初始化包中,如果这RTP/JPEG扫描头的Q值不为0,那么量化表应该根据[RFC2435]进行预初始化。如果Q值等于0,那么子序列帧的量化表都应该从先前帧进行拷贝,在初始化头扩展负载时允许帧忽略DQT标记。4.如果初始化RTP头扩展负载支持没有DRI标记,但是这帧的初始化包中的RTP/JPEG头包含了一个RTP/JPEG重启标记,那么一个符合【RFC2435】规则的DRI标记就会被添加进初始化头扩展负载中。另外,如果这初始化RTP头扩展支持DRI标记,那么应该根据【RFC2435】规则在相同帧中优先重启。然而,如果重启间隔被使用,为了对只遵守【RFC2435】规则的编码器兼容,编码通常应该在RTP/JPEG重启标记赋合适的值。DRI的标记位不应该从先前帧获取。如果初始化的RTP头扩展的负载(序列)支持没有SOF标记,否则,那样会优先执行,一个SOF标记应该用以下值进行添加:1.如果RTP/JPEG的宽度和高度区域为0,应使用先前帧的SOF标记位。2.否则这标记应该根据【RFC2435】规则来分配。然而,只要图像的大小在【RFC2435】指定的变化范围,编码器应该在RTP/JPEG头中指定与SOF值相符合图形的大小。如果这初始化的头扩展负载支持没有SOS标记,应该根据【RFC2435】规则来得到一个相应SOS标记以及在信息中附加上去,相反的这扩展的SOS标记会优先执行。一个SOS标记不应从先前的帧获得。如果在扩展区域SOS标志是存在并且不是在熵编码扫描数据之后,标志将在一帧初化扩展负载(序列)内的最后的标记。用0xFF进行的必要填充不会跟随这个标志,但是可以优先于它。保存的熵编码扫瞄数据和头扩展负载应该按在RTP流中发生的顺序进行逻辑添加,直到遇到RTP标记位时结束。如果在帧的逻辑序列中,一个EOI标记也应该在最后添加。对于每帧,在生成序列在遇到第一个(可能被添加)EOI标记时才是有效(可能被缩写)的JPEG流,从对帧解码程序中得出一个的完整图像。这就意味着在每一帧第一个EOI标记以后的数据是协议规范之外的事情。支持的彩色空间和采样因素发射机应该采用只灰度等级和YCbCr彩色空间。客户将支持灰度等级和YcbCr。对于YCbCr的采样因素应该符合[RFC2435]支持的值。例如:4:2:0(首选)或4:2:2.像素长宽比处理JPEG文件像素长宽比可以通过JFIF标志指定。如果像素长宽比与根据[RFC2435]标准1:1和1:2比不相同,那么这个标记应该在每帧的初始头扩展负载中(序列)指定像素点长宽比。隔行扫描处理隔行视频扫描是在两个独立场进行编码以及在RTP/JPEG中按【RFC2435】指定进行标记。两个场将使用同样的彩色空间,采样因素和像素长宽比如果帧是逐行扫描的,那么就不应该使用隔行编码。。12.2媒体控制协议12.2.1流控制使用URI中定义的协议来控制媒体流。对定义在第11.15.1节的GetStreamUri命令进行响应并返回一个URL图19:流控制12.2.1.1RTSP所有设备以及客户端都应当支持RTSP协议([RFC2326])来进行初始化会话以及回放的控制。RTSP应使用TCP协议作为其传输协议,RTSP传输默认的TCP端口554。会话描述协议(SDP)应该被用来提供流媒体信息以及SDP协议应该符合【RFC4566】标准。表191:RTSP方法方法方向SPEC描述OPTIONSR->TT->RMX可在任意时刻发出OPTIONS请求,如用户打算尝试非标准请求,并不影响服务器状态DESCRIBER->TM请求在设计文件中检索媒体参数ANNOUNCER->TT->RXSETUPR->TM请求设置媒体会话参数PLAYR->TM请求开始媒体流PAUSER->TO请求暂停媒体流:在一个狭窄的带宽中处理多个流媒体,通过挂载RTP流,通过减少多余数据能够控制网络拥塞TEARDOWNR->TM请求释放媒体会话GET_PARAMETERR->TT->ROSET_PARAMETERR->TT->ROO用任意一个可选的方法来让一个RTSP会话保持活跃REDIRECTT->RXRECORDR->TX保持RTSP会话的方法一个RTSP客户端保持RTSP会话,并防止它从会话超时结束(见RFC2326)第12.37)。本规范推荐以下的方法来保持的RTSP单播和组播的流:1.客户可以选择使用SetEncoderConfiguration命令来设置超时参数;命令定义在11.2节,否则超时值会默认设置为602.在所有的RTSPSETUP响应,发射机应包括根据[RFC2326]第12.37定义超时值和发射机应该使用超时值的来保持会话3.为了保持RTSP会话,客户端应通过任何RTSP方法或者发或发送RTCP接收器报告。推荐使用SET_PARAMETER命令。图20:保持会话RTSP音频和视频同步为了使客户端可以立即开始同步视频和音频流,对传进来进行录制的包计算出的绝对UTC时间戳;这些传输进来的包是用来存储的。一个发射机应在对RTSPPLAY应答信息包含以下头区域RTSP播放响应头字段:1.Range([RFC2326]section12.29)。时钟单元应该包含一个起始时间([RFC2326]第3.7节),notSMPTEorNPTunits.。2.RTP-Info([RFC2326]section12.33)。这应该包含一个与Range相关的RTPTIME值。元数据流的RTSP会话在元数据流的情况下,这SDP协议描述的“application”应该被用来描述对媒体类型的应答上以及应该用来对名字编码。例如RTSP协议描述一个RTSP服务器(Server)和一个RTSP客户端(客户端)进行信息的交换:RTSP消息的例子这个例子显示了信息在RTSP客户端和一个RTSP服务器进行传递。客户端从设备请求一个音频和视频流。使用GetStreamUri命令能够检索一个URL“rtsp://example.com/onvif_camera”。参阅第11.15.1通过HTTP的RSTP为了穿越防火墙,基于HTTP/HTTPS的RTSP协议应该被设备支持。见第的RTP/RTSP/HTTP/TCP协议。12.3往回通道连接本节介绍如何在客户端和服务器之间建立一个双向的连接。使用RTSP协议[RFC2326]对反向通道连接进行处理。这里将存在一种机制用于表明客户端想建立一个往回通道连接RTSP提供了功能标签来处理这样的附加的功能。支持双向连接的设备(如音频或元数据连接)应该支持已经介绍RTSP扩展。12.3.1RTSP协议请求的标签[RFC2326]的RTSP标准,可以用附加对象头进行扩展。为了这个目的,将引进一个请求的标签来处理专门的附加功能(见RFC2326],1.5扩展RTSP和12.32需求)请求标签是用来判断是否支持此功能。这头应包含任何请求并且要求服务器理解这些特性并能够正确对这些请求进行应答。支持反向通道的一种装置,应当理解的反向通道的标签:希望建立具有数据反向通道的RTSP连接的客户应该在请求信息中包括请求的Require头12.3.2双向连接的连接设置客户端应当在它的描述请求中包括特性标签,用以表明应该建立双向数据连接。理解这一要求标签的服务器应在SDP协议中包含一个正如在媒体类别的配置一样的额外流媒体。根据的RTSP标准,一个不理解的反向通道的特性标签或不支持双向数据连接RTSP服务器会响应错误代码551Optionnotsupported。然后,客户端可以尝试建立一个没有反向通道RTSP连接。一个SDP的文件被用来描述会话。服务器应在每一个媒体选项中包括一个a=sendonly或b=recvonly属性来表明将要发送数据的方向。服务器应该列举出所有支持的解码规则作为自己媒介选项以及客户应该选择哪一种。例一:没有往回支持的服务例二:使用ONVIF往回通道支持的服务这SDP文件完全描述RTSP会话。服务器给客户端控制URL来设置流。在接下来的几步客户能够设置会话:第三步请求建立音频反向通道连接。在接下来的几步中客户端通过PLAY请求开始会话.在接收到对PLAY请求进行OK应答后,客户端可以开始发送音频数据到服务器。收到应答之前,它不会发送数据给服务器在服务器。请求头表明一个与PLAY命令相关的解释是必要的。命令涵盖既从NVT到客户端的视频和音频流的起点以及开始从客户机到服务器的音频连接。为了终止会话,客户端发送一个TEARDOWN请求。12.3.3组播流如果客户准备在组播发送的数据,在SETUP请求的参数告诉服务器的多播地址和端口。例:多播设置12.4错误处理RTSP和HTTP协议错误被分为不同的类别(例如,状态代码1XX,2XX,3XX,4xx和5xx)。设备和客户端应当支持处理这些状态代码。在RTSP与[RFC2326]相关的状态代码定义是第11.0。对于HTTP状态代码的定义是指]第10.0节HTTP/1.1的[2616。13接收端配置这项服务提供了一些管理接收对象的命令(用于从其他设备接收媒体流的命令)。接收器包含如何建立媒体流,接收器的工作模式,以及媒体流URI(通用资源标志符)这些信息。一个设备应支持至少128字节长度的媒体资源标识符。一个接收设备最大的RTSP资源标识符的长度的能力显示了设备支持的最大长度。接收服务应该可以由接收媒体流的设备来完成。在发送设备资源标识符中,赋予这个接收设备的IP和DNS地址是托管接收服务设备用于访问服务发送设备的地址。举个例子,如果客户端不得不通过一个路由器与发射设备和接收设备来交流,给接收设备的发射设备地址(这种情况是本地网络地址)可能与客户端访问发射设备的地址不同(这种情况是外部网络地址)。通过实时RTP协议(看节),一个设备应该可以支持RTP传输,并且通过RTSP/HTTP/TCP传输协议,也可以实现RTP传输。一个设备可以支持其他的RTP传输协议,同时它还应该用适当的能力表明支持什么。(看在表11中接收器的种类)13.1持久性所有创建在接收机服务之内的对象都应该持久,它们要再断电重启后保存不变,同样的,所有在对象中的配置数据也应该持久。13.2接收端模式一个接收器可以用三种不同的模式操作:一直连接。接收器试图保持持续与配置端点的连接。不连接。接收器不尝试连接自动连接,接收器根据用户所需进行连接。13.3接收命令本节的描述命令是为接收服务提供的。13.3.1获得多个接收器此操作列表列出了目前存在的设备中所有接收器,接收服务应该支持这个命令。表192:获得接收器的命令获得接收器消息名字说明获得设备请求消息空获得设备的应答包含一个列表的接收机误码说明没有具体的故障码13.3.2获得单个接收器此操作用来搜索具体的接收器(令牌将被客户端识别的接收器)接收器服务支持这个命令表193:getreceiver命令GetReceiver信息名字描述GetReceiver请求包含令牌请求的接收者。receivertokenGetReceiver应答包含详细的要求接收机误码详细env:Senderter:InvalidArgValter:UnknownToken接收器靠receivertoken得显示不存在13.3.3创建接收器这个操作创建了一个新的接收器,接收器服务应该支持这个命令。表194:创建接收器命令创建接收器信息名字描述创建接收器的请求包含这个接收器的初始配置tt:ReceiverConfigurationConfiguration[1][1]创建接收器的应答包含详细的被创建的接收器tt:ReceiverReceiver[1][1]误码描述env:Senderter:InvalidArgValter:InvalidStreamSetup指定的配置无效env:Receiverter:Actionter:MaxReceivers支持的最大数量的接收机已达到13.3.4删除接收器此操作删除现有接收器,一个接收机不能删除它如果正在使用中,本接收器应该支持这个命令表195:删除接收器的命令删除接收器信息名字描述删除接收器请求包含标记的接收器被删除删除接收器应答信息空误码描述env:Senderter:InvalidArgValter:UnknownToken接收机靠receivertoken得显示不存在env:Receiverter:Actionter:CannotDeleteReceiver删除指定的接收是不可能的,例如因为它是目前使用的。13.3.5配置接收器这个操作是配置接收机,接收机服务应该支持这个命令表196:配置接收机配置接收机信息名字描述配置接收机请求包括令牌的接受接受和新配置tt:ReceiverTokenReceiverToken[1][1]tt:ReceiverConfigurationConfiguration[1][1]配置接受的应答消息空误码描述env:Senderter:InvalidArgValter:UnknownToken接收器靠receivertoken得显示不存在env:Senderter:InvalidArgValter:BadConfiguration指定的配置无效13.3.6设计接收器模式此操作可能被用来确定模式的接收器独立于其配置,接收器服务支持这个命令表197:设置接收机模式命令设置接收机模式信息名字描述设置接收机模式请求包含令牌的请求的接收和新模式tt:ReceiverTokenReceiverToken[1][1]tt:ReceiverModeReceiverMode[1][1]设置接收机应答消息空误码描述env:Senderter:InvalidArgValter:UnknownToken接收器通过receivertoken的显示不存在13.3.7获取接收机状态这一操作可以决定是否目前的接收机断开,连接或者正在试图连接。接收机应该支持这一命令。表198:获得接收机状态命令获得接收机状态消息名字描述获得接收机状态请求包含令牌请求的接收者tt:ReceiverTokenReceiverToken[1][1]获得接收机状态应答包含当前状态的接收机tt:ReceiverStateState[1][1]误码描述env:Senderter:InvalidArgValter:UnknownToken接收器通过receivertoken的显示不存在13.4事件接收机服务通过事件服务来调度事件。它还应能触发事件(无论什么时候在本章列出的条件都能触发)13.4.1改变状态无论什么时候改变接收机的状态,设备应迅速处理以下事件:Topic:tns1:Receiver/ChangeState13.4.2连接失败如果一个接收机不能建立一个连接,设备应迅速处理以下事件:Topic:tns1:Receiver/ConnectionFailed13.5服务器错误码表199列出了显示服务具体的误码。此外,每个命令都可以生成一个通用的误码,看表6.具体的故障被定义为一个通用的故障,看部分。这个双亲通用码在每一行子码的上面,具体的故障子码是在底部的基本单元。表199:服务指定的误码误码双亲通用码产生误码的原因描述通用码Env:Senderter:InvalidArgVal接收机不存在接收机靠ReceiverToken得暗示不存在ter:UnknownTokenEnv:Senderter:Action已经达到了接收机的最大数量能支持接收机的最大数量已经达到了ter:MaxReceiversEnv:Senderter:InvalidArgVal不支持流设置流型号的规范或者接收机配置流设置的传输部分不支持ter:InvalidStreamSetupEnv:Senderter:Action不可能删除这些设备不可能删掉指定的设备,比如目前正在使用ter:CannotDeleteReceiver14显示服务显示设备有一个固定数量的视频输出,每一个都可以连接到监控器,通过使用设备输入输出服务,客户端可以请求设备的视频输出。每一个这些输出都配置了布局(比如单个视图和多画面).布局定义了一定数量的视频窗格,每个视频窗格都占据着一个物理显示区域。一个网络的视频显示同时可能有一定数量的音频输入和音频输出,每一个这些输出可能都与一个窗格联系起来的。将一个音频输入或音频输出和窗格地图对应联系起来,可以让来自传输设备的音频和视频流自动的正确的输出。窗格还包含了一个对应接收器的标记(链接已经存储了的,从显示设备到发射机的一些必要的信息)显示服务提供配置窗格功能而且可以自动描述和改变这个设备的布局。可能要求到一些布局和视频输出的编码能力。一个显示设备应该支持显示服务就像[DisplayService.wsdl]中定义的那样。14.1窗格一个窗格在监空器里面是一个显示区域,它连接到视频输出。每个窗格都有一个窗格配置来说明究竟是哪个实体连接到了窗格。这个窗格配置包括:窗格令牌:在显示装置中一个唯一的标示符。窗格名字:配置名字音频输出令牌:音频输出的指针与窗格联系起来。客户端可以检索一个设备的现有的音频输出,通过设备输入输出服务获得音频输出命令。音频来源令牌:音频来源的指针与此窗格联系在一起的。通过反馈机制,显示设备到NVT的音频连接已经建立起来。用户可以检索音频源设备的输入输出服务的获得设备音频来源命令。音频编码器配置:音频编码器配置包括编码器和解码器,比特率和采样率。接收机令牌:一个接收机的指针有一些用来接收发射机数据的必需的信息。接收机可以被连接起来,并且网络视频显示器在指定输出的地方显示接收来的数据。通过使用接收机服务的获得接收机命令,用户可以检索可用的接收机。用户必须通过设置音频输出和音频源令牌建立连接来配置窗格。如果一个令牌没有被设置,相应的会话将不能建立起来。改变一个窗格的配置或一个参考接收机的参数不会影响RTSP协议的连接。如果一个客户端打算申请一个新的参数,它将会重启RTSP的连接。视频输出窗格的布局决定了窗格是否是可见的,在哪里可见的。如果窗格是可见的,接收机可以只建立一个RTSP连接来接收数据。布局的改变对于正在传输的流不起作用。14.1.1获得多个窗格配置对于一个指定的视频输出,这个命令列出了当前一个设备中所有确定的的窗格(无论这个窗格此时是否可见),通过此命令,这个显示设备应该支持检索它自己配置的窗格。表200:获得窗格配置获得窗格配置请求-应答信息名字描述获得窗格配置请求该视频输出要素指定了视频输出(对应的窗格配置被要求了)获得窗口配置应答包括了一系列的指定的视频输出定义的的窗格,每一个视频输出至少有一个窗格配置,tt:PaneConfigurationPaneConfiguration[1][unbounded]误码描述env:Senderter:InvalidArgValter:NoVideoOutput被要求的视频输出不存在14.1.2获得单个窗格配置如果窗格令牌已经被这个能用来获得窗格配置的命令识别的话,那么通过此命令,这个设备应该支持检索特定的窗格配置表201:获得窗格配置获得窗格配置请求-应答信息名字描述获得窗格配置请求这个信息包含了一个窗格(配置已经被要求了)的令牌也包含了一个视频输出令牌(包含请求窗格的指定视频输出)这个消息还包含请求令牌的窗格tt:ReferenceTokenVideoOutput[1][1]tt:ReferenceTokenPane[1][1]获得配置窗格应答包含请求的窗格配置tt:PaneConfigurationPaneConfiguration[1][1]误码描述env:Senderter:InvalidArgValter:NoPane请求的窗格不存在env:Senderter:InvalidArgValter:NoVideoOutput要求的视频输出不存在14.1.3设置多个窗格配置这个命令可以用一步改变所有存在的音频输出的窗格配置。消息包括了所有的窗格配置(修改或未修改)。显示设备应该支持这个改变窗格配置通过这个命令。表202:设置窗格配置设置窗格配置请求-应答设置窗格配置请求这一消息包含视频输出的令牌和新的窗格配置设置窗格应答消息空误码描述env:Senderter:InvalidArgValter:NoPane要求的窗格不存在env:Senderter:InvalidArgValter:NoVideoOutput要求的视频输出不存在env:Senderter:InvalidArgVal配置不可能设置ter:InvalidConfigenv:Senderter:InvalidArgValter:NoVideoOutput请求的视频输出不存在14.1.4设置单个窗格配置此命令用来改变单个窗格的配置,显示设备可以支持单个窗格配置的修改,通过此命令。设置单个窗格配置请求-应答信息名字描述设置单个窗格配置请求这个消息包含视频输出和新窗格配置的令牌tt:ReferenceTokenVideoOutput[1][1]tt:PaneConfigurationPaneConfiguration[1][1]设置单个窗格配置应答消息空误码描述env:Senderter:InvalidArgValter:NoPane请求窗格不存在env:Senderter:InvalidArgValter:NoVideoOutput请求视频输出不存在env:Senderter:InvalidArgValter:InvalidConfig配置不可能被设置14.1.5创建窗格配置这个命令用于创建一个窗格配置。通过此命令,一个支持窗格动态创建的显示设备应该支持动态窗格配置的创建表204:创建窗格配置创建窗格配置请求-应答信息名字描述创建窗格配置请求这个消息包含了视频输出的令牌和新的窗格配置tt:ReferenceTokenVideoOutput[1][1]tt:PaneConfigurationPaneConfiguration[1][1]创建窗格配置请求消息空误码描述env:Senderter:InvalidArgValter:MaxNumberOfPane达到了最大的窗格量env:Senderter:InvalidArgValter:NoVideoOutput请求的视频输出不存在env:Senderter:InvalidArgValter:InvalidConfig这个配置不能设置14.1.6删除窗格配置这个命令用于删除一个窗格配置。通过此命令,一个支持动态窗格删除的显示设备应该支持动态窗格配置的删除。表205:删除窗格配置创建窗格配置请求-应答信息名字描述删除窗格配置请求这个消息包含了视频输出的令牌和新的窗格配置tt:ReferenceTokenVideoOutput[1][1]tt:PaneConfigurationPaneConfiguration[1][1]删除窗格配置请求消息空误码描述env:Senderter:InvalidArgValter:MaxNumberOfPane不可能删除这个窗格配置env:Senderter:InvalidArgValter:NoVideoOutput请求的视频输出不存在env:Senderter:InvalidArgValter:InvalidConfig被请求的窗格配置不存在14.2布局布局为每个窗格配置分配了一点区域来显示,布局的设置直接影响一个具体的视频输出。这个布局包括一系列的窗口配置和与它们相联系的显示区域。如果设备支持重叠的窗格,那么窗格显示在显示器中的顺序就被窗格配置清单的顺序确定下来了。清单中的第一个窗格在前景中显示出来。一个设备要么提供可以一个固定的布局要么它可以自由的配置布局。14.2.1获得布局此命令返回当前视频输出的布局,一个显示设备应支持检索其布局,通过这个命令。表206:获得布局获得布局要求-应答信息名字描述获得布局要求包含连接到输出显示的视频输出令牌tt:ReferenceTokenVideoOutput[1][1]获得布局应答包含目前视频输出的布局tt:LayoutLayout[1][1]误码描述env:Senderter:InvalidArgValter:NoVideoOutput被要求的视频输出不存在14.2.2设置布局设置布局操作可以用来改变显示的布局。通过这个命令,显示设备应该支持布局的改变表207:设置布局设置布局要求-应答信息名字描述设置布局要求这一消息包含视频输出的令牌和修改过的布局设置布局应答消息空误码描述env:Senderter:InvalidArgValter:InvalidLayout不可能设置布局env:Senderter:InvalidArgVal要求的视频输出不存在ter:NoVideoOutput14.3显示选项设备的显示选项包括支持布局(布局选项),解码,编码能力。获得显示命令返回所有布局,编解码能力。布局选项这个布局选项描述了一个设备固定的和预定义的布局。如果这个设备没有提供固定的布局,或者允许自由的设置布局,那么这个要素为空。编码能力通过使用合适的算法,网络视频显示可以编码音频和视频流。根据制造商的选择,网络视频显示提供了一些音频和视频的编码器,比特率,分解。为了确保不同设备之间的互操作性,本规范给下面的简写的解码器分配了不同的任务:NVD应该支持JPEGQVGANVD将支持G.711μLaw(如果它还支持视频)对NVT,这些则是相同的强制性的编码器。一个解码器没有任何参数来配置。一个解码器要解码所有它接收到的内容。万一出现解码错误,解码器应该试着请求一个同步点,并且继续解码。就像14.4章节定义那样,这应该是件很正常的事情。编解码能力要素显示了一个设备的解码和编解码能力。14.3.1获取显示选项这个命令列出了视频输出的布局和编解码能力。通过这个命令,一个显示设备应该支持显示选项的检索。表208:获得显示选项获得显示选项请求-应答信息名字描述获得显示选项请求有一个指示什么媒体文件要被删除的窗格令牌。获得显示应答这个消息包含一个视频输出令牌(这些选项是为之准备的)误码描述env:Senderter:InvalidArgValter:NoVideoOutput请求的输出令牌不存在14.4事件通过事件服务,显示设备可以调度事件14.4.1解码错误事件当设备收到一个不能解码的比特流的时候,它应该能够产生下列事件:一个解码器为什么不能解码比特流有多种原因,下面定义的误码可以用来通知客户对于解码错误1)“不支持的编解码器和不支持的编解码器简介”-设备不能用来编码比特流,因为这个设备不支持编解码或简介。通过设备的编码能力,客户应该试着重新配置传输机。2)“数据包错误”—在比特流中有丢失的或的不期望的数据包。其他供应商特定的代码也可以Topic:tns1:VideoDecoder/DecodingError14.5服务错误码表209列出了显示设备具体的误码。除此之外,每个命令也可以生成一个通用的故障,看表6.具体的故障是作为一个通用的故障码被定义的。看章节。双亲子码在下面每一行的顶部,它也是字码,并且具体错误的字码在每个单元的底部表209服务指定的误码误码双亲字码错误原因描述字码env:Senderter:InvalidArgVal视频输出不存在被请求的视频输出不存在ter:NoVideoOutputenv:Senderter.InvalidArgVal固定的窗格配置不能删除这些窗格配置ter:FixPaneenv:Senderter:InvalidArgVal达到了窗格的最大量达到了窗格最大量因此不能创建窗格ter:MaximumNumberOfPanesenv:Senderter:InvalidArgVal窗格配置不存在被请求的窗格配置不存在ter:NoPaneenv:Senderter:InvalidArgVal不能设置窗格配置被请求的配置不被设备支持ter:InvalidConfigenv:Senderter:Action不能设置布局被请求的布局不被设备支持ter:InvalidLayout15事件处理一个事件是一个行为或事件检测(一个客户可以订阅的设备进行的事件检测)。事件处理是通过事件服务来实现的。一个设备应该提供一个事件服务,就像[ONVIFEventWSDL]里描述的那样。NVT和NVC都应该支持[WS-Addressing]为事件服务。在这个标准中处理事件是基于[WS-BaseNotification]and[WS-Topics]规范的。本标准要求了基本通知接口实施(implementation),就像在15.1中描述的那样,这完全符合[ws-basenotification]的规范。此外,该设备应该实现实时的通知Pull-Point接口和通知流接口,就像15.2和15.3章节定义的那样。本标准介绍了一个通知消息扩展,从而允许客户端通过事件的性质跟踪对象。属性定义在章节15.4事件描述的有效性和在订阅范围之内的过滤在章节15.5中讨论。章节15.6描述了如何通过客户使用三个通知接口之一请求同步点。章节15.7描述了一体化的主题,章节15.9描述了处理错误。最后一部分详细演示了(包括过滤消息和主题设置的通知接口)的实时拉取点通知接口的使用。在相应的[WS-BaseNotification]规范中可以找到一些基本通知接口的例子。15.1基本通知接口章节15.1.1简要介绍基本的通知接口的[ws-basenotification]规范。章节15.1.2总结了强制性和可选的接口[ws-basenotification]规范15.1.1介绍在通知模式中,以下的逻辑实体参与了,客户端:实现通知消费者的接口事件服务:实现通知生产者接口订阅管理:实现BaseSubscriptionManager接口在一个设备中事件服务和订阅管理都应该被实体化。典型的实体之间交换消息的顺序显示在图21.首先,客户端建立一个到事件服务的连接。客户端可以通过发送一个订阅请求来认证一个通知。如果事件服务接受预订,它代表订阅动态的实例一个订阅管理。事件服务应当返回一个订阅管理者的WS终端地址到订阅请求中。为了传输通知来匹配订阅另一个对客户的事件服务开始建立。通过这个建立,事件服务发送一个单向通知消息给客户端的notificationconsumer(消费者通知)接口。相应的通知可以随时发送服务给客户,当订阅是积极的(active)。为了控制这个订阅,客户端直接订阅管理者的地址应该由订阅应答返回。在订阅请求中,客户可以指定一个终止时间。该订阅管理者自动注销当终止时间达到时。更新请求可以由客户端发起,以推迟终止时间。客户也可以明确地终止订阅管理者,通过发送退订请求。当成功退订后,订阅管理者不再存在。事件服务和订阅管理者之间得相互作用不再被[WS-BaseNotification]进一步规定,并且由设备确定。图21:序列图为基本的通知接口15.1.2要求本节详细说明设备应该提供的WS基本通知接口一个ONVIF兼容设备应该支持[WSBaseNotification]通知产生接口。结果,theNotificationProducerResourceProperties是OPTIONAL(看15.5部分)设备应该至少支持TopicExpression和MessageContent过滤器,部分15.5.5和15.7.3中描述的那样。如果设备不接受InitialTerminationTime的订阅,在故障码以内,它将提供一个有效的InitialTerminationTime。在[WS-BaseNotification]规范中,设备应该能够使用Notifywrapper给出通知。对设备来说SubscriptionPolicywsnt:UseRaw是一个可选的。在一个通知请求中,虽然[wsbasenotification]具有实时性并且terminationtime作为可选的元素,一个ONVIF兼容设备也应列出它们。本设备可能用故障码回应任何GetCurrentMessage请求,暗示在这个请求中,目前没有消息是可用的。在设备上一个[WS-BaseNotification]的Pull-Point接口的实施是可选的。一个ONVIF兼容设备应该安装BaseSubscriptionManagerInterface更新和退订业务。这个可终止的订阅界面是可选的,就像WS-Resources是可选的那样。15.2实时拉点通知接口本节介绍了实时拉取点通知接口.这个接口提供防火墙友好通知接口实时轮询和启动所有客户端通讯.该接口用以下方法进行使用:1:客户端要求用CreatePullPointSubscriptionRequest消息为设备配置PullPointSubscription。2:当订阅被接受时,设备评估订阅要么返回一个createpullpointsubscriptionresponse信号,要么返回所有误码中的一个误码。3:如果订阅被接受,这个应该包含一个WS-EndpointReference对一个SubscriptionManager。这个WS-Endpoint应该提供一个PullMessages操作(使用客户端检索通知并且订阅管理界面的接口被描述在规范[WS-BaseNotification]中)。BaseSubscriptionManager接口组成了PullMessages更新和退订业务操作。序列图的相互作用被显示在图22.该PullMessagesRequest包含超时和信息限制参数。图22:实时通知接口的序列图4:该设备应该立即用通知回应已经汇总的客户代表。如果没有聚集的通知,这个设备将用它自己的应答等待,直到要么产生一个客户端通知,要么指定的时间超时了。在一些情况下,将包含一些应答,具体的通知数量由消息限制参数决定。每个PullMessagesResponse应答之后,客户端可以实时查询的通知当启动一个新的PullMessagesRequest5:如果既不是终止的时间也不是相对终止的时间,在CreatePullPointSubscriptionRequest设置中,每个PullMessagesRequest可能被中断,作为一个与keep-alive对相应的PullPointSubscription。通过相对的终止时间,如果它是可得到的话或者根据设备的内部默认值,那么终止时间将被重新计算。为了通知客户端的更新时间,PullMessagesReponse应该包含当前时间和终止时间要素。当PullMessagesRequest被用作keep-alive为相应的PullPointSubscriptio,更新请求,在[WS-BaseNotification]中定义的,客户端不必呼叫,不过该设备应支持它的PullPointSubscription。15.2.1创建pullpointsubscription设备应该提供如下的创建PullPointSubscription命令表210:CreatePullPointSubscription命令CreatePullPointSubscription请求-应答信息名字描述CreatePullPointSubscription要求作为[WS-BaseNotification]的SubscriptionRequest这一消息包含相同的元素wsnt:FilterTypeFilter[0][1]wsnt:AbsoluteOrRelativeTimeTypeInitialTerminationTime[0][1]xs:anySubscriptionPolicy[0][1]CreatePullPointSubscription应答作为[WS-BaseNotification]的SubscriptionRequest这一应答包含相同的元素误码描述作为相同的SubscriptionRequest结果被使用。15.2.2pull消息设备应提供以下的PullMessages命令,对于所有的SubscriptionManager端点(被CreatePullPointSubscription命令返回的)表211:PullMessagescommandPullMessages请求-应答信息名字描述PullMessages要求此信息应处理一个SubscriptionManager得信息为了pull通知xs:durationTimeout[1][1]xs:intMessageLimit[1][1]PullMessages应答对SubscriptionManager应包含相应一个名单的通知(连接一个更新的终止时间)PullMessages的错误应答要么终止时间要么信息限制超过上限应该被设备支持,故障信息应当包括上限参数xs:durationMaxTimeout[1][1]xs:intMaxMessageLimit[1][1]误码描述没有指定的误码15.3通知流接口11.10节介绍了建立,删除和元数据的修改配置。某些元数据的配置可能包含多个结构相同的订阅。当一个数据的配置已被分配到一个文件的订阅中,客户端将使用一个简介,得到一个作为元数据流插入的包括配置通知。凭借RTP,实时传输协议流应该采取一个合发布通过一个ONVIF兼容设备。[WS-BaseNotification]定义了一个要素wsnt:NotificationMessage来包装有效的消息载荷,主题和ProducerReference。这个消息的结构与直接的通知请求相同。多元化的要素可以被放置在一个元数据文件(这部分的介绍在实时查看章节)没有明确的流通知的SubscriptionReference,因此本不能含有SubscriptionReference元素。15.4属性一个属性是一个名字的集合,数值对代表了一个独特的可设置数据。通过它们结合的就像普通事件一样的主题,源,关键值和包装,它们是唯一确定的。属性还包括一个额外的标志用以说明它是否是新建的,改变了吗,还是被删除了。当一个客户端订阅了一个代表着一定价值的属性,该设备应提供一些通知,来通知客户端的所有对象的请求属性。客户也可以要求积极的属性的数值,客户端在任何时间的订阅通过要求一个同步点。为了将所有与事情相关的属性进行分组并且呈现出目前一致的客户,就在此标准中明确了特定的属性接口。只要适用,都推荐使用此属性接口。章节15.5详细的解释了事件和属性的结构。15.4.1属性举例下面的视频分析实例显示了动态的属性行为:本规则的引擎接口的视频分析探测器可以定义域。这种探测器域用一个多边形的图像平面来描述。对于场景中的每一个对象,引擎规则确定哪些对象是在多边形内。通过订阅相应的探测器领域ObjectsInside属性,客户端可以获得这些信息。每次一个对象出现在现场,一个新的ObjectsInside属性就被创建了。客户就通过一个相关的属性创建通知(暗示是否对象出现在里面或者多边形的外面)告知了每一个对象进入或者离开多边形,将产生一个属性改变的通知,用以显示ObjectsInside属性来告诉这个对象已经改变了,当一个对象离开了这个场景,相应的ObjectsInside属性就被删除了,并且通过一个属性删除通知来告诉客户。15.5通知结构下面的代码模式是针对wsnt:NotificationMessage[WSBaseNotification]:这些与下面的XMLstructure相关:wsa:EndpointReferenceTypewsa:EndpointReferenceType...tns1:PTZController/PTZPreset/Reached“PTZConfigurationToken”项目确定了独特的组件(负责事件的检测),在这个例子中,这个组件是一个PTZ节点(被PTZ配置“PTZConfig1”引用的).事件tns1:PTZController/PTZPreset/Reached暗示了PTZ单元到了一个预设的装置。数据块包含了拿个预设的装置是它的信息。从而,预设由一个名字为“PresetName”的PresetToken“Preset5确定了下来。15.5.2消息格式通知消息的消息元素被定义在[ONVIFSchema].中这个定义在下面展示出来:...在消息元素范围之内的项目被分为了三类:来源,关键点,和数据。关键点这一组不应该被与属性不相关的通知使用。多个简单的元素和项目可以被分在不同的组里面,每一组有一个名字和值,在一个ElementItem里面,该值被表示为了一个XML元素。在SimpleItem里面,该值被价值属性指定。该项目的名字必须在所有被包含的项目中是唯一的一般推荐用SimpleItem代替ElementItem,无论什么时候可用。自从SimpleItems轻松的整合到一个通用的客户端的时候。确切的既简单又ElementItem类型信息可以从topicset(每一个消息可以增加一个描述消息负载的地方)中提取。当属性相关的通知产生时,属性操作应该被显示。“Initialized”操作码应该用来通知客户关于这个属性的创建。“Initialized”操作码应该被使用当同步点被请求的时候15.5.3属性举例,持续在章节15.4.1中的例子被要求了一个关键项目的选项,本节中的示例显示了关键项目的应用。引擎规则可能包含了FieldDetector规则。为每一个现场的对象,这些规则定义了一个ObjectsInside属性。当新对象出现在这样的领域外,下面的通知就产生了:...tns1:RuleEngine/FieldDetector/ObjectsInside源项目描述了产生这个项目的规则,当多个对象出现在现场的时候,每一个对象都拥有一个它自己所有的ObjectsInside属性,因此这些对象的身份被作为一个额外得源项目来使用,为了使属性的唯一性。这个IsInside项目是一个布尔值,指示对象是领域的内部还是外部。当对象进入一个领域,产生一个属性改变信息的规则类似于以下:...tns1:RuleEngine/FieldDetector/ObjectsInside最后,当对象离开现场的时候,一个属性删除信息就产生了:...tns1:RuleEngine/FieldDetector/ObjectsInside...在所有的独立项目之内,项目的名字属性将是唯一的。当描述的消息涉及到财产的时候,该IsProperty属性应该被设置成真。然而,这个消息不涉及到一个财产,重点组将不被展现出来。SimpleItemDescriptor的类型属性应该匹配这个XML格式定义的SimpleElement。相似的,一个ElementItemDescriptor的类型属性也应该匹配XML格式的目标元素的声明。过去常常描述有效消息载荷的本地格式文件被列举在GetEventPropertiesResponse消息中(章节15.8)消息描述举例下面的代码是一个消息描述的例子,相关财产的描述例子在15.5.315.5.5消息内容过滤器在请求订阅中,靠,客户端可以过滤通知。对于后者来说[WS-BaseNotification]提出了一个XPath1.0的特定的语言。在此规范中,由于要求了特定的信息结构,这个规范要求XPath1.0的句法的一个子集。一个ONVIF的兼容设备应该安装XPath1.0的一个子集。相关的特定语言可以参考URI:优先级与结合性:这个“与”操作比“或”操作有更高的优先级,“与”和“或”都是左结合的。在以下的语法定义中,“与”和“或”操作的优先级和结合性与XPath1.0中的是相同的。表达式的结构如下:[1]Expression::=BoolExprExpression‘and’ExpressionExpression‘or’Expression‘(‘Expression‘)’‘not’‘(‘Expression‘)’[2]BoolExpr::=‘boolean’‘(‘PathExpr‘)’[3]PathExpr::=[‘//’Prefix’SimpleItem‘’//’Prefix’ElementItem‘]NodeTest[4]Prefix::=NamespacePrefix’:’‘’[5]NodeTest::=‘[‘AttrExpr‘]’[6]AttrExpr::=AttrCompAttrExpr‘and’AttrExprAttrExpr‘or‘AttrExpr‘(‘AttrExpr‘)‘‘not’‘(‘AttrExpr‘)‘[7]AttrComp::=Attribute‘=’‘”’String‘”’[8]Attribute::=‘@Name’‘@Value’这个语法允许测试的存在,在(Source,KeyorData).的组中独立的SimpleorElementItems。此外,SimpleItems的值可能被检查。TheSimpleItemandElementItemPrefix名字空间可能与“相关。最后,这些测试可能是的任意布尔组合。可以指定下面的表达式:只返回包含视频源配置1的参考的通知。boolean(//tt:SimpleItem[@Name=”VideoSourceConfigurationToken”and@Value=”1”])返回不包含视频分析配置的参考的通知。not(boolean(//tt:SimpleItem[@Name=”VideoAnalyticsConfigurationToken”]))返回与正运行在视频原配置1上的视频分析配置2确切关联的的通知。boolean(//tt:SimpleItem[@Name=”VideoAnalyticsConfigurationToken”and@Value=”2”])andboolean(//tt:SimpleItem[@Name=”VideoSourceConfigurationToken”and@Value=”1”])返回与视频原配置相关联但与视频分析配置不关联的通知。boolean(//tt:SimpleItem[@Name=”VideoSourceConfigurationToken”and@Value=”1”])andnot(boolean(//tt:SimpleItem[@Name=”VideoAnalyticsConfigurationToken”]))返回通知,当对象进入或者出现在““myImportantField”。boolean(//tt:SimpleItem[@Name=”IsInside”and@Value=”true”])andboolean(//tt:SimpleItem[@Name=”Rule”and@Value=”myImportantField”])15.6同步点在15.4章节介绍的性能,通知客户用一个统一的方式对属性创建,改变和删除。当一个客户想与设备属性一起参与性能的设置,它可以请求重复所有目前状态属性的同步点。所有产生了通知的属性操作被设置到了“Initialized”(看章节15.5)。同步点从要么SubscriptionResponse返回要么在CreatePullPointSubscriptionResponse返回。通过通知接口的通知运输,更新的属性就被传递出去了。通过所有的订阅管理终端,提供了以下的操作:表212:设置同步命令点命令设置同步命令点请求-应答消息名字描述设置同步命令点请求消息空设置同步命令点应答消息空误码描述没有指定的命令错误当客户使用一个流接口通知时,客户应该使用设置同步点的操作(被定义在媒体服务,看章节11.18)15.7主题结构本标准扩展的主题框架在[WS-Topics]规范中定义了。章节15.7.1描述了一个ONVIF主题名字空间(对于供应商的具体议题,这应该被视为最基本的)。附录0为这些扩展列举了典型的例子,章节15.7.2定义了一个主题属性的接口。这些界面应该被一个ONVIF兼容设备采取。章节15.7.3包含了信息描述语言。所有的主题都从ONVIF主题名字空间描述主题类型通过15.7.3章节。章节15.7.3定于了设备支持的主题表达方言(TopicExpressionDialects)。15.7.1ONVIF主题名字空间[WS-Topics]规范区别某一个主题命名空间的主题树与一个网站服务设置的主题。这个区别允许供应商提及一个共同话题的命名空间,当只使用该部分的主题的时候。如果一个存在名字空间的主题树包括了一个可用主题的一个子集,通过定义一个新的主题名字空间,种植这个主题树。一个新的主题名字空间就确定了,通过对存在的一个主题名字空间追加一个新的话题,就像[WS-Topics]规范描述的那样。以下的根话题定义在ONVIF名字空间中,所有提到这些话题的通知应该使用消息格式就像章节15.5.2描述的那样:15.7.2主题类型信息类型信息被添加到一个主题元素的下面,通过增加一个定义在15.5.4中的消息描述类型的消息描述元素。主题元素可以被wstop:topicattribute用"true"值来确定.下面的例子显示了一个主题设置的主题如何与消息描述被讨论:15.7.3主题过滤器一个ONVIF兼容设备应该支持一个定义在[WSTopics]规范中的具体主题表达。在主题范围树内这个规范定义了一个指定的主题范围。下面的话应该被确定,当一个具体的主题表达在订阅的过滤器中作为一个TopicExpression来使用。以下的主题表达格式应该被设备支持。通过使用一个“或”操作,加上一个与话题子树匹配的字符串,语法可以扩展具体的课题表达式。这个扩展的语法允许一个任意主题设置的选择在一个订阅之类。作为主题表达语法被相同的方法描述在[WS-Topics1.3]规范中[3]TopicExpression::=TopicPath(‘’TopicPath)[4]TopicPath::=RootTopicChildTopicExpression(\'//.’)[5]RootTopic::=QName如果一个命名空间的前缀包括在RootTopic之内,它应该符合一个有效的话题命名空间定义和本地名称对应的一个根主题的名称被定义在这个命名空间之中。[6]ChildTopicExpression::=‘/’ChildTopicName[7]ChildTopicName::=QNameNCName这个NCname和这个QNAME的本地部分应该与主题的名称对应起来在后续路径之内(在每一个斜线表示另一个子主题元素的层次在这个路径中。)为了参考这个TopicExpression特定语言,下面的URI应该被使用:如果TopicExpression的结尾用了一个“//”字符,它暗示这个TopicExpression匹配一个话题子树。比如:“tns1:RuleEngine/FieldDetector//.”这个确定了子树组成tns1:引擎规则/领域探测器和它所有的后裔下面的示例演示了ConcreteSet主题表达的用法:搜寻通知(有视频分析主题的)作为双亲主题:搜寻通知(有视频分析和引擎规则的)作为双亲主题:搜寻由线路探测器或者领域探测器产生的通知:15.8获取事件属性[WS-BaseNotification]规则定义了一个WS-Resouce选项属性。这个规范不要求WS-ResourceProperty接口来执行。相反的,接下来的直接接口应该靠一个ONVIF兼容设备来直接执行,为了提供一个设备支持的过滤特定语言,文件格式和主题的信息。表213:获取时间的属性命令获取时间属性请求-应答信息名字描述获取时事件性的请求这是一个空消息获取事件属性应答xs:anyURITopicNamespaceLocation[1][unbounded]xs:booleanFixedTopicSet[1][1]wstop:TopicSetTypeTopicSet[1][1]xs:anyURITopicExpressionDialect[1][unbounded]xs:anyURIMessageContentFilterDialect[1][unbounded]xs:anyURIProducerPropertiesFilterDialect[0][unbounded]xs:anyURIMessageContentSchemaLocation[1][unbounded]误码描述没有命令指定错误一个ONVIF兼容设备应该做出回应,并且声明它的TopicSet是否是固定的,哪些主题是提供了的,支持哪些方言。接下来的主题表达语言是ONVIF兼容设备指令的(看15.7.3章节):下面的MessageContentFilterDialects是ONVIF兼容设备指令的(看15.5.5章节)这个设备并不要求任何ProducerPropertiesDialect的支持消息内容描述语言,在15.5.4介绍的允许参考指定的类型。为了缓解这些类型整合到客户端应用程序GetEventPropertiesResponse应该列出所有的URI方位来架构那些型号已经被用到了通知的描述中的文件带有MessageContentSchemaLocation要素。这表至少包含ONVIF格式文件的URI15.9SOAP错误消息当处理要么来自客户要么来自SubscriptionManager的消息时,如果设备遇到失败,设备将产生一个SOAP1.2的错误消息。所有的SOAP1.2错误消息应该产生根据[WS-BaseNotification]和[WSTopics]规范15.10通知例子下面的例子是一个完整的通信模式的通知。它采用实时的通知接口Pull-Point来接收通知的。15.10.1获取事件属性请求15.10.2获取事件属性应答在这个例子中,设备应答使用了ONVIF主题名字空间(这个描述可以从下载到)这个主题设置不随时间的变化并且组成一个单一的主题tns1:RuleEngine/LineDetector/Crossed.与这个主题联系在一起的消息包含关于VideoSourceConfigurationToken的信息,VideoAnalyticsConfigurationToken和已经过线的对象。设备支持下面两种TopicExpressionDialects:true15.10.3创建PULLPOIT订阅客户可以用TopicProperties信息订阅具体的通知。下面的XML例子为设备引擎规则产生的通知显示订阅。客户仅仅通过参考VideoAnalyticsConfiguration“2”andVideoSourceConfiguration“1”.的通知给出反应。这个订阅有一分钟的超时,如果订阅没有明确更新的或者消息没有定期的拉出来,那么一分钟之后将自动结束。uestPT1M15.10.4创建PULLPOIT订阅应答当设备接受订阅的时候,它将返回代表了订阅终点的URI。此外,将通知客户关于当前设备的时间和创建订阅的终止时间。Response2008-10-09T13:52:592008-10-09T13:53:5915.10.5拉消息请求客户发送一个拉取信息的请求给终点(在CreatePullPointSubscriptionResponse中给出的终点)目的是获得一个与订阅相关的通知。下面的样本要求包含一个5秒的超时,并且限制这个应答消息的总数量到2.PT5S215.10.6拉消息应答下面的拉取信息应答包含匹配这个订阅的两个通知。应答通知客户两个对象已经越过了“MyImportantFence1”and“MyImportantFence2规则相关的线。2008-10-10T12:24:582008-10-10T12:25:5815.10.7退订请求客户端不得不明确的终止订阅通过使用一个可以立即释放资源的退订请求的设备。该请求是针对认购终端返回的,在创建PullPoint认购反应时候15.10.8退订应答一旦设备回复一个退订应答时,认购终端不再可用。15.11服务错误码除了定义在[WSBaseNotification].中的以外,事件服务没有定义任何具体的服务故障。。16PTZ控制PTZ控制提供云台全方位(上下、左右)移动及镜头变倍、变焦控制。一个带有云台全方位移动及镜头变倍变焦能力的设备应该支持PTZ控制。类似的,一个具备变焦控制或全方位移动的设备也应该支持PTZ控制。[ONVIFPTZWSDL]中详细定义PTZ控制。对应的命令操作说明请参考命令描述。PTZ控制覆盖了广泛的摄像设备。PTZ设备可看作一个圆顶模型,可以改变摄像机的视角而不依赖于变焦控制PTZ的运动控制运用了坐标系模型,一个设备列出了一套他支持的坐标系统。规范提供了一套通用的可应用到任何PTZ设备的坐标空间,使进一步定义坐标系统成为了可能,使之更适用于圆顶设备。PTZ控制应用于以下设备:圆顶或云台摄像机通过外部串口连接,带圆顶或PTZ摄像机的网络视频编码器带数字PTZ的固定百万像素摄像机带变焦的固定摄像机PTZ控制结构由3个主块组成:PTZNode–一个底层的PTZ实体,用于管理PTZ设备和指定的特别功能PTZConfiguration–默认的坐标系统和对特定节点的默认的速度PTZControlOperation–移动,预设和辅助操作PTZ配置到配置文件中,PTZ控制通过媒体配置文件(见4.8.1),PTZ的控制操作都是通过一个特定的配置文件来完成的。PTZ控制不提供创建或操作PTZ节点命令,对于每个可用的PTZ节点,应至少提供一个PTZ配置给这个配置节点,这个PTZ配置能够被添加到媒体配置文件中去,用于控制圆顶摄像机。每个媒体配置文件至多有一个PTZ配置。在媒体文件中,PTZ配置和视频源配置被归为一类,因为视频源配置指的是通过PTZ配置控制的摄像机。一旦存在的PTZ设备准备运行,一个具有PTZ功能的设备应该提供至少一个随时可用的PTZ配置文件,PTZ配置文件应包含基本的设置和一个相应的视频源配置。16.1PTZ模型PTZ模式把PTZ单元可能出现的运动分配给方向和变焦部分。通过控制PTZ单元,服务提供了绝对的,相对的和连续的运动控制。不同的坐标系和单元都用来支撑这些操作。PTZ服务提供了一个AbsoluteMove操作来移动PTZ设备到一个指定的位置,服务希望绝对的位置能作为一个参数定位到坐标系统中。镜头摇动的速度和变焦能被随意的指定,速度值是一个正的标量,它不能含有任何的方向信息。在没有当前位置的情况下,不能给摄像头的转动指定速度和变焦,否则它会产生一个不平滑和不直观的行为。PTZ服务中介绍了RelativeMove操作,用于控制圆顶摄像机移至相对位置,但是没有必要知道现在的位置。操作只需要一个位置参数,参数是根据引用的相对坐标系设置的。规范区分相对和绝对坐标系,是因为在某些情况下,一个定义好的相对坐标系没有绝对坐标系存在。一个可选的速度参数可以添加到RelativeMove操作中,它和绝对移动操作具有相同的意思。最后,PTZ设备可以通过ContinuousMove命令,使其在某一方向,某一速度下进行连续的移动。因此,一个速度矢量包含两个方面:方向和速度信息,后者通过矢量长度来表达通过适当的扩张坐标空间URIs,云台坐标能够被唯一的指定,一个空间URI就表示一个根本的坐标系统。16.8章节定义了一套坐标系的标准集。假如PTZ节点支持相对应类型的运动,那么PTZ节点就应该使用这些坐标系。在很多情况下,全方位位置移动就是说,在球形坐标系中摇动和倾斜一定的角度,一个操控固定百万像素摄像机的数字PTZ,通过静态的投影面上的一个像素位置,可以明确的知道摄像机的视角。因此,在这种情况下,为了获得PTZ设备物理的和虚拟的移动,需要使用不同的坐标系。这些和其他单独的坐标系被定义在一个独立的文档----ONVIFPTZ坐标空间。为了使NVCs能充分利用PTZ节点的特性,一般,PTZ节点可以定义它自己独有的一些特性到坐标系中。通过GetNode或GetNodes操作,PTZ节点可以重新获取寻PTZ节点描述,包含特定PTZ节点支持的所有坐标系。每一个坐标系属于以下分组中的其中之一:AbsolutePanTiltPositionSpace绝对移动位置空间RelativePanTiltTranslationSpace相对移动传输空间ContinuousPanTiltVelocitySpace连续移动速率空间PanTiltSpeedSpace移动速度空间AbsoluteZoomPositionSpace绝对变焦位置空间RelativeZoomTranslationSpace相对变焦传输空间ContinuousZoomVelocitySpace连续变焦速率空间假如坐标系不支持以上某组中的坐标系,那么相应的移动操作就不适合PTZ节点。例如,假如列表不包含一个绝对移动位置空间,那么当指定一个绝对的位置移动时,绝对绝对移动操作就会失败。不同的空间就需要相对应的命令来描述。16.2PTZ节点一个具备PTZ功能的设备可以有多个PTZ节点。PTZ节点可以表示机械的的PTZ设备,上传PTZ设备或数字PTZ设备。在PTZ控制API中PTZ节点是最底层的实体,同时反映支持的PTZ功能。PTZ节点的引用是通过它的名称或它的标识符,PTZ服务不提供创建或操作PTZ节点的功能。以下属性应该提供给所有的PTZ节点:Token–一个标识符,用于引用PTZ节点Name–由安装者给的一个名字SupportedPTZSpaces–一系列PTZ节点可用的坐标系,对于每一个坐标系,PTZ应该指定它的允许范围MaximumNumberOfPresets–假如一个预设被支持,那么所有的预设操作应该适用于这个节点HomeSupported–一个布尔值指定一个起始位置的可用性,假如为真,对于PTZ节点起始位置操作应该可用的AuxiliaryCommands–一系列支持的辅助命令。假如列表不为空,则辅助操作应该对PTZ节点可用。16.2.1获取所有节点(GetNodes)一个可用的PTZ设备应该具备这个操作并返回这个设备上的所有可用的PTZ节点。表241:获取节点命令获取节点(GetNodes)请求应答(Request-Response)消息名字描述读取节点请求(GetNodesRequest)这是一个空消息读取节点响应(GetNodesResponse)响应消息包含设备上一系列的PTZ节点tt:PTZNodePTZNode[0][unbounded]故障代码描述env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.2.2获取节点(GetNode)假如存在一个具备PTZ功能的设备,那么它就能实现获取节点操作并返回被请求节点的特性,否则,设备应该返回一个适当的错误信息。表215:获取节点命令获取节点(GetNode)请求应答(Request-Response)消息名字描述读取节点请求(GetNodeRequest)这个消息中包含了被请求的节点tt:ReferenceTokenNodeToken[1][1]读取节点响应(GetNodeResponse)请求的PTZNode响应消息tt:PTZNodePTZNode[0][unbounded]故障代码描述env:Senderter:InvalidArgValter:NoEntity设备上没有这样的PTZNodeenv:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ16.3PTZ配置PTZ配置包含PTZ节点的归属。这个归属不能被一个NVC所改变。以下元素是PTZ配置的一部分:PTZNodeToken–配置PTZ节点的归属DefaultAbsolutePanTiltPositionSpace–假如PTZ节点支持绝对全方位运动,那么在默认情况下,它应该指定一个绝对全方位位置空间DefaultRelativePanTiltTranslationSpace–假如PTZ节点支持相对全方位运动,那么在默认情况下,它应该指定一个相对全方位转化空间DefaultContinuousPanTiltVelocitySpace–假如PTZ节点支持连续的全方位运动,那么在默认情况下,它应该指定一个连续的全方位速率空间DefaultPanTiltSpeedSpace–假如PTZ节点支持绝对的或相对的全方位运动,那么在默认情况下,它应该指定一个全方位速度空间DefaultAbsoluteZoomPositionSpace–假如PTZ节点支持绝对的变焦,那么在默认情况下,它应该指定一个绝对的变焦位置空间DefaultRelativeZoomTranslationSpace–假如PTZ节点支持相对的变焦,那么在默认情况下,它应该指定一个相对的变焦转换空间DefaultContinuousZoomVelocitySpace–假如PTZ节点支持连续的变焦,那么在默认情况下,它应该指定一个连续的变焦速率空间DefaultZoomSpeedSpace–假如PTZ节点支持绝对或相对的变焦,那么在默认情况下,它应该指定一个变焦速度空间DefaultPTZSpeed–假如PTZ节点支持绝对或相对的PTZ移动,它应该指定一个默认的PTZ速度空间DefaultPTZTimeout–假如PTZ节点支持连续的移动,它应该定义一个默认的超时在移动停止后PanTiltLimits–?对于支持绝对全方位移动的PTZ设备,应该定义一个全方位移动限制机制。假如有这个机制,那么在配置中表示支持全方位移动限制机制。假如限制使能,那么表示全方位移动应保持在规定的范围内,全方位不使能通过设置–INF或+INF实现。ZoomLimits–对于支持绝对变焦的PTZ设备,应该定义一个变焦限制机制。假如有这个机制,那么在配置中表示支持变焦限制机制。假如限制使能,那么表示变焦应保持在规定的范围内,变焦不使能通过设置–INF和+INF实现。在NVCs没有指定一个坐标系的情况下,默认的位置/平移/速率空间允许发送移动请求,在没有明确的速度设定下,默认的速度为控制移动请求(绝对的,相对的,预设的)的速度。云台全方位移动限制的移动范围是通过一个二维空间范围设定设定,它能映射一个指定的绝对移动位置空间,对于支持云台全方位移动的PTZ节点,至少需要一个全方位移动位置空间,这个限制适用于所有的被支持的绝对,相对和连续的全方位移动。对于设定了限制的摄像头应该在坐标系内检查限制,意思就是说,即使在不同的坐标系中指定移动操作,但在最后,请求的移动都应该转换到已做过限制监测的坐标系中。当指定的一个相对或连续的移动操作需要超出指定的限制范围,那么PTZ单元就必须扩大指定的限制范围,变焦限制也必须相应的调整。16.3.1读取所有配置命令(GetConfigurations)通过GetConfigurations命令操作,一个具有PTZ功能的设备应该能返回所有有效的PTZ配置。表216:GetConfigurations命令读取配置(GetConfigurations)请求应答(Request-Response)消息名字描述读取所有配置请求(GetConfigurations)这是一个空消息读取所有配置响应(GetConfigurationsResponse)响应消息包含所有存在的PTZConfigurationtt:PTZConfigurationPTZConfiguration[0][unbounded]故障代码描述env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.3.2读取配置命令(GetConfiguration)假如存在一个具备PTZ功能的设备,那么通过GetConfiguration命令操作,它就能返回请求的PTZ配置。表217:读取配置命令获取节点(GetConfiguration)请求应答(Request-Response)消息名字描述读取配置请求(GetConfigurationRequestt)这个消息中包含了被请求的PTZ配置tt:ReferenceTokenConfigurationToken[1][1]读取配置响应(GetConfigurationResponse)响应消息包含被请求的PTZ配置tt:PTZConfigurationPTZConfiguration[1][1]故障代码描述env:Senderter:InvalidArgValter:NoConfig被请求的配置不存在env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.3.3读取配置选项(GetConfigurationOptions)一个具备PTZ功能的设备应该支持GetConfigurationOptions操作。它返回一系列支持的坐标系列表,包括它们的范围限制。因此,这个选项可能不同,依赖于是否PTZ配置被分配给一个包含视频源配置的配置文件。在这种情况下,选项可以包含被视频源配置描述的影像坐标系。每一个列出的坐标系都属于16.1章列出的分组之一。假如PTZ节点支持连续的移动,它应该返回一个在PTZ节点能接受的超时范围内。表218:读取配置选项命令获取配置选项(GetConfigurationOptions)请求应答(Request-Response)消息名字描述读取配置选项请求(GetConfigurationOptions-Request)这个消息中包含了PTZ配置标号ConfigurationToken指定打算使用的配置Tt:ReferenceTokenConfigurationToken[1][1]读取配置选项响应(GetConfigurationOptions-Response)响应消息包含配置选项tt:PTZConfigurationOptionsPTZConfigurationOptions[1][1]故障代码描述env:Senderter:InvalidArgValter:NoConfig被请求的配置不存在env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.3.4设置配置(SetConfiguration)一个具备PTZ功能的设备应该能实现SetConfiguration操作。强制保持标志(ForcePersistenceFlag)表示在重启设备后改变是否保持。表219:设置配置命令设置配置(SetConfiguration)请求应答(Request-Response)消息名字描述设置配置请求(SetConfigurationRequest)PTZConfiguration元素包含改进的PTZ配置,配置应该存在于设备中。ForcePersistence命令决定改变是否存储和在重启后改变是否保持,假如为真,那么在重启后改变保持,假如为假,那么在重启后改变可能回归到先前的值tt:PTZConfigurationPTZConfiguration[1][1]xs:booleanForcePersistence[1][1]设置配置响应(SetConfigurationResponse)这是一个空消息故障代码描述env:Senderter:InvalidArgValter:NoConfig被请求的配置不存在env:Senderter:InvalidArgValter:ConfigModify配置参数不适合env:Receiverter:Actionter:ConfigurationConflict新的配置与其他配置冲突env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.4移动操作这个部分描述了三个操作,绝对地,相对地或连续地移动PTZ装置。所有的操作需要一个ProfileToken,ProfileToken用于定位含有一个PTZ配置的媒体配置文件。所有的移动命令是非阻塞的,意思是说它们不用等到请求移动操作完成、最后一个移动操作可以被覆盖通过送一个新的移动请求。16.4.1绝对的移动(AbsoluteMove)假如PTZ节点支持绝对的全方位和变焦移动,那么它应该支持AbsoluteMove操作。这个命令的位置参数指定了PTZ装置移动的绝对位置。它分裂成一个全方位移动操作元素和一个变焦操作元素。假如全方位位置被省略,那么通过这个命令,现在的位置应该不受影响。这个同样的适用于变焦操作。涉及的位置空间应该是PTZ节点支持的绝对位置空间。假如空间信息被省略,那么应该使用PTZ配置默认的空间,PTZ配置属于指定媒体配置文件的一部分。通过只给支持的情况提供绝对移动位置空间,一个设备可以支持绝对全方位移动、绝对变焦移动或没有绝对移动。在移动到请求位置过程中,PTZ配置的默认速度参数可以被重写,假如空间引用了速度参数,那么PTZ节点就应该支持速度空间。假如请求绝对位置没有被获得,那么操作就会失败。表220:绝对移动命令绝对移动(AbsoluteMove)请求应答(Request-Response)消息名字描述绝对移动(AbsoluteMove)这个消息包含媒体文件的引用,一个用于指定目标位置的Position矢量和一个可选的Speedtt:ReferenceTokenProfileToken[1][1]tt:PTZVectorPosition[1][1]tt:PTZSpeedSpeed[0][1]绝对移动响应(AbsoluteMoveResponse)这是一个空消息故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Senderter:InvalidArgValter:SpaceNotSupported空间引用了一个PTZ节点不支持的参数env:Senderter:InvalidArgValter:InvalidPosition请求的位置越界env:Senderter:InvalidArgValter:InvalidSpeed请求的速度越界env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ16.4.2相对移动(RelativeMove)假如PTZ节点支持相对的全方位或相对的变焦移动,那么它应该支持RelativeMove操作,这个操作的意思就是说从当前位置移至PTZ设备想要到达的位置。操作分为方位元素和变焦元素。假如方位元素被省略,那么命令应该对现在的位置没有影响。同样适用于变焦元素。转换元素空间应该是被节点支持的转换空间。假如对于转换参数,空间信息被省略,那么媒体文件中的PTZ配置对应的默认空间会被使用。通过只给支持的情况提供绝对转换空间,一个设备可能支持相对全方位移动,相对变焦移动或没有相对移动。在请求转换移动过程中,PTZ配置的默认速度参数可以被重写,假如空间引用在速度参数之内,它们应该是被PTZ节点支持的速度空间。通过送0值给全方位移动和变焦,命令可以使PTZ装置停止在当前位置。停止应该有完全相同的影响,而不依赖于涉及的相对空间。假如被请求的转换通向一个不能到达的绝对的位置,PTZ节点应移动到可达到的正确位置的边缘。表221:相对移动命令相对移动(RelativeMove)请求应答(Request-Response)消息名字描述相对移动请求(RelativeMoveRequest)这个消息引用了一个媒体文件,一个相对于当前位置的位置Translation参数和一个可选的Speed参数tt:ReferenceTokenProfileToken[1][1]tt:PTZVectorTranslation[1][1]tt:PTZSpeedSpeed[0][1]相对移动响应(RelativeMoveResponse)这是一个空消息故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Senderter:InvalidArgValter:SpaceNotSupported空间涉及了一个PTZ节点不支持的参数env:Senderter:InvalidArgValer:InvalidTranslation请求的转换位置越界env:Senderter:InvalidArgValter:InvalidSpeed请求的速度越界env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ16.4.3连续移动(ContinuousMove)一个具备PTZ功能的设备应该支持连续移动。这个命令的速率参数指定一个已确定的速度值给摄像头的移动和变焦。方位控制和变焦控制都是可选择的,假如方位控制元素被忽略,那么命令将不会对方位移动造成影响。这个同样适用于变焦移动。涉及到速率元素的空间应该是被PTZ节点支持的速率空间,假如空间信息忽略了速率参数,那么就会使用相对应的配置文件中PTZ配置里的默认参数,通过对支持的事件提供速率空间,一个设备可以支持连续全方位移动,连续变焦移动。PTZ配置中的默认超时参数可以被重写。超时参数指定PTZ节点连续移动的时长。通过送0值给全方位移动和变焦,命令可以使PTZ装置停止在当前位置。停止应该有完全相同的影响,而不依赖于涉及的速率空间。这个命令有同样的影响在连续移动中,就像在16.4.4章节中指定的停止命令。假如被请求的速率通向一个不能到达的绝对的位置,PTZ节点应移动到可达到的位置边缘。连续移动的一个典型应用是通过控制杆控制PTZ。表222:连续移动命令连续移动(ContinuousMove)请求应答(Request-Response)消息名字描述连续移动请求(ContinuousMoveRequestt)这个消息引用了一个媒体文件,一个速率Velocity参数矢量指定方位移动和变焦的速率和一个可选的超时Timeout参数tt:ReferenceTokenProfileToken[1][1]tt:PTZSpeedVelocity[1][1]xs:durationTimeout[0][1]连续移动响应(ContinuousMoveResponse)这是一个空消息故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Senderter:InvalidArgValter:SpaceNotSupported空间涉及了一个PTZ节点不支持的参数env:Senderter:InvalidArgValter:TimeoutNotSupported请求的超时越界env:Senderter:InvalidArgValter:InvalidVelocity请求的速率越界env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ16.4.4停止(Stop)一个具备PTZ功能的设备应该支持停止操作,假如停止命令被执行,那么命令会停止所有进行中的方向和变焦运动。通过设定相对应的参数,停止命令可以实现只停止某个特定的动作。表223:停止命令连续移动(Stop)请求应答(Request-Response)消息名字描述停止请求(StopRequest)这个消息涉及到一个媒体文件和停止参数tt:ReferenceTokenProfileToken[1][1]xs:booleanPanTilt[0][1]xs:booleanZoom0][1]停止响应(StopResponse)这是一个空消息故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ16.4.5读取状态(GetStatus)一个具有PTZ功能的设备应该能通过读取状态(GetStatus)命令报告PTZ状态。PTZ状态包含以下信息:Position(optional)–指定PTZ装置的绝对参数,相应的PTZ配置的默认绝对空间应该在位置元素之内被应用。MoveStatus(optional)–表示是否云台设备是正在移动,闲置或未知状态Error(optional)–发生一个PTZ错误UTCTime–当这个状态产生时,指定实时时间表224:读取状态读取状态(GetStatus)请求应答(Request-Response)消息名字描述读取状态请求(GetStatusRequest)这个消息引用了一个媒体文件,请求PTZ状态tt:ReferenceTokenProfileToken[1][1]读取状态响应(GetStatusResponse)这个消息包含一个被请求配置文件的状态PTZStatustt:PTZStatusPTZStatus[1][1]故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件不存在env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标记不涉及PTZ配置env:Receiverter:Actionter:NoStatus在媒体文件中没有适合的状态env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ16.5起始位置操作这个部分描述如何管理PTZ节点的预设,对于支持预设的PTZ节点都应该能够执行这个操作,所有的操作需要一个文件标识符,文件标识符在媒体文件中PTZ配置里。16.5.1设置预设值(SetPreset)设置预设命令是保存当前设备的位置参数,以便通过GotoPreset命令使设备能够移动到保存的预设位置。为了能创建一个新的预设,SetPresetRequest没有包含预设标识符。假如创建成功,响应就会反馈一个唯一的标识符。通过相应的预设标识符,预设可以被重新设定。在重写或创建两种情况下,一个可选的预设名(PresetName)可以被指定,假如在设置预设操作时PTZ设备正在移动,那么操作就会失败。设备在PTZ预设内可以保存额外的状态属性如成像参数,然后可以通过GotoPreset操作可取回。表225:设置预设命令设置预设(SetPreset)请求应答(Request-Response)消息名字描述设置预设请求(SetPresetRequest)这个消息引用了一个媒体文件和被请求的预设名称PresetName或标识符PresetTokentt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenPresetToken[0][1]xs:stringPresetName[0][1]设置预设响应(SetPresetResponse)消息返回被设置的预设tt:ReferenceTokenPresetToken[1][1]故障代码描述env:Senderter:InvalidArgValter:PresetExist被要求的名称已存在另一个预设中env:Senderter:InvalidArgValter:InvalidPresetName预设名称过长或包含一个无效的字符env:Receiverter:Actionter:Moving预设不能被设定当PTZ装置在移动过程中env:Receiverter:Actionter:TooManyPresets达到预设的最大值env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgVal请求的文件标识符不存在ter:NoTokenenv:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.5.2读取所有预设值(GetPresets)GetPresets命令返回保存的预设值,由以下元素组成:Token–标识符,对应预设的唯一识别符Name–名称,一个可选的助记符PTZPosition–PTZ位置,一个可选的绝对位置,假如PTZ节点支持绝对的方位位置空间,那么全方位位置应该被指定。假如PTZ节点支持绝对的变焦位置空间,那么变焦位置应该被指定。表226:读取预设命令读取预设(GetPresets)请求应答(Request-Response)消息名字描述读取预设请求(GetPresetsRequest)这个消息引用了一个媒体文件,用于告知请求读取的位置tt:ReferenceTokenProfileToken[1][1]读取预设响应(GetPresetsResponse)消息包含一系列所请求媒体文件的预设值Presettt:PTZPresetPreset[0][unbounded]故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ16.5.3返回预设GotoPreset命令召回先前的预设,假如速度参数被忽略,那么相应的PTZ配置中的默认速度就会被使用。对于PTZ节点,速度参数仅能在速度空间可用的情况下被指定。GotoPreset命令是一个非阻塞操作,它能够被其他移动命令所中断。表227:转到预设命令返回预设(GotoPreset)请求应答(Request-Response)消息名字描述返回预设请求这个消息涉及到一个媒体文件,通过标识符鉴定移动至(GotoPresetRequest)预设要发生的位置tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenPresetToken[1][1]tt:PTZSpeedSpeed[0][1]返回预设响应(GotoPresetResponse)空消息故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgValter:NoToken请求的文件标识符不存在env:Senderter:InvalidArgValter:SpaceNotSupportedPTZ节点不支持的一个空间env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Senderter:InvalidArgster:InvalidSpeed要求的速度超出范围env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.5.4移除预设(RemovePreset)RemovePreset命令是删除先前设定的预设。表228:删除预设命令移除预设(RemovePreset)请求应答(Request-Response)消息名字描述移除预设请求(RemovePresetRequest)这个消息涉及到一个媒体文件,通过标识符告知删除哪个被定义的预设tt:ReferenceTokenProfileToken[1][1]tt:ReferenceTokenPresetToken[1][1]移除预设响应(RemovePresetResponse)空消息故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Sender请求的文件标识符不存在ter:InvalidArgValter:NoTokenenv:Senderter:InvalidArgValter:NoPTZProfile请求的文件节点不涉及PTZ配置env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.6归位点操作这章描述的操作用于管理PTZ节点的归位点。这些操作应用于支持归位点操作的PTZ节点。所有的操作需要一个文件标识符来定位一个媒体文件包括一个PTZ配置。“原先”位置可以通过设置归位(SetHome)操作设定或是一个固定位置的PTZ装置。16.6.1转到归位点(GotoHomePosition)这个操作移动摄像机到他的原先位置,假如速度参数是忽略的,那么就用相对应PTZ配置中的默认速度,对于PTZ节点,速度参数只能在速度空间可用的情况下被指定。命令是非阻塞的,他能被其它的移动命令所中断。表229:转到归位点命令转至归位点(GotoHomePosition)请求应答(Request-Response)消息名字描述转至归位点请求(GotoHomePositionRequest)这个消息涉及到一个媒体文件,告知操作发生位置tt:ReferenceTokenProfileToken[1][1]tt:PTZSpeedSpeed[0][1]转至归位点响应(GotoHomePositionResponse)空消息故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Receiverter:Actionter:NoHomePosition请求的文件没有定义中心位置env:Senderter:InvalidArgValter:NoPTZProfile请求的文件节点不涉及PTZ配置env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.6.2设置归位点(SetHomePosition)SetHomePosition操作保存当前的位置参数作为归位点,以便归位点操作能够请求设备移至原先位置。假如“原先”位置是固定的,并且不能被重写,那么设置归位点命令应该返回一个失败标志;假如设置归位点成功,那么用GotoHomePosition命令它应该能移至原先位置。表230:设置归位点命令设置归位点(SetHomePosition)请求应答(Request-Response)消息名字描述设置归位点请求(SetHomePositionRequest)这个消息涉及到一个媒体文件,告知归位点设置位置tt:ReferenceTokenProfileToken[1][1]设置归位点响应(SetHomePositionResponse)空消息故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Receiverter:Actionter:CannotOverwriteHome归位点是固定的,不能被修改env:Receiverter:ActionNotSupportedter:PTZNotSupported设备不支持PTZ16.7辅助操作这章描述管理PTZ节点的辅助命令,如一个红外灯,一个加热器或一个刮水器。PTZ节点应该支持这些操作,在节点属性中表明这些辅助命令。在PTZ配置文件中的媒体文件中,所有的操作,需要一个文件标识符。16.7.1发送辅助命令(SendAuxiliaryCommand)这个操作用于调用设备上的一个辅助命令,支持的命令可以通过PTZ节点属性查找到。辅助命令应该和PTZ节点支持的命令列表相匹配;而不支持其它的辅助命令。假如PTZ节点列有irlampon命令,那么辅助命令参数应该是irlampon,,当PTZ节点支持辅助命令的时候,SendAuxiliaryCommand应该被响应。表231:送辅助命令送辅助命令(SendAuxiliaryCommand)请求应答(Request-Response)消息名字描述送辅助命令请求(SendAuxiliaryCommandRequest)这个消息涉及到一个媒体文件,告知辅助请求位置和辅助请求数据tt:ReferenceTokenProfileToken[1][1]tt:AuxiliaryDataAuxiliaryData[1][1]送辅助命令响应(SendAuxiliaryCommandResponse)消息包含辅助响应tt:AuxiliaryDataAuxiliaryResponse[1][1]故障代码描述env:Senderter:InvalidArgValter:NoProfile请求的文件标识符ProfileToken不存在env:Senderter:InvalidArgValter:NoPTZProfile请求的文件标识符不涉及PTZ配置env:Receiverter:ActionNotSupportedter:PTZNotSupported不支持PTZ16.8预定PTZ空间空间是用来指定绝对的,相对的和连续的移动。然而绝对的移动需要一个绝对的位置,相对的移动通过一个位置转换来指定,连续移动需要一个速率的规范(相对运动超时),对这三种情况,应用不同的坐标系用于描述想要的移动。泛化空间不会指定基本的PTZ模型,以便它能够应用于任何的PTZ硬件。附加的空间被定义在ONVIFPTZ坐标空间文档中。16.8.1绝对的位置空间泛化的全方位移动空间所有支持绝对方位移动的PTZ节点,都应该提供泛化的全方位位置空间,因为他不涉及到一个指定的物理范围。反之,当一个全范围的PTZ节点,在接下来的空间描述中,范围规格化为-1到1时,那么范围应该被定义。-1.01.0-1.01.0泛化的变焦位置空间所有支持绝对变焦的PTZ节点都应该提供泛化的变焦位置空间,因为他不涉及指定的物理范围。反之,当全范围的变焦范围被规格化为0(最短焦距)到1(最长焦距)时,则应该定义范围。没有一个规定关于泛化的变焦范围是怎样管理变焦的放大倍率,视场或物理的变焦尺寸。这个结果在接下来的空间描述中:0.01.016.8.2相对的转换空间一个相对的方位转换空间是使PTZ装置在某个指定方向上移动一定的位置,而不用知道摄像机当前位置。泛化的方位转换空间所有支持相对方位移动的PTZ节点都应该提供泛化的方位转换空间,因为他不涉及指定的物理范围。反之,则应该定义范围,当全部正反转换范围被规格化为-1到1时,也就是说正的转换将会表示顺时针转或在向右/上的方向移动,如同接下来的空间描述:-1.01.0-1.01.0泛化的变焦转换空间所有支持相对变焦的PTZ节点都应该提供泛化的变焦转换空间,因为他不涉及指定的物理范围。反之,当变焦的全正方转换范围被规格化为-1到1时,类似的绝对范围应该被定义,就是在焦距方向,一个位置转换管理一个移动。转换的符号表示方向(负号表示宽度,正号表示焦距方向),没有一个规定关于泛化的变焦范围是怎样管理变焦的放大倍率视场或其他物理的变焦尺寸。这个结果在接下来的空间描述中:-1.01.016.8.3连续的速率空间连续的速率空间用于在一个指定方向上连续移动PTZ装置。泛化的方位速率空间所有的PTZ节点都应该被提供泛化的方位速率空间,因为他不涉及指定的物理范围。反之,当PTZ装置的速度范围被规格化为-1到1时,也就是一个正的速率将会管理顺时针或在右/上的方向移动时,则范围应该被定义。一个带符号的速度能够单独的来指定给接下来在空间描述中的方位组件:-1.01.0-1.01.0泛化的变焦速率空间在不知道具体的物理模型的情况下,泛化的变焦速率空间指定一个变焦速率。范围应该规范化为-1到1,就是一个正的速率管理焦距方向。一个泛化的变焦速率空间类似于接下来描述:-1.01.016.8.4速度空间当摄像机移动到一个绝对或相对位置时,速度空间用于指定一个移动和变焦速度。与速率空间相比,速度空间不包含任何的方向信息,一个全方位移动的速度就是一个正数表示的标量。泛化的方位速度空间任何PTZ节点支持可配置的方位速度都应该提供泛化的方位速度空间,因为它不涉及一个指定的物理范围。反之,当全范围的速度范围规范化为0(停止)到1(最大速度)时,范围应该被定义。这个结果在接下来的空间描述中:0.01.0泛化的变焦速度空间所有支持可配置的变焦速度的PTZ装置,都应该提供泛化的变焦速度空间,因为他不涉及一个指定的物理范围。反之,当全速率范围被规范化为0(停止)到1(最大速度)时,范围应该被定义。这个结果在接下来的空间描述中:0.016.9服务错误码表232列举的是PTZ服务错误码,每个命令产生一个类错误,见表6.一个特定的错误都被规定为一个类错误的子代码,见章节,父类子代码是上一级错误码的子代码,具体的错误子代码在错误码的底层。表232:PTZ具体错误码错误码父类子错误码错误原因描述子错误码env:接收器(Receiver)ter:Action预设不能被设定当PTZ装置在运动过中,预设不能被设置ter:MovingPTZenv:接收器(Receiver)ter:Action数目达到了预设限制预设达到了最大值ter:TooManyPresetsenv:接收器(Receiver)ter:ActionNotSupported不支持PTZ设备不支持PTZter:PTZNotSupportedenv:发射机(Sender)ter:InvalidArgVal标识符已经存在请求的标识符或名称已经存在于其他预设中ter:PresetExistenv:接收器(Receiver)ter:Action没有合适的PTZ状态在请求的媒体文件中没有适合的PTZ状态ter:NoStatusenv:接收器(Receiver)ter:Action用新的配置是发生冲突新的设置结果与配置不符ter:ConfigurationConflictenv:接收器(Receiver)ter:Action归位点不能被重写归位点是固定的或不能被重写ter:CannotOverwriteHomeenv:发射机(Sender)ter:InvalidArgVal没有这样的PTZ节点设备中没有这样的PTZ节点ter:NoEntityenv:发射机(Sender)ter:InvalidArgVal没有这样的配置没有这样的配置存在ter:NoConfigenv:发射机(Sender)ter:InvalidArgVal参数不能被设置配置参数可能不能被设置ter:ConfigModifyenv:发射机(Sender)ter:InvalidArgVal终点超出范围请求的目标超出了范围ter:InvalidPositionenv:发射机(Sender)ter:InvalidArgVal转换超出范围请求的转换超出了范围ter:InvalidTranslationenv:发射机(Sender)ter:InvalidArgVal请求速度超出范围请求的速度超出了范围ter:InvalidSpeedenv:发射机(Sender)ter:InvalidArgVal速率超出范围请求的速率超出了范围ter:InvalidVelocityenv:发射机(Sender)ter:InvalidArgVal预设名称太长预设名称过长或包含了无效的字符ter:InvalidPresetNmeenv:发射机(Sender)ter:InvalidArgVal文件丢失PTZ配置请求的文件标识符不能找到配置文件ter:NoPTZProfileenv:发射机(Sender)ter:InvalidArgVal文件标识符不存在请求的文件标识符ProfileToken不存在ter:NoProfileenv:发射机(Sender)ter:InvalidArgVal不支持超时指定的超时参数不在超时范围内ter:TimeoutNotSupportedenv:发射机(Sender)ter:InvalidArgVal标识符不存在请求的标识符不存在ter:NoTokenenv:接收器ter:Action没有归位点这个文件没有归位(Receiver)点被设定ter:NoHomePositionenv:发射机(Sender)ter:InvalidArgVal没有这样的空间PTZ节点不支持这个空间ter:SpaceNotSupported17视频分析4.12节给我们简单地介绍了ONVIF视频分析结构,这章主要介绍结构的以下几个方面:分析模块接口场景描述规则接口时间接口事件接口是通过事件服务处理的,事件服务在15.17.1节中介绍的基于XML场景描述部分有详细讲到,事件接口可以是流数据,就像元数据那样通过RTP(详见传送到客户端。媒体服务管理所有的规则引擎和分析引擎配置(见11章)。分析服务允许更多高密度的配置,就是说拥有个人独特的规则和个人独特的分析模块(详见17.2和17.3)一个支持分析的设备应该具备场景描述和事件接口,和媒体服务进行分析配置一样。假如设备还支持规则引擎,那么还应该在这个标准中定义分析引擎,然后它就能够实现规则分析模块接口。通过媒体服务,一个完整的视频分析配置能够附属在文件上,一个视频分析配置可以指定到一个视频源(见11.9节)。由分析或规则引擎或当一个客户端请求类似的场景描述流时产生的事件,被客户端直接或间接地赞成时,设备应该确保相应的分析引擎开始工作。17.1场景描述接口17.1.1概述这个规范定义了XML架构,用于设备进行编码场景描述,场景描述的范围包含基本场景元素到终端用户,就如同一个给供应商指定的扩展架构,附录A.2显示了一些附加的用于处理供应商处理规则的场景原理。视频分析引擎通过媒体控制部分的文件来配置,假如在一个Profile中视频分析是有效的,VideoSourceConfiguration和VideoAnalyticsConfiguration应该在文件中涉及,视频分析引擎通过参考VideoSourceConfiguration来处理画面。17.1.2画面相关内容视频分析引擎的输入是视频源的图像。场景的提取原理和图像提取的地点息息相关,一个提取的场景不同于一般的被视频分析引擎(信息如视频输入行,视频分辨率,图像裁剪帧率等)处理过的视频源,当前图像与输入流相关联和在画面内进行元素空间定位。视频源和视频分析部件之间的连接是媒体控制的一部分,允许视频分析器运行在减少帧率的剪切视频源上。根据场景要素的暂态和空间关系来进行视频源的挑选,详见和。跟踪目标的外官和行为,详见。目标的分离和合并,详见。一个PTZ设备能够把方位和变焦信息放到一帧画面数据的开始,允许客户端评估3D坐标中的场景元素。接下来,图像坐标系可以用于一个可选的转换节点,转换节点用于下一个分段的描述。最终,多重对象描述能够被置入,而且他们的关系能够被指定在一个目标树节点内。为了方便定义如下:......请注意这里的模式仅供参考,【ONVIF架构】包含了标准的框架定义。章节描述了怎样进行图像处理,通过网络视频分析流中的视频分析算法。时间关系因为多重的场景元素能够从相同的图像中提取出来,场景元素都是基于一个帧节点的,能从视频输入链接到一个指定的影像。帧节点包含一个强制的时钟特性。这个时钟应该使能一个客户端来管理图像节点精确到一个视频图像。例如,相对应的RTP时标编码视频帧应该和UTZ时标转换的结果一致。视频和元数据流的同步性,在章节实时查看部分有进一步描述。例如:.........空间关系很多场景元素是提取出来的画面的一部分,例如,但随着时间追踪目标时,应该在每幅画面中指定跟踪目标的位置,这些位置应该和坐标系关联起来。默认的坐标系如图23中说明。管理选择的矩形相应VideoSourceConfiguration文件。图23:默认的画面坐标系对于XML树的特定节点,规范允许修改其坐标系。因此,每个图像节点都是从默认的坐标系开始的。每个子节点继承最近的父类坐标系。一个转换节点用于修改最近的父类坐标系相应的规范也与父类节点最近的坐标系相关联。规范定义了转换节点用于缩放和转化,场景描述包含了这些转换节点存放的占位符。...规范遵照一个数字的坐标系和转换描述。一个坐标系由转换矢量t=(txty)和缩放矢量s=(sxsy)组成,通过公式(qxqy)=(px⋅sx+txpy⋅sy+ty),坐标系的一个点p=(pxpy)转换到默认的坐标系相对应的点q=(qxqy),类似的,通过公式(wxwy)=(vx⋅sxvy⋅sy),坐标系给的矢量v可以转换到默认坐标系相应的矢量w。转换节点有一个可选的缩放矢量u=(uxuy)和一个可选的平移矢量v=(vxvy)。假如缩放比例不被指定,那么它默认的是u=(11),类似的,平移矢量的默认值是u=(00),转换节点通过用以下方法修改最高的坐标系:(tx\'ty\')=(vx⋅sx+txvy⋅sy+ty),(sx\'sy\')=(ux⋅sxuy⋅sy),用(tx\'ty\')和(sx\'sy\')代替最高坐标系。例如,场景描述的坐标是用图形坐标系来给的,左下角是坐标(0,0),右上角是(320,240)。图形节点类似于以下代码,缩放比例设置为图像宽和高的1/2....17.1.3场景元素这个部分集中讲解场景元素,场景元素由对象跟踪算法,定义对象处理和对象图形组成。在场景描述内没有发现目标的图像可以被跳过以保存带宽,只要在场景描述中最后的图像也是空。即使场景描述是空,但还是建议设备定期的发送场景描述。为了验证分析设备正常工作。假如对应的流要求同步性,那么设备应该发送场景描述。当场景描述的接收器接收到一副空的图像,接收器应该假设后续影像都是空的直到一个非空的影像被接收到。当最后接收的图像非空,那么接收器应该假设为下一副描述图像将会被传输。对象对象通过其ID进行辨认,一个特定对象的相关特征都被收集在带有相应对象ID的对象节点中。与对象相关联的,像对象重命名,对象的分裂,对象的合并和对象的删除,都存储在一个单独的对象树节点中。一个对象ID是对象节点内第一个被默认创建的特征。...对象节点有两个占位符用于外观和行为信息,外观节点从一个可选的转换节点开始,转换节点可用于改变一个中心图像坐标系到一个中心对象坐标系,然后,可以指定对象的形状。假如在画面中发现了一个对象,那么形状信息应该存在于外观描述,视频分析算法可以增加对象节点给现在不可见的对象,否则它不能为这个对象推断信息,在这样的情况下,形状描述可以被忽略。其他的对象特征像颜色和对象级别可以被加到外观节点中去。这个规范集中于形状描述(见。颜色和对象级别的定义可以在附录B.1中找到。这个规范定义了两个标准行为给对象。当一个对象停止移动的时候,它能够被标记为离开了或是静止的。这些行为应该被列出,作为一个对象的行为节点的子节点。一个离开的或静止节点的出现不会自动地删除相应的对象ID,从而当同样的对象出现是可以再次利用对象ID.一个标有离开行为的对象指定了对象离开的位置,这个标记不应该用作离开对象的行为,尽管带走对象的行为没有被检测到,但还是有可能检测到移动,在运转中,先前的对象可能被标记作为静止的,表示对象停止了移动。一但这个对象不改变了,它们就将不被列在场景描述中。当一个静止的对象再次出现在场景描述中,静止标志就会自动的移除。例如:...............对象树当两个对象走得非常接近的时候,例如视频分析可能不再单独的跟踪它们,一个目标合并应该被告知通过增加一个合并节点到图像节点的对象树节点。一个合并节点包含一个合并对象ID,列出了其来自节点和一个到节点,合并对象用于将来图像跟踪的ID,假如视频分析算法察觉到一个对象正在阻塞其他对象,而将来有可能要跟踪这个对象,那么阻塞的对象应该放进到节点中。分离的对象通过一个分裂节点来表示,在这种情况下,来自节点包含一个单一的对象,表示对象在现在的图像中是分裂的,由这个分裂对象分离出来的对象都被列在到节点中。来自节点的对象ID可能再次出现在到节点中,假如这个对象使其它的对象闭塞,视频分析算法可能跟踪这个对象在闭塞期间。为了成为一个分裂操作的一部分,一个对象不需要涉及到一个分离操作。例如,假如一个对象正在移动连同一个人,人离开对象到某处,当人离开对象留在后面,对象可以首先通过视频分析被分离,在这种情况下,对象的第一个外观可以是包含一个分裂的操作。在后来,一副没有分裂的画面中,当一个合并的对象作为一个对象节点重新出现,那么这个对象会被软件分开。然而,视频分析算法不能决定分裂对象来自哪里。一个视频分析算法能跟综和记住有限个对象,为了表明指定的对象已经从存储器中被删除并从在没在出现过,场景描述可以包含一个删除节点在对象树节点中在执行一个分裂操作时,假如视频分析算法不能决定对象的ID,那么应该给它使用一个新的对象ID。当算法收集到足够关于这个对象的身份证明,它能够通过重命名操作改变对象的ID,当一个对象重新出现在画面中或在一段时间后真正的ID丢失,重命名操作也可以被用。一个删除的对象ID不能被重复使用,直到对象ID已经出项环绕时,才可以把使用过的对象ID重新使用在场景描述中。例如:..................形状描述符形状信息应该放在对象外观节点中可选形状节点的下面,假如形状节点存在,形状节点保存信息在指定画面中被考虑对象检测到的地方,一个形状节点至少包含两个节点,就是边界框和检测对象的重心。粗糙的边界框更进一步精确了附加的子节点,每一个都代表了一个形状原型。假如多边形基本体都定义了,那么它们的集合就可以定义对象的形状。在规范中提供了一个普通的多边形描述符号。描述对象形状的多边形可以简化为一系列的点。两个连续的点在列表中被定义为一条线段,点的组织应该认真筛选例如一个封闭的对象区域能够在左手边找到所有线段。多叉线的定义是通过一系列不自我交叉的点。例如:17.2规则接口视频分析配置由两部分组成(见11.9章节),第一个部分配置创建场景描述的视频分析引擎。第二个部分配置规则引擎。对于第二部分,在17.2.1章节介绍了一个XML结构,用于规则配置的通信,在17.2.2章节指定了一种语言来描述特定规则类型配置,在17.2.3中定义了两个标准规则,用于设备执行规则引擎。17.2.4章节介绍了规则的管理操作,假如设备支持一个规则引擎,它就应该支持所有的规则接口。17.2.1规则陈述规则的配置有两个必要的属性:指定名称和指定规则类型。不同的配置参数被列在规则元素的参数元素下,每个参数是一个简单条款或一个元素条款(与消息负载的比较见15章)。在参数列表中,每一个名称属性都应该是独一不二的。简单条款有一个包含参数值的附加值属性。元素条款的值是通过元素条款的子元素给的。建议尽可能使用简单条款参数。接下来的例子显示了一个完整的包含两个规则的视频分析配置:...17.2.2规则描述语言规则描述包含类型信息(属于一个中心规则类型的所有参数),输出描述就是通过这个规则产生的。规则引擎的输出是一个事件,可以用于事件引擎或是客户端允许的事件。一个中心规则类型的参数都被列在参数描述元素的下面。所有的参数是一个简单或元素条款,它们能够通过简单条款描述或一个元素条款来描述。两种条款描述包含一个名称属性和类型属性,名称属性用于鉴定参数,类型属性用于指定一种XML模式类型。在一个简单条款描述中,类型属性应定义为一种简单类型模式,在元素条款描述中,类型属性应声明为一种XML模式的全局元素。由规则类型产生的输出被描述在多重消息描述元素中。每一个消息描述包含一个消息负载的描述,消息负载通过消息描述语言描述,详见15章。此外,消息描述应该包含一个父类元素,为了接收指定的输出,父类元素必须是一个客户端同意的对象,对象应该被指定作为一个具体的对象符号。17.2.3章节描述了规则描述语言在两个标准规则里的使用,为了方便定义如下:...17.2.3规则标准以下的规则标准适用于静态的摄像机。在一个PTZ设备中,基于图像的规则应该包含一个附加的元素条款,元素条款用于识别设备规则安装位置。相应的元素条款描述类似如下:线性检测器线性检测器定义为一个非交叉的简单多叉线,假如一个对象在一个指定的方向横跨多叉线,规范引擎就送一个交叉事件,交叉事件包含线性检测器的名称和涉及横跨交叉线的对象。方向,就是一个能够在左,右和其他方向选择的,方向左和右涉及到沿着线从一个点到另一个点走的方向和被禁止的方向。线性检测器类似以下用规则描述语言的代码,详细的参考前一章:tns1:RuleEngine/LineDetector/Crossed以上代码定义了两个参数,段数和方向,并使一个事件附属到主题:规则引擎/线性检测器/交叉相。域检测器一个域检测器被定义为一个简单的非交叉多边形。域检测器决定了一个画面中的对象在多边形的外面还是里面。这个信息会当成一个属性存放起来。域检测器类似于以下代码,用规则描述语言详见上一章。tns1:RuleEngine/FieldDetector/ObjectsInside从内部属性看,一个客户端能够引导检测器参数的进入和离开。通过增加一个消息内容过滤器来认定,一个客户端能模拟出进入和离开事件,就是通过设定内部条款为真让内部对象消息通过。17.2.4规则操作假如设备支持规范定义的规则引擎,那么它就具备以下管理规则的能力,创建/删除/修改命令具有原子性的特点,也就是说所有的操作要么都能被处理,要么都不能被处理。读取支持的操作(GetSupportedRules)设备应该输出所有支持的规则当执行随后的操作,它通过在17.2.2章节描述的规则描述语言,返回一个规则描述列表。此外,它包含了一系列URLs用于提供概要文件的位置。这些概要文件描述了在规则描述中用到的类型和元素。假如规则描述涉及到ONVIF概要文件中的类型和元素,ONVIF概要文件应该明确地列出来。表233:读取支持的规则命令读取支持的规则(GetSupportedRules)请求应答(Request-Response)消息名字描述读取支持的规则请求(GetSupportedRulesRequest)消息包含需要读取规则列表的VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]读取支持的规则响应(GetSupportedRulesResponse)响应包含支持的规则tt:SupportedRulesSupportedRules[1][1]故障代码描述env:Senderter:InvalidArgValter:NoConfig视频分析配置不存在读取规则(GetRules)以下操作检索当前安装的规则:表234:读取规则命令读取规则(GetRules)请求应答(Request-Response)消息名字描述读取规则请求(GetRulesRequest)消息包含需要报道的VideoAnalyticsConfigurationToken的规则tt:ReferenceTokenConfigurationToken[1][1]读取规则响应(GetRulesResponse)响应包含指定配置安装的规则列表tt:ConfigRule[0][unbounded]故障代码描述env:Senderter:InvalidArgValter:NoConfig视频分析配置不存在创建规则(CreateRules)以下操作是添加规则到一个视频分析配置中。假如所有的规则不能按照请求的来创建,那么设备返回一个错误的消息。表235:创建规则命令创建规则(CreateRules)请求应答(Request-Response)消息名字描述创建规则请求(CreateRulesRequest)消息指定需要增加规则列表到的VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]tt:ConfigRule[1][unbounded]创建规则响应(CreateRulesResponse)这是一个空消息故障代码描述env:Senderter:InvalidArgValter:NoConfig视频分析配置不存在env:Senderter:InvalidArgValter:InvalidRule建议的规则设备不适合这个设备env:Senderter:InvalidArgValter:RuleAlreadyExistent同样的规则名称已经存在了配置中enc:Receiverter:Actionter:TooManyRules没有足够的空间来增加规则env:Receiverter:Actionter:ConfigurationConflict设备不能创建规则在以防创建一个相冲突的配置修改规则(ModifyRules)以下操作用于修改规则,假如所有的规则不能按请求修改,那么设备返回一个错误的提示消息。表236:修改规则命令修改规则(ModifyRules)请求应答(Request-Response)消息名字描述修改规则请求(ModifyRulesRequest)消息包含需要修改规则列表到的VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]tt:ConfigRule[1][unbounded]修改规则响应(ModifyRulesResponse)这是一个空消息故障代码描述env:Senderter:InvalidArgValter:NoConfig视频分析配置不存在env:Senderter:InvalidArgValter:InvalidRule建议的规则设备不适合这个设备env:Senderter:InvalidArgster:RuleNotExistent规则名称不存在enc:Receiverter:Actionter:TooManyRules没有足够的空间来增加规则env:Receiverter:Actionter:ConflictingConfig设备不能修改规则以防创建一个相冲突的配置删除规则(DeleteRules)以下的操作用于删除多个规则,假如所有的规则不能按照请求删除,那么设备会返回一个错误提示消息。表237:删除规则命令删除规则(DeleteRules)请求应答(Request-Response)消息名字描述删除规则请求(DeleteRulesRequest)消息包含需要删除指定规则列表的VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]xs:stringRuleName[1][unbounded]删除规则响应(DeleteRulesResponse)这是一个空消息故障代码描述env:Senderter:InvalidArgValter:NoConfig视频分析配置不存在env:Receiverter:Actionter:ConflictingConfig不能删除规则在以防创建一个相冲突的配置env:Sender规则名称不存在ter:InvalidArgster:RuleNotExistent17.3分析模块接口视频分析配置由两个部分组成(见11.9章节),第一部分配置视频分析引擎,用于创建场景描述。第二部分配置规则引擎。17.3.1定义了一个XML结构,用于视频分析引擎传递分析模块配置。17.3.2章节定义了描述特定分析模块配置的语言。17.3.3定义了分析模块接口请求的操作。假如设备支持一个按照ONVIF定义的分析引擎,那么它就能够执行所有的分析模块接口。17.3.1分析模块配置分析模块配置与规则配置相同,详见17.2.1章节。下面的例子讲述了一个可能的配置,用于指定的对象跟踪。跟踪装置允许配置关于处理几何图像的最小和最大尺寸。...17.3.2分析模块描述语言分析模块描述语言的重复使用,详见17.2.2,以下讲的是分析模块描述元素代替规则描述元素:与规则类似,分析模块产生的事件,应该列在分析模块描述中。后面的描述符合于上面章节的例子。当场景在模块中变得非常复杂的时候,那么可以创建一个场景拥挤事件,例子如下:tns1:VideoAnalytics/nn:ObjectTracker/SceneTooCrowded17.3.3分析模块操作假如设备支持规范定义的规则引擎,那么它就具备以下管理规则的能力,创建/删除/修改命令具有原子性的特点,也就是说所有的操作要么都能被处理,要么都不能被处理。读取支持的分析模块(GetSupportedAnalysticsModule)通过执行GetSupportedAnalysticsModule操作,设备可以给出所有支持的分析模块。它通过分析模块描述语言来返回一系列分析模块,见17.2.2章节,此外,它还包含一系列提供概要文件位置的URL,这些概要文件用于描述在模块分析描述中的类型和元素。假如模块分析描述涉及到ONVIF概要文件中的类型或元素,ONVIF概要文件应该明确地列出。表238:读取支持的模块分析命令读取支持分析模块(GetSupportedAnalyticsModules)请求应答(Request-Response)消息名字描述读取支持分析模块请求(GetSupportedAnalyticsModulesRequest)消息包含需要列出支持分析模块的VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]读取支持分析模块响应(GetSupportedAnalyticsModulesResponse)响应包含支持的分析模块SupportedAnalyticsModules[1][1]故障代码描述env:Senderter:InvalidArgster:NoConfig视频分析配置不存在读取模块分析(GetAnalyticsModules)以下操作检索当前按装的分析模块:表239:读取分析模块命令读取分析模块规则(GetAnalyticsModules)请求应答(Request-Response)消息名字描述读取分析模块请求这个消息包含需要报道分析模块的(GetAnalyticsModulesRequest)VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]读取分析模块响应(GetAnalyticsModulesResponse)响应包含指定配置安装的分析模块列表tt:ConfigAnalyticsModule[0][unbounded]故障代码描述env:Senderter:InvalidArgster:NoConfig视频分析配置不存在创建分析模块(CreateAnalyticsModules)接下来的操作是添加分析模块到一个视频分析配置中去,假如所有的分析模块不能按照请求的被创建,那么设备就返回一个错误提示消息。表240:创建分析模块命令创建分析模块规则(CreateAnalyticsModules)请求应答(Request-Response)消息名字描述创建分析模块请求(CreateAnalyticsModulesRequest)这个消息包含需要创建分析模块的VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]tt:ConfigAnalyticsModule[1][unbounded]创建分析模块响应(CreateAnalyticsModulesResponse)空消息tt:ConfigAnalyticsModule[0][unbounded]故障代码描述env:Senderter:InvalidArgster:NoConfig视频分析配置不存在env:Senderter:InvalidArgster:NameAlreadyExistent配置中已存在相同名称的分析模块enc:Receiverter:Actionter:TooManyModules设备中没有足够的空间来添加配置的分析模块env:Receiverter:Actionter:ConfigurationConflict设备不能创建一个相冲突的分析模块给配置文件env:Senderter:InvalidArgValter:InvalidModule建议的模块配置不适合设备修改分析模块(ModifyAnalyticsModules)下来的操作是修改多个分析模块,假如所有的分析模块不能按照请求的被修改,那么设备就返回一个错误提示消息。表241:修改分析模块命令修改分析模块规则(ModifyAnalyticsModules)请求应答(Request-Response)消息名字描述修改分析模块请求这个消息包含需要修改分析模块的(ModifyAnalyticsModulesRequest)VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]tt:ConfigAnalyticsModule[1][unbounded]修改分析模块响应(ModifyAnalyticsModulesResponse)空消息tt:ConfigAnalyticsModule[0][unbounded]故障代码描述env:Senderter:InvalidArgster:NoConfig视频分析配置不存在env:Senderter:InvalidArgster:NameNotExistent请求的分析模块名称不存在enc:Receiverter:Actionter:TooManyModules设备中没有足够的空间来添加分析模块到配置中env:Receiverter:Actionter:ConfigurationConflict不能修改配置文件以防创建相冲突的配置env:Senderter:InvalidArgValter:InvalidModule建议的模块配置不适合设备删除分析模块(DeleteAnalyticsModules)下来的操作是删除多个分析模块,假如所有的分析模块不能按照请求的被删除,那么设备就返回一个错误提示消息。表242:删除分析模块命令删除分析模块规则(DeleteAnalyticsModules)请求应答(Request-Response)消息名字描述删除分析模块请求(DeleteAnalyticsModulesRequest)这个消息包含需要删除分析模块的视频分析配置标记VideoAnalyticsConfigurationTokentt:ReferenceTokenConfigurationToken[1][1]xs:stringAnalyticsModuleName[1][unbounded]删除分析模块响应(DeleteAnalyticsModulesResponse)空消息tt:ConfigAnalyticsModule[0][unbounded]故障代码描述env:Senderter:InvalidArgster:NoConfig视频分析配置不存在env:Receiverter:Actionter:ConfigurationConflict设备不能删除分析模块以防创建一个相冲突的配置env:Senderter:InvalidArgster:NameNotExistent请求的分析模块名称不存在17.4服务错误码表243列的是分析服务错误码,每个命令也能够生成一种类错误,详见表6。特定的错误相当于一个类错误的子代码,见父类子代码是上一级错误码的子代码,特定的错误子代码是最底层的错误子代码。表243:服务错误码错误码父类子错误码码错误原因描述子错误码env:接收器(Receiver)ter:Action没有更多可用空间设备没有足够的空间来添加规则到配置中ter:TooManyRulesenv:接收器(Receiver)ter:Action没有更多可用空间设备没有足够的空间来添加分析模块到配置中ter:TooManyModulesenv:接收器(Receiver)ter:Action当用新的设置发生冲突新的设置导致了配置冲突ter:ConfigurationConflictenv:发射机(Sender)ter:InvalidArgVal没有这样的配置请求的视频分析配置不存在ter:NoConfigenv:发射机(Sender)ter:InvalidArgVal规则无效设置的规则配置不适合ter:InvalidRuleenv:发射机(Sender)ter:InvalidArgVal模块无效建议的分析模块配置不适合设备ter:InvalidModuleenv:发射机(Sender)ter:InvalidArgVal规则存在请求的规则名称已经存在配置中ter:RuleAlreadyExistentenv:发射机(Sender)ter:InvalidArgs规则不存在规则名称不存在ter:RuleNotExistentenv:发射机(Sender)ter:InvalidArgs名称存在相同的分析模块名称已经存在配置中ter:NameAlreadyExistentenv:发射机(Sender)ter:InvalidArgs名称不存在请求的分析模块名称不存在ter:NameNotExistent18分析设备分析设备服务必须用于独立的分析设备,这些独立的分析设备能够对流媒体或者增强媒体流的元数据执行评估。同时分析设备服务同样适用于其他实体。分析设备可以一次对多个的流媒体或者增强流媒体元数据进行评估。分析设备服务接收的流媒体或者增强流媒体的元数据,这些数据要么来自直接产生要么来自存储设备。如果分析的是一个没有压缩的数据,那么分析设备应该具备解码的能力加强的流媒体元数据能够描述任何包含媒体数据的流媒体以及指定的元数据。客户端使用分析设备服务来配置独立分析设备属性和功能或者配置其他一些带分析功能的实体的属性和功能。独立的分析设备不提供反向通道功能。分析设备服务依赖于对其它设备上的接收数据服务,这接收服务通过ReceiverTokens来识别接收对象来完成接收数据。在接受RTSP流时,必须提供一种机制来分配不同的路径给相应AnalyticsEngine。当正在执行分析时,改变参数(例如变化摄像头参数)可能会影响分析结果。因此,输入参数的变化反映在AnalyticsEngineInput结构上。18.1概述在配置一个分析设备服务的核心元素是AnalyticsEngineControl。它包含必要令牌和对服务的描述以及对AnalyticsEngineControl进行激活/暂停。一个AnalyticsEngine可能是一个算法或者一个完整的应用程序,例如丢包。几个参数集(VideoAnalyticsConfiguration)可以并行在AnalyticsEngine存在,并且允许它们之间切换如:例如:白天和黑夜的配置。此外,提供一个结构体来对这特别的AnalyticsEngine进行描述。为了使AnalyticsEngine适应不同的输入数据,在AnalyticsEngineInput元素中,必须提供对输入进AnalyticsEngine数据元素提供描述所有结构体在启动NVA实体后必须至少存在一次,以及这些结构体能够在合适的位置填充默认的值。18.2分析引擎输入AnalyticsEngineInput结构体描述了输入的视频以及元数据,这些数据是用来提供给特别的AnalyticsEngine。如果超过一种输入源,那么必须对每一个输入源提供一个AnalyticsEngineInput元素。SourceIdentification:标识输入是来自哪个源(如区别相机集群,特别是摄像头和正在使用一类)VideoSource:视频源的信息,特别是关于正使用的压缩参数MetadataInput:描述提供将要被分析元数据的源。18.2.1获取分析引擎输入这个操作列举了所有对设备可用的分析引擎的输入。分析设备服务应该支持列举的可用的分析引擎输入。这个清单是对GetAnalyticsEngineInputs命令的应答。表244:GetAnalyticsEngineInputs命令GetAnalyticsEngineInputs请求与应答信息名称功能描述GetAnalyticsEngineInputsRequest请求信息是一条空信息GetAnalyticsEngineInputsResponse应答信息包含一个可用分析引擎输入清单:tt:AnalyticsEngineInputConfiguration[1][unbounded]错误代码原因分析没有与此命令相关的错误代码18.2.2获取分析引擎的输入如果分析引擎的输入配置的令牌已知,那么可以通过GetAnalyticsEngineInput命令取得输入配置。一个分析设备服务应该支持通过GetAnalyticsEngineInput命令来获取分析引擎输入配置清单。表:245:GetAnalyticsEngineInput命令GetAnalyticsEngineInput请求与应答信息名称功能描述GetAnalyticsEngineInputRequest请求信息包含一个已经存在分析引擎输入配置的令牌。tt:ReferenceTokenConfigurationToken[1][1]GetAnalyticsEngineInputResponse应答信息包含请求的分析引擎输入配置:tt:AnalyticsEngineInputConfiguration[1][1]错误代码原因分析env:Senderter:InvalidArgValter:NoConfig请求信息中令牌指定的配置不存在。18.2.3设置分析引擎的输入这个命令可以改变分析引擎输入配置。一个分析设备服务应该支持通过SetAnalyticsEngineInput命令来修改分析引擎输入配置。表246:SetAnalyticsEngineInput命令SetAnalyticsEngineInput请求与应答信息名称功能描述SetAnalyticsEngineInput-Request请求信息应该包含一个新的配置这ForcePersistence元素决定了这改变的配置是否在重启后应该被存储以及保留。如果为真,改变的配置应该被保留;如果是假,那么在重启后恢复先前配置。tt:AnalyticsEngineInputConfiguration[1][1]xs:booleanForcePersistence[1][1]SetAnalyticsEngineInputResponse应答信息是一个空信息错误代码原因分析env:Senderter:InvalidArgValter:invalidConfig对设备设置不可能的配置。env:Senderter:InvalidArgValter:NoConfig请求信息中令牌指定的配置不存在18.2.4创建分析引擎输入通过这个命令可以产生分析引擎输入配置。一个分析设备服务应该支持通过这个命令来产生分析引擎输入配置。表247:CreateAnalyticsEngineInputs命令CreateAnalyticsEngineInputs请求与应答信息名称功能描述CreateAnalyticsEngineInputsRequest请求信息中配置应该是一个新的配置这ForcePersistence元素决定了这改变的配置是否在重启后应该被存储以及保留。如果为真,改变的配置应该被保留;如果是假,那么在重启后恢复先前配置。tt:AnalyticsEngineInputConfiguration[1][unbounded]xs:booleanForcePersistence[1][unbounded]CreateAnalyticsEngineInputsResponse应答信息包含:创建的引擎配置以及令牌tt:AnalyticsEngineInputConfiguration[1][unbounded]错误代码原因分析env:Senderter:InvalidArgValter:invalidConfig对设备设置不可能的配置。env:Receiverter:Actionter:MaxAnalyticsEngineInput已经达到分析引擎支持对象的最大数量18.2.5删除分析引擎输入通过DeleteAnalyticsEngineInputs命令能够删除分析引擎输入配置。一个分析设备服务应该支持通过这个命令来删除分析引擎输入配置。表248:DeleteAnalyticsEngineInputs命令DeleteAnalyticsEngineInputs请求与应答信息名称功能描述DeleteAnalyticsEngineInputsRequest请求信息包含识别将要删除的分析引擎输入的配置令牌。tt:ReferenceTokenConfigurationToken[1][unboundedDeleteAnalyticsEngineInputsResponse应答信息是一条空信息错误代码原因分析env:Senderter:InvalidArgValter:NoAnalyticsEngineInput与请求信息中令牌指定的配置信息不存在。env:Senderter:Actionter:CannotDeleteEngineInput不能够删除请求中指定的分析引擎输入18.3视频分析配置18.3.1获取视频分析配置如果视频分析配置的令牌已知,通过GetVideoAnalyticsConfiguration命令可以获取视频分析配置。一个分析设备服务应该支持通过GetVideoAnalyticsConfiguration命令来获取视频分析配置的清单。所有相应的视频分析配置的令牌可在AnalyticsEngine配置中找到。表249:GetVideoAnalyticsConfiguration命令GetVideoAnalyticsConfiguration请求与应答信息名称功能描述GetVideoAnalyticsConfigurationRequest请求信息包含一个存在的视频分析配置的令牌tt:ReferenceTokenConfigurationToken[1][1]GetVideoAnalyticsConfigurationResponse应答信息包含请求的视频分析配置。tt:VideoAnalyticsConfigurationConfiguration[1]1错误代码原因分析env:Senderter:InvalidArgValter:NoConfig这请求信息中令牌指定的配置不存在。18.3.2设置视频分析配置这个命令可以改变视频分析配置。一个分析设备服务应该支持通过这个命令来修改分析引擎配置。如果分析设备服务收到这SetVideoAnalyticsConfiguration命令。这设置的配置在实际运用中也能受到影响。表250:SetVideoAnalyticsConfiguration命令SetVideoAnalyticsConfiguration请求与应答信息名称功能描述SetVideoAnalyticsConfiguration–Request配置应该是一个新的配置。这ForcePersistence元素决定了这改变的配置应是否在重启以后被存储。如果为真,改变的配置应该被保存。如果为假,恢复重启之前配置tt:VideoAnalyticsConfigurationConfiguration[1][1xs:booleanForcePersistence[1][1]SetVideoAnalyticsConfigurationResponse应答信息是一条空信息错误代码原因分析env:Senderter:InvalidArgValter:invalidConfig设置不可能的配置env:Senderter:InvalidArgValter:NoConfig请求信息中令牌指示的配置不存在。18.4分析引擎通过这定义的命令返回一个结构体,这个结构体包含一个对特殊引擎可用VideoAnalyticsConfiguration的清单,还包含对每个AnalyticsEngine配置的适合AnalyticsEngineInputInfo元素。VideoAnalyticsConfiguration:描述分析引擎可能的配置。AnalyticsEngineInputInfo:分析引擎输入要求的信息。18.4.1获取分析引擎这个操作列举了设备所有可用的分析引擎。分析设备服务应当支持通过GetAnalyticsEngines命令来获取的可用分析引擎清单。表251:GetAnalyticsEngines命令GetAnalyticsEngines请求与应答信息名称功能描述GetAnalyticsEnginesRequest请求信息是一条空信息GetAnalyticsEnginesResponse应答信息包含:一个描述可用分析引擎结构体清单。tt:AnalyticsEngineConfiguration[1][unbounded]错误代码原因分析没有与这条命令相关的错误代码18.4.2获取分析引擎如果分析引擎的令牌已知,通过这条GetAnalyticsEngine命令能够获取分析引擎。一个分析设备服务应支持通过GetAnalyticsEngine命令来获取分析引擎配置清单。表252:GetAnalyticsEngine命令GetAnalyticsEngine请求与应答信息名称功能描述GetAnalyticsEngineRequest请求信息包含一个已经存在的分析引擎的令牌。tt:ReferenceTokenConfigurationToken[1][1]GetAnalyticsEngineResponse应答信息包含请求的AnalyticsEngine配置tt:AnalyticsEngineConfiguration[1][1]错误代码原因分析env:Senderter:InvalidArgValter:NoConfig请求信息中令牌指定的配置不存在18.5分析引擎控制这AnalyticsEngineControl结构体应该被用来通过下面的命令进行实际控制。名称:友好的描述EngineToken:被控制的分析引擎令牌。EngineConfigToken:有效分析引擎配置的令牌(包含视频分析配置的令牌)。InputToken:使用的输入配置令牌ReceiverToken:提供媒体输入数据的接收令牌。接收令牌的顺序应该准确的对InputToken进行准确匹配Multicast:用来配置广播以及用于控制广播元数据流参数Subscription:对受控引擎起反应的描述Mode:表明实际控制分析的状态("Idle"or"Active)。18.5.1GetAnalyticsEngineControls这个操作列举了设备所有可用的分析引擎。这分析设备服务应支持通过GetAnalyticsEngineControls命令来获取可用分析引擎的清单。表253:GetAnalyticsEngineControls命令GetAnalyticsEngine请求与应答信息名称功能描述GetAnalyticsEngineControlsRequest请求信息是一个空信息GetAnalyticsEngineControlsResponse应答信息包含一个描述可用分析引擎控制的结构体清单tt:AnalyticsEngineControlAnalyticsEngineControls[1][unbounded错误代码原因分析没有与此命令相关的错误代码18.5.2获取分析引擎控制如果引擎控制的令牌可知,那么通过GetAnalyticsEngineControl命令来获取对分析引擎的控制。一个分析设备服务应支持通过GetAnalyticsEngineControl命令来获取分析引擎配置列表。表254:GetAnalyticsEngineControl命令GetAnalyticsEngineControl请求与应答信息名称功能描述GetAnalyticsEngineControlRequest请求信息是包含存在的AnalyticsEngineControl令牌tt:ReferenceTokenConfigurationToken[1][1]GetAnalyticsEngineControlResponse应答信息包含请求的AnalyticsEngineControl配置tt:AnalyticsEngineControlConfiguration[1][1]错误代码原因分析env:Senderter:InvalidArgValter:NoConfig与请求中令牌指定的配置不存在18.5.3设置分析引擎控制这个命令可以改变AnalyticsEngineControl配置。一个分析设备服务应支持通过这个命令来设置对分析引擎控制配置。表255:SetAnalyticsEngineControl命令SetAnalyticsEngineControl请求与应答信息名称功能描述SetAnalyticsEngineControlRequest配置应该是新的配置这ForcePersistence元素决定改变的配置是否在重启后被存储以及保持,如果为真,改变的配置被保存,如果为假,改变的配置恢复启动前配置tt:AnalyticsEngineControlConfiguration[1][1]xs:booleanForcePersistence[1][1]SetAnalyticsEngineControlResponse应答信息是一条空信息错误代码原因分析env:Senderter:InvalidArgValter:invalidConfig设置的配置不可能实现env:Senderter:InvalidArgValter:NoConfig请求中令牌指定配置不存在18.5.4CreateAnalyticsEngineControlCreateAnalyticsEngineControl创建一个新的控制对象。方式应该被设置为空闲状态。应该通过SetAnalyticsEngineControl命令来改变“active”方式。分析设备服务应该支持通过这个命令来创建控制对象。表256:CreateAnalyticsEngineControl命令CreateAnalyticsEngineControl请求与应答信息名称功能描述CreateAnalyticsEngineControlRequest配置应该是新的配置tt:AnalyticsEngineControlConfiguration[1][1]CreateAnalyticsEngineControlResponse应答信息请求的配置以及相关的令牌:tt:AnalyticsEngineControlConfiguration[1][1错误代码原因分析env:Senderter:InvalidArgValter:AnalyticsEngineControlExists请求信息中的令牌指定的分析引擎控制已经存在env:Receiverter:Actionter:MaxAnalyticsEngineControl已经达到AnalyticsEngineControl支持的最大的对象数env:Senderter:InvalidArgValter:invalidConfig设置的配置不可能18.5.5删除分析引擎控制DeleteAnalyticsEngineControl应该删除一个控制对象。一个分析设备服务应当支持通过这个命令删除控制对象。表257:DeleteAnalyticsEngineControl命令DeleteAnalyticsEngineControl请求与应答信息名称功能描述DeleteAnalyticsEngineControlRequest请求信息包含将要删除控制对象的令牌tt:ReferenceTokenConfigurationToken[1][1]DeleteAnalyticsEngineControlResponse应答信息是一条空信息错误代码原因分析env:Senderter:InvalidArgValter:NoAnalyticsEngineControl请求中令牌指定的控制对象不存在env:Receiverter:Actionter:MaxAnalyticsEngineControl指定分析引擎控制不能够被删除18.6获取分析状态GetAnalyticsState返回与分析引擎控制对象相关的状态信息。分析状态信息的结构体是可以扩展的。这扩展应该被用来表达额外的信息。例如:一个分析引擎应该有不同的分析算法组成,这些算法的状态信息应该被提供。这AnalyticsStateInformation状态元素总是包含所有子结构的聚集状态一个分析设备服务应该支持通过这个命令来提供状态信息。当状态信息被请求时,这AnalyticsEngineControl应该通过ConfigurationToken来表标识。状态应该包含所有子结构的聚集状态,如果状态是错误的,这错误可能用一个生效的定义值来填充。一个设备运用以下规则来计算聚集状态:Idle所有子结构体状态都是空闲状态PartiallyActive至少有一个子结构状态是AVTIC,所有其他子结构必须是空闲Active所有子结构是ACTIV状态Error至少有一个子结构状态是错误的错误,如果出现,应该有一个完整定义的字符串描述这个错误表258:GetAnalyticsStateGetAnalyticsState请求与应答信息名称功能描述GetAnalyticsStateRequest请求信息包含AnalyticsEngineControl配置令牌:tt:ReferenceTokenConfigurationToken[1][1]GetAnalyticsStateResponse应答信息是AnalyticsEngineControl.状态信息:tt:AnalyicsStateInformationState[1][1]错误代码原因分析env:Senderter:InvalidArgValter:NoAnalyticsEngineControl这配置的令牌与存在AnalyticsEngineControl.不相关18.7输出流配置一个分析设备服务提供一个像在“实时流”中定义的实时流接口。令牌识别代替了在媒体类别中使用的预置文件(Profile),在AnalyticsEngineControl中令牌识别适用于分析设备服务。18.7.1请求流的URL这个操作可以用来请求一个URL;这个URL能够被用来初始化一个实时流,这个实时流使用RTSP协议作为控制协议的。只有在响应中指定的URL或者分析引擎控制被再配置时,URI是有效的。分析设备服务应该支持通过GetAnalyticsDeviceStreamUri命令来检索一个URL流,这个URL流是与分析引擎控制相关的.表259:GetAnalyticsDeviceStreamUri命令GetAnalyticsDeviceStreamUri请求与应答信息名称功能描述GetAnalyticsDeviceStreamUriRequest请求信息包含StreamSetup元素包含两部分:流的类型定义t(当单播或者广播被请求时)按指定的线路或者定义在不同网络的协议来传输:AnalyticsEngineControlToken元素应该标明分析引擎控制使用tt:StreamSetupStreamSetup[1][1]tt:ReferenceTokenAnalyticsEngineControlToken[1][1]GetAnalyticsDeviceStreamUriResponse应答信息是请求的URL信息:xs:anyURIUri[1][1]错误代码原因分析env:Senderter:InvalidArgValter:NoAnalyticsEngineControl用令牌指定的配置不存在env:Senderter:InvalidArgValter:InvalidStreamSetup不支持协议的流类型或者流StreamSetup的传输env:Senderter:OperationProhibitedter:StreamConflict协议的流类型或者在流设置的传输部分与其它流相冲突19录制控制19.1介绍录像服务,使客户端能够管理录像并设置从数据源到录像带的数据的转移。录制管理,包括创建和删除录制,以及锁定、解锁录制和删除录制数据。录制工作从录像源传输数据到录像带。录像的来源可以是接收器服务创建的接收对象,或者是一个本地设备上的编码数据的媒体文件。媒体文件可以用来作为嵌入式存储摄像头的源。在本规范中使用录制来存储一组音频、视频和元数据的轨道集。录像带可容纳任意数量的轨道集。轨道被看做是在特定的时间记录数据的无限的时间线。图24:录像的例子该图显示了三个录制集,每一个有视频,元数据和两个音轨。在这里,第二个音轨用于存储音频反向通道。录制至少应当是有三个轨道,分别给音频、视频和元数据。录像服务的某些实现方式可能支持各种类型,多种轨道集。为了保存录制的数据,客户端首先创建一个录像,保证录像有必要的轨道。然后在客户端创建一个录像的工作,从一个或多个数据源提取数据然后把数据存储到录像轨道。客户可以设立多个录制任务,且都录制到相同的录像带。如果多个录像工作同时活动,该设备使用优先计划去选择在轨道之间定义的录像工作。客户可随时更改录像的工作模式从而可以实现报警录像或手动录像等功能。录像工作依赖于接收器服务通过接收对象的接收令牌来确认从其他设备接收数据。客户端使用单一录像工作的接收器对象的情况下,录制服务可以自动创建和自动删除接收对象。自动生成与自动创建接收信号标志在录像作业配置结构中。当没有录像工作使用时,接收器对象创造的这种方式将被自动删除。一个自动创建的接收器对象把它所有领域设置为空值。客户应在它建立录像工作后设定接收对象。ONVIF的录像观点是一个合乎逻辑的、独立的方式,录像存储在物理磁盘上。例如,一些摄像头装置在文件系统中为每个报警的发生创建一个不同的文件来实现警报录像。然而每个文件可以被表示为一个不同的ONVIF录像,该标准模型的目的是把所有的文件汇总到一个单一的录制。然后通过FindEvents方法搜索“datapresent”事件搜索服务,用户可以设置视频什么时候开始录制、什么时候停止录制。如果元数据被录制,则元数据也可以容纳所有的事件所产生的数据源(见15节和11.10节的事件处理数据的配置对象)。此外,设备在理论上也录制ONVIF定义的历史事件(见搜索服务的录制事件描述),例如开始和结束录制数据范围。设备在理论上也可以录制供应商特定的历史事件。设备产生的事件不插入现有的录制的元数据轨道。搜索服务中的FindEvents方法中可以找到的所有录制事件。许多设备实现自动删除最古老的录制数据存储,为新录制释放空间。锁存提供一个允许用户选择数据范围的机制。一系列被锁存的数据是不会自动被删除的。支持锁存是保留给未来的规范版本。19.2一般要求所有对象创建的录制应当持续–即他们继续存在动力循环。同样,所有的配置数据的对象应持续。19.3数据结构19.3.1录制设置录制配置结构通过CreateRecordings和Get/SetRecordingConfiguration设置录制。MaximumRetentionTime指定数据在录制的任何轨道存放的最长时间。设备应删除超过了最大限度保留时间的所有数据。这些数据将无法访问了。如果maximumretentionperiod设置为0,设备不应限制存储数据的保留时间,除由资源约束。然而无论maximumretentiontime是否存在,设备可以自动删除录制为新录制释放存储空间。设备仅使用此结构的这个功能。因此,它只是存储信息,并将存储的信息通过GetRecordingConfiguration和GetRecordingInformation方式返回(见20.5)。19.3.2轨迹设置轨道配置结构使用CreateTrack和Get/SetTrackConfiguration配置轨道。轨道设置包含以下领域:TrackType定义轨道的数据类型。应当等于字符串“视频”,“音频”或“元数据”。轨道只能保存这些类型的数据。设备仅使用此结构的这个功能。因此,它只是存储信息,并将存储的信息通过GetTrackConfiguration和GetRecordingInformation方式返回(见20.5)。19.3.3录制任务设置录制任务设置结构保存录制任务的设置。录制任务设置可以通过以下图例呈现:录制任务设置包含以下领域:RecordingToken:标识录制这项工作应存储接收到的数据。Mode:工作模式。如果是闲置,没有什么会发生。如果它是有效的,该装置应设法从接收器获取数据。客户端应当使用GetRecordingJobState确定数据传输是否是真的发生。有效模式只有“闲置”和“活动”。Priority:优先权,这是一个正数。如果有多个录制任务在同一轨道上存储数据,该设备将只存储最高优先权的录制任务的数据。优先指定各个录制任务,但该设备会鉴定单独优先哪个轨道。如果录制任务具有相同的优先级,设备将录制最新的录制任务对应的数据。0表示最低优先级。数字越大表示更高的优先权。SourceToken:这是一个数据源的参考。源类型在SourceToken结构中被确定属性类型。如果类型是,令牌是一个接收器参考。在这种情况下该装置应通过网络接收数据。如果类型是,令牌标识媒体文件,指示设备在本地设备从文件获得的数据。如果SourceToken省略,AutoCreateRecevier应是true。AutoCreateReceiver:如果此字段是真且SourceToken省略,则该装置会创建一个接收器对象(通过接收器服务)和分配接收器参考到SourceToken。当从设备检索录制任务设置时,AutoCreateReceiver永远为真。SourceTag:如果收到的RTSP流包含多个相同类型的轨道,Sourcetag会区分这些轨道。Destination:目的地是该设备应存储接收到的数据的轨道的TrackToken。轨道-源标签-描述源-源令牌-自动创建接收器录制任务设置-录制令牌-模式-优先权19.4创建录制CreateRecording创建一个新的录制。新的录制必须分别创建一个视频、一个音频和一个元数据轨道。此方式是可选的。如果Recording/DynamicRecordings是真则必须有效。表260:CreateRecording命令CreateRecording请求-响应消息名称描述CreateRecordingRequest包含录制的初始设置。tt:RecordingConfigurationRecordingConfiguration[1][1]CreateRecordingResponse返回创建录制的参考。tt:RecordingReferenceRecordingToken[1][1]故障码描述env:Receiverter:Actionter:MaxRecordings设备不能创建一个新的录制,已达到支持的最大录制数量。env:Senderter:InvalidArgValter:BadConfiguration录制设置无效。env:Receiverter:ActionNotSupportedter:NotImplemented此优化方式不实现。成功完成时,创建录制应已创建三条轨道配置如下:轨道令牌轨道类型VIDEO001视频AUDIO001音频META001元数据所有的轨道配置的最大限度的保留时间应设置为0(无限),描述设置为空字符串。19.5删除录制删除录制将删除录制对象。当一个录制被删除,设备将删除录制的所有轨道,并删除所有录制任务录制到的录像。每个删除的录制任务,设备也将删除所有使用录制任务的配置结构的AutoCreateReceiver自动创建的录制任务的接收器对象,并将不用于任何其他录制任务。此方式是可选的。如果Recording/DynamicRecordings是真则必须有效。表261:DeleteRecording命令DeleteRecording请求-响应消息名称描述DeleteRecordingRequest标识应删除的录制。tt:RecordingReferenceRecordingToken[1][1]DeleteRecordingResponse空消息。故障码描述env:Senderter:InvalidArgValter:NoRecording录制令牌不提供现有录制的参考。env:Receiverter:ActionNotSupportedter:NotImplemented设备不能删除录像。env:Receiverter:Actionter:CannotDelete特定的录像不能被删除。19.6获取录制集GetRecordings应当返回一个设备所有的录制的说明书。说明书包括所有录制各自的轨道清单。表262:GetRecordings命令GetRecordings请求-响应消息名称描述GetRecordingsRequest空消息。GetRecordingsResponseRecordingItem识别录制及其当前组态。tt:GetRecordingsResponseItemRecordingItem[0][unbounded]故障码描述没有具体的故障码。19.7设置录制配置SetRecordingConfiguration改变录制的设置。表263:SetRecordingConfiguration命令SetRecordingConfiguration请求-响应消息名称描述SetRecordingConfigurationRequestRecordingToken判定录像是否改变。RecordingConfiguration应是录像的新设置。tt:RecordingReferenceRecordingToken[1][1]tt:RecordingConfigurationRecordingConfiguration[1][1]SetRecordingConfigurationResponse空消息。故障码描述env:Senderter:InvalidArgValter:BadConfiguration设置无效。env:Senderter:InvalidArgValter:NoRecording录制令牌不提供现有录像的参考。19.8获取录制配置GetRecordingConfiguration检索录像的录制设置。表264:GetRecordingConfiguration命令GetRecordingConfiguration请求-响应消息名称描述GetRecordingConfigurationRequestRecordingToken判定录像的什么设置被检索。tt:RecordingReferenceRecordingToken[1][1]GetRecordingConfigurationResponseRecordingConfiguration应是当前录像的设置tt:RecordingConfigurationRecordingConfiguration[1][1]故障码描述env:Senderter:InvalidArgValter:NoRecording录制令牌不提供现有录像的参考。19.9创建轨道此方式创建一个新的录制轨道。此方式是可选的,如果Recording/DynamicTracks是真则必须有效。表265:CreateTrack命令CreateTrack请求-响应消息名称描述CreateTrackRequestRecordingToken判定录像应增加哪一个轨道。TrackConfiguration提供设置的新轨道。tt:RecordingReferenceRecordingToken[1][1]tt:TrackConfigurationTrackConfiguration[1][1]CreateTrackResponseTrackToken判定新建立的轨道。TrackToken是录像唯一属于新轨道的。tt:TrackReferenceTrackToken[1][1]故障码描述env:Senderter:InvalidArgValter:NoRecording录制令牌不提供现有录像的参考。env:Receiverter:Actionter:MaxTracks新轨道不能被建立,因为该录像已达到设备支持的最大轨道数。env:Senderter:InvalidArgValter:BadConfiguration设置无效。env:Receiverter:ActionNotSupportedter:NotImplemented不能实现该方法。一个TrackToken本身并不是唯一地标识一个特定的轨道。轨道内不同的录制,可能具有相同的轨道令牌。19.10删除轨道DeleteTrack输出录像的轨道。所有在轨道上的数据都会被删除。此方式可选的,如果Recording/DynamicTracks是真则必须有效。表266:DeleteTrack命令DeleteTrack请求-响应消息名称描述DeleteTrackRequestRecordingToken判定录像应删除哪一个轨道。tt:RecordingReferenceRecordingToken[1][1]tt:TrackConfigurationTrackToken[1][1]DeleteTrackResponse空消息。故障码描述env:Receiverter:ActionNotSupportedter:NotImplemented设备不执行DeleteTrack方式。env:Senderter:InvalidArgValter:NoTrack轨道令牌不提供现有轨道的参考。env:Senderter:InvalidArgValter:NoRecording录制令牌不提供现有录制的参考。env:Receiverter:Actionter:CannotDelete指定轨道不能删除。19.11获取轨道配置GetTrackConfiguration检索指定轨道的设置。表267:GetTrackConfiguration命令GetTrackConfiguration请求-响应消息名称描述GetTrackConfigurationRequestRecordingToken和TrackToken判定从哪里获得录制轨道的设置。tt:RecordingReferenceRecordingToken[1][1]tt:TrackReferenceTrackToken[1][1]GetTrackConfigurationResponsett:TrackConfigurationTrackConfiguration[1][1]故障码描述env:Senderter:InvalidArgVal轨道令牌不提供现有轨道的参考。ter:NoTrackenv:Senderter:InvalidArgValter:NoRecording录制令牌不提供现有录制的参考。19.12设置轨道配置SetTrackConfiguration将改变轨道的设置。表268:SetTrackConfiguration命令SetTrackConfiguration请求-响应消息名称描述SetTrackConfigurationRequestRecordingToken和TrackToken判定轨道应设置哪一个轨道。TrackConfiguration是轨道的新设置。tt:RecordingReferenceRecordingToken[1][1]tt:TrackReferenceTrackToken[1][1]tt:TrackConfigurationTrackConfiguration[1][1]SetTrackConfigurationResponse空消息。故障码描述env:Senderter:InvalidArgValter:NoTrack轨道令牌不提供现有轨道的参考。env:Senderter:InvalidArgValter:NoRecording录制令牌不提供现有录制的参考。env:Senderter:InvalidArgValter:BadConfiguration设置无效。19.13创建录制任务CreateRecordingJob将建立一个新的录制任务。表269:CreateRecordingJob命令CreateRecordingJob请求-响应消息名称描述CreateRecordingJobRequestJobConfiguration将保持新录制任务的设置。tt:RecordingJobConfigurationJobConfiguration[1][1]CreateRecordingJobResponseJobToken将鉴定建立的录制任务。JobConfiguration结构是设备使用的设置。JobConfiguration将有别于CreateRecordingJob。tt:RecordingJobReferenceJobToken[1][1]tt:RecordingJobConfigurationJobConfiguration[1][1]故障码描述env:Receiverter:Actionter:MaxRecordingJobs已达到设备能掌握的最大录制任务。env:Senderter:InvalidArgValter:BadConfigurationJobConfiguration内容无效。env:Receiverter:Actionter:MaxReceiversAutoCreateReceivers标志为真,如果接收服务不能建立一个新的接收,此错误将返回。从CreateRecordingJob返回的任务配置应和任务配置传递到CreateRecordingJob的相同,除了接收器令牌和自动创建接收器。在返回的结构中,接收器令牌应当有效且应忽略自动创建接收器。19.14删除录制任务DeleteRecordingJob将删除一个录制任务。同时它将删除所有接收对象和录制任务使用AutoCreateReceiver自动创建的录制任务配置结构,且其他任何录制任务将不再使用。表270:DeleteRecordingJob命令DeleteRecordingJob请求-响应消息名称描述DeleteRecordingJobRequestJobToken判定该删除的录制任务。tt:RecordingJobReferenceJobToken[1][1]DeleteRecordingJobResponse空消息。故障码描述env:Senderter:InvalidArgValter:NoRecordingJobJobToken不指定一个现有的任务。19.15获取录制任务集GetRecordingJobs将返回一个设备所有录制任务的清单。表271:GetRecordingJobs命令GetRecordingJobs请求-响应消息名称描述GetRecordingJobsRequest空消息。GetRecordingJobsResponseJobItem标识设备的任务,并持有任务的当前配置。tt:GetRecordingJobsResponseItemJobItem[0][unbounded]故障码描述没有具体的故障码。19.16设置录制任务配置SetRecordingJobConfiguration将更改录制任务的配置。表272:SetRecordingJobConfiguration命令SetRecordingJobConfiguration请求-响应消息名称描述SetRecordingJobConfigurationRequest从SetRecordingJobConfiguration返回的任务配置应和任务配置传递到SetRecordingJobConfiguration的相同,除了接收器令牌和自动创建接收器。在返回的结构中,接收器令牌应当有效且应忽略自动创建接收器。tt:RecordingJobReferenceJobToken[1][1]tt:RecordingJobConfigurationJobConfiguration[1][1]SetRecordingJobConfigurationResponseJobConfiguration结构是设备使用的设置。JobConfiguration将与CreateRecordingJob有所不同。tt:RecordingJobConfigurationJobConfiguration[1][1]故障码描述env:Senderter:InvalidArgValter:NoRecordingJobJobToken不指定现有的任务。env:Senderter:InvalidArgValter:BadConfigurationJobConfiguration内容无效。env:Receiverter:Actionter:MaxReceiversAutoCreateReceivers标志为真,如果接收服务不能建立一个新的接收,此错误将返回。SetRecordingJobConfiguration将删除任何自动建立的、不再用做改变录制任务设置结果的接收器对象。19.17获取录制任务配置GetRecordingJobConfiguration将返回录制任务的当前配置。表273:GetRecordingJobConfiguration命令GetRecordingJobConfiguration请求-响应消息名称描述GetRecordingJobConfigurationRequestJobToken判定将被检索设置的录制任务。tt:RecordingJobReferenceJobToken[1][1]GetRecordingJobConfigurationResponseJobConfiguration保持当前录制任务的设置。tt:RecordingJobConfigurationJobConfiguration[1][1]故障码描述env:Senderter:InvalidArgValter:NoRecordingJobJobToken不指定一个现有的任务。19.18设置录制模式SetRecordingJobMode将改变录制任务的模式。使用这种方式相当于检索录制任务的设置,然后用不同的方式回写。表274:SetRecordingJobMode命令SetRecordingJobMode请求-响应消息名称描述SetRecordingJobModeRequestJobToken判定将被改变录制模式的录制任务。Mode必须是录制任务的新模式。tt:RecordingJobReferenceJobToken[1][1]tt:RecordingJobModeMode[1][1]SetRecordingJobModeResponse空消息。故障码描述env:Senderter:InvalidArgValter:NoRecordingJob任务令牌不指定一个现有的任务。env:Senderter:InvalidArgValter:BadMode模式无效。19.19获取录制任务状态GetRecordingJobState返回录制任务的状态。包含聚合的状态以及每个录制任务轨道的状态。表275:GetRecordingJobState命令GetRecordingJobState请求-响应消息名称描述GetRecordingJobStateRequestJobToken判定哪一个录制任务将被获取状态。tt:RecordingJobReferenceJobToken[1][1]GetRecordingJobStateResponseState将保持录制任务的状态。tt:RecordingJobStateInformationState[1][1]故障码描述env:Senderter:InvalidArgValter:NoRecordingJobJobToken不指定一个现有的任务。录制任务的状态信息结构包含以下图例:RecordingToken:录制任务记录的录制鉴定。State:(如部分录制任务状态信息)将持有对整个录制任务信息结构的聚集状态。SourceToken:判定录制任务的数据源。State:(如部分录制任务状态源)将持有对整个录制任务状态源的聚集状态。SourceTag:要判定数据源的轨道提供的数据。Destination:判定目标轨道。轨道-源标签-描述-状态源-源令牌-状态录制任务状态信息-录制令牌-状态State:(如部分录制任务轨道状态)应提供轨道的工作状态。有效值状态应当是“Idle”,“Active”和“Error”。如果状态是“Error”,错误的地方可能入了一个已经定义的值。Error:如果存在,将说明已经定义了的字符串值的错误。该字符串应是英文。设备适用于以下规则计算聚合状态:Idle所有子节点的状态值是“闲置”PartiallyActive一些子节点的状态是“活动”,一些子节点是“闲置”Active所有子节点的状态值是“活动”Error至少有一个子节点有“错误”状态19.20事件录制服务通过事件服务调度事件。它能产生这一章中列出的条件的事件时,触发事件发生。有些类似自动生成的事件可以用FindEvents方法在搜索服务搜索。参见20.17节。19.20.1录制任务状态变化如果录制任务状态信息结构的状态域改变,设备将发送以下事件:Topic:tns1:RecordingConfig/JobState19.20.2设置变化如果录制的设置变化,设备将发送以下事件:Topic:tns1:RecordingConfig/RecordingConfiguration如果轨道的设置变化了,设备将发送以下事件:Topic:tns1:RecordingConfig/TrackConfiguration如果录制任务的设置变化了,设备将发送以下事件:Topic:tns1:RecordingConfig/TrackConfiguration19.20.3删除数据当数据删除时,设备将发送以下事件:Topic:tns1:RecordingConfig/DeleteTrackData19.20.4录制和轨道的建立与删除当录制建立时,设备将发送以下事件:Topic:tns1:RecordingConfig/CreateRecording当录制删除时,设备将发送以下事件:Topic:tns1:RecordingConfig/DeleteRecording当轨道建立时,设备将发送以下事件:Topic:tns1:RecordingConfig/CreateTrack当轨道删除时,设备将发送以下事件:Topic:tns1:RecordingConfig/DeleteTrack19.21示例19.21.1例1:单摄像头的安装录制有两个步骤,第一步是设置视频服务器;Createrecording(thisimplicitlycreatesanA,VandMtrack)RecordToken=CreateRecording(RecordConfiguration);Thetracktokensarepredefined.Wedon’thavetofindthemonthedeviceTrackToken1=“VIDEO001”TrackToken2=“AUDIO001”TrackToken3=“META001”;Createarecordingjob,assumethatwesetmodetoidle,autocreatereceiverJobToken,ActualJobConfig=CreateRecordingJob(JobConfiguration);ConfigurethereceiverConfigureReceiver(ActualJobConfiguration.ReceiverToken,ReceiverConfiguration)这一步完成配置。最后,调用一些实体开始录制;ActivatetherecordingjobSetRecordingJobMode(JobToken,Active)让任务运行。这将导致视频服务器建立RTSP连接设备。因此,启动和停止录制,只需要预先对录制任务呼叫SetRecordingJobMode。由于嵌入式组态对象持续,配置周期只需要做一次。19.21.2例2:从一台摄像机录制多个流到一个单录制这个例子非常类似的例子1。该任务设置将保持两个接收器对象的参考。每个对象被配置为接收来自同一装置的不同的流。;Createrecording(thisimplicitlycreatesanA,VandMtrack)RecordToken=CreateRecording(RecordConfiguration);Thetracktokensarepredefined.Wedon’thavetofindthemonthedeviceTrackToken1=“VIDEO001”TrackToken2=“AUDIO001”TrackToken3=“META001”;CreatethreeadditionaltracksTrackToken4=CreateTrack(RecordToken,AudioConfig)TrackToken5=CreateTrack(RecordToken,VideoConfig)TrackToken6=CreateTrack(RecordToken,MetadataConfig);Createarecordingjob,assumethatwesetmodetoidle,autocreatetworeceiversJobToken,ActualJobConfiguration=CreateRecordingJob(JobConfiguration);ConfigurethereceiversConfigureReceiver(ActualJobConfiguration.ReceiverToken[1],Receiver1Configuration)ConfigureReceiver(ActualJobConfiguration.ReceiverToken[2],Receiver2Configuration)调用一些实体并真正开始录制;ActivatetherecordingjobSetRecordingJobMode(JobToken,Active)20记录搜索20.1介绍搜索服务提供大量的操作,用于查找记录器内感兴趣的数据。搜索最常用的方式是搜索事件,事件就是包含元数据轨道的记录或在设备中的其他相关记录读取记录摘要(GetRecordingSummary)返回一个包含所有记录的摘要,用于提供一个时间轴的浏览。读取记录信息(GetRecordingInformation)返回一条记录的信息,如开始时间和当前状态。读取媒体属性(GetMediaAttributes)返回在指定时间的一个记录的媒体属性。实际的搜索是由查找和结果操作组成的,每一个找操作启动一个搜索对话,客户端就可以从查找对话中用增量的方式获取结果,或者同时,依赖实现和范围搜索。有四对查找操作分别对应记录,记录事件,PTZ位置和元数据.读取搜索状态(GetSearchState)返回一个搜索对话的状态。结束搜索(EndSearch)结束一个搜索对话,停止搜索,返回和阻塞结果操作。20.2概念20.2.1搜索方向搜索被执行是从时间线上的出发点到一个结束点,假如结束点在出发点之前,则会执行逆序搜索,这会非常的有用,假如仅对最新的匹配事件感兴趣,或者方便读取结果在最新到最老的命令。假如没有指定结束点,查找将会从出发点一直执行下去。20.2.2记录事件描述一个与记录相关的离散事件,把它说成是一个通知消息,但这并不一定意味着它已经作为一个通知被记录。记录事件可以是一个包含记录元数据跟踪的通知,可以通过记录装置创建它,作为一个内部事件或机制的结果,或者客户端通过用网络服务请求或元数据流的方式,把记录事件嵌入通知。然而当记录事件已经被创建并且与特定的记录相关联时,这个规范没有规定数据在设备中的存储格式,它仅关心数据在接口上的表达格式。然而,创建和记录事件总是被看做与查找滤波和结果反馈相关的通知。每一个记录事件有一个通知主题,详见15.7代码规范。预先定义的记录事件,详见20.17章节。与属性事件的初始状态通信,虚拟的开始状态事件能够被返回在查找结果中,包含查找区间起始点的一个或多个属性值。这样的开始状态在场景中都是虚拟的事件,他们是在服务正在进行时创建的,而不是从记录数据收集的。假如客户端表明,希望给这样的事件设定适当的标记,那么定义在查找滤波器中匹配主题的虚拟事件,应该返回在查找范围内的一些记录。20.2.3查找对话通过一个找操作开始一个异步的搜索对话,然后通过对话的搜索节点鉴定身份。读取结果操作是关于找操作创建的对话,使用它可以增量式的返回结果。查找可以在三种情况下终止:KeepAlivetimeexpires–假如从客户端没有请求发出,那么在指定的时间间隔内指定的对话就将会终止。通过读取结果方式返回搜索对话最后的数据,显示搜索状态的结果为“完成”,搜索终止。EndSearch–客户端明确的结束一个对话。结束一个对话将取消正在进行的搜索,,立即返回和进一步请求这个终止了的对话,就会产生错误的消息。一个设备不应该重复使用某个搜索标识符,因为它会误导客户端,到底一个结束对话是否被终止。20.2.4查找范围范围包含大量的操作元素,用于限制搜索的数据范围。包括的数据通过给每个主题指定一系列的标志符,客户端能够随意的定义源和记录搜索,假如给定几个主题,那么指定的这些标识符就会被用到。假如没有指定源或记录的标识符,那么就代表所有记录。通过记录信息滤波器可以进一步改善范围,但是,当记录被指定,滤波器就只会运用于记录的子集。记录信息滤波器相对于指定一系列的记录标识符,通过操作记录信息结构的XPath滤波器,记录可以被滤波。通过使用20.18中定义的XPath方式来比较,客户可以对记录信息结构中的所有元素进行过滤。假如一个记录信息滤波被供应,只有匹配滤波器的记录可以成为范围的部分。例如一个在查找范围内仅仅包含音频的记录滤波器:boolean(//Tracks[TrackType=“Audio”])20.2.5搜索过滤器搜索过滤器用于指定要搜索的类。分别见找事件,找PTZ位置,找元数据,它们的作用域为规定的记录范围。20.3数据结构20.3.1记录信息结构记录信息包含记录的信息,组成的轨道和源:RecordingToken–记录的唯一标识符EarliestRecording–最早记录的数据和时间LatestRecording–最新记录的数据和时间Content–内容的描述信息RecordingStatus–记录的当前状态可以随时开始,停止,移动和移除RecordingSourceInformation–一个包含记录的源信息的结构TrackInformation–一系列跟踪信息结构20.3.2记录源信息结构?记录源的信息包含:SourceId–由创建记录的客户端选择的一个源标识符,这个标识符对NVS不透明,客户端可以对其使用任何类型的URI。Name–源信息名称Location–源位置的信息描述Description–源信息描述Address–源的信息URI20.3.3跟踪信息结构在记录中一个单轨信息包含:TrackToken–轨道的标识符,轨道标准符在一个记录中用到的所有轨道标识中是独一无二的TrackType–轨道类型的标识符(视频,音频或元数据)Description–轨道的信息描述DataFrom–轨道中最老记录的数据和时间DataTo–轨道中最新记录的数据和时间20.3.4列举查找状态查找状态可以是下面的其中一个:Queued–查找从没开始Searching–查找正在进行中,能够产生新的结果Completed–查找完成,将不会有新的结构产生20.3.5媒体属性结构媒体属性包含媒体轨道信息,就是在一个特定时间范围的特定记录的信息。时间范围可以是一个时间点,即结束和起始点是重合的。RecordingToken–结构关心的记录From–一个有效地,记录在案的起始点Until–一个有效地记录在案的终点VideoAttributes–视频属性集,,描述一个记录的视频跟踪数据AudioAttributes–音频属性集,,描述一个记录的音频跟踪数据MetadataAttributes–元数据属性集,,描述一个记录的元数据跟踪数据20.3.6找事件结果结构RecordingToken–标识找到事件的记录TrackToken–标识找到事件的轨道Time–找到事件的数据和时间Event–要找的事件消息StartStateEvent–假如为真,表示事件代表在记录中一个或多个属性的开始状态20.3.7找PTZ位置结果结构RecordingToken–标识包含匹配位置的记录TrackToken–标识包含匹配位置的轨道Time–匹配位置的数据和时间Position–匹配的PTZ矢量20.3.8PTZ位置过滤结构包含必要的元素来说明在PTZ位置找什么,PTZ矢量应该与存储在记录中PTZ坐标空间相一致MinPosition–查找的PTZ位置的下边界MaxPosition–查找的PTZ位置的上边界EnterOrExit–假如为真,当进入或退出指定的PTZ量时查找20.3.9元数据过滤结果包含一个运用于元数据流结构的XPath符号。一个查找重叠在右下象限的场景的对象符号的例子:boolean(//Object/Appearance/Shape/BoundingBox[@right>”0.5”])andboolean(//Object/Appearance/Shape/BoundingBox[@bottom>”0.5”])找元数据结果结构RecordingToken–识别包含匹配的元数据记录TrackToken–识别包含匹配元数据的轨道Time–匹配元数据的数据和时间20.4获取记录概要(GetRecordingSummary)GetRecordingSummary是用于读取所有记录数据的概要描述。这个操作支持所有执行记录查找服务的设备。表276:读取记录信息概要命令读取记录概要命令(GetRecordingSummary)请求应答(Request-Response)消息名字描述读取记录概要请求(GetRecordingSummaryRequest)空消息读取记录概要响应(GetRecordingSummaryResponse)返回一个结构体包含:当设备中有一个数据记录时指定的数据起始点时间DataFrom,终点时间DataUntil,估算总共的记录和跟踪数。tt:RecordingSummarysummary[1][1]故障代码描述没有命令存在20.5读取记录信息(GetRecordingInformation)GetRecordingInformation返回一条由记录标识符指定的记录信息。执行记录查找服务的设备应该支持这个操作。表277:读取记录信息命令读取记录信息命令(GetRecordingInformation)请求应答(Request-Response)消息名字描述读取记录信息请求(GetRecordingInformationRequest)请求描述tt:ReferenceTokenRecordingToken[1][1]读取记录信息响应(GetRecordingInformationResponse)响应描述tt:RecordingInformationRecordingInformation[1][1]故障代码描述env:Senderter:InvalidArgValter:InvalidToken记录标识符无效20.6读取媒体属性(GetMediaAttributes)GetMediaAttributes返回一系列的媒体属性,包括所有特定时间内特定记录轨道的属性,用这个操作的客户端可以把它当做一个非阻塞的操作来使用。设备应该设置MediaAttributes结构体中的starttime和endtime,用于估算是否这个范围将会引起操作阻塞,详见MediaAttributes结构了解更多信息。执行记录查找服务的设备都应该支持这个操作。表278:读取媒体属性读取媒体属性命令(GetMediaAttributes)请求应答(Request-Response)消息名字描述读取媒体属性请求(GetMediaAttributesRequest)RecordingTokens是一系列需要查询的记录标识符,Time是请求查询的信息时间范围tt:ReferenceTokenRecordingTokens[0][unbounded]xs:dateTimeTime[1][1]读取媒体属性响应(GetMediaAttributesResponse)包含一个MediaAttributes结构体对于每个请求的记录标识符tt:MediaAttributesMediaAttributes[0][unbounded]故障代码描述env:Senderter:InvalidArgValter:InvalidToken记录标识符无效20.7找记录(FindRecordings)FindRecordings开始一个搜索对话,寻找与请求匹配的记录(见20.2.4),通过GetRecordingSearchResults命令可以获取搜索结果,GetRecordingSearchResults请求指定请求返回数据的查找的标识符。当设备发生以下情况时,停止查找:整个时间范围从StartPoint到EndPoint都已经查找完毕已经达到定义的MaxMatches参数客户执行EndSession请求来停止对话与对话相关的KeepAliveTime使对话终止结果数量未被定义,那么就允许设备返回任何数量的结果,执行记录查找服务的设备都应该支持这个命令。表279:找记录命令找记录命令(FindRecordings)请求应答(Request-Response)消息名字描述找记录请求(FindRecordingsRequest)SearchScopeScope定义数据集的查找范围,当到达MaxMatches时,停止查找。KeepAliveTime对话超时时间tt:SearchScopeScope[1][1]xs:intMaxMatches[0][1]xs:durationKeepAliveTime[1][1]找记录响应(FindRecordingsResponse)返回查找标识符识别请求的查找对话tt:JobTokenSearchToken[1][1]故障代码描述env:Receiverter:Actionter:ResourceProblem设备不能创建新的查找对话20.8获取记录搜索结果(GetRecordingSearchResults)GetRecordingSearchResults命令用于获取执行FindRecordings命令得到的记录查找对话中的结果。响应应该不包含在相同对话框中请求返回过的结果。假如设定了最大结果,响应就不应该大于最大值。GetRecordingSearchResults应该被阻塞,除非:假如MaxResults被设定,对于响应,MaxResults的结果都是可用的假如MinResults被设定,对于响应,MinResults的结果都是可用的WaitTime期满查找完成或停止执行记录查找服务的设备都应该支持这个操作。表280:读取记录查找结果命令找记录命令(GetRecordingSearchResults)请求应答(Request-Response)消息名字描述取记录查找结果请求(GetRecordingSearchResultsRequest)SearchToken指定查找对话,MinResults定义了返回的最小结果数,在完成查找对话后,如果结果数小于最小结果数,所有的结果应该被返回,MaxResults定义了返回的最大结果数,WaitTime定义了最长等待结果时间阻塞。tt:JobTokenSearchToken[1][1]xs:intMinResults[0][1]xs:intMaxResults[0][1]xs:durationWaitTime[0][1]取记录查找结果响应返回一个结构体,包含当前的查找状态和一系列(GetRecordingSearchResultsResponse)RecordingInformation结构体tt:FindRecordingResultListResultList[1][1]故障代码描述env:Senderter:InvalidArgValter:InvalidToken查找标识符无效20.9找事件(FindEvents)FindEvents开始一个找对话,寻找与请求匹配的记录事件(见20.2.2),查找的结果通过GetEventSearchResults命令来获取,GetEventSearchResults指定请求返回数据查找的标识符。当设备发生以下情况时,停止查找:整个时间范围从StartPoint到EndPoint都已经查找完毕MaxMatches参数定义的匹配总数已经被找到客户执行EndSession请求来停止对话与对话相关的KeepAliveTime期满使对话终止结果应该按照时间排序,在向前查找中升序,在向后查找中降序,执行记录查找服务的设备应该支持这个操作。表281:找事件命令找事件命令(FindEvents)请求应答(Request-Response)消息名字描述找事件请求(FindEventsRequest)StartPoint是查找时间的起点,EndPoint是查找结束的时间点,这个时间点可以在StartPoint之前,因为在某些情况下是反向查找的假如EndPoint被忽略,那么它会向前查找到回到StartPoint,Scope定义了搜索的数据集,SearchFilter包括主题和消息过滤,在查找时应定义查找对象,通过设定IncludeStartState为真,表示在起始点为符合查找要求的虚拟事件,那么客户端允许返回其在记录中的状态,当达到MaxMatches值时,查找结束,KeepAliveTime是每个请求对话后的对话超时。xs:dateTimeStartPoint[1][1]xs:dateTimeEndPoint[0][1]tt:SearchScopeScope[1][1]tt:EventFilterSearchFilter[1][1]xs:booleanIncludeStartState[1][1]xs:intMaxMatches[0][1]xs:durationKeepAliveTime[1][1]找事件响应(FindEventsResponse)返回SearchToken识别请求创建的查找对话tt:JobTokenSearchToken[1][1]故障代码描述env:Receiverter:Action设备不能创建一个新的查找对话ter:ResourceProblem20.10读取事件搜索结果(GetEventSearchResults)GetEventSearchResults命令用于获取从先前用FindEvents命令而执行的记录查找对话中的结果。响应应该不包括已经在先前在相同对话框中请求返回过的结果。假如设定了MaxResults,响应就不应该大于MaxResults。GetEventSearchResults应该被阻塞,直到:假如MaxResults被设定,MaxResults的结果都是可用的对于响应假如MinResults被设定,MinResults的结果都是可用的对于响应WaitTime期满查找完成或停止执行记录查找服务的设备都应该支持这个操作。表282:读取事件搜索结果读取事件搜索命令(GetEventSearchResults)请求应答(Request-Response)消息名字描述读取事件搜索结果请求(GetEventSearchResultsRequest)SearchToken定义了查找对话,MinResults定义了返回的最小结果数,在完成查找对话后,如果结果数小于MinResults,所有的结果应该被返回,MaxResults定义了返回的最大结果数,WaitTime定义了阻塞的最长等待结果时间。tt:JobTokenSearchToken[1][1]xs:intMinResults[0][1]xs:intMaxResults[0][1]xs:durationWaitTime[0][1]读取事件搜索结果响应(GetEventSearchResultsResponse)返回一个结构体,包含当前的SearchState和一系列FindEventResult的结构体。tt:SearchStateSearchState[1][1]tt:FindEventResultFindEventResult[0][unbounded]故障代码描述env:Senderter:InvalidArgValter:InvalidToken查找标识符无效20.11查找PTZ位置(FindPTZPosition)FindPTZPosition开始于一个找对话,寻找匹配请求中定义的范围的PTZ位置(见20.2.2),查找的结果通过读取PTZ位置查找结果请求来获取,GetPTZPositionSearchResults请求指定返回数据查找的标识符。当设备发生以下情况时,停止查找:整个时间范围从StartPoint到EndPoint都已经查找完毕MaxMatches参数定义的匹配的总数已经被找到客户执行EndSession请求来停止对话与对话相关的KeepAliveTime期满使对话终止在设备的任何记录中,元数据跟踪无论何时CanContainPTZ为真时,设备就应该支持这个操作。表283:查找PTZ位置命令找PTZ位置命令(FindPTZPosition)请求应答(Request-Response)消息名字描述找PTZ位置请求(FindPTZPositionRequest)StartPoint是查找时间的起点,EndPoint是查找结束的时间点,这个时间点可以在开始点之前,因为在某些情况下是反向查找的假如结束点被忽略,那么它会向前查找直到回到StartPoint,Scope定义了搜索的数据集,SearchFilter包含了搜索条件,搜索条件定义了搜索的PTZ位置;通过设定包含开始状态为真,虚拟的事件在起始点若符合查找要求的应该被返回,当达到MaxMatches值时,搜索结束,KeepAliveTime是每个请求对话后的对话超时。xs:dateTimeStartPoint[1][1]xs:dateTimeEndPoint[0][1]tt:SearchScopeScope[1][1]tt:PTZPositionFilterSearchFilter[1][1]xs:intMaxMatches[0][1]xs:durationKeepAliveTime[1][1]找PTZ位置响应(FindPTZPositionResponse)返回SearchToken识别请求创建的查找对话tt:JobTokenSearchToken[1][1]故障代码描述env:Receiverter:Actionter:ResourceProblem设备不能创建一个新的查找对话env:Receiverter:ActionNotSupportedter:NotImplemented这个方式不执行20.12读取PTZ位置搜索结果(GetPTZPositionSearchResults)GetPTZPositionSearchResults命令用于获取从先前FindPTZPosition命令而执行的PTZ位置查找对话中的结果。响应应该不包括已经在先前在相同对话框中请求返回过的结果。假如设定了MaxResults,响应就不应该大于MaxResults。GetPTZPositionSearchResults应该被阻塞,直到:假如MaxResults被设定,对于响应,MaxResults的结果都是可用的假如MinResults被设定,对于响应,MinResults的结果都是可用的WaitTime期满查找完成或停止在设备的任何记录中,元数据跟踪无论何时CanContainPTZ参数为真,设备都应该支持这个操作。表284:读取PTZ位置搜索结果读取PTZ位置搜索搜索命令(GetPTZPositionSearchResults)请求应答(Request-Response)消息名字描述读取PTZ位置搜索结果请求(GetPTZPositionSearchResultsRequestt)SearchToken定义了查找对话,MinResults定义了返回的最小结果数,在完成查找对话后,如果结果数小于MinResults,所有的结果应该被返回,MaxResults定义了返回的最大结果数,WaitTime定义了最长等待结果时间阻塞。tt:JobTokenSearchToken[1][1]xs:intMinResults[0][1]xs:intMaxResults[0][1]xs:durationWaitTime[0][1]读取PTZ位置搜索结果响应(GetPTZPositionSearchResultsResponse)返回一个结构体,包含当前的SearchState和一系列FindPTZPositionResulttt:SearchStateSearchState[1][1]tt:FindPTZPositionResultFindPTZPositionResult[0][unbounded]故障代码描述env:Senderter:InvalidArgValter:InvalidToken查找标识符无效20.13查找元数据(FindMetadata)FindMetadata开始于一个找对话,在定义的范围内寻找匹配的元数据(见20.2.2),查找的结果通过GetMetadataSearchResults请求来获取,GetMetadataSearchResults请求指定请求返回数据查找的标识符。当设备发生以下情况时,停止查找:整个时间范围从开始点到结束点都已经查找完毕最大的匹配参数定义的匹配的总数已经被找到客户执行终止对话请求来停止对话与对话相关的最后请求期满使对话终止假如MetaDataSearch功能设置为真,那么这个操作就会被强制支持,MetaDataSearch功能是否为真,可以通过使用GetCapabilities命令来查看表285:查找元数据命令找PTZ位置命令(FindMetadata)请求应答(Request-Response)消息名字描述找PTZ位置请求(FindMetadataRequest)StartPoint是查找时间的起点,EndPoint是查找结束的时间点,这个时间点可以在开始点之前,因为在某些情况下是反向查找的假如结束点被忽略,那么它会向前查找到回到StartPoint,Scope定义了搜索的数据集,SearchFilter包含了搜索条件,搜索条件定义了搜索的PTZ位置;通过设定包含开始状态为真,虚拟的事件在起始点若符合查找要求的应该被返回,当达到MaxMatches值时,搜索结束,KeepAliveTime是每个请求对话后的对话超时。xs:dateTimeStartPoint[1][1]xs:dateTimeEndPoint[0][1]tt:SearchScopeScope[1][1]tt:MetadataFilterSearchFilter[1][1]xs:intMaxMatches[0][1]xs:durationKeepAliveTime[1][1]找PTZ位置响应(FindMetadataResponse)返回SearchToken识别请求创建的查找对话tt:JobTokenSearchToken[1][1]故障代码描述env:Receiverter:Actionter:ResourceProblem设备不能创建一个新的查找对话20.14读取元数据搜索结果(GetMetadataSearchResults)GetMetadataSearchResults命令用于获取从先前用FindMetadata命令而执行的元数据查找对话中的结果。响应应该不包括已经在先前在相同对话框中请求返回过的结果。假如设定了MaxResults,响应就不应该大于MaxResults。GetMetadataSearchResults应该被阻塞,直到:假如MaxResults被设定,对于响应,MaxResults的结果都是可用的假如MinResults被设定,对于响应,MinResults的结果都是可用的等待时间期满查找完成或停止假如MetaDataSearch功能设置为真,那么这个操作就会被支持,MetaDataSearch功能是否为真在SearchCapabilities结构体中,可以通过使用GetCapabilities命令来查看表286:读取元数据搜索结果读取元数据搜索结果命令(GetMetadataSearchResults)请求应答(Request-Response)消息名字描述读取元数据搜索结果请求(GetMetadataSearchResultsRequest)SearchToken定义了查找对话,MinResults定义了返回的最小结果数,在完成查找对话后,如果结果数小于MinResults,所有的结果应该被返回,MaxResults定义了返回的最大结果数,WaitTime定义了阻塞的最长等待结果时间。tt:JobTokenSearchToken[1][1]xs:intMinResults[0][1]xs:intMaxResults[0][1]xs:durationWaitTime[0][1]读取元数据搜索结果响应(GetMetadataSearchResultsResponse)返回的结构体包含SearchState和一系列FindMetadataResult结构体tt:SearchStateSearchState[1][1]tt:FindMetadataResultFindMetadataResult[0][unbounded]故障代码描述env:Senderter:InvalidArgValter:InvalidToken查找标识符无效20.15获取搜索状态(GetSearchState)GetSearchState返回指定搜索对话当前的状态:排队(Queued),搜索(Searching)或完成(Completed.)。对于执行记录搜索服务的设备,这个操作是强制的。表287:读取搜索状态命令读取搜索状态命令(GetSearchState)请求应答(Request-Response)消息名字描述读取搜索状态请求(GetSearchStateRequest)SearchToken指定搜索对话tt:JobTokenSearchToken[1][1]读取搜索状态响应(GetSearchStateResponse)返回的搜索对话当前的Statett:SearchStateState[1][1]故障代码描述env:Senderter:InvalidArgValter:InvalidToken搜索标识符无效20.16结束搜索(EndSearch)EndSearch停止正在进行的搜索对话,请求返回一个阻塞结果,SearchToken变成无效的。假如搜索在完成之前被打断,那么应该返回搜索到达的那个被打断时间点,假如搜索还没开始,那么应该返回开始点,假如搜索已经被完成了,那么由查找操作提供的终止点应该被返回,对于执行记录搜索服务的设备,这个操作是必须的。表288:结束搜索命令结束搜索命令(EndSearch)请求应答(Request-Response)消息名字描述结束搜索请求(EndSearchRequest)SearchToken指定搜索对话tt:JobTokenSearchToken[1][1]结束搜索响应(EndSearchResponse)返回搜索结束时那个时间点EndPointxs:dateTimeEndPoint[1][1]故障代码描述env:Senderter:InvalidArgVal搜索标识符无效ter:InvalidToken20.17记录事件说明于事件消息描述相对应,一个设备应该产生以下的事件。一个支持记录查找服务的设备应该记录这些消息通知,以便客户可以使用FindEvents命令来搜索这些消息。所有的记录事件都由设备生成,并嵌入历史记录中,而且历史记录应该有一个根目录tns1:RecordingHistory目录:tns1:RecordingHistory/Recording/State当客户开始或停止记录指定的记录时,设备都会发送消息。在记录的开始,IsRecording应该被设置为真。在停止记录时,IsRecording应该设置为假。目录:tns1:RecordingHistory/Track/State当轨道数据出现时,也要发送信号,当数据出现时,就会发送一个IsDataPresent设置为真的消息,当数据无效时,就会发送一个IsDataPresent为假的消息,一个NVS可以产生以下的事件,假如NVS支持这些事件,那么它就会自动的记录这些通知消息,以便客户端能够使用FindEvent命令来得到这些消息。Topic:tns1:RecordingHistory/Track/VideoParametersTopic:tns1:RecordingHistory/Track/AudioParametersTheNVSshallsendeithermessage(dependingonthetrackdatatype)wheneveranyofthesepropertieschange.当这些属性改变时,NVS都应该送对应的消息(依赖于轨道数据类型)。20.18XPath习惯用法这个章节定义了XPATH语言,一个实现搜索服务的设备应该负责解析XPath字符串,XPath字符串通过搜索服务的方法传送。[1]Expression::=BoolExprExpression\'and\'ExpressionExpression\'or\'Expression\'(\'Expression\')\'\'not\'\'(\'Expression\')\'[2]BoolExpr::=\'boolean\'\'(\'PathExpr\')\'\'contains\'\'(\'ElementPath\',\'\'"\'String\'"\'\')\'[3]PathExpr::=\'//SimpleItem\'NodeTest\'//ElementItem\'NodeTestElementTest[4]NodeTest::=\'[\'AttrExpr\']\'[5]AttrExpr::=NameCompValueCompAttrExpr\'and\'AttrExprAttrExpr\'or\'AttrExpr\'not\'\'(AttrExpr\')\'[6]NameComp::=NameAttr\'=\'\'"\'String\'"\'[7]ValueComp::=ValueAttrOperator\'"\'String\'"\'[8]Operator::=\'=\'\'!=\'\'<\'\'<=\'\'>\'\'>=\'[9]NameAttr::=\'@Name\'[10]ValueAttr::=\'@Value\'[11]ElementTest::=\'/\'ElementPath\'[\'NodeComp\']\'[12]ElementPath::=ElementNameElementName[13]ElementName::=\'/\'String[14]NodeComp::=NodeNameOperator\'"\'String\'"\'[15]NodeName::=\'@\'StringString例如一个XPath符号常常用于从基层查找记录,基层就是包含至少一条视频轨道的地方。boolean(//Source[Location=“Basement”])andboolean(//Tracks[TrackType=“Video”])21重放控制本节描述了RTSP重放记录流的使用,并且定义了一种服务(对URI使用RTP测绘其重放终端)21.1使用RTSP协议重放控制是基于RTSP[RFC2326].的,然而因为它不支持一些由CCTV应用要求的功能,这个标准定义了一些扩展协议,下面是详细描述:本标准在使用RTSP协议时做如下的规定:1:服务器应该支持RTP/RTSP/HTTP/TCP。这是一种媒体服务将支持用来实现媒体流的设备相同的传输协议,并且相同的要求将适用在重放流中。2:服务器应该支持单播RTP/UDP传输流。3:为了实现可靠的媒体数据包,客户应该使用基于TCP的传输重放。4:在重播期间,服务器可能会不发送RTSP数据包。在典型的RTSP使用时,不要求数据包,因为通常采用的是一种可靠的传输的模式,并且因为绝对时间信息在流之内发送,使RTSP时间信息的发送者报告冗余信息。21.1.1RTSP描述RTSP返回的SDP描述命令应该包括跟踪参考,每一个跟踪记录允许客户端地图的曲目介绍在SDP记录的跟踪中。应该使用以下格式的标记:a:x-onvif-track:Forexample:CSeq:1User-Agent:ONVIFRtspclientAccept:application/sdpNVT–NVS:RTSP/1.0200OKCSeq:1Content-Type:application/sdpContent-Length:xxxv=0m=video0RTP/AVP26a=x-onvif-track:VIDEO001m=audio0RTP/AVP98a=x-onvif-track:AUDIO00121.2RTP协议头部扩展为了允许客户报告一个稳定和精确的时间戳(每个帧无论从哪个方向播放),有必要将确切的时间戳与数据包联系起来。或者每组数据包具有相同的时间戳。这是通过使用一个包含NTP时间戳的RTP头扩展来实现的,并且一些也需要实现重放的其他信息重放机使用扩展标识0xabac来进行重播扩展下面显示了一般形式的的RTP数据包包含的这些扩展:表289:RTP包布局这个扩展领域如下:.NTP时间戳。一个NTP[RFC1305]时间戳显示了URC与接入单元联系起来的绝对时间。.C:1位。表示该存取单元是一个同步点或干净点。比如,视频流的帧内编码的起始位。.E:1位。表示连续的一段记录的结尾。在每个录音的间隔,每个轨道的最后访问单元或者可得到的现有画面的结尾,都应该有这位的设置。当反向重放时,E标志应该设置最后一帧在这段记录的结尾时。.D:1位。表示该存取单元遵循如下的不连续传输。它主要在反向重放时被使用。每个GOP的包有个D位设置,因为它不按照以前的数据流顺序。(看21.5节).mbz:这一领域保留供以后使用但是必须为0..CSep:1个字节。这是低字节它使用的价值是用来启动传输。当客户发送多个连续播放命令。这个值可以用来决定每个新的PLAY(播放)命令开始时数据从哪里来。重放头的扩展应该在每个访问的第一个包中展现出来。它可能不会出现在随后的数据包接入单元。21.2.1NTP时间戳该RTP扩展头的NTP时间戳应该单调递增,通过一个单一的实时传输协议流的数据包。如果有必要调整单调性的话。它们应该对应相应的钟表就像在原始发射机流中测量的那样兼容压缩头部扩展21.2.2压缩JEPG头扩展的兼容重放头扩展可以与由压缩实时传输协议中使用的头扩展共存。有必要允许用此扩展,以便重放图像流。这个JEPG扩展是简单的附加到重播扩展中去的。它的存在表明一个实时传输协议报头的扩展长度字段大于3,并且通过这个扩展,可以在开始的第四个字的启动码0xFFD8和0xFFFF中扩展内容。以下说明了一些使用扩展的压缩包:表290:带有JEPG头布局的压缩包21.3RTSP特性标签重放服务使用了“ONVIF–REPLAY”的特征标签来显示它支持这个RTP协议的扩展,就像在这个标准里面描述的那样。这个允许客户为这些扩展查询服务器的支持通过使用请求头域,就像在12.3.1节描述的那样。例子:CSeq:302Require:onvif-replayS->C:RTSP/1.0551OptionnotsupportedCSeq:302Unsupported:onvif-replay这个重播服务器应该接受一个设置命令(包括一个包含“OIVIF-REPLAY”特征请求标签的请求头)21.4启动播放回放通过数据播放的方法来启动。比如:CSeq:123Require:onvif-replayControl:noONVIF设备可能支持逆向播放。逆向播放通过使用一个带有负价值的规模头领域来启动。例如为了没有数据丢失的完全重放,一个值-1.0被使用。CSeq:123Require:onvif-replayControl:noScale:-1.0如果一个设备支持逆向回放,那么它可以接受一个带有头值1.0A的规模头。除非这个速度控制头设置成了“no”,这个规模参数将在[RFC2326]中描述的方式中使用。如果速度控制头设置成了“no”这个规模参数,一旦被显现出来,应该要么是1.0要是是—1.0,分别表示正向和反向播放。21.4.1领域范围领域范围应该只能用绝对时间来表示。[RFC2326]定义的其他格式不会被ONVIF重播的客户端使用。服务器也可以选择支持其他的格式。通过使用[RFC2326].中的utc-range绝对时间就被表示了出来。无论打开关闭,范围都可以被用。在关闭的范围情况下,当向前播放和减少反播放,范围是要增加的(结束时间晚于开始时间)。变化的方向应该与这个规模头的值有关。在所有的情况下,变化的第一个点暗示出了回放的开始点。例如:CSeq:123Require:onvif-replayRate-Control:noCSeq:123Require:onvif-replayRate-Control:noScale:-1.021.4.2速度控制头领域这个标准介绍了一个要么是“yes”要么是“no”的速度控制头领域。如果没有明确的显示这个域,那么就被假设成了“yes”,并且使用RTP定时机制,流是实时传输的。如果域是“no”,这个流将被尽快的传输,通过使用限制传输率的传输提供的流动控制。在这两个码之间重要的不同是:“Rate-Control=yes”,由服务器来控制播放速率,而“Rate-Control=no”由客户端控制播放速率。速度控制回放将典型性的被non-ONVIF指定的客户使用,因为它们没有被指定为“Rate-Control=no”.当重放单记录的多轨道的时候,一个简单的RTP播放命令就启动了并且对速率不实施控制,来自轨道的数据应该被及时的混合,就像他们以相同的顺序被记录的时候。21.4.3帧头字段帧头字段将用来减少正在传输的帧的数量,例如低带宽和处理负载,有三种可能码:1:只有内部帧。这表明使用“intra”的价值选项必须遵照最小的间隔连续帧流。后者可以用来限制收到的帧的数量,即使存在一些接收器频繁请求I-frames而产生的“I-framestorms”。2:只有内部帧和预测帧。这是通过使用“predicted”值表明的。这个值可以用来消除B-frames,如果这个流包括它们。3:所有帧。这是错误的。例子:为了只请求intra帧,Frames:intra为了请求intra帧以最小的4000毫秒为一个间隔Frames:intra/4000只请求intra帧和predicted帧Frames:predicted请求所有帧(不是必须明确指定此模式,而是考虑到被包括的这个例子的完整性):Frames:all带有“intra”选项的区间参数被用来指代记录时间,不是播放时间;因此对于播放任何给定间隔相同的帧时,没有管播放速度。区间参数不应该显示出来,除非该帧的选项是“intra”服务器应该支持帧头域,这并不排除规模帧头域作为另外一种限制数据速度的方式的使用这个规模帧头域的使用可能会在不同的服务器实现方式之间改变,正如[RFC2326].中的那样。21.4.4同步点21.5回放逆向重播将被启动,通过使用一个带有负值的规模头域就像上面描述的那样。21.5.1数据包传输顺序逆向播放期间视频包传输的顺序是基于GOPS的在逆向播放的期间,GOPS将按逆向顺序被发送,但是一个GOPS里面的包的发送顺序却按前进方向。在它的RTP扩展头中,每个GOP的第一个包将有中断位设置。在它的RTP扩展头中,跟随一个间隔的GOP的最后一个包将有个E位设置。当只传输关键的帧的时候,或者当编码器不是motion-based的(比如JPEG)的时候,一个GOP被认为组成了一个单一的帧,但是仍然由多个包组成。数据包在每个帧之内,此情况下的数据包又按前进的顺序发送出去了。然而这些帧自己却按照反方向被发送。音频和数据流将用这个视频流的命令镜像来传输,因此来自流的数据包将按相反的播放顺序方向发送,直到出现一个数据包的D位设置,在扩展头中(在不连续之前,它们跳到的那个点)。21.5.2RTP传输顺序号在逆向传播期间,传输顺序中传输包的RTP序列号应该单调递增,不在预订的播放顺序中。21.5.3RTP时间戳使用RTP时间戳是取决速度控制头的值,如果这个头的值是“no”(比如,客户控制播放速度),时间戳将从记录过的帧的采样时间中导出。如果速度控制头没有被显示或者是个“yes”值,这个RTP时间戳与播放时间相关,就像描述在[RFC2326]中的那样。如果速度控制是“no”,在逆向播放期间,包传输的的RTP时间戳应该与它们即将成为样子的相同(如果相同的包向前进方向传输的话)。不像那些序列号,RTP时间戳与原始的记录顺序相关,而不是传输顺序。当流被记录的时候,服务器就接收到了的时间戳时,它们将用相同的时间戳。这意味着单个的GOP的连续的RTP数据包将总是有个递增的时间戳。但是在逆向的播放期间,连续收到GOPS的指示框架的时间戳将减少。在逆向播放期间,如果速度控制是“yes”,被传输的包的RTP时间戳应该显示每个框架并且应该呈现给客户端次数。因此单个的GOP的连续的包将减少这个RTP时间戳,并且在指示框架上的时间戳将增加。在这种模式下,依赖于速度的值的连续时间戳与规模头的间隔时间描述在[RFC2326]附录B。21.6RTSP长连接当控制被禁用和RTP流被置于底部,通过RTSP的连接(usingtheRTP/RTSP/TCPorRTP/RTSP/HTTP/TCP传输),客户端不会发送设置参数请求并且服务器不得超时这个连接,在没有这些要求的时候。这可能是因为客户端能接收这些要求的应答,例如播放被暂停了。从另一方面讲,为了确定其他的终端是否成为应答,在连接中,要么服务器要么客户端会使TCP网络保持活动。21.7当前记录片段在当前的世界时间或者不久前,如果客户端开始播放,它可以实时的终止播放录像就像它被记录的那样。这种情况下服务器单纯的继续给客户端发送数据流就像它接收的那样。需要注意的是:E位没有设置当前正在被记录的接入单元,虽然每一个访问单元发送到的重放客户端通常会被最后一个服务器识别的。如果记录停止,E位将被设置成记录的最后一位访问单元。21.8结束片段如果播放达到一个点之后(什么样的点:在这个流中不会再有数据被发送的点),它会停止发送数据,但不会进入暂停状态。发生这样的事情后,如果服务器恢复了记录,将用它接收到的新数据来重新恢复发送。21.9拖放正如10.5章节的那样[RFC2326],当一个播放进程正在运行的时候,收到一个播放命令,它将不起作用直到当前的播放操作完成之后。这个规范增加了一个新的RTSP头(Immediate),“Immediate”用重播命令重写此行为靠得是使用:CSeq:123Require:onvif-replayControl:noImmediate:yes如果服务器收到了一个立即头文件设置为“yes”的播放命令,将立即从一个新的地方开始播放,取消任何存在的播放命令,从新的地方发送的第一个数据包,将有个D位设置在它的RTP扩展头中。21.10使用RTCP协议服务器没有被要求发送RTCP包,如果它确实发送了,应该遵循如下的规则:如果控制启用,实时传输控制的协议数据包应该被建立和传输,就像[RFC3550]规范描述的那样。特别是,发送者的时间戳报告显示当前的时间挂表,并且不涉及的时间戳被嵌入在数据流的扩展标题中。如果速度控制未被启用,每一个发送报告中的NTP和RTP时间戳应该被设置为零。21.11重放命令本节描述重放服务提供的网络服务命令。21.11.1重放命令GetReplayUri请求一个URI可以用来启动一个播放记录流,通过RTEP的控制协议。URI是有效的,仅仅在它指定的响应中。所有的重播服务实现方式应该支持GetReplayUri命令。表291:GetReplayUri命令GetReplayUri请求-应答消息名字描述GetReplayUriRequest流设置包含了两部分,流类型定义是否单播或者组播媒体流被要求了,传输指定了一个传输协议链定义的媒体流通道通过不同的网络协议,这个RecordingToken暗示了这个记录被信息流化(视频流或者音频流)tt:StreamSetupStreamSetup[1][1]tt:ReferenceTokenRecordingToken[1][1]GetReplayUriResponse包含利用URI来请求媒体流xs:anyURIUri[1][1]误码描述env:Senderter:InvalidArgValter:NoProfile记录不存在env:Senderter:InvalidArgValter:InvalidStreamSetup流类型的规范或者传输部分的流设置是不被支持的env:Senderter:OperationProhibitedter:StreamConflict流类型的规范传输部分的流设置与其他流发生冲突21.11.2重播配置重播配置结构包含重播服务的配置。在重播配置结构域是:会话超时:一个RTP会话具有保持时间。应该定期更新,以防止会话超时。如果会话超时,它应该被拆除。重播的会话超时遵循相同的规则就像应用现场流(通过使用媒体服务)在“实时流”章节讨论的那样。21.11.3设置重播配置设置重播配置可以改变重播服务的配置。重播服务应该允许用这些命令来更改他的配置:表292:设置重播配置命令设置重播配置请求—应答消息名字描述设置重播配置请求配置应该为重播服务把握新配置tt:ReplayConfigurationConfiguration[1][1]设置重播配置应答空误码描述env:Senderter:InvalidArgValter:ConfigModify该在配置中部能被设置21.11.4获取重播配置获得重播配置返回当前重播服务的配置,重播应允许其配置检索,使用此命令。表293:获得重播配置命令获得重播配置请求-应答消息名字描述获得重播配置请求这应该是个空消息获得重播配置应答配置应该保存当前服务的配置tt:ReplayConfigurationConfiguration[1][1]误码描述没有命令指定误码21.11.5服务指定的误码表90列出了重播服务指定的误码,此外,每个命令都能够产生一个通用的故障,看表5。通用故障的字码作为一个具体的故障码被定义。双亲通用码在每一行的顶端下面是字码并且具体的故障字码在这个单元的底部。表294:具体的重播服务故障码误码ParentSubcode错误的原因描述Subcodeenv:Senderter:InvalidArgVal简介令牌不存在被请求的简介令牌不存在ter:NoProfileenv:SenderSenderter:InvalidArgVal无效的流设置流类型的规范和流设置的传输部分不被支持ter:InvalidStreamSetupenv:Senderter:OperationProhibited流冲突流类型的规范和流设置的传输部分与其他流引起冲突ter:StreamConflictenv:Senderter:InvalidArgVal参数不能被设置配置参数不能被设置ter:ConfigModify22安全就像对于所有的网络技术很实际的那样,网络视频通信的安全是最重要的考虑对象。网络安全的威胁是取决于实际的应用。然而某些应用程序最容易遭到攻击,其他的应用程序对它一点也不敏感。实施安全对策的成本变化取决于不同的攻击防范。这些事实意味着对于网络视频产品或者系统,我们不能列出一般的安全要求,但是可以尝试找到一个合理的安全要求的水平针对那些符合本规范的设备,并且试着定义最基本的允许安全网络视频系统的安全机制。目前的规范从两个交流层面定义了安全机制.传输层面的安全.信息层面的要求此规范采用的基本端口认证机制如下。.IEEE802.1X22.1传输层安全传输层安全防止在客户和服务器之间数据发生改变。传输层安全(TLS)被认为是一个比较成熟的标准,此标准通过加密为传输连接提供了一个基本水平的通信安全。TLS协议允许相互认证传输会话以及维护保密性和完整性的配置一个符合本规范的设备应该支持TLS1.0[RFC2246]和相关的规范。设备应该支持TLS1.1[RFC4346].设备应该支持TLS1.2[RFC5426]。为了保护所有的ONVIF设备,设备还应该支持TLS。为保护媒体流的RTP/RTSP/HTTPS的隧道选项,设备也要支持TLS。这个规范概述了一个特定的TLS和其他相关的可以与TLS一起使用的规范的实现。客户端也应该支持TLS1.0[RFC2246]和TLS1.1[RFC4346].客户可能支持TLS1.2[RFC5246].消息安全22.1.1支持密码套支持TLS的设备也应该支持下面的所有的密码套[RFC2246],[RFC3268]:?TLS_RSA_WITH_AES_128_CBC_SHA?TLS_RSA_WITH_NULL_SHA如果一个客户支持TLS,那么应该支持下面的密码套?TLS_RSA_WITH_AES_128_CBC_SHA?TLS_RSA_WITH_NULL_SHA22.1.2服务器身份验证通过使用TLS,支持TLS的设备应该支持服务器身份验证。设备应该支持认证X.509服务证书。RSA密码的长度至少为1024位。客户端应该支持服务器身份验证,通过使用TLS本规范没有提供一个通用的完整的服务器证书和认证机构(CA)的模型。但是,设备管理命令可以进行证书检索和下载,定义在章节8.4。服务器的专用密码钥匙或者密码钥匙的安全引导机制的详情在本规范的范围之外。但是通用的键盘命令定义在章节8.4。22.1.3客户端认证支持TLS的设备应该支持用户认证协议。通过一个设备管理命令可以启用客户认证。定义在章节8.4.支持TLS的设备应该包含RSA认证类型并且应该支持验证RSA认证和客户签名。客户端应该支持客户认证。如果支持客户认证,客户端将支持RS客户认证和签名和可以使用一个至少1024位的密码钥匙。一个值得信赖的CA引导机制在目前的规范之外。此规范的未来版本可能定义标准化的引导机制。22.2消息安全TLS允许点对点的保密性和完整性。然而,网络服务要求一个更灵活的通信模式和中间节点,在这些解决办法中,TLS还不能提供一个端到端的安全机制。此外,对于网络服务,为了实现基于用户的访问控制级命令,有必要验证每个SOAP消息的起源。这个可以通过WS安全框架来完成。ONVIFWS安全在章节5.12节中有简介。22.3IEEE802.1XIEEE802.1X是一个IEEE标准,基于端口的网络接入控制的目的是提供身份认证和使设备连接到局域网端口的认证。它利用IEEE802的局域网的基础设施的物理访问特性为了提供一种验证和授权的设备连接到局域网端口的方法,此方法有点对点的连接特性,并且禁止访问此端口,万一认证和授权失败的时候。这个规范推荐使用IEEE802.1X来进行基于端口的无线网络认证。作为一个支持EAP的方法,支持IEEE802.1X的设备应该支持EAP-PEAP/MSCHAPv2类型。此设备也可能支持其他的EAP方法诸如EAP-MD5,EAP-TLSandEAP-TTLS类型这个规范定义了一套命令来配置和管理IEEE802.1X的配置,请参阅章节8.4.7。附件A附件A.1媒体配置主题下列的媒体配置的实例,ONVIF主题名字空间提供了一下的主题:tns1:MediaConfiguration/Profiletns1:MediaConfiguration/VideoSourceConfigurationtns1:MediaConfiguration/AudioSourceConfigurationtns1:MediaConfiguration/VideoEncoderConfigurationtns1:MediaConfiguration/AudioEncoderConfigurationtns1:MediaConfiguration/VideoAnalyticsConfigurationtns1:MediaConfiguration/PTZConfigurationtns1:MediaConfiguration/MetaDataConfiguration每一个这些主题都代表了一个财产,客户端每订阅一个这些议题将被通知改变,创建和删除相应的实体。不同主题的消息结构通过使用消息描述语言(介绍在章节15中)被指定下来。附件A.1.1简介附件A.1.2视频源配置附件A.1.3音频源配置附件A.1.4视频编码配置附件A.1.5音频编码配置附件A.1.6视频分析配置附件A.1.7PTZ配置附件A.1.8元数据配置附件A.1.9设备管理主题该设备主题包含以下定义在ONVIF主题名字空间中的Sub-topicstns1:Device/Trigger/Relaytns1:Device/OperationMode/ShutdownInitiatedtns1:Device/OperationMode/UploadInitiatedtns1:Device/HardwareFailure/FanFailuretns1:Device/HardwareFailure/PowerSupplyFailuretns1:Device/HardwareFailure/StorageFailuretns1:Device/HardwareFailure/TemperatureCritical只有重播定义了一个有效载荷,其他的主题用一个空消息来答复。附件答复附件控制器主题PTZ服务指定处理PTZ预置。由于移动操作是非阻塞的,一个NVC将不被通知当已经完成一个PTZ预置的时候。因此,介绍了下面的事情(通知用户的状态来预置运动)tns1:PTZController/PTZPresets/Invokedtns1:PTZController/PTZPresets/Reachedtns1:PTZController/PTZPresets/Abortedtns1:PTZController/PTZPresets/Left典型的事件顺序要求预设一个NVC预设一个初始设置。当一个设备接受了这个请求,它会发出一个调用事件,调用事件不得不遵循一个已经完成的事件或者一个已经终止的事件。当球到达调用预置位的时候,前者被使用,后者就在其他的情况下被使用。完成的事件必须遵从左边的事件,一旦球移动远离了预设点。这些事件的信息结构被下面的消息描述给出来了:附件B(场景描述)附件B(场景描述)B.1颜色描述符颜色描述符是作为一个对象节点的外观节点的元素选项被定义的。颜色描述符被定义成了一系列的颜色集(每个组成了一个颜色值,一个可选的重量,一个可选的协方差矩阵)。颜色描述不确定,这个颜色集群是如何创建的。他们可以代表一个一箱颜色直方图或类聚算法的结果。颜色是由三位向量表示的,此外,每个颜色向量的颜色空间可以被一个颜色空间属性来确定。如果颜色空间向量消失,就假设成了YCbCr颜色空间。它指的是整个领域的\'sRGB。对于YCbCr的颜色空间来说ColourspaceURI在is.上。...B1.1类描述符一个类描述符是作为一个对象节点的外观节点的可选元素定义的。一个类描述符是被一个类对象的列表和属于这一相应对象的可能性来定义的。参考数目[EAP-Registry]ExtensibleAuthenticationProtocol(EAP)RegistryONVIFSecurityRecommendationsWhitePaperONVIFPTZCoordinateSpacesWhitePaperRFC2396,UniformResourceIdentifiers(URI):GenericSyntax,T.Berners-Leeetal.,August1998[UDDIAPIver2,“UDDIVersion2.04APISpecificationUDDICommitteeSpecification,19July2002”,[UDDIDataStructurever2]“UDDIVersion2.03DataStructureReferenceUDDICommitteeSpecification”,OASISstandard,19July2002.[WS-KerberosToken]“WebServicesSecurityKerberosTokenProfile1.1”,OASISStandard,,1February2006.[WS-SAMLToken]“WebServicesSecurity:SAMLTokenProfile1.1”,OASISStandard,1February2006.[WS-X.509Token]“WebServicesSecurityX.509CertificateTokenProfile1.1”,OASISStandard,1February2006.[WS-RELToken]“WebServicesSecurityRightsExpressionLanguage(REL)TokenProfile1.1”,OASISStandard,1February2006[X.680]ITU-TRecommendationX.680(1997)ISO/IEC8824-1:1998,InformationTechnology-AbstractSyntaxNotationOne(ASN.1):SpecificationofBasicNotation.[X.681]ITU-TRecommendationX.681(1997)ISO/IEC8824-2:1998,InformationTechnology-AbstractSyntaxNotationOne(ASN.1):InformationObjectSpecification.[X.682]ITU-TRecommendationX.682(1997)ISO/IEC8824-3:1998,InformationTechnology-AbstractSyntaxNotationOne(ASN.1):ConstraintSpecification.[X.683]ITU-TRecommendationX.683(1997)ISO/IEC8824-4:1998,InformationTechnology-AbstractSyntaxNotationOne(ASN.1):ParameterizationofASN.1Specifications.[X.690]ITU-TRecommendationX.690(1997)ISO/IEC8825-1:1998,InformationTechnology-ASN.1EncodingRules:SpecificationofBasicEncodingRules(BER),CanonicalEncodingRules(CER)andDistinguishedEncodingRules(DER).[ONVIFAnalyticsWSDL]ONVIFVideoAnalyticsServiceWSDL,ver2.0,2010.[ONVIFDMWSDL]ONVIFDeviceManagementServiceWSDL,ver2.0,2010.[ONVIFEventWSDL]ONVIFEventServiceWSDL,ver2.0,2010.[ONVIFImagingWSDL]ONVIFImagingServiceWSDL,ver2.0,2010.[ONVIFMediaWSDL]ONVIFMediaServiceWSDL,ver2.0,2010.[ONVIFPTZWSDL]ONVIFPTZServiceWSDL,ver2.0,2010.[ONVIFDPWSDL]ONVIFRemoteDiscoveryProxyServicesWSDL,ver2.0,2010.[ONVIFSchema]ONVIFSchema,ver2.0,2010.[ONVIFTopicNamespace]ONVIFTopicNamespaceXML,ver2.0,2010.WS-I,BasicProfileVersion2.0–WorkingGroupDraft,C.Ferris(Ed),A.Karmarkar(Ed)andP.Yendluri(Ed),October2007.',)


  • 编号:1700665609
  • 分类:合同模板
  • 软件: wps,office word
  • 大小:297页
  • 格式:docx
  • 风格:商务
  • PPT页数:679882 KB
  • 标签:

广告位推荐

相关合同模板更多>