ubuntu使用ffmpeg+ZLMediaKit搭建rtsp推流环境

ops/2024/12/26 9:27:52/

最方便的方式,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: zltoolkitCMake Error at 3rdpart/CMakeLists.txt:91 (add_library):No SOURCES given to target: mpegCMake Error at 3rdpart/CMakeLists.txt:68 (add_library):No SOURCES given to target: flvCMake Error at 3rdpart/CMakeLists.txt:55 (add_library):No SOURCES given to target: movCMake Error at 3rdpart/CMakeLists.txt:32 (add_library):No SOURCES given to target: jsoncppCMake Generate step failed.  Build files cannot be regenerated correctly.

这个问题通常是因为 ZLMediaKit 的子模块未正确下载导致的。ZLMediaKit 的项目中依赖多个子模块(如 ZLToolKitjsoncpp 等),这些子模块需要通过 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推流

使用 FFmpeg20.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


http://www.ppmy.cn/ops/145088.html

相关文章

[Python3] Sanic中间件

在 Sanic 中,中间件(middleware)是指在请求和响应之间执行的代码。它们是一个非常强大的工具,用于处理请求的预处理、响应的后处理、全局错误处理、日志记录、认证、权限校验、跨域资源共享(CORS)等任务。中…

大语言模型中的Agent;常见的Agent开发工具或框架

大语言模型中的Agent 大语言模型中的Agent是指以大语言模型为核心驱动,具有自主理解、感知、规划、记忆和使用工具等能力,能够自动化执行复杂任务的系统.以下是一些例子: AutoGPT:它相当于一个完整的工具包,可以为各种项目构建和运行自定义AI Agent。使用OpenAI的GPT-4和…

【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍

Kibana 图形显示 Kibana 介绍 Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作,可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作,您可以很方便的利用 图表、表格及地图…

Spring提供了很好事务管理机制

事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制 分类 主要分为编程式事务和声明式事务两种。 编程式事务 是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例: try {//TODO so…

目标检测与R-CNN——pytorch与paddle实现目标检测与R-CNN

目标检测与R-CNN——pytorch与paddle实现目标检测与R-CNN 本文将深入探讨目标检测与R-CNN的理论基础,并通过PyTorch和PaddlePaddle两个深度学习框架来展示如何实现R-CNN模型。我们将首先介绍目标检测与R-CNN的基本概念,这些理论基础是理解和实现目标检测…

懒加载策略的关键思路及实现

整体懒加载逻辑 在这个代码示例中,懒加载的核心思想是只有当真正需要显示某张影像(通过 loadImageData 函数根据索引请求加载影像数据)时,才会从磁盘读取该影像对应的 TIFF 文件并将其数据加载到内存中转换为 QImage 进行显示。影像的元数据(如文件路径、尺寸等)在程序启…

目标检测与R-CNN——paddle部分

目标检测与R-CNN——paddle部分 本文部分为paddle框架以及部分理论分析,paddle框架对应代码可见目标检测与R-CNN import paddle print("paddle version:",paddle.__version__)paddle version: 2.6.1目标检测 目标检测(Object Detection&…

【文档搜索引擎】缓冲区优化和索引模块小结

开机之后,首次制作索引会非常慢,但后面就会快了 重启机器,第一次制作又会非常慢 这是为什么呢? 在 parserContent 里面,我们进行了一个读文件的操作 计算机读取文件,是一个开销比较大的操作, …