1. 获取设备时间

在进行Onvif时间设置之前,首先需要获取设备当前的时间。可以通过发送GetSystemDateAndTime请求来获取设备的时间信息。


  <Envelope xmlns="http://www.w3.org/2003/05/soap-envelope" xmlns:ter="http://www.onvif.org/ver10/error">
    <Header/>
    <Body>
      <GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/>
    </Body>
  </Envelope>

发送以上的SOAP请求到设备的服务地址,通过解析响应,可以获取到设备的当前时间。

2. 设置设备时间

获取到设备的当前时间后,可以通过发送SetSystemDateAndTime请求来设置设备的时间。


  <Envelope xmlns="http://www.w3.org/2003/05/soap-envelope" xmlns:ter="http://www.onvif.org/ver10/error">
    <Header/>
    <Body>
      <SetSystemDateAndTime xsi:type="ter:SetSystemDateAndTime" xmlns:ter="http://www.onvif.org/ver10/error">
        <DateTimeType>Manual</DateTimeType>
        <UTCDateTime>
          <Time>
            <Hour>14</Hour>
            <Minute>30</Minute>
            <Second>0</Second>
          </Time>
          <Date>
            <Year>2022</Year>
            <Month>1</Month>
            <Day>1</Day>
          </Date>
        </UTCDateTime>
      </SetSystemDateAndTime>
    </Body>
  </Envelope>

以上示例中,设置设备的时间为2022年1月1日14:30:00。通过发送这个请求到设备的服务地址,设备的时间会被设置为指定的时间。

3. 检查设备时间是否同步

在设置完设备的时间后,可以再次发送GetSystemDateAndTime请求来验证设备时间是否同步成功。


  <Envelope xmlns="http://www.w3.org/2003/05/soap-envelope" xmlns:ter="http://www.onvif.org/ver10/error">
    <Header/>
    <Body>
      <GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/>
    </Body>
  </Envelope>

解析获取到的响应,可以比较设置前后的时间是否一致,从而验证设备时间是否成功同步。

通过以上步骤,可以实现在Qt音视频开发中设置Onvif设备的时间。首先获取设备当前的时间,然后发送设置时间的请求,最后再次获取设备的时间进行验证。