国标28181对讲实现

国标28181对讲实现

一、前言

首先国标28181对讲的实现,是在wvp项目上进行的扩展,推流是借助zlmediakit实现,所以在此感谢两位作者提供的开源项目,下边贴出两个项目的github地址,这是目前对国标28181协议实现最好的开源项目。

WVP-PRO github地址

zlmediakit github地址

我的公网部署地址 https://www.gbslink.top

联系作者要账号密码和源码(不在开源但是价格不贵):

v:17686791164(电话同号)

qq:252657030

  • 实现效果如下

二、部署

部署参考wvp-pro对讲版部署

三、关于公网对讲

在最近与一些公司的交流过程中,发现都是在公网对讲的需求,但是国标2016标准中并没有强制规定设备要支持在公网对讲,所以国内的主流厂商,比如海康的大多数设备其实是不支持公网对讲的,因为他的对讲数据传输模式只支持rtp/udp,而rtp/udp数据包没办法跨网段传输,如果在局域网使用是不影响国标对讲功能的,如果在公网中这个功能就不能使用了(如果是最近两年新采购的设备,可以通过海康微信公众号联系厂家,看看有没有对应型号的升级包,可以让其设备支持公网对讲,PS:为什么这样说,因为我自己试过,还真要到了升级包,升级后海康的设备就支持公网对讲了,升级后的语音数据传输模式是,对讲sip信令协商完成后,设备端主动发起tcp链接,平台侧是tcp被动,这样就可以对讲了,因为建立了一个长链接)

大华:关于大华公网设备对讲推荐使用大华TALK模式,这个功能在平台侧是支持的,会根据厂家名称,自动选择对讲信令模式,大华的TALK模式是大华自己扩展的国标协议,invite由平台侧主动发起,还有就是有的大华设备通过配置接入模块识别码,能修改数据传输模式,也是可以支持标准的国标对讲信令,如下:首位改为4

大华识别码

四、标准国标对讲信令

  • 流程图

对讲流程

  • 具体信令描述

    #广播通知 BroadCast
    #平台侧------->设备侧
    
    MESSAGE sip:34020000001110000001@3402000000 SIP/2.0
    From: <sip:34020000002000000001@3402000000>;tag=bccedfd000006
    To: <sip:34020000001110000001@3402000000>
    Content-Length: 176
    CSeq: 5 MESSAGE
    Route: <sip:34020000001110000001>
    Call-ID: 12345678900006
    Via: SIP/2.0/UDP 192.168.1.101:5060;wlsscid=377aa9afcf1b36f;branch=123133532300006
    Content-Type: Application/MANSCDP+xml
    Max-Forwards: 70
    
    <?xml version="1.0"?>
    <Notify>
    <CmdType>Broadcast</CmdType>
    <SN>17298</SN>
    <!--语音输入设备的设备编码-->
    <SourceID>34020000002000000001</SourceID>
    <!--语音输出设备的设备编码-->
    <TargetID>34020000001370000001</TargetID>
    </Notify>
    
    
    #设备测收到广播通知回复200 ok
    #设备测------>平台侧
    
    SIP/2.0 200 OK
    Via: SIP/2.0/UDP 192.168.1.101:5060;wlsscid=377aa9afcf1b36f;branch=123133532300006
    From: <sip:34020000002000000001@3402000000>;tag=bccedfd000006
    To: <sip:34020000001110000001@3402000000>;tag=880670885
    Call-ID: 12345678900006
    CSeq: 5 MESSAGE
    User-Agent: IP Camera
    Content-Length: 0
    
    
    #设备测主动发起invite
    #设备测------>平台侧
    
    INVITE sip:34020000002000000001@192.168.1.101:5060 SIP/2.0
    Via: SIP/2.0/UDP 192.168.1.64:5060;rport;branch=z9hG4bK1490643408
    From: <sip:34020000001110000001@192.168.1.64:5060>;tag=1499847265		//
    To: <sip:34020000002000000001@192.168.1.101:5060>
    Call-ID: 1420309512
    CSeq: 20 INVITE
    Contact: <sip:34020000001110000001@192.168.1.64:5060>
    Content-Type: application/sdp
    Max-Forwards: 70
    User-Agent: IP Camera
    # 媒体流发送者ID:发送方媒体流序列号,媒体流接收者ID:接收方媒体流序列号 
    Subject: 34020000002000000001:1,34020000001110000001:2		
    Content-Length:   214
    
    v=0
    o=34020000001110000001 2418 2418 IN IP4 192.168.1.64
    s=Play
    c=IN IP4 192.168.1.64
    t=0 0
    # 音频 端口  RTP-over-UDP 负载类型( 8-PCMA, 96-PS) 
    # 注意 这一步就是设备侧开的收语音流数据的端口
    # RTP/AVP传输模式是udp,这种只能在局域网对讲
    # TCP/RTP/AVP 这种才可以在公网对讲
    m=audio 15062 RTP/AVP 8 96		
    a=recvonly
    # RTP + 音频流: 负载类型 
    a=rtpmap:8 PCMA/8000			
    a=rtpmap:96 PS/90000
    # SSRC(同步信源标识符): SSRC值由媒体流发送设备所在的SIP监控域产生,作为媒体流的标识使用 
    y=0200000017	
    # v/编码格式/分辨率/帧率/码率类型/码率大小  a/编码格式/码率大小/采样率   
    #   								  G.711 / 64kbps / 8kHz
    f=v/a/1/8/1					
    
#平台侧回复invite ok
#平台侧------->设备侧
》》》》》》 IPC
SIP/2.0 200 OK
From: <sip:34020000001110000001@192.168.1.64:5060>;tag=1499847265
To: <sip:34020000002000000001@192.168.1.101:5060>;tag=1420309512
Call-ID: 1420309512
CSeq: 20 INVITE
User-Agent: General SIP UAS V1.0
Via: SIP/2.0/UDP 192.168.1.64:5060;rport;branch=z9hG4bK1490643408
Contact: <sip:34020000002000000001@192.168.1.101:5060>
Content-Type: application/SDP
Content-Length: 182

v=0
o=34020000002000000001 0 0 IN IP4 192.168.1.101
s=Play
c=IN IP4 192.168.1.101
t=0 0
# 这是我们平台侧开的端口,使用这个端口发送音频数据到设备
m=audio 8000 RTP/AVP 8		//  端口:8000
a=rtpmap:8 PCMA/8000		//rtpmap:8 PCMA及g711a  采样率:8000HZ
a=sendonly
y=0200000017
#设备测------>平台侧
ACK sip:34020000002000000001@192.168.1.101:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.64:5060;rport;branch=z9hG4bK106578989
From: <sip:34020000001110000001@192.168.1.64:5060>;tag=1499847265
To: <sip:34020000002000000001@192.168.1.101:5060>;tag=1420309512
Call-ID: 1420309512
CSeq: 20 ACK
Contact: <sip:34020000001110000001@192.168.1.64:5060>
Max-Forwards: 70
User-Agent: IP Camera
Content-Length: 0

#这一步过后我们就可以发送音频数据了
  • 关闭对讲
# 发送BYE信令
BYE sip:34020000001370000001@3402000000 SIP/2.0
From: <sip:34020000002000000001@3402000000>;tag=1420309512
To: <sip:34020000001370000001@3402000000>;tag=1499847265
CSeq: 2 BYE
Call-ID: 1420309512
Via: SIP/2.0/UDP 192.168.1.64:5060;branch=z9hG4bKee5c5d98-00007
Max-Forwards: 70
Content-Length: 0
# BYE ok
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.64:5060;branch=z9hG4bKee5c5d98-00007;received=192.168.1.101
From: <sip:34020000002000000001@3402000000>;tag=1420309512
To: <sip:34020000001370000001@3402000000>;tag=1499847265
Call-ID: 1420309512
CSeq: 2 BYE
User-Agent: IP Camera
Content-Length: 0

五、大华TALK对讲模式

  • 流程图

  • 具体信令

    #主动发送invite到摄像机
    #平台侧------->设备侧
    INVITE sip:34020000001370000001@3402000000 SIP/2.0
    Via: SIP/2.0/UDP 192.168.32.33:14000;rport;branch=z9hG4bK7d0821ae
    From: <sip:34020000002000000033@3402000000>;tag=1752762308
    To: <sip:34020000001370000001@3402000000>
    Call-ID: 1949196054
    CSeq: 5 INVITE
    Content-Type: APPLICATION/SDP
    Contact: <sip:34020000002000000033@192.168.32.33:14000>
    Max-forwards: 70
    User-Agent: tiamaes
    Subject: 34020000001370000001:2,34020000002000000033:2
    Content-Length: 183
    
    v=0
    o=34020000002000000033 0 0 IN IP4 192.168.32.33
    s=Talk
    c=IN IP4 192.168.32.33
    t=0 0
    # 此处我们可以控制数据的传输方式  可以使用  TCP/RTP/AVP
    # 25000 是平台侧发送语音数据的端口
    m=audio 25000 TCP/RTP/AVP 8
    a=sendrecv
    a=rtpmap:8 PCMA/8000
    f=v/a/1/8/1
    y=0200000002
    
    
    #设备回复invite ok
    #设备测------>平台侧
    SIP/2.0 100 Trying
    Call-ID: 1949196054
    Content-Length: 0
    CSeq: 5 INVITE
    From: <sip:34020000002000000033@3402000000>;tag=1752762308
    To: <sip:34020000001370000001@3402000000>
    User-Agent: SIP UAS V3.0.0.1049939
    Via: SIP/2.0/UDP 192.168.32.33:14000;rport=14000;branch=z9hG4bK7d0821ae
    
    <!--接收到摄像机响应-->
    SIP/2.0 101 Dialog Establishment
    Call-ID: 1949196054
    Contact: <sip:34020000001180005001@192.168.32.13:5060>
    Content-Length: 0
    CSeq: 5 INVITE
    From: <sip:34020000002000000033@3402000000>;tag=1752762308
    To: <sip:34020000001370000001@3402000000>;tag=5aaf5dffc1105842785cdf093029bcf8
    User-Agent: SIP UAS V3.0.0.1049939
    Via: SIP/2.0/UDP 192.168.32.33:14000;rport=14000;branch=z9hG4bK7d0821ae
    
    <!--接收到摄像机响应-->
    SIP/2.0 200 OK
    Call-ID: 1949196054
    Contact: <sip:34020000001180005001@192.168.32.13:5060>
    Content-Length: 270
    Content-Type: application/sdp
    CSeq: 5 INVITE
    From: <sip:34020000002000000033@3402000000>;tag=1752762308
    To: <sip:34020000001370000001@3402000000>;tag=5aaf5dffc1105842785cdf093029bcf8
    User-Agent: SIP UAS V3.0.0.1049939
    Via: SIP/2.0/UDP 192.168.32.33:14000;rport=14000;branch=z9hG4bK7d0821ae
    
    v=0
    o=34020000001310000001 0 0 IN IP4 192.168.32.13
    s=Talk
    i=VCam Talk Session
    c=IN IP4 192.168.32.13
    t=0 0
    # 9712是设备测开的接收语音数据流的端口
    m=audio 9712 TCP/RTP/AVP 8	
    a=recvonly
    a=rtpmap:8 PCMA/8000/1
    m=audio 9712 TCP/RTP/AVP 8	
    a=sendonly
    a=rtpmap:8 PCMA/8000/1
    y=0200000002
    f=v/0/0/0/0/0a/0/0/0
    
    
    #发送ack到摄像机
    ACK sip:34020000001370000001@3402000000 SIP/2.0
    Via: SIP/2.0/UDP 192.168.32.33:14000;rport;branch=z9hG4bK6e554aa5
    From: <sip:34020000002000000033@3402000000>;tag=1752762308
    To: <sip:34020000001370000001@3402000000>;tag=5aaf5dffc1105842785cdf093029bcf8
    Call-ID: 1949196054
    CSeq: 5 ACK
    Contact: <sip:34020000002000000033@192.168.32.33:14000>
    Max-forwards: 70
    User-Agent: tiamaes
    Content-Length: 0
    # 这一步进行完就可以对讲了
    

    通过对比国标标准信令和大华talk信令我们可以看出,标准的国标对讲sip信令,invite是设备测发起,我们没有办法控制数据的传输模式,而大华的talk模式invite是平台侧发起,我们可以控制数据的传输模式使用udp还是tcp(当然也得设备测支持tcp传输模式才可,要不然还是白扯)

六、写在最后

  • 关于sip信令

在和大家的接触过程中,大家大多数都是刚接触国标协议和wvp这个平台,对sip协议和SDP消息体可能很陌生,因为平是大多数平时使用http协议较多,一次请求一次响应,对sip协议这种为了完成一个功能要进行多次请求和多次响应的方式可能有些抵触,我希望大家放下抵触的心理,静下心来好好的看看信令,大家只要肯下功夫,肯深耕,这个sip信令其实并不难,我给出几个入门参考资料,希望大家看一看,要多使用wireshark抓包实战分析。

SIP入门参考

SDP消息体详解

  • 关于wvp

wvp作者在代码中用了大量的设计模式以及异步编程,如果你看代码费劲请学习设计模式以及JUC编程

  • 最后

希望多读几遍wvp 和zlmediakit 的wiki,如果解决不了可以联系我,不局限于对讲模块,其他功能我也可以帮助你排查。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前 言 小区住宅作为一个生态型﹑园林式﹑智能化的精品楼盘,与传统住宅小区的区别除了对物业管理﹑生态环境的重视以外,关键在于小区智能化,即称之为智能小区。国家科委、建设部于1996年11月共同提出了《2000年小康型城乡住宅科技产业工程城市示范小区规划设计导则》,导则中明确提出小康住宅宜具备高度的安全性。楼宇对系统属家庭安全系统的一个子系统,主要是对居民住宅的安全进行防范和告警,目的在于防止盗窃,入室抢劫等犯罪行为的发生,防止入侵的方法是在住宅楼门入口处安装对系统。 目 录 一.系统设计思想 二.系统设计依据 三.系统介绍 四.系统基本结构 五.系统主要功能特点 六.工程设备分布及数量 七.系统接线及规格 八.方案报价 施工管理与服务 质量保证 保修承诺 一、系统设计思想: 1、适用性 当今科技发展迅速,可应用于智能小区可视对系统的技术和产品可谓层出不穷,工程中选用的系统和产品都应能使用户得到实实在在的受益,并满足近期使用和远期发展的需要。在多种实现途径中,选择最经济可行的途径。 2、先进性 系统的设计和产品选用在投入使用时应具有一定的技术先进性,但不盲目追求尚不成熟的新技术或不实用的新功能,以充分保护用户的投资。 3、可靠性 系统的设计应具有较高的可靠性,在系统故障或事故造成中断后,能确保信号的准确性、完整性和一致性,并具备迅速恢复的功能。 4、实施的可行性 以现有成熟的产品为对象设计,考虑小区内具体的环境和技术发展趋势,使设计的方案现实可行。 5、可扩充性 系统设计中考虑到今后技术的发展和使用的需要,具有更新、扩充和升级的可能。 6、数据安全性 采取必要的措施保障内各智能化系统数据的安全。 7、易操作性 智能小区可视对系统是面向各种管理层次使用的系统,系统及其功能的配置以能给用户提供舒适、安全、方便、快捷为准则,其操作应简便易学,而绝不能因“智能”而给用户带来不便,甚至烦恼。 8、兼容性 可实现普通对、可视对、彩色可视对同一系统兼容。 系统设计说明: 根据用户的需求,我们经过详细的研究和分析,系统设计选用“福泰”ST800智能小区系统,可实现小区联网对、可视对、彩色可视对等功能。 二、系统设计依据: 1、《民用建筑设计标准》(JCJ/T16-92) 2、《智能建筑设计标准》(DBJ08-47-95) 3、《民用建筑电气设计规范》(JGJ/T16-92) 4、《安全防范工程程序与要求》(GA/T75-94) 5、《电气装置安装工程施工及验收规范》(GBJ23-90-92) 6、用户对智能小区联网可视系统的要求 三、系统介绍 ST800可视对系统以管理中心

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值