ONVIF对讲功能漫谈

2023-10-27

前言

本篇文章尝试使用提问的方式来分享onvif对讲功能那点事。

一、onvif对讲功能和onvif协议关系大吗?

onvif对讲功能其实和onvif协议关系不大,对讲功能主要使用rtsp协议实现的,通过在DESCRIBE交互请求报文中携带Require: www.onvif.org/ver20/backchannel字段,代表客户端通过rtsp协议尝试请求建立双向连接,或着叫尝试建立具有数据反向通道的rtsp连接。具体报文如下:
在这里插入图片描述
从报文中能看到track4代表着音频,所以后续的请求都是围绕着track4来进行,同时interleaved=2-3;也表示着音频。
如果设备支持对讲功能,在DESCRIBE阶段会返回成功,如果不支持响应错误代码 551 Option not supported。然后,客户端可以尝试建立一个没有反向通道RTSP 连接。

二、如何上报设备支持onvif对讲功能呢?

这的确是一个问题,因为从官方文档中,并没有提及明确的onvif对讲能力集使用哪个接口那个字段进行上报,但在rtsp反向通道连接时,提到了如下描述:
在这里插入图片描述
从红色框出来的描述可以看出,跟音频能力上报有关,什么能力呢,上报的音频解码能力和支持的音频解码参数,就是说,设备支持语言对讲功能,其实是需要播放音频流,如果设备不支持音频输出功能,对讲就不用谈了,肯定支持不了。

三、onvif协议中哪个接口上报音频解码配置?

获取音频解码相关的接口有:GetAudioDecoderConfigurationOptions 、GetAudioDecoderConfigurations;
GetAudioDecoderConfigurationOptions 接口可以获取到设备音频解码支持的格式信息,比如音频格式、比特率、采样频率信息,可以根据这些信息进行判断。示例报文如下:

Request:

POST /onvif/media2 HTTP/1.1
Host: 172.16.33.173
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 313

<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <GetAudioDecoderConfigurationOptions xmlns="http://www.onvif.org/ver20/media/wsdl" />
  </s:Body>
</s:Envelope>

Request:

POST /onvif/media2 HTTP/1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ONVIF对讲功能漫谈 的相关文章

随机推荐

  • Altium designer 原理图更新PCB时,net classes 自动删除,改为不删除方法

    在更新PCB时 软件默认删除所有net classes 你把对号取消 更新后net classes不会消失 方法为 我用的为AD16 project gt project options gt ECO Generation gt gt re
  • 4.Unity中的 Transform,旋转,移动的使用

    脚本文件的名称必须和C 脚本的名称相同 Transform Transform组件可以获得并修改 游戏物体的transform栏的信息 即位置 旋转 缩放 例如 this表示当前游戏物体 即脚本挂在什么物体上 this就指向该物体 Debu
  • ubuntu镜像下载pytorch,解决time out问题

    安装CUDA CUDnn那些就不赘述 以及下载的pytorch要和自己CUDA版本匹配 比如我的是Ubuntu CUDA版本为11 6 直接选择对应的 在安装过 别的提到的方法都试过 比如 添加清华镜像链接 conda config add
  • jQuery 切换radio 改变validateRule的校验规则

    有这样一个form表单 在切换费率类型时 需要校验不同input框如下图 静态页面代码如下 div class ibox content div
  • 【sqli-labs】Less18~Less22

    Less18 User Agent注入 有错误回显 感叹一句 越来越难了 现在只能先看代码再分析怎么注入了 通过代码 发现username和password均做了校验 但是会有一个插入user agent的sql语句 故要通过user ag
  • 怎样计算期货交易盈亏(期货交易盈利怎么算)

    期货怎么算挣了多少钱 1 浮动盈亏 就是结算机构根据当日交易的结算价 计算出会员未平仓合约的浮动盈亏 如果是正值 则表明多头浮动盈利或者空头浮动亏损 负值则刚好相反 公式如下 浮动盈亏 当天的结算价 开仓价格 合约单位 持仓量 手续费 2
  • 解决Android Studio编译报错:找不到NotNull或Nullable

    问题 在java代码中引入 import org jetbrains annotations NotNull import org jetbrains annotations Nullable 导致代码编译不过 找不到这两个类库 按照官方文
  • 后端学习React的第一天

    java后端了十几年了 曾经在学校写过一些jquery的前端代码 后来前端的框架越来越复杂 加上工作以后都是前后端分离的 并且自己美术功底本来也就不咋地 逐渐就放弃了前端技术 专职后端开发了 最近闲来无事 想写点有意思的小程序 发现没有前端
  • 教你如何用fiddler抓取https(详细教程)

    对于想抓取HTTPS的测试初学者来说 常用的工具就是fiddler 可是在初学时 大家对于fiddler如何抓取HTTPS真是伤了脑筋 可能你一步步按着网上的帖子成功了 那当然是极好的 有可能没有成功 这时候你就很抓狂了 我把网络上的教程进
  • python实现文件(夹)剪切

    自己的需求是这样的 有a和b两个目录 a目录下的文件 夹 要剪切到b目录下 我用下面这种形式来表达需求 不然说得比较乱 需求如下 a目录 1 文件 1 是日志文件 1 文件大小 lt 20m 跳过 2 日志文件 gt 20m 复制名加上当天
  • ssh连接不上Linux怎么办

    原因 被防火墙挡掉 ssh服务配置文件中的参数是否拒绝了连接等等 解决方法 一 开启SSH 以root用户登录Linux 打开终端 运行 etc init d sshd restrat 二 关闭防火墙 1 在终端运行 setup 2 选择
  • es6 处理数组的方法汇总

    目录 创建数组静态方法 ES6 Array from Array of 检测数组方法 instanceof Array isArray 迭代器方法 ES6 keys values entries 复制和填充方法 ES6 Array fill
  • 逻辑回归输出的值是真实的概率吗?

    本文只在博客基础上 在三 指数分布族中有所改动 逻辑回归作为被广泛使用的二分类模型 面试中自然是不可缺少的 但要深刻理解逻辑回归又不是那么容易的 比如说 逻辑回归输出的值是0到1之间的值 这个值是真实的概率吗 逻辑回归为什么要选择sigmo
  • layui树形美化_Layui导航树美化 - walkwithdream的个人空间 - OSCHINA - 中文开源技术交流社区...

    左侧导航 使用方法 skin sidebar layui tree skin sidebar li i color rgba 255 255 255 7 display none layui tree skin sidebar li a c
  • 学习Java——为什么java只有值传递

    目录 Java的求值策略 Java中的对象传递 值传递和共享对象传递冲突吗 总结 参考资料 Java的求值策略 前面我们介绍过了传值调用 传引用调用以及传值调用的特例传共享对象调用 那么 Java中是采用的哪种求值策略呢 很多人说Java中
  • 最优乘车问题/dijsktra最短路径算法

    城是一个旅游胜地 每年都有成千上万的人前来观光 为方便游客 巴士公司在各个旅游景点及宾馆 饭店等地都设置了巴士站 并开通了一些单向巴士线路 每条单向巴士线路从某个巴士站出发 依次途径若干个巴士站 最终到达终点巴士站 阿昌最近到 城旅游 住在
  • typora笔记工具使用详解

    Markdown使用笔记 首先本地使用安装教程 百度搜索typora第一个就是官网 地址为 typora下载地址 下载步骤如下 简单使用教程 3 Markdown标题 使用 号可表示 1 6 级标题 一级标题对应一个 号 二级标题对应两个
  • 读取.ini文件乱码的解决办法

    void CGetConfigInfo GetValueByKey QSettings seting const QString key QString value if seting nullptr value seting gt val
  • Memory write error at 0x100000. MMU section translation fault

    在使用vitis2020 2 JTAG调试MZ702P板子的时候会报下面的错误 原因都是启动模式没有设置到JTAG启动或SD启动 记得之前用SDK的时候好像没有这个问题 记录一下 备忘 Downloading Program F FPGA
  • ONVIF对讲功能漫谈

    ONVIF对讲功能漫谈 前言 一 onvif对讲功能和onvif协议关系大吗 二 如何上报设备支持onvif对讲功能呢 三 onvif协议中哪个接口上报音频解码配置 四 献上抓包报文 前言 本篇文章尝试使用提问的方式来分享onvif对讲功能