ZLMediaKit 的安装及使用介绍

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.hqwc.cn/news/4866.html

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

相关文章

【JAVA】十分钟带你了解java的前世今生

个人主页:【😊个人主页】 系列专栏:【初始JAVA】 文章目录 前言JAVA介绍诞生🔬名字与图标🤖发展🛩️未来🪄 前言 玩过我的世界的朋友想必对JAVA以及它的图标都很熟悉,在游戏开始画面…

Spring进阶学习(附面试快速答法)

文章目录 1、Bean线程安全问题小总结面试快速答法 2、AOP小总结面试快速答法 3、bean的生命周期小总结面试快速答法 4、循环引用小总结面试快速答法 5、SpringMVC的执行流程小总结面试快速答法 6、Springboot自动配置原理小总结面试快速答法 7、Spring框架常见注解面…

【数据库原理】MyShop 商城数据库设计(SQL server)

MyShop 商城数据库设计 项目背景定义课程设计要求概念结构设计逻辑结构设计数据结构的描述用户信息数据结构的描述地址信息数据结构的描述商品类别数据结构的描述商品数据结构的描述购物车数据结构的描述订单数据结构的描述订单项数据结构的描述 物理结构设计用户表结构地址表结…

2013年全国硕士研究生入学统一考试管理类专业学位联考逻辑试题——纯享题目版

🏠个人主页:fo安方的博客✨ 💂个人简历:大家好,我是fo安方,考取过HCIE Cloud Computing、CCIE Security、CISP、RHCE、CCNP RS、PEST 3等证书。🐳 💕兴趣爱好:b站天天刷&…

基于appnium+python+夜神模拟器的自动化

目录 1、安装夜神模拟器 2、定位元素 3、开始编码 首先搭好appnium环境!参考https://www.cnblogs.com/testlearn/p/11419797.html 1、安装夜神模拟器 下载安装夜神模拟器后,在cmd命令输入adb connect 127.0.0.1:62001,显示出设备则表示…

Elasticsearch:实用 BM25 - 第 2 部分:BM25 算法及其变量

这是第一部分 “Elasticsearch:实用 BM25 - 第 1 部分:分片如何影响 Elasticsearch 中的相关性评分” 的续篇。 BM25算法 我将尽可能深入这里的数学以解释正在发生的事情,但这是我们查看 BM25 公式的结构以深入了解正在发生的事情的部分。 首…

threejs使用外部模型

个人博客地址: https://cxx001.gitee.io 前面我们都是用Threejs提供的几何体来创建网格,对于简单几何体(如球体和方块)来说非常有效,但当你想要创建复杂的三维模型时,这不是最好的方法。通常情况下,你可以使用三维建模工具&#…

Kafka详解

文章目录 1、kafka简单介绍2、kafka使用场景3、kafka基本概念4、kafka集群1、数据冗余2、分区的写入1、使用 Partition Key 写入特定 Partition2、由 kafka 决定3、自定义规则 3、读取分区数据 5、提交策略6、kafka如何保证高并发 1、kafka简单介绍 kafka是一款分布式、支持分…

IDEA远程DeBug调试

1. 介绍 当我们在开发过程中遇到一些复杂的问题或需要对代码进行调试时,远程调试是一种非常有用的工具。使用 IntelliJ IDEA 进行远程调试可以让你在远程服务器上的应用程序中设置断点、查看变量和执行调试操作。 远程调试的好处如下: 提供更方便的调试…

《Opencv3编程入门》学习笔记—第十一章

《Opencv3编程入门》学习笔记 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 第十一章 特征检测与匹配 一、SURF特征点检测 太复杂了!全是公式! (一)SURF算法概览 SURF,SpeededUp Rebus…

无广告 齐全 简洁 免费的音乐开源软件(支持 电脑max win linux 手机 )——lxMusic

无广告 齐全 简洁 免费的音乐开源软件(支持 电脑max win linux 手机 )——lxMusic 话不多说先上效果 (真香) 下载地址(官方) https://www.lanzoui.com/b0bf2cfa/ 密码:glqw 软件安装包说明 文…

对 tcp out-of-window 的安全建议

TCP 收到一个 out of window 报文后会立即回复一个 ack,这是 RFC793 中 SEGMENT ARRIVES 段的要求。但这是为什么?难道不是默默丢弃才对吗? 对 oow 报文回复 ack,岂不是把正确的 ack 号回过去了吗,这样攻击者盲打一番…