wvp+zlmediakit实现国标28181对讲

wvp+zlmediakit实现国标28181对讲

一、前言

  • ZLMediaKit
  • WVP-GB28181
  • 联系作者要源码 VX:17686791164
  • 首先感谢wvp作者和zlmediakit作者提供这么棒的开源项目,我这个例子是在这两个框架之上做的一个国标语音对讲功能,目前已经达到生产级别。
  • 从22年就一直想搞国标对讲功能,因为一直从事传统的java开发,对底层的知识掌握的不够全面,但是接触这两个开源项目有一年多,对于网络层的知识是突飞猛进,对于国标这个对讲功能,网上资料不多,前前后后搞了有3次,中途都放弃了,之前我做了一个折中方案,就是在前端录一段音下发下去(PCM数据先写到本地,然后用rtp打包发送给设备,,为什么不做成实时的:因为这里边牵扯到rtp打包问题,用java不好做),不能做到实时对讲,最近看zlmediakit issuse时受到启发,实现实时对讲,本人能力有限,希望可以给大家提供一些思路。

二、实现思路

  1. 前端使用webrtc推流到zlmediakit
  2. 下发gb28181语音对讲信令
  3. 摄像机主动发起语音对讲Invite携带摄像头开启的对讲端口
  4. 调用zlmeidakit startSendRtp把第一步webrtc推到zlmedia的流推送到设备,会返回一个推流端口
  5. 回复Invite ok到摄像头告诉摄像头我们的推流端口
  6. 开始对讲
  7. 结束对讲,发送bye
  8. 国标对讲信令流程我就不进行描述了可以参考上边的链接

三、必要条件

1.HTTPS(wvp和zlmediakit都需要开启)

我们使用webrtc来实现对讲功能,由于浏览器安全特性,想调用电脑麦克风本站必须得是https,所以我们要启用HTTPS;

使用openssl生成自签名证书参考:

#使用openssl生成证书
#1.创建私钥
openssl genrsa  -out video.key 2048
#2.创建签名请求文件(这里需要输入一些信息)
openssl req -new -key video.key -out video.csr
-----
Country Name (2 letter code) [AU]:CN 
State or Province Name (full name) [Some-State]:SD
Locality Name (eg, city) []:JN
Organization Name (eg, company) [Internet Widgits Pty Ltd]:soft
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []: video.com #域名
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:aaaaa
An optional company name []:

#3.自签名生成公钥
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
#4.由于java只支持JKS或者pks证书我们需要转换一下
openssl pkcs12 -export -clcerts -in video.crt -inkey video.key -out video.pkcs12
#5.合并公钥私钥给zlmediakit使用
cat server.crt server.key > ./ssl.pem
  • 结果目录
    在这里插入图片描述
1.1java配置开启ssl

2.由于是自签名证书需要在浏览器信任证书

2.1第一次访问可以信任下证书
2.2 或者把证书配置进浏览器信任证书列表

在这里插入图片描述

3.播放时需要开启音频

4.支持的音频格式

  • UDP PCMA/8000 PS/9000 TCP PCMA/8000 PS/9000
  • 支持公网对讲

5.ZLMedia配置文件修改

在这里插入图片描述

四、实现代码

3.开始对讲

在这里插入图片描述

五、最后

联系作者要源码:WX 17686791164

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值