繁体   English   中英

ONVIF Media.WSDL - GetServiceCapabilities 失败

[英]ONVIF Media.WSDL - GetServiceCapabilities fails

我需要帮助来定义“功能”class,以便它通过设备工具测试测试。

STEP 5 - Get Media Service capabilities
      StepStart: 2022-01-19T07:35:14.1804753Z
      Transmit done
      Receive done
      The element 'Capabilities' in namespace 'http://www.onvif.org/ver10/media/wsdl' has invalid child element 'ProfileCapabilities' in namespace 'http://www.onvif.org/ver10/schema'. List of possible elements expected: 'ProfileCapabilities' in namespace 'http://www.onvif.org/ver10/media/wsdl'.
   STEP FAILED

响应:

<soap12env:Body>
    <tns:GetServiceCapabilitiesResponse>
        <tns:Capabilities
            SnapshotUri="true"
            Rotation="false"
            VideoSourceMode="false"
            OSD="false">
            <s0:ProfileCapabilities
                MaximumNumberOfProfiles="10"/>
            <s0:StreamingCapabilities
                RTPMulticast="false"
                RTP_TCP="true"
                RTP_RTSP_TCP="true"
                NonAggregateControl="false"
                NoRTSPStreaming="false"/>
            </tns:Capabilities>
        </tns:GetServiceCapabilitiesResponse>
    </soap12env:Body>

我的代码:

课程:

class ProfileCapabilitiesT(SchemaComplexModel):
    __type_name__ = "ProfileCapabilities"
    MaximumNumberOfProfiles = XmlAttribute(Int)

class StreamingCapabilitiesT(SchemaComplexModel):
    __type_name__ = "StreamingCapabilities"
    RTPMulticast = XmlAttribute(Boolean)
    RTP_TCP = XmlAttribute(Boolean)
    RTP_RTSP_TCP = XmlAttribute(Boolean)
    NonAggregateControl = XmlAttribute(Boolean)
    NoRTSPStreaming = XmlAttribute(Boolean)

class CapabilitiesT(SchemaComplexModel):
    __type_name__ = "Capabilities"
    ProfileCapabilities = ProfileCapabilitiesT
    StreamingCapabilities = StreamingCapabilitiesT
    SnapshotUri = XmlAttribute(Boolean)
    Rotation = XmlAttribute(Boolean)
    VideoSourceMode = XmlAttribute(Boolean)
    OSD = XmlAttribute(Boolean)
    
class GetServiceCapabilitiesResponseT(MediaComplexModel):
    Capabilities = CapabilitiesT

Function:

@rpc(_returns=GetServiceCapabilitiesResponseT, _body_style="out_bare")
def GetServiceCapabilities(ctx):
    logging.info("GetServiceCapabilities")
        
    ret = GetServiceCapabilitiesResponseT()
    caps = CapabilitiesT()
        
    p = ProfileCapabilitiesT()
    n = config.MAX_PROFILES
    p.MaximumNumberOfProfiles = n
    caps.ProfileCapabilities = p

    s = StreamingCapabilitiesT()
    s.RTPMulticast = False
    s.RTP_TCP = True
    s.RTP_RTSP_TCP = True
    s.NonAggregateControl = False
    s.NoRTSPStreaming = False
    caps.StreamingCapabilities = s

    caps.SnapshotUri = True
    caps.Rotation = False
    caps.VideoSourceMode = False
    caps.OSD = False

    ret.Capabilities = caps 
    return ret

定义有什么问题?

测试工具告诉你为什么它不起作用。

您在命名空间http://www.onvif.org/ver10/schema中有ProfileCapabilities ,但正确的实现必须在命名空间http://www.onvif.org/ver10/media/wsdl中有ProfileCapabilities

因此,您需要修复命名空间。

总的来说,ONVIF 测试工具非常有用,因为它很好地描述了哪个步骤没有通过以及原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM