前言
好久没有更新了,一个是没有时间,二个写东西可能更多讲究的是一个时机,半熟不熟的领域怕写错,太熟的领域又不敢写,只有刚接触的东西才敢乱写。
也罢,正应了那句初生牛犊不畏虎。言归正传,该篇内容主要记录WVP+ZLMediaKit的初次使用过程和期间遇到的一些问题 。
一、WVP
WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台。
1.1、运行WVP
- 安装Java开发环境
- 安装Redis (windows安装包点我下载,centos安装教程点我打开)
- clone并导入项目 (建议直接git clone去克隆项目不要直接在网页上下载zip文件)
- 修改配置文件 (application-dev.yml)
spring:
# REDIS数据库配置
redis:
# [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
host: 127.0.0.1
# [必须修改] 端口号
port: 6379
# [可选] 数据库 DB
database: 6
# [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
password:
# [可选] 超时时间
timeout: 10000
# [可选] jdbc数据库配置, 项目使用sqlite作为数据库,一般不需要配置
datasource:
# name: wvp
# url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true
# username:
# password:
# type: com.alibaba.druid.pool.DruidDataSource
# driver-class-name: com.mysql.cj.jdbc.Driver
name: eiot
url: jdbc:sqlite::resource:wvp.sqlite
username:
password:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.sqlite.JDBC
max-active: 1
min-idle: 1
# [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
port: 18080
# [可选] HTTPS配置, 默认不开启
ssl:
# [可选] 是否开启HTTPS访问
enabled: false
# [可选] 证书文件路径,放置在resource/目录下即可,修改xxx为文件名
key-store: classpath:xxx.jks
# [可选] 证书密码
key-password: password
# [可选] 证书类型, 默认为jks,根据实际修改
key-store-type: JKS
# 作为28181服务器的配置
sip:
# [必须修改] 本机的IP, 必须是网卡上的IP
ip: 172.18.139.248
# [可选] 28181服务监听的端口
port: 5060
# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
# 后两位为行业编码,定义参照附录D.3
# 3701020049标识山东济南历下区 信息行业接入
# [可选]
domain: 4401020049
# [可选]
id: 44010200492000000001
# [可选] 默认设备认证密码,后续扩展使用设备单独密码
password: admin123
#zlm服务器配置
media:
# [必须修改] zlm服务器的内网IP
ip: 172.18.139.248
# [可选] zlm服务器的公网IP, 内网部署置空即可
wanIp:
# [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip
hookIp:
# [必须修改] zlm服务器的http.port
httpPort: 80
# [可选] zlm服务器的http.sslport, 置空使用zlm配置文件配置
httpSSlPort:
# [可选] zlm服务器的rtmp.port, 置空使用zlm配置文件配置
rtmpPort:
# [可选] zlm服务器的rtmp.sslport, 置空使用zlm配置文件配置
rtmpSSlPort:
# [可选] zlm服务器的 rtp_proxy.port, 置空使用zlm配置文件配置
rtpProxyPort:
# [可选] zlm服务器的 rtsp.port, 置空使用zlm配置文件配置
rtspPort:
# [可选] zlm服务器的 rtsp.sslport, 置空使用zlm配置文件配置
rtspSSLPort:
# [可选] 是否自动配置ZLM, 如果希望手动配置ZLM, 可以设为false, 不建议新接触的用户修改
autoConfig: true
# [可选] zlm服务器的hook.admin_params=secret
secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
# [可选] zlm服务器的general.streamNoneReaderDelayMS
streamNoneReaderDelayMS: 18000 # 无人观看多久自动关闭流, -1表示永不自动关闭,即 关闭按需拉流
# 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
rtp:
# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
enable: true
# [可选] 在此范围内选择端口用于媒体流传输,
portRange: 30000,30500 # 端口范围
# [可选] 日志配置, 一般不需要改
logging:
file:
name: logs/wvp.log
max-history: 30
max-size: 10MB
total-size-cap: 300MB
level:
com:
genersoft:
iot: info
# [根据业务需求配置]
userSettings:
# [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=true
autoApplyPlay: false
# [可选] 部分设备需要扩展SDP,需要打开此设置
seniorSdp: false
# 保存移动位置历史轨迹:true:保留历史数据,false:仅保留最后的位置(默认)
savePositionHistory: false
# 点播等待超时时间,单位:毫秒
playTimeout: 3000
# 等待音视频编码信息再返回, true: 可以根据编码选择合适的播放器,false: 可以更快点播
waitTrack: false
# 是否开启接口鉴权
interfaceAuthentication: true
# 在线文档: swagger-ui(生产环境建议关闭)
springfox:
documentation:
swagger-ui:
enabled: true
- 运行测试 (注意:要先装好ZLMediaKit并运行)
WVP2.0已经集成web界面,第一次运行先npm Install和build一下,然后再运行WVP项目就可以直接访问web页面了。 - 遇到的问题
添加代理设备时,报了错,查看控制台输出如下错误。
排查原因:参数名称要和映射的文件中sql条件名称一样,同时添加注解,修改如下再次运行即可。
二、ZLMediaKit
- ZLMediaKit基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。
- 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转。
- 使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。
- 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。 支持linux、macos、ios、android、windows全平台。
- 支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。 提供完善的标准C API,可以作SDK用,或供其他语言调用。
- 提供完整的MediaServer服务器,可以免开发直接部署为商用服务器。 提供完善的restful api以及web
- hook,支持丰富的业务逻辑。 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。
- 全面支持H265/H264/AAC/G711/OPUS。
2.1、运行ZLMediaKit
可以直接下载我的安装包(centos),解压并运行即可。
./MediaServer -d &
当然你也可以自己编译,具体查看大佬给的wiki文档,运行截图如下(你还没有内容时返回404,都是运行成功的)。
三、页面截图
THE END
感谢查阅
玉念聿辉:编辑