ZLMediaKit 的安装及使用介绍

news2024/9/21 0:29:44

ZLMediaKit 介绍

ZLMediaKit是一个基于C++开发的开源流媒体服务器。它提供了高性能的音视频处理能力,支持常见的流媒体协议,如RTSP、RTMP、HLS和HTTP-FLV,并且具有低延迟和高并发处理能力。

开源地址:https://github.com/xia-chu/ZLMediaKit

在这里插入图片描述 

 ZLMediaKit的一些主要特点和功能:

  • 基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。
  • 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4),支持协议互转。
  • 使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。
  • 代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。 支持linux、macos、ios、android、windows全平台。
  • 支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。 提供完善的标准C API,可以作SDK用,或供其他语言调用。
  • 提供完整的MediaServer服务器,可以免开发直接部署为商用服务器。 提供完善的restful api以及web hook,支持丰富的业务逻辑。 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。
  • 全面支持H265/H264/AAC/G711/OPUS。

总之,ZLMediaKit是一个功能强大且高性能的开源流媒体服务器,适用于构建实时音视频传输和处理的应用,如直播、视频会议、视频监控等。它提供了多种流媒体协议的支持,具有低延迟和高并发处理能力,同时支持动态转码和跨平台运行。 

linux下编译安装

安装:

#国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
# 安装gcc
sudo apt-get install build-essential
# 安装cmake
sudo apt-get install cmake
# 安装依赖库
#除了openssl,其他其实都可以不安装
sudo apt-get install libssl-dev -y
# 构建和编译项目
cd ZLMediaKit
mkdir build
cd build
cmake ..
# 如果编译release版本 使用 cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

运行:

cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &

ZLMediaKit的HTTP API

ZLMediaKit的HTTP API是一组通过HTTP协议访问的接口,用于控制和管理ZLMediaKit流媒体服务器的功能和状态。

通过以下访问可查看api列表:

http://127.0.0.1/index/api/getApiList

获取服务器配置: /index/api/getServerConfig

获取流列表: /index/api/getMediaList

详细文档: mirrors / xia-chu / zlmediakit · GitCode

通过HTTP API,您可以实现以下功能:

1. 控制流媒体的启动和停止:您可以通过HTTP API发送请求来启动和停止流媒体的播放和推流,控制流媒体的开始和结束。

2. 获取流媒体的状态信息:您可以使用HTTP API获取流媒体服务器的状态信息,包括当前的连接数、流媒体的运行状态、带宽使用情况等。

3. 获取流媒体的统计信息:HTTP API提供了获取流媒体服务器的统计信息的接口,包括每个流的码率、帧率、丢包率等统计数据。

4. 配置流媒体服务器参数:您可以使用HTTP API设置和修改流媒体服务器的配置参数,如网络端口、转码参数、录制参数等。

5. 控制录制和截图功能:通过HTTP API,您可以控制流媒体服务器进行录制和截图操作,包括开始录制、停止录制、获取录制文件列表等。

6. 实时监控和日志查看:HTTP API提供了实时监控流媒体服务器的接口,可以查看实时的日志信息和运行状态。 通过使用ZLMediaKit的HTTP API,您可以通过编写简单的HTTP请求来实现对流媒体服务器的控制和管理,方便地集成和扩展流媒体服务器的功能,满足特定的应用需求。

ffmpeg推流

UDP推流

ffmpeg -re -i input.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream

TCP推流

ffmpeg -re -i input.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/stream

轮回推流

ffmpeg -re -stream_loop -1 -i input.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream

此中:

-re 为以流的方法读取;

-stream_loop 为轮回读取视频源的次数,-1为无穷轮回;

-i 为输入的文件;

-f 为格局化输出到那里;

使用 -stream_loop -1 选项,可以循环播放一个视频或音频文件。这在需要循环播放特定内容的应用中非常有用,比如在展示会议或展览中播放循环视频或音频。

使用 -stream_loop -1 选项,可以循环推送一个流到RTMP或其他流媒体服务器。这在需要连续推送特定内容的应用中非常有用,比如直播、视频监控等。

使用举例,tcp方式推流:

ffmpeg -re -i input.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://114.115.170.245/live/test

ZLMediaKit 如何实现点播

ZLMediaKit的点播一般通过 mp4 文件来实现,推荐大家使用 http mp4点播,这样是最简单,服务器也无需解复用 mp4 文件,当然 ZLMediaKit目前也支持 rtsp、rtmp、http-flv、websocket-flv 的 mp4 点播, 对应的 url 跟直播 url 类似
要在ZLMediaKit 中实现点播,只需要将 mp4 文件放到 www/record下,默认情况下,路径名是 record,可以在 config.ini 中修改。

rtsp://114.115.170.245/record/test.mp4

您可以使用HTTP协议来访问点播媒体文件。在浏览器中输入以下URL进行点播:

http://服务器IP地址:服务器端口/文件相对路径

使用ffmpeg拉取点播文件并存储到本地:

ffmpeg -i rtsp://114.115.170.245/record/input.mp4  -c copy output.mp4

使用ffplay播放流:

ffplay rtsp://127.0.0.1:8554/stream

如需用VLC拉流,需装置VLC播放器。

 FFmpeg拉流保留成视频:

ffmpeg -stimeout 30000000 -i rtsp://127.0.0.1:8554/stream -c copy output.mp4

-stimeout 30000000 为等候RTSP 流衔接的时光,单元为us微秒,30000000 为等候 30 秒,假如衔接掉败则退出。特殊留神该字段要放在rtsp地点之前,否者有效。 

其他资源

音视频开发5. ZLMediaKit库入门使用 编译安装_zlmediakit 编译_编程圈子的博客-CSDN博客

2 ZLMediaKit流媒体服务器 基本使用 - 简书

rtsp服务器搭建使用操作! - 知乎

ZLMediaKit 推/拉流_zlmediakit 拉流_La-La-La-La-La vida的博客-CSDN博客

使用FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理_ffmpeg 推流_FarryNiu的博客-CSDN博客

 基于FFmpeg进行rtsp推流及拉流(详细教程)--技术员007 ଘ(੭ˊᵕˋ)੭

ZLMediaKit视频推流和播放步骤_ywxuan的博客-CSDN博客

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

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

相关文章

抖音seo账号矩阵系统源码代开发组件

一.开发矩阵系统的项目背景: 目录 一.开发矩阵系统的项目背景: 二.短视频矩阵系统SaaS模板组件通常包含以下几个方面的内容: 三.抖音SEO账号矩阵系统源码的技术搭建过程可以分为几个步骤: 1.确定系统的需求和目标&#xff0c…

DFS深度优先搜索

目录 一、DFS的概念DFS的定义DFS的搜索方式DFS采用的数据结构DFS的特点 二、DFS的实战应用1.排列数字2.n-皇后问题 一、DFS的概念 DFS的定义 DFS(Depth-First Search)深度优先搜索,是一种常用的图遍历算法,用于在图或树数据结构…

金蝶云星空财务软件被locked勒索病毒攻击后如何更快解密数据库数据?

金蝶云星空财务软件是一款广泛应用于企业财务管理领域的软件,然而,近期很多企业的金蝶云星空财务软件遭受到了locked勒索病毒的攻击,导致数据库数据被加密。而这次的locked勒索病毒采用了新的加密形式,它不仅能够扫描出各种软件系…

数据结构--顺序表VS链表

数据结构–顺序表VS链表 逻辑结构 存储结构 顺序表: 优点:支持随机存取、存储密度高 缺点:大片连续空间分配不方便,改变容量不方便 链表: 优点:离散的小空间分配方便,改变容量方便 缺点:不可随机存取,存储密度低 基本…

从零开始 Spring Boot 49:Hibernate Entity Lifecycle

从零开始 Spring Boot 49:Hibernate Entity Lifecycle 图源:简书 (jianshu.com) 本文将介绍 Hibernate 的 Session 接口,以及如何用 Session 的相关 API 转换实体(Entity)的生命周期状态。 如果缺少的 JPA 和 Hiberna…

ubuntu18.04 ros报错Command ‘roscore‘ not found

问题描述 git clone https://github.com/ros/catkin.gitcd catkingit branch melodic-develgit checkout melodic-develmkdir buildcd buildcmake …make -j8 && sudo make installcd .. sudo python2 setup.py installsudo python3 setup.py install出现问题 hua…

ADB命令(app自动化测试底层技术)

一、adb相关知识体系 1,adb的使用场景 操作手机设备 app自动化测试2,adb测试体系 app自动化测试-appium 遍历测试-appcrawier app性能测试 app专项测试 STF设备管理平台 云测平台 兼容性测试 二、adb 基础 1,什么是adb Adb是用来操作Andro…

spark、pyspark 常用的模版 demo 网址

1、我自己有时候用百度或者其他的搜索出来的spark 常用案例,质量有的好有的差有时候就很烦。特地分享一个我常用的质量高的网站地址 https://sparkbyexamples.com/pyspark/pyspark-collect/

进阶2:JVM 启动参数

目录 jvm启动参数 参数分类 系统属性 功能解析 运行模式 jvm有两种运行模式 堆内存 设置堆内存 GC相关 GC 日志相关的参数 分析诊断 指定垃圾收集器相关参数 JavaAgent 什么是Java agent 常见问题 视频 前言 这堂课程不用过多的记忆,自身有印象即可…

Vue中Object.defineProperty

放到Object.defineProperty中比直接写在person对象中更灵活&#xff0c;可以设置的属性更多 <script>let person{name:张三,age:男}Object.defineProperty(person,age,{value:18,enumerable:true, //控制属性是否可以被枚举&#xff0c;默认值是falsewritable:true, //控…

无人机动力测试台-15公斤级-Flight Stand 15

Flight Stand 15测试台通过测量电机和螺旋桨的拉力、扭矩、转速、电流、电压、温度、螺旋桨效率和电机效率来精准地描述和评估无人机动力系统的性能。 产品应用 Flight Stand 15测试台可以用于以下方向&#xff1a; 实时动态测试 FS15 Pro的1000 Hz采样率使测试成为可能&…

Chrome 插件开发覆写xhr请求

这几天搞chrome谷歌浏览器插件遇到个问题 我想拦截网页请求&#xff0c;并把数据传递到下一个子窗口。获取responsebody内容 background.js 单纯靠sendmessage实现不了通讯 chrome.runtime.sendMessage({data: e.data.responseText,type:ajaxResponse}); 最开始的时候想用chr…

基于matlab使用自动要素匹配查找图像旋转和缩放(附源码)

一、前言 此示例演示如何自动确定一对图像之间的几何变换。当一个图像因旋转和缩放而相对于另一个图像失真时&#xff0c;请使用 和 查找旋转角度和比例因子。然后&#xff0c;您可以转换扭曲的图像以恢复原始图像。 二、步骤 1&#xff1a;读取图像 将映像引入工作区。 三、…

Bean的基础配置

问题1&#xff1a;在<bean>标签上如何配置别名&#xff1f; 问题2&#xff1a;Bean的默认作用范围是什么&#xff1f;如何修改&#xff1f; 1. Bean基础配置【重点】 类型描述名称bean类型标签所属beans标签功能定义Spring核心容器管理的对象格式 <beans> …

xcall脚本和xsync脚本 linux

一、xcall脚本 在cd /usr/local/bin/路径下创建xcall vim /usr/local/bin/xcall #!/bin/bash for host in hadoop100 hadoop101 hadoop102 doecho $host ssh $host jps done …

网络攻击与防御措施及防御产品

网络攻击与防御措施及产品 思维导图模板_ProcessOn思维导图、流程图分析了攻击类型、并列出了对不同的攻击方法的防御措施&#xff0c;和可以使用的安全设备。https://www.processon.com/view/649ba05dabde99162f8aecba

Java字节码分析快速入门/字节码执行分析(一)

目录 什么是字节码&#xff1f; 为什么要了解字节码&#xff1f; 如何查看字节码&#xff1f; 字节码包括哪些内容&#xff1f; 总结 hello读者盆友们&#xff0c;在上一篇文章[Java基础]面向对象-内存解析_小王师傅66的博客-CSDN博客最后&#xff0c;我们通过查看字节码&…

2022版本的unity里面的snap setting在哪

1.2022版本的unity 在scene 里面图中画圈的位置。 2.点击后效果如图。

数据库实验—存储过程

创建下列存储过程&#xff1a; 查询某位学生指定课程的成绩和学分&#xff08;修正&#xff1a;若该学生的课程成绩小于60分&#xff0c;则学分要显示为0分&#xff09; 提示&#xff1a;使用CASE…WHEN 例如&#xff1a;分别查询’张建国’和’李平方’选修的’数据库系统原理…

chatgpt赋能python:Python退出venv指南:安全退出虚拟环境

Python退出venv指南&#xff1a;安全退出虚拟环境 作为一名有10年Python编程经验的工程师&#xff0c;我很清楚地明白通过venv管理Python虚拟环境的好处。虚拟环境为每个项目提供了一个独立的Python运行时环境&#xff0c;这可以避免项目之间的依赖冲突&#xff0c;并且可以轻…