WVP + zlmedia kit enables NAT penetration streaming playback and recording, supports access to IPC, NVR, DVR and other devices, and supports GB28181 national standard cascade

Posted by c_shelswell on Fri, 11 Feb 2022 20:26:05 +0100

preface

I haven't updated it for a long time. One is that I don't have time. The other is that I may pay more attention to an opportunity. I'm afraid to write wrong in semi familiar fields, and I dare not write in too familiar fields. Only things I just touch dare to write indiscriminately.

Well, it's just the sentence that newborn calves are not afraid of tigers. To get back to business, this article mainly records the initial use process and some problems encountered during WVP + zlmedia kit.

1, WVP

       WEB VIDEO PLATFORM It is an out of the box network video platform based on GB28181-2016 standard. It is responsible for realizing the background part of core signaling and equipment management, supporting NAT penetration, and supporting IPC, NVR and DVR access of Haikang, Dahua, Yushi and other brands. Support national standard cascading, forward video streams such as rtsp/rtmp to the national standard platform, and push streams such as rtsp/rtmp to the national standard platform.

1.1. WVP operation

  1. Installing the Java development environment
  2. Install Redis( windows installation package point I downloadcentos installation tutorial point I open)
  3. Clone and import the project (it is recommended to clone the project directly from git clone instead of downloading the zip file directly from the web page)
  4. Modify the configuration file (application dev.yml)
spring:
    # REDIS database configuration
    redis:
        # [must be modified] Redis server IP, REDIS is installed on the local computer, and 127.0.0.1 is used
        host: 127.0.0.1
        # [must be modified] port number
        port: 6379
        # [optional] database DB
        database: 6
        # [optional] access password. If your redis server does not have a password set, you do not need to use a password to connect
        password:
        # [optional] timeout
        timeout: 10000
    # [optional] jdbc database configuration. The project uses sqlite as the database, which generally does not need to be configured
    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

# [optional] the HTTP port that WVP listens to. This port is used for web pages and interface calls
server:
    port: 18080
    # [optional] HTTPS configuration, not enabled by default
    ssl:
        # [optional] whether to enable HTTPS access
        enabled: false
        # [optional] the path of the certificate file can be placed in the resource / directory, and xxx can be changed to the file name
        key-store: classpath:xxx.jks
        # [optional] certificate password
        key-password: password
        # [optional] certificate type. It defaults to jks and can be modified according to the actual situation
        key-store-type: JKS

# Configuration as 28181 server
sip:
    # [must be modified] the IP of this machine must be the IP of the network card
    ip: 172.18.139.248
    # [optional] 28181 service listening port
    port: 5060
    # According to the provisions of national standard 6.1.2, the domain should adopt the first ten digits of ID unified coding. The first 8 digits defined in Appendix D of the national standard are the central code (composed of provincial, municipal, district and grass-roots numbers, refer to GB/T 2260-2007)
    # The last two digits are industry codes. Refer to appendix D.3 for definitions
    # 3701020049 identifies the access of information industry in Lixia District, Jinan, Shandong
    # [optional]
    domain: 4401020049
    # [optional]
    id: 44010200492000000001
    # [optional] the default device authentication password, and the subsequent extensions use the device separate password
    password: admin123

#zlm server configuration
media:
    # [must modify] zlm server's intranet IP
    ip: 172.18.139.248
    # [optional] the public IP of zlm server, and the intranet deployment can be left blank
    wanIp: 
    # [optional] the IP used by the hook of zlm server. SIP is used by default ip
    hookIp:
    # [must be modified] HTTP of zlm server port
    httpPort: 80
    # [optional] HTTP of zlm server Sslport, null, use zlm configuration file for configuration
    httpSSlPort:
    # [optional] RTMP of zlm server Port, null, use zlm configuration file to configure
    rtmpPort:
    # [optional] RTMP of zlm server Sslport, null, use zlm configuration file for configuration
    rtmpSSlPort:
    # [optional] RTP of zlm server_ proxy. Port, null, use zlm configuration file to configure
    rtpProxyPort:
    # [optional] RTSP of zlm server Port, null, use zlm configuration file to configure
    rtspPort:
    # [optional] RTSP of zlm server Sslport, null, use zlm configuration file for configuration
    rtspSSLPort:
    # [optional] whether to configure ZLM automatically. If you want to configure ZLM manually, it can be set to false. It is not recommended for new users to modify it
    autoConfig: true
    # [optional] hook of zlm server admin_ params=secret
    secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
    # [optional] General of zlm server streamNoneReaderDelayMS
    streamNoneReaderDelayMS:  18000  # When no one watches, the stream will be automatically closed, - 1 means it will never be automatically closed, that is, the on-demand pull stream will be closed
    # Enable multi port mode. Multi port mode uses ports to distinguish each flow, which has better compatibility. Single port uses ssrc to distinguish streams. Multi port test is recommended for on-demand timeout
    rtp:
        # [optional] whether to enable the multi port mode. After it is enabled, the port will be selected within the portRange for media streaming
        enable: true
        # [optional] select a port within this range for media streaming,
        portRange: 30000,30500 # Port range

# [optional] log configuration, which generally does not need to be changed
logging:
    file:
        name: logs/wvp.log
        max-history: 30
        max-size: 10MB
        total-size-cap: 300MB
    level:
        com:
            genersoft:
                iot: info
# [configured according to business requirements]
userSettings:
    # [optional] automatic on-demand. When playing with a fixed stream address, if there is no on-demand, it will be automatically on-demand, requiring RTP enable=true
    autoApplyPlay: false
    # [optional] some devices need to extend SDP, and this setting needs to be turned on
    seniorSdp: false
    # true: the last position to save historical data, false: keep historical data only
    savePositionHistory: false
    # On demand waiting timeout, unit: ms
    playTimeout: 3000
    # Wait for the audio and video coding information to return. true: you can select the appropriate player according to the coding. false: you can play on demand faster
    waitTrack: false
    # Enable interface authentication
    interfaceAuthentication: true

# Online document: swagger UI (production environment is recommended to be closed)
springfox:
    documentation:
        swagger-ui:
            enabled: true
  1. Run the test (Note: install the zlmedia kit and run it first)
           WVP2.0 has integrated the web interface. The first time you run npm Install and build, and then run WVP project, you can directly access the web page.
  2. Problems encountered
    When adding an agent device, an error is reported. Check the console output as follows.


Troubleshooting reason: the parameter name should be the same as the sql condition name in the mapped file. At the same time, add notes, modify it as follows and run it again.

2, Zlmedia Kit

  • ZLMediaKit Based on C++11 development, avoid the use of bare pointers, the code is stable and reliable, and the performance is superior.
  • Support multiple protocols (RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC), and support protocol exchange.
  • Developed with multiplexing / multithreading / asynchronous network IO mode, it has superior concurrency performance and supports massive client connections.
  • After a large number of long-term stability and performance tests, the code has been commercially verified online for a long time. Support linux, macos, ios, android and windows platforms.
  • It supports the second opening of the picture and very low delay (within 500 milliseconds, up to 100 milliseconds at least). Provide perfect standard C API, which can be used as SDK or called by other languages.
  • Provide a complete MediaServer server, which can be directly deployed as a commercial server without development. Provide complete restful api and web
  • hook, which supports rich business logic. Through the video monitoring protocol stack and live broadcast protocol stack, the RTSP/RTMP support is perfect.
  • Fully support H265/H264/AAC/G711/OPUS.

2.1. Run zlmedia Kit

You can download it directly My installation package (centos) , unzip and run.

./MediaServer -d &

Of course, you can compile it yourself and check the details given by the boss wiki document , the screenshot of the operation is as follows (404 is returned when you don't have any content, which is successful).

3, Screenshot of page





THE END

Thanks for checking
Yu Nianyu Hui: Editor

Topics: Front-end GB28181