FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流

供稿:hz-xin.com     日期:2025-01-14
《FFmpeg开发实战:从零基础到短视频上线》一书中提到,轻量级流媒体服务器MediaMTX可用于测试RTSP/RTMP等流媒体协议的推拉流,但其功能有限,适用于生产环境的流媒体服务器还需考虑SRS或ZLMediaKit。

ZLMediaKit是一款基于C++11开发的国产开源流媒体服务器,支持多种流媒体协议和音视频编码标准。结合FFmpeg与ZLMediaKit,可方便测试音视频推拉流。以下以华为欧拉系统为例,介绍编译、安装、调试ZLMediaKit的步骤。

一、编译安装ZLMediaKit

1. 在Linux服务器上安装依赖包。

yum install git

yum install openssl

yum install libsrtp

2. 从gitee下载ZLMediaKit源码。

cd /usr/local/src

git clone --depth 1 gitee.com/xia-chu/ZLMed...

3. 更新ZLMediaKit的依赖模块源码。

cd ZLMediaKit

git submodule update --init

4. 配置ZLMediaKit。

mkdir build

cd build

cmake .. -DENABLE_WEBRTC=on

5. 编译ZLMediaKit。

make

6. 安装ZLMediaKit。

make install

命令执行完毕,ZLMediaKit的可执行程序将安装到ZLMediaKit源码路径的release/linux/Debug目录下。

二、编译安装FFmpeg

详细步骤可参考《FFmpeg开发实战:从零基础到短视频上线》一书的“1.2 Linux系统安装FFmpeg”章节。

三、启动ZLMediaKit

1. 进入ZLMediaKit的安装目录。

cd /usr/local/src/ZLMediaKit/release/linux/Debug

2. 修改配置文件config.ini,将http标签下的sslport改为8443,port改为8080。

sslport=8443

port=8080

3. 启动MediaServer服务。

./MediaServer -d &

4. 检查服务器端口是否开启:554、1935、8080、8443。

四、检查ZLMediaKit的视频推拉流

视频推流有RTSP和RTMP两种协议。RTSP支持双向传输,RTMP只支持单向传输。以下通过ffmpeg将视频推流给ZLMediaKit,并使用VLC播放器观察拉流效果。

1. 将本地视频通过RTSP协议推流给ZLMediaKit。

ffmpeg -re -stream_loop -1 -i "/usr/local/src/test/2018s.mp4" -vcodec h264 -f rtsp rtsp://127.0.0.1/live/test

2. 将本地视频通过RTMP协议推流给ZLMediaKit。

ffmpeg -re -stream_loop -1 -i "/usr/local/src/test/2018s.mp4" -vcodec h264 -f flv rtmp://127.0.0.1/live/test

3. 在VLC播放器中输入相应地址,观看视频画面。

rtsp://124.***.***.***/live/test

rtmp://124.***.***.***/live/test

124.***.***.***:8080/live/test/hls.m3u8

124.***.***.***:8080/live/test.live.ts

124.***.***.***:8080/live/test.live.mp4

124.***.***.***:8080/live/test.live.flv

FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流
1. 将本地视频通过RTSP协议推流给ZLMediaKit。ffmpeg -re -stream_loop -1 -i "\/usr\/local\/src\/test\/2018s.mp4" -vcodec h264 -f rtsp rtsp:\/\/127.0.0.1\/live\/test 2. 将本地视频通过RTMP协议推流给ZLMediaKit。ffmpeg -re -stream_loop -1 -i "\/usr\/local\/src\/test\/2018s.mp4" -...

FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
打开《FFmpeg开发实战:从零基础到短视频上线》随书源码的chapter12\/config_ffmpeg_full.sh,将该文件另存为config_ffmpeg_openssl.sh,并在文件内部这行--enable-libx264 \\的下面增加如下一行配置:--enable-openssl \\ 将config_ffmpeg_openssl.sh上传到服务器的FFmpeg源码目录,执行以下命令赋予可执行...

ffmpeg开发播放器学习笔记 - Hello FFmpeg
为了顺利开始ffmpeg开发,首先需要下载最新版本的ffmpeg源码,将编译产物输出至macos目录,并配置编译参数,如指定输出目录、允许使用GPL代码、使用libfdk-aac解码或编码ACC音频流等。完成基础编译后,还需单独编译libfdk-aac。此步骤需下载libfdk-aac源码,配置并编译,确保与ffmpeg兼容。开发前,创建工程并设...

FFmpeg详细安装步骤和使用笔记
Windows安装下载解压到D:\\Software\\ffmpeg-master-latest-win64-gpl找到bin目录中的ffmpeg、ffplay和ffprobe工具添加ffmpeg到系统环境变量的path中验证安装,通过cmd输入ffmpeg -versionLinux安装在Debian\/Ubuntu、Fedora、CentOS和openSUSE等系统中,FFmpeg安装步骤有所不同使用功能- 转码视频和音频格式 - 剪切、...

FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp
--enable-iconv --enable-gpl --enable-nonfree 编译FFmpeg,执行命令:make clean;make -j4 安装FFmpeg,执行命令:make install 运行以下命令查看FFmpeg版本信息:ffmpeg -version 通过查看控制台输出的FFmpeg版本信息,找到“--enable-libwebp”,即表示FFmpeg已成功启用WebP图片的编解码器libwebp。

ffmpeg开发播放器学习笔记 - Metal 渲染YUV
理解 Metal 的基本使用流程对于开发者而言至关重要。首先,通过获取 GPU 设备实例,初始化计算管线,创建指令队列与指令缓冲对象,将内存数据发送到显存,最后提交指令缓冲对象到指令队列进行计算,每一步都紧密相连,共同构成了 Metal 的计算流程。在 Metal 的编程实践中,使用类似 C++ 的风格编写小程序,...

FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg
对于EulerOS(欧拉系统),基于CentOS源码开发,运行环境兼容CentOS。在欧拉系统上编译安装FFmpeg,同样需要安装一些基础工具和依赖库,如nasm、g++、openssl-devel、curl-devel、cmake、git等。接下来,下载并编译x264、x265和FFmpeg源码包,使用特定命令配置编译选项,并完成make和make install操作。最终,通过...

ffmpeg源码笔记-查找编解码器(一)
总结来说,avcodec_find_encoder_by_name提供了更强的控制性,但可能影响兼容性,如果FFmpeg不支持特定编码器,程序会失败;而avcodec_find_encoder则依赖系统选择,兼容性较好,开发者可以根据实际需求来选择使用。值得注意的是,源码中的codec_list数组虽然在源码中未直接定义,但会在编译时自动生成,包含...

FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx
在FFmpeg开发中,为了支持WebM格式的视频,特别是其音频编码的Opus和视频编码的VP8\/VP9,需要在Linux环境中集成libopus和libvpx库。以下是具体的操作步骤:1. 安装libopus:首先,从ftp.osuosl.org下载libopus源码,如libopus-1.4。解压后,运行`.\/configure`进行配置,接着执行`make`和`make install`...

FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass
在Windows环境下集成libass,可以通过以下步骤完成: 安装freetype库 下载freetype-2.13.2版本的源码 解压并进入解压目录 配置freetype,使用命令:.\/configure --prefix=\/usr\/local\/freetype 编译freetype,使用命令:make 安装freetype,使用命令:make install 将freetype的pkgconfig...