onvif 语音对讲
onvif 语音对讲
前言
在视频监控应用场景中,有很多场景需要采集查看监控的人的语音发送到监控摄像头的音响上去以实现对被监控对象的语音控制。
ONVIF Core Specification Core_2.00文档
中章节12.3 Back Channel Connection
对此进行了详细的描述。
ONVIF
语音对讲的实现完全基于RTSP
协议,流程中没有用到ONVIF
协议。
RTSP Require-Tag
RTSP 标准[RFC 2326]可以通过添加额外的头进行扩展,引入Require
tag 用于处理特殊的功能扩展(参考 [RFC
2326], 1.5 Extending Rtsp and 12.32 Require).
Require
头用来判定是否支持某个特性,如果要求server
理解支持某个特性并正确处理请求,需要对server
的每个请求都携带这个Require
头。
server
如果支持backchannel
这个特性,需要理解该特性所对应的tag:
www.onvif.org/ver20/backchannel
如果client想要建立一个包含backchannel
的RTSP
连接,在这一系列请求(SUBSCRIBE,SETUP,PLAY,PAUSE,TEARDWON)中需要包含这个Require www.onvif.org/ver20/backchannel
头。
DESCRIBE
在Client - Server
发送DESCRIBE
协议的时候添加前文说过的Require-tag
,这时如果Server
不支持语音对讲则会回复551 Option not supported
,示例如下:
Client – Server: DESCRIBE rtsp://192.168.0.1 RTSP/1.0
CSeq: 1
User-Agent: ONVIF Rtsp client
Accept: application/sdp
Require: www.onvif.org/ver20/backchannel #!! Require-tag
Server – Client: RTSP/1.0 551 Option not supported
CSeq: 1
Unsupported: www.onvif.org/ver20/backchannel
如果支持语音对讲的话,则会回复200 OK
并携带sdp
信息:
RTSP/1.0 200 OK
CSeq: 1
Content-Type: application/sdp
Content-Length: xxx
v=0
o= 2890842807 IN IP4 192.168.0.1
s=RTSP Session with audiobackchannel
m=video 0 RTP/AVP 26
a=control:rtsp://192.168.0.1/video
a=recvonly
m=audio 0 RTP/AVP 0
a=control:rtsp://192.168.0.1/audio
a=recvonly
m=audio 0 RTP/AVP 0
a=control:rtsp://192.168.0.1/audioback
a=rtpmap:0 PCMU/8000
a=sendonly
上面的sdp
列出了三个流及其控制URL
: 视频流:rtsp://192.168.0.1/video
,音频流:rtsp://192.168.0.1/audio
,以及我们的主角对讲流rtsp://192.168.0.1/audioback
,注意对讲流的属性a=sendonly与其他流的a=recvonly不同。
SETUP
接下来我们就可以SETUP
这些session
:
Client – Server: SETUP rtsp://192.168.0.1/video RTSP/1.0
CSeq: 2
Transport: RTP/AVP;unicast;client_port=4588-4589
Server – Client: RTSP/1.0 200 OK
CSeq: 2
Session: 123124;timeout=60
Transport:RTP/AVP;unicast;client_port=4588-4589;
server_port=6256-6257
Client – Server: SETUP rtsp://192.168.0.1/audio RTSP/1.0
CSeq: 3
Session: 123124
Transport: RTP/AVP;unicast;client_port=4578-4579
Server – Client: RTSP/1.0 200 OK
CSeq: 3
Session: 123124;timeout=60
Transport:RTP/AVP;unicast;client_port=4578-4579;
server_port=6276-6277
Client – Server: SETUP rtsp://192.168.0.1/audioback RTSP/1.0
CSeq: 4
Session: 123124
Transport: RTP/AVP;unicast;client_port=6296-6297
Require: www.onvif.org/ver20/backchannel
Server – Client: RTSP/1.0 200 OK
CSeq: 4
Session: 123124;timeout=60
Transport:RTP/AVP;unicast;client_port=6296-6297;
server_port=2346-2347
上面setup
了三次,分别建立了视频流,音频流以及位于最后的音频对讲流的连接。
PLAY
由于rtsp
有集合控制的功能,仅需要发送一条PLAY
或者PAUSE
就可以同时控制多个音频流和视频流。所以下面我们发送一条PLAY
请求即可:
Client – Server: PLAY rtsp://192.168.0.1 RTSP/1.0
CSeq: 5
Session: 123124
Require: www.onvif.org/ver20/backchannel
Server – Client: RTSP/1.0 200 OK
CSeq: 5
Session: 123124;timeout=60
在收到PLAY
请求的200 OK
的回复之后,客户端就可以向Server
发送音频数据包了,Client
不应该在收到回复之前就开始发送数据包。
上面例子中的Require: www.onvif.org/ver20/backchannel
头指明了这个特殊的解释对于PLAY
命令是必须的。PLAY
命令同时开始了Client
从NVT
获取音频流和视频流以及从Client
发送到Server
的对讲流。
TEARDOWN
通过发送TEARDOWN
请求来关闭这个包含三个流的session
:
Client – NVT: TEARDOWN rtsp://192.168.0.1 RTSP/1.0
CSeq: 6
Session: 123124
Require: www.onvif.org/ver20/backchannel
NVT – Client: RTSP/1.0 200 OK
CSeq: 6
Session: 123124
Multicast Streaming
如果客户端要发送语音广播给多个摄像头,那么它需要使用SETUP
请求中的transport
参数来告诉Server
多播地址和端口
Client – Server: SETUP rtsp://192.168.0.1/audioback RTSP/1.0
CSeq: 4
Session: 123124
Transport:RTP/AVP;multicast;destination=224.2.1.1;port=60
000-60001;ttl=128
Require: www.onvif.org/ver20/backchannel
Server – Client: RTSP/1.0 200 OK
CSeq: 4
Session: 123124;timeout=60
Transport:RTP/AVP;multicast;destination=224.2.1.1;port=60
000-60001;ttl=128;mode=”PLAY”
参考
ONVIF Core Specification Core_2.00
onvif 语音对讲相关推荐
- EasyDarwin开源流媒体云平台之语音对讲功能设计与实现
本文由EasyDarwin开源团队成员Alex贡献:http://blog.csdn.net/cai6811376/article/details/52006958 EasyDarwin云平台一直在稳 ...
- C#RTSP通信2:RTSP语音广播+语音对讲(WinForm版本)
C#RTSP通信2:RTSP语音广播+语音对讲(WinForm版本) C#RTSP通信1:C#高性能RTSP播放器(使用FFmepg封装自定义控件,使用简单) C#RTSP通信2:RTSP语音广播+语 ...
- 基于pjsip实现p2p语音对讲
目的 为实现跨网络的语音对讲,使位于NAT后的两个设备进行p2p的语音通讯,此处选用pjsip开源项目来实现. 未解决的问题:对称型的NAT无法实现p2p打洞,pjsip采用turn服务进行转发,不能 ...
- 局域网自建对讲服务器,Windows 局域网语音对讲
[实例简介] Windows下局域网语音对讲程序 ,亲测可行. [实例截图] [核心代码] new_ └── new_ ├── 发送 │ ├── Debug │ │ ├── Sound_s ...
- GB28181语音对讲/摄像头公网对讲指挥
目录 概述 GB28181公网对讲特别说明 GB28181语音对讲原理 公网摄像头语音对讲解决方案 LiveMedia介绍 LiveMedia GB28181平台搭建 概述 摄像头语音对讲是在201 ...
- 安卓GB28181设备语音广播和语音对讲(Android GB28181 语音广播和语音对讲)实现
安卓GB28181语音广播和语音对讲是一个非常重要的功能,很多场景都需要.语音对讲需要安卓有接收语音广播的功能.安卓还需要采集音频,并和视频一起打包到PS传给服务器,采集音频传服务器实现较容易.关键还 ...
- 安卓GB28181跨网段语音对讲
GB28181语音对讲实际使用中遇到的主要问题是跨网段后rtp udp包不能穿透,针对这个问题有两套解决方案. 方案一,安卓端语音发送走实时视音频点播通道,把编码后的语音数据封装到PS包中,和视频帧一 ...
- GB28181系列笔记-语音对讲功能
GB28181系列笔记-注册与保活 GB28181系列笔记-设备目录查询 GB28181系列笔记-实时流请求 GB28181系列笔记-历史流查询与请求 GB28181系列笔记-语音对讲功能 GB281 ...
- GB28181公网语音对讲
GB28181公网语音对讲 语音对讲概述 公网对讲说明 语音对讲原理 公网语音对讲方案 视源GBS平台介绍 视源GBS核心功能 语音对讲概述 摄像头语音对讲是在2014版本提出来的,我这里详细写一遍国 ...
最新文章
- 破解前端面试系列(3):如何搞定纸上代码环节?
- struts2关键配置及函数总结,
- C++教程之lambda表达式一
- QT5 C++编写B类IP地址计算第一个可用IP地址、最后一个可用IP地址、网络号、广播地址、子网数、主机数
- 计算并联电阻的阻值(信息学奥赛一本通-T1015)
- (33)VHDL实现异步复位D触发器
- Mysql主从占用大量cpu_Mysql占用过高CPU时的优化手段
- winform最小化后隐藏到右下角,单击或双击后恢复
- SQL Server性能常用语句
- Flex Builder 中视图状态
- python控制电机转动_使用python,通过串口ROS直接控制电机驱动器(6)
- 深入理解机器学习(一)——二分类模型评价指标详解(上)
- [汇编]汇编学习笔记(6):MASM32编译器编译链接16位汇编
- 基于BERT实现简单的情感分类任务
- 安卓手机怎么投屏台式计算机WIN7,手机怎么投屏到win7电脑
- Java笔记01——JAVA基础部分
- 微信公众号推广分享二维码,关联扫码关注的客户
- 2021年焊工(初级)最新解析及焊工(初级)找解析
- 软件开发生命周期中的设计阶段_软件过程模型|如何进行团队式的软件开发?...
- 云虚拟主机连接mysql_云虚拟主机数据库使用