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博客

猜你喜欢

转载自blog.csdn.net/qq8864/article/details/131440376