当前位置: 首页 > news >正文

使用Docker部署ZLMediaKit流媒体服务器实现gb/t28181协议的设备

最近在研究一个摄像头,通信协议是 gb/t28181。对于这个协议也是第一次接触,通过查阅多方资料,找到了两个开源的源码,来实现 视频播放、摄像头直播。以前也没有深入的了解过关于视频播放的这方面的技术,偶尔网站播放视频 也都是 mp4视频,通过html标签直接播放。通过这次的学习,对于视频播放的技术有了一部分的了解。这篇文章主要是讲解 怎么搭建一下 我找的这两个开源的源码服务,从来对gb/t28181协议的设备 进行一个管理。
源码1:ZLMediaKit
https://github.com/ZLMediaKit/ZLMediaKit
对于ZLMediaKit 源码 他提供 docker部署的 方案,所以我们就不需要下载源码自行编译了
对于这个服务 我们主要是用来做视频流转换与播放等等
源码2:wvp-GB28181-pro
https://github.com/648540858/wvp-GB28181-pro
对于这个源码 已经集成了各种设备协议和ZLMediaKit的使用。
他是带前后端的管理系统,如果你们已经有了前端页面。可以只是用他的后端,通过api的方式调用即可。

好了,简单的介绍了这两个项目。
接下来我们来搭建 ZLMediaKit

docker 部署:

  1. 拉取官方镜像
docker pull zlmediakit/zlmediakit:master
  1. 首次运行临时容器
docker run -d --name zlmediakit-tmp zlmediakit/zlmediakit:master
  1. 提取默认配置文件
# 创建宿主机配置目录
mkdir /home/zlmediakit/conf
# 复制容器内配置文件到宿主机
docker cp zlmediakit-tmp:/home/zlmediakit/conf/config.ini /opt/zlmediakit/conf/
# 删除临时容器
docker rm -f zlmediakit-tmp
  1. 修改config.ini配置文件
[api]
secret = your_custom_secret  # 必须修改默认值[rtp_proxy]# 端口范围需与容器映射一致 这个拉流的时候 随机使用的端口# 如果设备同时在线多 再增加即可 现在是500个端口
port_range = 30000-30500    [http]
port = 19092                    # 保持与容器映射端口对应 
allow_ip_range = 0.0.0.0/0   # 允许所有IP访问
ssl_port=443                 # 若开启HTTPS 默认443  也可以改成别的 18443[rtmp]
port=1935                    # 必须与Docker映射的容器端口一致[websocket]
port=9000                    # 若开启WebSocket[general]
mediaServerId = sdaafdgfdgferdz  #服务器唯一id 可自定义

配置文件别的 一般情况就不需要改了,当 wvp-GB28181-pro 源码启动的时候 和 ZLMediaKit 服务建立通信成功后 ,wvp-GB28181-pro 会把 一些参数 同步到 config.ini 配置文件里。

最后启动ZLMediaKit :
docker-compose.yml 文件方式启动:
大家可以根据自己的需求自行修改

version: "3.7"services:zlmediakit:image: zlmediakitports:- "1935:1935"       # rtmp 端口- "19092:19092"     # web 80端口- "18443:18443"     # web 443端口- "18554:18554"     # rtsp 端口- "10000:10000"     # rtp_proxy 端口- "10000:10000/udp" # rtp 代理端口 udp- "8000:8000/udp"   # rtc 端口- "9000:9000/udp"   # srt 端口- "30000-30500:30000-30500/tcp"  # rtp 代理端口范围(WebRTC/RTP转发)- "30000-30500:30000-30500/udp"  # rtp 代理端口范围(WebRTC/RTP转发)restart: alwayscontainer_name: zlmediakitvolumes:- /home/lianxi/ZLMediaKit/conf/config.ini:/opt/media/conf/config.ini  # 配置文件

这个 wvp-GB28181-pro 项目他默认是 3个 配置文件夹 我给他整合成1个了。
在这里插入图片描述
我修改后的 application.yml 配置文件 和上面的这个 docker-compose.yml是配到的。
更多配置 可以去翻看他的源码里有。

application.yml 内容:

spring:application:name: wvpprofiles:active: dev  # 设置接口超时时间mvc:async:request-timeout: 20000thymeleaf:cache: false  # [可选] 上传文件大小限制servlet:multipart:max-file-size: 10MBmax-request-size: 100MBcache:type: redis  # REDIS数据库配置redis:# [必须修改] Redis服务器IP, REDIS安装在本机的, 使用127.0.0.1host: 127.0.0.1  # [必须修改] 端口号port: 6379# [可选] 数据库 DBdatabase: 1# [可选] 访问密码, 若你的redis服务器没有设置密码,就不需要用密码去连接password: 123456# [可选] 超时时间timeout: 10000mysql:datasource:type: com.zaxxer.hikari.HikariDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/gb28181?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=trueusername: rootpassword: root# [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:port: 18080
# [可选] HTTPS配置, 默认不开启ssl:# [可选] 是否开启HTTPS访问enabled: false# [可选] 证书文件路径,放置在resource/目录下即可,修改xxx为文件名key-store: classpath:test.monitor.89iot.cn.jks# [可选] 证书密码key-store-password: gpf64qmw# [可选] 证书类型, 默认为jks,根据实际修改key-store-type: JKS# 作为28181服务器的配置
sip:# [可选] 28181服务监听的端口port: 8116# 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007) 后两位为行业编码,定义参照附录D.3# [可选] domain: 4101050000# [可选] id: 41010500002000000001# [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验password: 12345678# 是否存储alarm告警信息alarm: false# zlm 默认服务器配置
media:id: yLvFJ922en73IZxR  # 要和 zlmediakit 服务配置文件里mediaServerId一致# [必须修改] zlm服务器的内网IPip: 192.168.0.110# [必须修改] zlm服务器的http.porthttp-port: 19092# 要和 zlmediakit docker映射的端口一致http-ssl-port: 18443rtmp-port: 1935rtsp-port: 18554# [必选选] zlm服务器的 secretsecret: tnc4XpPRt6lHOJDK12dMgx53211UvwQClpAWqK
# 要和 zlmediakit 服务配置文件里secret一致rtp:# [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输enable: true# [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功port-range: 30000,30500  # 端口范围# [可选] 国标级联在此范围内选择端口发送媒体流, send-port-range: 30000,30500send-port-range: 30000,30500  # 端口范围# [根据业务需求配置]
user-settings:# 点播/录像回放 等待超时时间, 单位:毫秒play-timeout: 180000# [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=trueauto-apply-play: true# 推流直播是否录制record-push-live: false# 国标是否录制record-sip: false# 国标点播 按需拉流, true:有人观看拉流,无人观看释放, false:拉起后不自动释放stream-on-demand: true# 是否返回Date属性,true:不返回,避免摄像头通过该参数自动校时,false:返回,摄像头可能会根据该时间校时disable-date-header: falseserverId: yLvFJ922en73IZxR
# 关闭在线文档(生产环境建议关闭)
springdoc:api-docs:enabled: falseswagger-ui:enabled: false

对于 wvp-GB28181-pro 项目部署 这里就不说了 ,非常简单 把数据库 表导入到数据库 ,数据库配置一下
java8 环境 idea编辑器 启动即可

http://www.dtcms.com/a/354506.html

相关文章:

  • Day30 多线程编程 同步与互斥 任务队列调度
  • ArcGIS学习-12 实战-综合案例
  • Unity游戏打包——iOS打包pod的重装和使用
  • Flutter:ios打包ipa,证书申请,Xcode打包,完整流程
  • Intern-S1-mini模型结构
  • SpringBoot系列之实现高效批量写入数据
  • 专项智能练习(图形图像基础)
  • 文本处理与模型对比:BERT, Prompt, Regex, TF-IDF
  • 高精度惯性导航IMU价格与供应商
  • [sys-BlueChi] docs | BluechiCtl命令行工具
  • 【C#/Cpp】CLR项目搭建的内联和托管两选项
  • IPv4和IPv6的主要区别,以及常见的过渡策略有哪些
  • OpenCV计算机视觉实战(22)——图像拼接详解
  • 机器视觉学习-day07-图像镜像旋转
  • 【开题答辩全过程】以 基于Spring Boot农产品运输服务平台为例,包含答辩的问题和答案
  • MapStruct用法和实践
  • 【笔记ing】大模型算法架构
  • android studio 同步慢问题解决
  • Logstash数据迁移之mysql-to-kafka.conf两种路由决策对比
  • WebRTC音频QoS方法五(音频变速算法之Accelerate、FastAccelerate、PreemptiveExpand算法实现)
  • Kafka、RabbitMQ 与 RocketMQ 在高并发场景下的高可用与性能对比分析
  • 游戏使用云手机在线运行怎么样?
  • 小白成长之路-k8s原理(二)
  • 【在 macOS 系统上使用 Docker 启动 Kafka 的完整指南】
  • 点评项目(Redis中间件)第二部分Redis基础
  • ArtCAM 2008安装教程
  • React 业务场景使用相关封装(hooks 使用)
  • 【AI自动化】VSCode+Playwright+codegen+nodejs自动化脚本生成
  • Git 删除文件
  • WINTRUST!_ExplodeMessag函数中的pCatAdd