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

<think>好的,我现在需要回答用户关于如何在ZLMediaKit实现对GB/T 28181标准支持的问题。首先,我需要回顾用户提供的引用内容,看看有哪些相关信息可以利用。 根据引用[1],WVP-PRO结合ZLMediaKit搭建了GB28181视频平台,说明ZLMediaKit主要负责媒体部分的实现和流分发。引用[2]提到在ZLMediaKit的配置文件中启用WebRTC模块,这可能与国标协议中的流传输有关。引用[3]中的直播流程示例显示了RTMP和RTSP的URL结构,可能涉及媒体流的地址配置。引用[4]提到SDP信息的问题,说明在信令交互中需要注意音视频流的处理。 接下来,我需要整理实现GB/T 28181支持的关键步骤。首先,ZLMediaKit需要正确配置以处理国标协议的信令和媒体流。可能需要配置SIP服务器信息,如服务器地址、端口、域等。然后,开启相应的协议支持,比如RTP over TCP/UDP,以及配置媒体流的端口范围。此外,可能需要配置SSL证书,特别是在使用WebRTC时,如引用[2]中提到的。 另外,WVP-PRO作为信令控制平台,需要与ZLMediaKit协同工作。因此,在ZLMediaKit的配置中可能需要指定WVP-PRO的地址,确保信令正确转发和处理。媒体流的存储和分发也需要配置,比如指定媒体文件存储路径和转协议设置,如转RTMP、HLS等。 用户可能需要示例配置,所以需要从引用中提取相关参数。例如,引用[2]中的config.ini配置示例,设置WebRTC模块的监听地址和端口。同时,引用[3]中的流地址示例可以帮助用户理解如何生成正确的流地址。 需要注意的细节包括:确保SIP信令的端口与WVP-PRO配置一致,媒体端口范围不与系统其他服务冲突,SSL证书路径正确,以及转协议配置符合实际需求。此外,引用[4]提到的SDP信息问题,提醒用户在信令交互中正确处理音视频流,避免设备推送不符合预期的流。 最后,生成相关问题时应围绕配置、协议交互、优化和问题排查等方面,帮助用户深入理解和解决可能遇到的问题。</think>以下是在ZLMediaKit实现GB/T 28181标准支持的方法详解: ### 一、基础环境配置 1. **SIP信令服务配置** 在ZLMediaKit的配置文件`config.ini`中设置SIP服务器参数: ```ini [sip] # SIP服务器地址(需与WVP-PRO配置一致) server=192.168.1.100:5060 # 本地SIP服务端口 local_port=5060 # SIP域标识(需符合国标编码规范) realm=3402000000 # 心跳间隔(单位:秒) keepalive_interval=60 ``` 此配置对应GB/T 28181的注册、心跳保活等基础功能[^1][^3]。 2. **媒体流传输配置** ```ini [rtp] # 启用RTP over TCP/UDP rtp_proxy=udp # 媒体流接收端口范围(需与防火墙策略匹配) port_range=30000-35000 ``` 此配置支持国标协议要求的RTP/PS流传输。 ### 二、WebRTC模块集成(可选) 若需要双向音视频通信(如对讲功能): ```ini [webrtc] # 启用WebRTC模块 enabled=1 # 监听地址 listen=0.0.0.0:8443 # SSL证书路径(国标要求加密传输) ssl_cert=/etc/ssl/mediakit.pem ssl_key=/etc/ssl/mediakit.key ``` 此配置引用自WebRTC双向对讲实现方案[^2]。 ### 三、与WVP-PRO信令平台对接 1. **媒体服务地址绑定** ```ini [http] # WVP-PRO回调接口地址 api_secret=your_api_key notify_url=http://wvp-pro-ip:18080/api/mediakit/notify ``` 实现设备状态、流状态实时同步[^1]。 2. **媒体流存储配置** ```ini [record] # 国标录像存储路径 app_name=gb_record file_path=/media/gb28181/ # 分片时长(单位:秒) file_second=3600 ``` ### 四、典型流地址示例 通过以下格式访问媒体流: ```bash # RTMP协议(适用于低延迟直播) rtmp://mediakit-ip:1935/rtp/gb_stream_34020000001320000001 # WebRTC协议(适用于双向对讲) webrtc://mediakit-ip:8443/rtp/gb_stream_34020000001320000001 ``` 流ID需符合国标18位编码规范[^4]。 ### 五、调试注意事项 1. 通过`ffmpeg`测试推流: ```bash ffmpeg -re -i test.mp4 -c copy -f rtsp rtsp://mediakit-ip:554/rtp/gb_stream_34020000001320000001 ``` 2. 检查信令交互日志: ```bash tail -f logs/zlm.log | grep SIP ``` 3. 验证SDP协商内容是否包含`audio`/`video`字段(避免音视频流冲突)。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值