WVP+ZLMediaKit实现NAT穿透推流播放录制,支持IPC、NVR、DVR等设备接入,支持GB28181国标级联

45 篇文章 2 订阅
19 篇文章 2 订阅

前言


       好久没有更新了,一个是没有时间,二个写东西可能更多讲究的是一个时机,半熟不熟的领域怕写错,太熟的领域又不敢写,只有刚接触的东西才敢乱写。

       也罢,正应了那句初生牛犊不畏虎。言归正传,该篇内容主要记录WVP+ZLMediaKit的初次使用过程和期间遇到的一些问题 。

一、WVP


       WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台。

1.1、运行WVP
  1. 安装Java开发环境
  2. 安装Redis (windows安装包点我下载centos安装教程点我打开
  3. clone并导入项目 (建议直接git clone去克隆项目不要直接在网页上下载zip文件)
  4. 修改配置文件 (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
  1. 运行测试 (注意:要先装好ZLMediaKit并运行)
           WVP2.0已经集成web界面,第一次运行先npm Install和build一下,然后再运行WVP项目就可以直接访问web页面了。
  2. 遇到的问题
           添加代理设备时,报了错,查看控制台输出如下错误。

在这里插入图片描述
       排查原因:参数名称要和映射的文件中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,都是运行成功的)。

在这里插入图片描述

三、页面截图


默认的登录帐号密码都是admin
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

THE END

感谢查阅
玉念聿辉:编辑
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉念聿辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值