ubuntu使用ffmpeg+ZLMediaKit搭建rtsp推流环境
最方便的方式,ubuntu上安装vlc播放器,通过vlc来推流,在网上有很多教程。这里采用ffmpeg+ZLMediaKit
必备条件:
1、安装ffmpeg
2、安装ZLMediaKit
一、安装ffmpeg
sudo apt update
sudo apt install ffmpeg
二、安装ZLMediaKit
ZLMediaKit采用源码安装的方式
安装源码编译环境
sudo apt update
sudo apt install git cmake make g++ -y
下载源码,编译
git clone https://github.com/ZLMediaKit/ZLMediaKit.git
cd ZLMediaKit
cmake .
报错提示:
CMake Error at 3rdpart/CMakeLists.txt:201 (add_library):
No SOURCES given to target: zltoolkit
CMake Error at 3rdpart/CMakeLists.txt:91 (add_library):
No SOURCES given to target: mpeg
CMake Error at 3rdpart/CMakeLists.txt:68 (add_library):
No SOURCES given to target: flv
CMake Error at 3rdpart/CMakeLists.txt:55 (add_library):
No SOURCES given to target: mov
CMake Error at 3rdpart/CMakeLists.txt:32 (add_library):
No SOURCES given to target: jsoncpp
CMake Generate step failed. Build files cannot be regenerated correctly.
这个问题通常是因为 ZLMediaKit 的子模块未正确下载导致的。ZLMediaKit 的项目中依赖多个子模块(如 ZLToolKit
、jsoncpp
等),这些子模块需要通过 git submodule
命令下载。
git submodule update --init --recursive
重新 cmake , 报错
CMake Warning at webrtc/CMakeLists.txt:28 (message): srtp 未找到, WebRTC 相关功能打开失败
这个警告表明 ZLMediaKit 中的 WebRTC 功能需要依赖 SRTP 库,而你的系统中没有安装该库或 CMake 未能找到它。
解决方法
安装 SRTP 库
ZLMediaKit 的 WebRTC 功能依赖 libsrtp
,需要在系统中安装该库。
对于 Ubuntu 或 Debian 系统
执行以下命令安装 libsrtp
:
sudo apt update
sudo apt install libsrtp2-dev -y
重新cmake,没有报错提示,然后make。
开始推流
一、启动启动 ZLMediaKit
编译完成之后,
cd release/linux/Debug/
./MediaServer
sudo netstat -tuln | grep 554
可以看到默认启动端口是554。
如果要修改成其它端口,可以修改目录下的config.ini。
二 启动 ffmpeg推流
使用 FFmpeg
将 20.mp4
推送到 rtsp://127.0.0.1:8554/left
ffmpeg -re -i 20.mp4 -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://127.0.0.1:8554/left
运行报错,观察MediaServer的日志:
2024-12-23 10:15:13.008 W [MediaServer] [14284-event poller 3] RtspSession.cpp:62 onError | 1-47(127.0.0.1:35922) RTSP播放器(__defaultVhost__/left/)断开:rtsp推流url非法,最少确保两级rtsp url:rtsp://127.0.0.1:8554/left,耗时(s):0
可见是url地址非法,至少要有两级
修改为:
ffmpeg -re -i 20.mp4 -c:v libx264 -preset ultrafast -tune zerolatency -f rtsp rtsp://127.0.0.1:8554/live/left
三 验证
使用ffplay拉流显示
ffplay rtsp://127.0.0.1:8554/live/left