从零开始精通Onvif之音视频流传输

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

概述

        Onvif协议的核心作用之一,是定义了如何通过网络访问和控制IP摄像机和其他视频设备。Onvif协议不仅涉及设备发现、设备管理,还包括音视频流的配置和传输。设备的配置和控制通过SOAP协议实现,而音视频流传输主要基于RTSP协议进行。这一架构使得设备的配置和实时媒体流的传输得以分离,既保证了灵活性,又增强了安全性。

        如果对RTSP协议感兴趣,可以移步至专栏《从零开始精通RTSP》进行学习。

工作流程

        客户端使用Onvif协议和RTSP协议向设备拉流的基本工作流程如下。

        首先,客户端通过发送GetProfiles请求获取设备预设的配置文件列表,每个配置文件定义了视频流的参数,比如:编码算法、分辨率、帧率等。选择合适的配置后,使用GetStreamUri方法获取具体的音视频流地址,这个地址通常是RTSP URL。

        获取到流地址后,客户端通过RTSP协议与设备建立会话。这通常包括:发送OPTIONS请求获取设备的RTSP能力,然后发送DESCRIBE请求获取流的SDP描述;接下来,客户端发送SETUP请求选择传输通道和参数,最后通过PLAY命令开始音视频流的传输。

        一旦RTSP会话建立并开始播放,设备便将音视频数据通过RTP封装传输给客户端。客户端解封装这些数据包,解码后即可进行音视频的渲染。在音视频流的传输过程中,客户端还可以通过RTSP的控制命令(比如:PAUSE、TEARDOWN)来暂停或结束流。

获取拉流URL

        Onvif协议中的GetStreamUri方法是Media Service服务的一部分,主要用于获取网络视频设备上音视频流的访问URL。这个URL允许客户端通过标准的流媒体协议,比如:RTSP、HTTP等,来拉取实时的音视频数据流。

        获取拉流URL的请求比较简单,可以参考下面的SOAP报文,其中的一些关键节点和属性描述如下。

        <onv:ProfileToken>:必填项,表示设备上特定的配置文件的唯一标识符。配置文件定义了视频流的多个参数,比如:分辨率、帧率、编码格式等。

        <onv:Protocol>:可选项,指定客户端期望使用的流传输协议(比如:RTSP、HTTP等)。如果不指定,默认值由设备决定,通常为RTSP,因为它是流媒体传输的常用标准协议。

<soapenv:Envelope ...>
   <soapenv:Body>
      <onv:GetStreamUri>
         <onv:ProfileToken>Profile_1</onv:ProfileToken>
         <onv:Protocol>RTSP</onv:Protocol>
      </onv:GetStreamUri>
   </soapenv:Body>
</soapenv:Envelope>

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

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

        <onv:Uri>:表示拉流的URL。通过这个URL,客户端可以获取到设备的音视频流数据。

<soapenv:Envelope ...>
    <soapenv:Body>
        <onv:GetStreamUriResponse>
            <onv:MediaUri>
                <onv:Uri>rtsp://192.168.1.100:554/channel0/h264</ns0:Uri>
                <!-- 其他可选信息,比如:流的类型、格式、有效期等 -->
            </onv:MediaUri>
      </onv:GetStreamUriResponse>
   </soapenv:Body>
</soapenv:Envelope>

  • 36
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

希望_睿智

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

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

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

打赏作者

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

抵扣说明:

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

余额充值