从零开始精通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>

相关推荐

  1. 开始精通Onvif图片抓拍

    2024-06-18 09:54:03       29 阅读
  2. 开始精通Onvif设备发现

    2024-06-18 09:54:03       55 阅读
  3. 开始精通Onvif获取设备信息

    2024-06-18 09:54:03       33 阅读
  4. 开始精通Onvif事件处理

    2024-06-18 09:54:03       31 阅读
  5. 开始精通RTSP深入理解RTCP协议

    2024-06-18 09:54:03       43 阅读
  6. 开始精通RTSP传输AAC音频流

    2024-06-18 09:54:03       34 阅读
  7. 开始精通RTSP多播传输

    2024-06-18 09:54:03       38 阅读
  8. 开始精通RTSP初识实时流协议

    2024-06-18 09:54:03       40 阅读
  9. 开始精通RTSP请求与响应详解2

    2024-06-18 09:54:03       44 阅读
  10. 开始精通RTSP传输H264视频流

    2024-06-18 09:54:03       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-18 09:54:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-18 09:54:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-18 09:54:03       82 阅读
  4. Python语言-面向对象

    2024-06-18 09:54:03       91 阅读

热门阅读

  1. PHP之EOF定界符

    2024-06-18 09:54:03       26 阅读
  2. 科研辅助工具

    2024-06-18 09:54:03       25 阅读
  3. Unity与Android交互通信系列(6)

    2024-06-18 09:54:03       27 阅读
  4. idea git stash报错Too many revisions specified

    2024-06-18 09:54:03       31 阅读
  5. 创建单例模式的六种方式

    2024-06-18 09:54:03       33 阅读
  6. jQuery 常用函数解析

    2024-06-18 09:54:03       33 阅读
  7. MVVM模式理解(基于Qt分析)

    2024-06-18 09:54:03       35 阅读
  8. 11 类型泛化

    2024-06-18 09:54:03       25 阅读
  9. 游戏服务器要注意哪些安全事项?

    2024-06-18 09:54:03       24 阅读