wvp+zlmediakit实现国标28181对讲
一、前言
- ZLMediaKit
- WVP-GB28181
- 联系作者要源码 VX:17686791164
- 首先感谢wvp作者和zlmediakit作者提供这么棒的开源项目,我这个例子是在这两个框架之上做的一个国标语音对讲功能,目前已经达到生产级别。
- 从22年就一直想搞国标对讲功能,因为一直从事传统的java开发,对底层的知识掌握的不够全面,但是接触这两个开源项目有一年多,对于网络层的知识是突飞猛进,对于国标这个对讲功能,网上资料不多,前前后后搞了有3次,中途都放弃了,之前我做了一个折中方案,就是在前端录一段音下发下去(PCM数据先写到本地,然后用rtp打包发送给设备,,为什么不做成实时的:因为这里边牵扯到rtp打包问题,用java不好做),不能做到实时对讲,最近看zlmediakit issuse时受到启发,实现实时对讲,本人能力有限,希望可以给大家提供一些思路。
二、实现思路
- 前端使用webrtc推流到zlmediakit
- 下发gb28181语音对讲信令
- 摄像机主动发起语音对讲Invite携带摄像头开启的对讲端口
- 调用zlmeidakit startSendRtp把第一步webrtc推到zlmedia的流推送到设备,会返回一个推流端口
- 回复Invite ok到摄像头告诉摄像头我们的推流端口
- 开始对讲
- 结束对讲,发送bye
- 国标对讲信令流程我就不进行描述了可以参考上边的链接
三、必要条件
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.开始对讲
文章来源:https://www.toymoban.com/news/detail-417758.html
五、最后
联系作者要源码:WX 17686791164文章来源地址https://www.toymoban.com/news/detail-417758.html
到了这里,关于wvp+zlmediakit实现国标28181对讲的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!