ZLMediaKit+wvp-GB28181-pro 安装文档

文章目录

    • 前言
    • 1. 安装zlm
      • 1.1 镜像说明
      • 1.2 docker安装
        • 1.2.1 docker安装命令
        • 1.2.2 docker-compose安装
      • 1.3. zlm配置和日志重点说明
    • 2. 安装wvp
      • 2.1 目录结构说明
        • 2.1.1 导入idea
        • 2.1.2 sql文件夹自带初始化库脚本
        • 2.1.3 进入web_src 编译静态资源
        • 2.1.4 修改resources配置
      • 2.2 wvp 启动验证
        • 2.2.1 web页面验证
    • 3. 推流测试
      • 3.1. 推流RTSP 或RTMP
        • 3.1.1 推送失败 method ANNOUNCE failed: 401 Unauthorized 无权限
      • 3.2. wvp管理平台验证
      • 3.3 推送rtp

前言

去年的时候,做摄像头视频接入的草草而过, 文档没有好好记录,今年来填一下自己挖的坑

ZLMediaKit : https://gitee.com/xia-chu/ZLMediaKit.git
wvp-GB28181-pro: https://gitee.com/pan648540858/wvp-GB28181-pro.git

ZLMediaKit 简称zlm ,wvp-GB28181-pro 简称wvp

参考文档: zlm-wiki

1. 安装zlm

可以服务器直接安装,也可以采用docker安装 ,在README 文档中有详细介绍

1.1 镜像说明

docker默认仓库找不到zlmediakit/zlmediakit:master 镜像,只有panjjo/zlmediakit ,可以使用docker search zlmediakit 查询具体镜像
在这里插入图片描述
但是可以通过配置docker 仓库 ,找到zlmediakit/zlmediakit:master ,配置方式:
vim /etc/docker/daemon.json

{"log-driver":"json-file","log-opts":{"max-size":"200m","max-file":"3"},"data-root":"/data/docker/dockerData","registry-mirrors": ["https://kfwkfulq.mirror.aliyuncs.com","https://2lqq34jg.mirror.aliyuncs.com","https://pee6w651.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com"],"dns": ["8.8.8.8","8.8.4.4"]
}

1.2 docker安装

1.2.1 docker安装命令

docker run -it -p 6080:80 -p 10443:443 -p 10935:1935 -p 19351:19350 -p 10554:554 -p 10554:554/udp -p 10332:332 -p 10332:332/udp -p 10010:10000 -p 10010:10000/udp  -p 30000-30500:30000-30500/udp -p 30000-30500:30000-30500/tcp  panjjo/zlmediakit

1.2.2 docker-compose安装

因为你可能需要挂载自定义的配置,日志 或者ffmpeg 等等需求, 使用docker-compose安装比较方便

  • volumes挂载自定义的zlmServer ,config 以及ffmpeg
  • ports 自定义端口映射

version: "3"
services:zlmservice:image: zlmediakit/zlmediakit:mastercontainer_name: zlmprivileged: true# 指定加载配置command: /opt/media/bin/MediaServer -c /opt/media/conf/config.iniports:- "1935:1935"- "8080:80"- "554:554"- "9000:9000/udp"- "10000:10000/tcp"- "10000:10000/udp"- "30000-30500:30000-30500/tcp"- "30000-30500:30000-30500/udp"volumes:#  自定义MediaServer- ./zlm/media/bin:/opt/media/bin#  自定义config.ini- ./zlm/media/conf:/opt/media/conf#  自定义ffmpeg- ./bin:/home/binenvironment:TZ: "Asia/Shanghai"

可以在zlm 启动日志中看到服务端口, 按需映射即可
在这里插入图片描述

1.3. zlm配置和日志重点说明

需要与wvp一致的配置, 其他配置项可以根据需求调整

  • [api] secret
  • [general] mediaServerId
  • [hook] admin_params 记得修改与secret一致
  • 其他on_开头api 与wvp地址端口一致

docker logs -f zlm
在wvp未启动前 ,一直警告hook 服务未找到 ,与wvp建立连接后日志颜色变化显著
在这里插入图片描述

2. 安装wvp

2.1 目录结构说明

2.1.1 导入idea

在这里插入图片描述

2.1.2 sql文件夹自带初始化库脚本

使用navicat 初始化即可
在这里插入图片描述

2.1.3 进入web_src 编译静态资源

ps: 需要安装nodejs
npm run build 构建静态资源
在这里插入图片描述
观察资源文件,是否生成static文件夹

比如master 分支和ide 中resources 资源变化

这里是引用

在这里插入图片描述

在这里插入图片描述

2.1.4 修改resources配置

application.yml 修改 profiles.active 指向application-dev.yml

profiles:
active: dev

配置application-dev.yml , media配置最主要得就是 id,secret 和ip

  • 数据库配置 和redis配置
  • id和secret 必须与zlm配置一致
  • ip zlm 所在服务器ip

2.2 wvp 启动验证

当wvp 启动成功后, 会输出与zlm建立连接的信息如下:
在这里插入图片描述

2.2.1 web页面验证

启动成功后,访问wvp 设置的servlet端口 ,即可看到wvp管理页面, 输入默认用户 admin /admin ,查看节点管理,是否可以看到zlm节点

在这里插入图片描述

在这里插入图片描述

3. 推流测试

ps: 需要安装ffmpeg

3.1. 推流RTSP 或RTMP

rtsp 默认端口为554 , 比如在docker中映射端口为8554 则在推送时需要补端口
rtmp 默认端口1935

  • 推送rtsp
    ffmpeg -re -stream_loop -1 -i test.mp4 -c copy -f rtsp -rtsp_transport tcp rtsp://127.0.0.1:8554/stream/test1

  • 推送rtmp
    ffmpeg -re -stream_loop -1 -i test.mp4 -c copy -f flv rtmp://127.0.0.1:1935/stream/test2

3.1.1 推送失败 method ANNOUNCE failed: 401 Unauthorized 无权限

该错误可能只是你在使用和验证中某个错误特例, 可以根据客户端日志\ wvp 日志\zlm日志 结合排查即可

客户端提示
在这里插入图片描述

wvp日志提示:
在这里插入图片描述
解决方式:
从all-application.yml 查找配置参数设置, 修改application-dev配置即可

在这里插入图片描述

3.2. wvp管理平台验证

点击推流列表, 即可看到推流信息
在这里插入图片描述
点击播放 即可看到推流视频
在这里插入图片描述

3.3 推送rtp

rtp使用端口10000
ffmpeg -re -stream_loop -1 -i demo.flv -c copy -f rtp_mpegts rtp://127.0.0.1:10000
查看zlm 日志,找到编码号
http://服务器IP:10000/rtp/63F0229A.flv
在这里插入图片描述

使用ffplay 测试播放即可
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/15141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DHCP中继代理原理(第二十八课)

当客户机和DHCP服务器不在一个广播域时,DHCP服务器无法接收到客户机的DHCP discover广播数据包,客户机就无法获得IP地址 第一步配置DHCP服务器的信息 <Huawei>u t m //清除日志 Info: Current terminal monitor is off. <Huawei>sys [Huawei]sysname DHCP-R…

分布式异步任务处理组件(二)

一些关键点的设计脑暴记录----very important&#xff01;&#xff01;&#xff01; 首先&#xff0c;任务存储交给kafka&#xff0c;由节点负责写入kafka&#xff0c;acks1&#xff1b;失败重试&#xff1b;透传kafka的提交可靠性&#xff0c;保证任务提交成功&#xff1b;后…

c语言locale.h简介

<locale.h>提供的函数用于控制c标准库中对于不同的地区行为不一样的部分。&#xff08;地区通常是国家或者某种特定语言的地理区域&#xff09; 在标准库里&#xff0c;依赖地区的部分通常包括以下几项&#xff1a; 数字量的格式 货币的格式 字符集 时间日期的格式 它设…

IOS开发:去除TabView的底部留白

我最近在做IOS开发的时候&#xff0c;使用SwiftUI中的TabView做左右滚动的页面切换&#xff0c;遇到了页面底部有大量留白无法去除的问题&#xff1a; 我查了很多资料都没有看到网上有人记录这个问题的解决方案&#xff0c;后来查阅apple developer的文档&#xff0c;我发现.ed…

iOS开发-字符串base64编码与解码

iOS开发-字符串base64编码与解码 在开发总经常遇到需要将字符串进行base64加密与解密。Base64是网络上最常见的用于传输8Bit字节码的编码方式之一&#xff0c;Base64就是一种基于64个可打印字符来表示二进制数据的方法。 这里使用的是GTMBase64 在Podfile中引入 pod GTMBas…

【计算机视觉|人脸建模】深度学习时代的3D人脸重建调查报告

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;3D Face Reconstruction in Deep Learning Era: A Survey 链接&#xff1a;3D Face Reconstruction in Deep Learning Era: A Survey - PubMed (nih.gov) 摘要 随着深度学习的出现和图形…

前端学习--vue2--2--vue指令基础

写在前面&#xff1a; 前置内容 - vue配置 文章目录 插值表达式v-html条件渲染v-show和v-ifv-ifv-if的扩展标签复用组件 v-show v-on /事件v-bind /&#xff1a;属性v-modelv-for 循环元素v-slotv-prev-cloak vue指令只的是带有v-前缀的特殊标签属性 插值表达式 插值表达式{…

Times New Roman对应的latex

在LaTeX中&#xff0c;可以使用以下命令将文字设置为Times New Roman字体&#xff1a; \usepackage{times} 然后&#xff0c;将文档正文部分包含在以下命令之间&#xff1a; \begin{document} … \end{document} 这样&#xff0c;文档正文中的文字将以Times New Roman字体呈…

AES加密的基本常识和封装类

AES加密的基本常识和封装类 AES(Advanced Encryption Standard)是一种对称密钥加密算法,被广泛用于保护敏感数据的安全性。它是一种块加密算法,意味着它将明文数据分成固定大小的块,并使用相同的密钥对每个块进行独立加密。AES算法支持不同的密钥长度,包括128位、192位和…

cglib动态代理、jdk动态代理及spring动态代理使用

1.项目初始化 1.1 pom.xml <dependencies><!-- spring依赖 --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.5.RELEASE</version></dependency>&l…

从源程序到可执行文件的四个过程

从源程序到可执行文件的四个过程 预处理编译汇编链接 程序要运行起来&#xff0c;必须要经过四个步骤&#xff1a;预处理、编译、汇编和链接&#xff0c;如下图所示&#xff1a; -E选项&#xff1a;提示编译器执行完预处理就停下来&#xff0c;后边的编译、汇编、链接就先不执…

网络应用技术师技能考试试题(二)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

kafka权威指南学习以及kafka生产配置

0、kafka常用命令 Kafka是一个分布式流处理平台&#xff0c;它具有高度可扩展性和容错性。以下是Kafka最新版本中常用的一些命令&#xff1a; 创建一个主题&#xff08;topic&#xff09;&#xff1a; bin/kafka-topics.sh --create --topic my-topic --partitions 3 --replic…

Java学习笔记——(10)环境变量path配置及其作用

环境变量的作用为了在 Dos 的任务目录&#xff0c;可以去使用 javac 和 java开发工具命令 先配置 JAVA_HOME 指向 jdk 安装的主目录&#xff08;避免开发中出现问题&#xff09; 编辑 path 环境变量(开发环境)&#xff0c;增加 %JAVA_HOME%\bin 编辑 path 环境变量(运行环境…

快速学会MyBatis映射关系一对一

文章目录 映射关系一对一映射关系-官方文档映射关系1对1-基本介绍基本介绍注意细节 映射关系1 对1-映射方式映射方式配置Mapper.xml 的方式方式1方式2 注解的方式实现应用实例总结 映射关系一对一 映射关系-官方文档 文档地址: https://mybatis.org/mybatis-3/zh/sqlmap-xml.…

GAMES101 笔记 Lecture13 光线追踪1

目录 Why Ray Tracing?(为什么需要光线追踪&#xff1f;)Basic Ray Tracing Algorithm(基础的光线追踪算法)Ray Casting(光线的投射)Generating Eye Rays(生成Eye Rays) Recursive(Whitted-Styled) Ray Tracing Ray-Surface Intersection(光线和平面的交点)Ray Rquation(射线方…

【Python数据分析】Python常用内置函数(二)

&#x1f389;欢迎来到Python专栏~Python常用内置函数&#xff08;二&#xff09; ☆* o(≧▽≦)o *☆嗨~我是小夏与酒&#x1f379; ✨博客主页&#xff1a;小夏与酒的博客 &#x1f388;该系列文章专栏&#xff1a;Python学习专栏 文章作者技术和水平有限&#xff0c;如果文…

WIZnet W5500-EVB-Pico 静态IP配置教程(二)

W5500是一款高性价比的 以太网芯片&#xff0c;其全球独一无二的全硬件TCP、IP协议栈专利技术&#xff0c;解决了嵌入式以太网的接入问题&#xff0c;简单易用&#xff0c;安全稳定&#xff0c;是物联网设备的首选解决方案。WIZnet提供完善的配套资料以及实时周到的技术支持服务…

Linux:service:systemd 版本253.5有一个问题,可能导致virsh hang

https://github.com/systemd/systemd/issues/27953 从描述上看&#xff0c;libvirt的服务设置也有些特殊的配置&#xff0c;才导致的virsh的执行有问题。 要从这个libvirtd的参数&#xff1a; -t, --timeout SECONDS Exit after timeout period (in seconds) elapse with no …

github使用笔记及git协作常用命令

1.Github有一个主库,每个人自己也有一个库,称为分支。 2.Github的协作流程:先从主库fork出自己的分支, 然后进行代码的修改等操作, 操作完之后从本地库上推到自己的服务器分支,然后 服务器分支Pull Request到 主库。 3.本地仓库由git维护的三棵“树"组成:第1个…