ZLMediaKit快速上手【保姆级简单快速版】

news2024/12/23 8:41:41

一、前言

1、ZLMediaKit使用场景

最近在写一个摄像头检测的项目,其中需要做拉流测试,但是摄像头数量不够用,如果直接重复拉流可能会出现问题,使用ZLMediaKit(一个基于C++11的高性能运营级流媒体服务框架)可以实现按需拉流推流。
ZLMediaKit源码地址
功能描述

但是网上可供参考的资料比较残缺不够完整,故在此记录一下完整的上手流程。

2、参考资料

Docker 简单部署 ZLMediaKit 超详细图文步骤
ZLMediaKit部署及使用
搭建流媒体服务器,ZLMediaKit+Docker

二、准备工作

在这里我们使用最简单直接的方式:Docker安装。所以需要有docker的环境。官网提供的docker下载命令如下:

docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp --name zlmediakit zlmediakit/zlmediakit:master

直接使用在后续可能会出现一个错误。在这里直接提供修改之后的代码。
在创建docker之前,做好如下配置

1、下载原始的ZLMediaKit

docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp --name zlmediakit zlmediakit/zlmediakit:master

2、修改ZLMediaKit配置文件

docker cp -a zlmediakit:/opt/media /home/docker/zlmediakit
docker rm -f zlmediakit  #删除
cd /home/docker/zlmediakit/media/conf
vi config.ini

在这里插入图片描述

在这里插入图片描述
修改[http]相关配置

[api]
apiDebug=1
defaultSnap=./www/logo.png
downloadRoot=./www
#修改secret,当然也可以使用默认值,这个后续要用到
secret=Icetc   
snapRoot=./www/snap/
.................
.................
[http]
#是否显示文件夹菜单,开启后可以浏览文件夹
dirMenu=1
#允许访问http api和http文件索引的ip地址范围白名单,置空情况下不做限制,初始值不为空
allow_ip_range=

启动流程

1、启动docker

按上述修改完配置文件之后就可以重新启动我们的docker了,注意启动的时候要使用我们自己的配置文件。

docker run -d -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 30000-30500:30000-30500 -p 30000-30500:30000-30500/udp --name zlmediakit --restart=always --env MODE=standalone -e TZ="Asia/Shanghai" -v /home/docker/zlmediakit/media/bin:/opt/media/bin -v /home/docker/zlmediakit/media/conf:/opt/media/conf zlmediakit/zlmediakit:master

2、检查docker是否启动成功

我们在网页上输入http://{你的ip地址}:8080如果出现一下页面,说明启动成功。
在这里插入图片描述
有一个错误可能是your ip is not allowed to access the service,原因是在之前配置文件中未修改设置allow_ip_range=

3、添加推流

在这里我们就使用第一个使用rtsp方式推流,官方提供的测试命令如下:
推流测试

ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

但是我们是在docker里,没有测试视频,需要把服务器中的测试视频上传到docker里。

docker cp /home/fight_test.mp4 zlmediakit:/

这样有了测试视频之后我们再进行推流测试。而且要在docker容器中运行,修改成我们的测试视频地址。

docker exec zlmediakit ffmpeg -re -i /fight_test.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

可能出现的一个问题:[aac @ 0x560f6b976780] Too many bits 8832.000000 > 6144 per frame requested, clamping to max
解决办法是至少设置一个参数即可修复卡住的错误,具体原因不明。其中ab 为码率,ar 为采样率,ac为声道。
在这里设置就设置一下-ar,完整命令如下:

docker exec zlmediakit ffmpeg -re -i /fight_test.mp4 -vcodec h264 -ar 44100 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test

出现以下页面说明添加推流成功!
在这里插入图片描述

4、查看推流

在这里插入图片描述
在这里插入图片描述
来到这个页面之后就可以查看刚才添加的推流了:
在这里插入图片描述
还可以查看观看人数。

5、获取视频

在这里插入图片描述
播放url规则
在这里插入图片描述
在这里插入图片描述

根据上面的讲述,可以知道我们的视频流地址创建的时候是这样的:rtsp://127.0.0.1/live/test
打开浏览器输入推流地址:rtsp://127.0.0.1:{端口号}/live/test或者正在别的主机上ip换成推流主机的ip,说明docker内使用推流的端口号是554,这个在浏览器页面都能够查看到,在服务器上输入的推流地址需要做简单修改,docker映射在一开始启动docker的时候有8554:554,所以应该是rtsp://127.0.0.1:8554/live/test
输入之后,弹出直播了,操作成功!之后把测试视频地址修改成摄像头地址,测试成功。
在这里插入图片描述

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

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

相关文章

对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击

对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击 近年来,随着深度学习模型在各个领域取得惊人突破,对抗攻击(Adversarial Attack) 逐渐成为研究热点。对抗攻击旨在通过在输入数据上施加精心设计的微小扰动&#x…

Doris安装部署指南

Doris安装部署指南 一、环境准备二、下载并解压安装包三、配置FE和BEFE配置BE配置四、验证集群状态五、集群扩容与缩容六、总结Apache Doris(原百度Palo)是一款基于MPP架构的高性能、实时的分析型数据库。它支持标准SQL,高度兼容MySQL协议,能够运行在绝大多数主流的商用服务…

第50篇 汇编语言实现中断<六>

Q:怎样设计汇编语言程序使用定时器中断实现实时时钟? A:此前我们曾使用轮询定时器I/O的方式实现实时时钟,而在本实验中将采用定时器中断的方式。新增的interval_timer.s间隔定时器的中断服务程序中增加了TIME变量,还更…

<<迷雾>> 第 1 章 了解计算机, 要从电开始 示例电路

简单灯泡电路 info::操作说明 灯的亮起有一定的延时, 需要过一会才逐渐亮起来 另: 可通过 “菜单–选项–显示电流” 控制是否显示电流 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdm…

Unity XR 环境检测

需求&#xff1a; 检测环境是XR还是手机 代码&#xff1a; using UnityEngine.XR;public class EnvmentUtility {/// <summary>/// 是否是XR环境/// </summary>/// <returns>如果是XR&#xff0c;返回true&#xff0c;否则false</returns>public sta…

Gin框架简易搭建(3)--Grom与数据库

写在前面 项目地址 个人认为GORM 指南这个网站是相比较之下最为清晰的框架介绍 但是它在环境搭建阶段对于初学者而言不是很友好&#xff0c;尤其是使用mysql指令稍有不同&#xff0c;以及更新的方法和依赖问题都是很让人头疼的&#xff0c;而且这些报错并非逻辑上的&#xf…

linux 下的静态库与动态库

目录 一、介绍 1、静态库 2、动态库 二、操作 1、静态库 2、动态库 3、使用库文件 &#xff08;1&#xff09;方法一 &#xff08;2&#xff09;方法二 &#xff08;3&#xff09;方法三 一、介绍 1、静态库 静态链接库实现链接操作的方式很简单&#xff0c;即程序文…

vue启动报错

vue执行npm run dev报错如下 Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:69:19)at Object.createHash (node:crypto:133:10)at module.exports (F:\ray\taisheng-erp-frontend-master\node_modules\webpack\lib\ut…

深信服2025届全球校招研发笔试-C卷(AK)

前面14个填空题 T1 已知 子数组 定义为原数组中的一个连续子序列。现给定一个正整数数组 arr&#xff0c;请计算该数组内所有可能的奇数长度子数组的数值之和。 输入描述 输入一个正整数数组arr 输出描述 所有可能的奇数长度子数组的和 示例 1 输入 1,4,2,5,3 输出 58 说明 …

[论文精读]Polarized Graph Neural Networks

论文网址&#xff1a;Polarized Graph Neural Networks | Proceedings of the ACM Web Conference 2022 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于…

Junit 5 - 理解Mockito,提高UT 覆盖率

前言 当我是1个3年初级程序员时&#xff0c; 我被面试者问到1个问题&#xff1a; 如何保证你的开发任务交付质量 当我是1个7年开发组长时&#xff0c; 我被面试者问到另1个问题&#xff1a;如何保证你的团队的代码质量&#xff0c; 减少rework。 又若干年后&#xff0c; 我才…

代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 图论part08**拓扑排序精讲**题目&#xff1a;117. 软件构建拓扑排序的背景解题思路&#xff1a;模拟过程 **dijkstra&#xff08;朴素版&#xff09;精讲**题目&#xff1a;47. 参加科学大会解题思…

leetcode每日一题day14(24.9.24)——字符串最多的子序列

思路:对于应该首要和贡献联系起来&#xff0c;对于什么是贡献呢&#xff0c;即在某种情况下&#xff0c;会贡献出多少种&#xff0c;符合要求的结果&#xff0c;此题属于较为基础的&#xff0c;对于text中的一个字符如果是非pattern中的元素&#xff0c;则对结果无任何影响&…

舒舒活动图片 小暑至,暑气湿气缠身怎么办?中医教你消暑宁心,健脾祛湿

小暑标志着酷夏的到来&#xff0c;闷热潮湿的气候令人不适&#xff0c;仿佛暑湿交织笼罩全身。众多友人诉苦不已&#xff0c;此般环境致使心绪不宁、身躯疲惫&#xff0c;失措寻对策。实则无需忧虑&#xff0c;持之以恒地进行消暑养心、健脾除湿&#xff0c;便能安然度夏。 暑气…

Vue 技术入门 day1 模版语法、数据绑定、事件处理、计算属性与监视、class和style绑定、条件渲染v-if/v-show、列表渲染v-for

目录 1.Vue 核心 1.1. Vue 简介 1.1.1 介绍与描述 1.1.2 Vue 的特点 1.2 模板语法 1.2.1 模板的分类 1.2.2 插值语法 1.2.3 指令语法 1.2.4 实例 1.3 数据绑定 1.3.1 单向数据绑定 1.3.2 双向数据绑定 1.3.3 MVVM 模型 1.3.4 data与el的2种写法 1.3.5 实例 1.3.…

【C++前缀和】2731. 移动机器人|1922

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 LeetCode2731. 移动机器人 有一些机器人分布在一条无限长的数轴上&#xff0c;他们初始坐标用一个下标从 0 开始的整数数组 nums 表示。当你给机器人下达命令时&…

manim中实现文字换行和设置字体格式

实现换行 from manim import * class Textline(Scene): def construct(self): self.camera.background_color "#2F4F14" # 创建中心文本 horizontal_line Line(startLEFT * 8, endRIGHT * 8, colorWHITE).shift(3 * UP) stext Text("线性代数", …

0. Pixel3 在Ubuntu22下Android12源码拉取 + 编译

0. Pixel3 在Ubuntu22下Android12源码拉取 编译 原文地址: http://www.androidcrack.com/index.php/archives/3/ 1. 前言 这是一个非常悲伤的故事, 因为一个意外, 不小心把之前镜像的源码搞坏了. 也没做版本管理,恢复不了了. 那么只能说是重新做一次. 再者以前的镜像太老旧…

828华为云征文|部署去中心化网络的 AI 照片管理应用 PhotoPrism

828华为云征文&#xff5c;部署去中心化网络的 AI 照片管理应用 PhotoPrism 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 PhotoPrism3.1 PhotoPrism 介绍3.2 PhotoPrism…

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(驱动移植)

1.将RKNPU驱动移植到Openharmony内核 本文以rk3568为例&#xff0c;将RKNPU驱动移植到Openharmony使用的kernel 5.10中 开发环境 DAYU200 rk3568开发板OpenHarmony 4.1 Release 64位系统 文档约定&#xff1a;4.1r_3568为OpenHarmony标准系统源码根目录 1.0 环境准备 1.搭建O…