做onvif时遇到设置osd的问题

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
  <soap:Body>
    <trt:CreateOSD>
      <trt:OSD token="bsj_osd">
        <tt:VideoSourceConfigurationToken>000</tt:VideoSourceConfigurationToken>
        <tt:Type>Text</tt:Type>
        <tt:Position>
          <tt:Type>Custom</tt:Type>
          <tt:Pos y="0" x="40"></tt:Pos>
        </tt:Position>
        <tt:TextString>
          <tt:Type>Plain</tt:Type>  
            <tt:FontSize>64</tt:FontSize>         
          <tt:PlainText>1234</tt:PlainText>    

        </tt:TextString>
      </trt:OSD>
    </trt:CreateOSD>
  </soap:Body>
</soap:Envelope>


<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
  <soap:Body>
    <trt:SetOSD>
      <trt:OSD token="osd_0">
        <tt:VideoSourceConfigurationToken>000</tt:VideoSourceConfigurationToken>
        <tt:Type>Text</tt:Type>
        <tt:Position>
          <tt:Type>LowerRight</tt:Type>
          <tt:Pos y="0" x="40">
          </tt:Pos>
        </tt:Position>
        <tt:TextString>
          <tt:Type>Plain</tt:Type>                                
          <tt:PlainText>1234</tt:PlainText>    
          <tt:FontSize>64</tt:FontSize>
        </tt:TextString>
      </trt:OSD>
    </trt:SetOSD>
  </soap:Body>
</soap:Envelope>



<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
  <soap:Body>
    <trt:GetOSD>
      <trt:OSDToken>osd_0</trt:OSDToken>
    </trt:GetOSD>
  </soap:Body>
</soap:Envelope>


<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
  <soap:Body>
    <trt:GetOSD>
      <trt:OSDToken>osd_0</trt:OSDToken>
    </trt:GetOSD>
  </soap:Body>
</soap:Envelope>

留着以后参考
http://www.360doc.com/content/14/0630/10/9075092_390912055.shtml
http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl 

http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl 

http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl 

http://www.onvif.org/onvif/ver10/recording.wsdl  

http://www.onvif.org/onvif/ver10/display.wsdl  

http://www.onvif.org/onvi f/ver10/receiver.wsdl 

http://www.onvif.org/onvif/ver10/deviceio.wsdl 

http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl  

http://www.onvif.org/onvif/ver10/search.wsdl 

http://www.onvif.org/onvif/ver10/schema/onvif.xsd 
### ONVIF协议中OSD的相关信息与实现方法 ONVIF(开放网络视频接口论坛)定义了一组标准化的接口,用于网络视频产品的互操作性。OSD(On-Screen Display,屏幕显示叠加)功能允许在视频流中叠加文本或其他图形信息。以下是关于ONVIF协议中OSD的详细信息和实现方法: #### 1. OSD服务概述 ONVIFOSD服务为客户端程序提供了控制和配置设备端OSD的功能。通过该服务,用户可以创建、删除、获取和设置OSD配置[^1]。相关的命令包括: - `CreateOSD`:创建一个新的OSD配置。 - `DeleteOSD`:删除已有的OSD配置。 - `GetOSDs`:获取所有可用的OSD配置列表。 - `GetOSD`:获取特定OSD的详细配置信息。 - `SetOSD`:更新或修改现有的OSD配置。 - `GetOSDOptions`:获取支持的OSD选项及其限制。 这些命令通过SOAP消息进行传输,并遵循ONVIF的服务规范。 #### 2. OSD坐标系统 OSD的位置通常由坐标系统定义。根据引用内容,OSD坐标的表示方式可能因设备而异,但通常使用相对坐标或绝对坐标来指定位置[^1]。例如: - **相对坐标**:以百分比形式表示,范围为0到1,其中(0,0)表示左上角,(1,1)表示右下角。 - **绝对坐标**:以像素值表示,具体取决于视频分辨率。 在实现过程中,需要确保坐标系统的兼容性,以便不同设备之间能够正确解析和显示OSD。 #### 3. 实现步骤示例 以下是一个简单的Python代码示例,展示如何通过ONVIF客户端库调用OSD相关命令: ```python from onvif import ONVIFCamera # 初始化ONVIF相机对象 mycam = ONVIFCamera('192.168.1.10', 80, 'admin', 'password') # 获取媒体服务 media_service = mycam.create_media_service() # 获取PTZ服务 ptz_service = mycam.create_ptz_service() # 创建OSD配置 def create_osd(): request = media_service.CreateOSDRequest() request.Token = "OSD_1" request.Type = "Text" # 或者 "Image" request.Position = {"Type": "Relative", "Coordinate": {"x": 0.1, "y": 0.1}} request.TextString = "Test OSD" response = media_service.CreateOSD(request) return response # 删除OSD配置 def delete_osd(token): request = media_service.DeleteOSDRequest() request.Token = token media_service.DeleteOSD(request) # 示例调用 osd_response = create_osd() print("OSD created:", osd_response) delete_osd("OSD_1") ``` #### 4. 配置注意事项 在配置OSD,需要注意以下几点: - 确保设备支持ONVIF OSD服务。可以通过`GetServiceCapabilities`命令检查设备是否支持OSD功能[^1]。 - 不同厂商的设备可能对OSD的支持程度有所不同,建议查阅设备的具体文档以了解其限制。 - 在设置OSD位置,需考虑视频分辨率的影响,以避免超出边界的情况。 #### 5. 常见问题与解决方案 - **问题**:OSD无法显示。 - **解决方法**:检查设备是否启用了OSD功能,确保OSD配置正确且未超出设备支持的范围。 - **问题**:OSD位置不正确。 - **解决方法**:确认使用的坐标系统是否与设备一致,调整坐标值以适配视频分辨率。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿木小呆呆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值