从零开始精通Onvif之图片抓拍

💡 如果想阅读最新的文章,或者有技术问题需要交流和沟通,可搜索并关注微信公众号“希望睿智”。

概述

        在视频监控系统中,图片抓拍功能(也称为快照功能)是指通过摄像头或其他视频采集设备,将实时视频流中的某一帧或多帧画面保存为静态图片。这一功能在多种场景下都具有极高的实用价值,比如:交通违章抓拍、人员进出监控、安全事件记录等。

        Onvif标准规定了图片抓拍功能的基本要求和实现方式,包括:抓拍命令的发送、图片格式的约定、传输协议的选择等。图片抓拍主要通过Media服务实现,特别是GetSnapshotUri操作。该操作返回一个URI,客户端通过该URI可以直接访问到摄像头拍摄的实时图像。

工作机制

        图片抓拍作为Onvif标准中的一项重要功能,允许用户通过网络请求从摄像机获取静态图像,其工作机制如下。

        1、Media服务初始化。设备被发现后,客户端会根据设备提供的WSDL文件初始化与设备的Web服务连接。对于图片抓拍,主要是与设备的Media服务建立通信。

        2、获取抓拍URL。客户端通过发送SOAP消息调用Media服务中的GetSnapshotUri操作,该操作需要一个参数,即Profile Token,它标识了摄像机配置文件中的一个视频流配置。每个配置文件可能对应不同的分辨率、帧率等参数,选择合适的Profile可以得到满足需求的抓拍图像质量。设备收到请求后,会生成一个临时的URI,指向一张代表当前视频流画面的图像。这个URI是有时效性的,一般仅在短时间内有效,且每次调用可能会生成不同的URI。

        3、下载图片。客户端收到抓拍URI后,通过HTTP GET方法直接访问该URI。设备接收到HTTP请求后,立即将当前视图的图像数据发送给客户端。客户端接收数据后,可保存为图片文件,也可直接用于进一步的处理和显示。

获取抓拍URL

        获取Onvif设备的抓拍URL通常需要向设备的Media服务发送一个SOAP请求,实际上就是调用GetSnapshotUri操作。在下面的示例报文中,<onv:ProfileToken>表示需要获取抓拍URL的视频流配置的标识符。这个Token一般通过调用GetProfiles操作获取到,每个Profile对应不同的视频流参数。

<soapenv:Envelope
    xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
    xmlns:onv="http://www.onvif.org/ver10/media/wsdl">
    <soapenv:Header>
        <wsa:Action>http://www.onvif.org/ver10/media/wsdl/GetSnapshotUri</wsa:Action>
        <wsa:MessageID>uuid:UniqueMsgId</wsa:MessageID>
        <wsa:To>http://[IP]:[Port]/onvif/MediaService</wsa:To>
    </soapenv:Header>
    <soapenv:Body>
        <onv:GetSnapshotUri>
            <onv:ProfileToken>[ProfileToken]</onv:ProfileToken>
        </onv:GetSnapshotUri>
    </soapenv:Body>
</soapenv:Envelope>

        当设备接收到请求抓拍URL的SOAP请求报文并成功处理后,会返回一个包含抓拍URI的SOAP响应报文给客户端。可以参考下面的示例报文来进行理解,其中的一些关键节点和属性描述如下。

        <soap:MediaUri>:表示媒体资源的URI信息。

        <soap:Uri>:表示抓拍图片的URL。通过这个URL,客户端可以获取到设备当前视图的图像。

<soapenv:Envelope
  xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <soap:ResponseMessage xmlns="http://www.onvif.org/ver10/media/wsdl">
      <soap:MediaUri>
        <soap:Uri>http://camera_ip/image.cgi?resolution=640x480</soap:Uri>
      </soap:MediaUri>
    </soap:ResponseMessage>
  </soapenv:Body>
</soapenv:Envelope>

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

希望_睿智

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

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

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

打赏作者

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

抵扣说明:

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

余额充值