树莓派推送RTSP视频流实战:FFmpeg + rtsp-simple-server(MediaMTX)搭建局域网视频直播服务
本文面向树莓派视频流、Python视觉开发、RTSP视频监控和边缘AI视觉初学者,介绍如何在Raspberry Pi上搭建简单、稳定的RTSP视频流服务。项目采用FFmpeg + rtsp-simple-server(MediaMTX)方式,将树莓派摄像头采集的视频转换并推送到RTSP服务器,再由电脑、NVR、VLC、OpenCV或AI视觉程序访问。文章从安装FFmpeg并验证版本开始,下载适用于ARM64架构的MediaMTX v1.8.1,配置Linux Systemd服务实现RTSP服务器开机自启,最后将摄像头视频推送到RTSP地址,形成树莓派摄像头 → FFmpeg → RTSP服务器 → 客户端播放/AI检测的完整视频流架构。
一、为什么要让树莓派推送 RTSP?
在前面的树莓派 YOLO 视觉项目中,我们可以直接使用 USB 摄像头:
USB摄像头
↓
树莓派
↓
YOLO
↓
AI检测
这种方式适合:摄像头和 AI 算法全部运行在同一台树莓派。
但是实际项目中,经常需要把视频传输到其他设备。
例如:
树莓派摄像头
↓
RTSP
↓
┌─────┼─────────┐
↓ ↓ ↓
电脑 NVR AI服务器
这样就可以实现:
- PC 远程查看摄像头
- VLC 播放视频
- OpenCV 读取 RTSP
- AI 服务器远程推理
- 多设备访问视频流
- 后续接入监控平台
因此 RTSP 非常适合作为树莓派边缘视觉系统中的视频传输接口。
二、整体系统架构
本文最终搭建的系统可以理解为:
Raspberry Pi
┌─────────────────┐
│ │
USB Camera ──►│ FFmpeg │
│ │
│ ▼ │
│ RTSP推送 │
└────────┬────────┘
│
▼
MediaMTX
RTSP Server
│
┌────────────┼────────────┐
▼ ▼ ▼
VLC OpenCV AI服务器
其中:
- FFmpeg 负责视频处理和推流。
- MediaMTX 负责 RTSP 服务。
- 客户端负责:播放、保存、分析、AI 检测。
三、第一步:安装 FFmpeg
首先安装 FFmpeg:
sudo apt install ffmpeg -y
安装完成后检查:
ffmpeg -version
如果能够正常输出版本信息,说明 FFmpeg 已经安装成功。
四、FFmpeg 在这个项目中的作用
FFmpeg 是整个 RTSP 视频流系统中的核心工具之一。
它可以完成:
摄像头采集
↓
视频编码
↓
格式转换
↓
网络传输
↓
RTSP推流
例如摄像头产生原始视频:
RGB / YUV
经过 FFmpeg 处理后,可以编码成:
H.264
H.265
然后通过 RTSP 进行传输。
所以可以简单理解:
FFmpeg 负责"把视频送出去"。
而 MediaMTX 负责"接收并提供 RTSP 视频服务"。
五、第二步:搭建 RTSP 服务器
本文使用:
rtsp-simple-server
目前该项目已经发展为:
MediaMTX
本文采用提供的 v1.8.1 ARM64 版本。
首先下载:
wget https://github.com/bluenviron/mediamtx/releases/download/v1.8.1/mediamtx_v1.8.1_linux_arm64v8.tar.gz
这里需要特别注意:
linux_arm64v8
因为树莓派使用的是:
ARM64 / aarch64
所以下载对应架构的软件包。
六、解压 MediaMTX
下载完成后:
tar -xzf mediamtx_v1.8.1_linux_arm64v8.tar.gz
解压后可以得到 MediaMTX 程序。
例如将程序放在:
/home/rpi5/rtsp/
最终目录可以设计成:
/home/rpi5/rtsp/
├── mediamtx
└── mediamtx.yml
其中:
mediamtx
是 RTSP 服务器程序。
七、为什么建议使用 Systemd 运行 MediaMTX?
如果直接执行:
./mediamtx
程序可以运行。
但是关闭终端以后,服务可能随之停止。
而实际的树莓派设备通常需要:
设备上电
↓
Linux启动
↓
RTSP服务器启动
↓
等待摄像头推流
所以我们把 MediaMTX 配置成 Linux 系统服务。
这样树莓派重启之后,RTSP 服务器可以自动启动。
八、创建 MediaMTX Systemd 服务
创建:
sudo nano /etc/systemd/system/mediamtx.service
写入:
[Unit]
Description=MediaMTX RTSP Server
[Service]
WorkingDirectory=/home/rpi5/rtsp
ExecStart=/home/rpi5/rtsp/mediamtx
Restart=always
[Install]
WantedBy=multi-user.target
保存退出。
九、分析 Systemd 配置
1. Description
Description=MediaMTX RTSP Server
用于描述服务。
2. WorkingDirectory
WorkingDirectory=/home/rpi5/rtsp
指定 MediaMTX 工作目录。
也就是说:
/home/rpi5/rtsp/
作为程序运行目录。
3. ExecStart
ExecStart=/home/rpi5/rtsp/mediamtx
指定真正执行的程序。
相当于手动执行:
/home/rpi5/rtsp/mediamtx
4. Restart
Restart=always
如果 MediaMTX 异常退出,Systemd 会自动重新启动。
对于无人值守的树莓派设备非常有用。
十、重新加载 Systemd
创建服务以后:
sudo systemctl daemon-reload
让 Systemd 重新读取配置。
然后设置开机自动启动:
sudo systemctl enable mediamtx
启动服务:
sudo systemctl start mediamtx
至此:
树莓派开机
↓
Systemd
↓
mediamtx.service
↓
MediaMTX
↓
RTSP Server
已经建立。
十一、检查 MediaMTX 运行状态
建议执行:
sudo systemctl status mediamtx
如果看到:
active (running)
说明 RTSP 服务器已经正常运行。
如果没有运行,可以查看日志:
journalctl -u mediamtx
实时查看:
journalctl -u mediamtx -f
这也是 Linux 服务器部署中非常常用的排查方式。
十二、树莓派 RTSP 推流的完整逻辑
现在服务器已经启动。
下一步就是:把摄像头视频推送到 MediaMTX。
整个流程变成:
USB摄像头
↓
FFmpeg
↓
视频编码
↓
RTSP
↓
MediaMTX
↓
rtsp://树莓派IP/路径
例如可以规划一个视频路径:
camera
那么 RTSP 地址可以设计成:
rtsp://192.168.1.100:8554/camera
其中:
192.168.1.100
是树莓派 IP 地址。
8554
是 RTSP 服务端口。
camera
是视频流路径。
实际使用时,需要根据树莓派真实 IP 和 MediaMTX 配置进行调整。
十三、使用 FFmpeg 推送摄像头
在 Linux 环境下,可以通过 FFmpeg 将摄像头视频推送给 MediaMTX。
典型结构:
ffmpeg \
-f v4l2 \
-i /dev/video0 \
-c:v libx264 \
-preset ultrafast \
-tune zerolatency \
-f rtsp \
rtsp://127.0.0.1:8554/camera
这里:
/dev/video0
代表 USB 摄像头。
如果前面通过:
ls /dev/video*
发现摄像头是:
/dev/video1
那么就需要修改为:
/dev/video1
十四、FFmpeg 参数简单解析
-f v4l2
-f v4l2
表示使用 Linux Video4Linux2 接口读取摄像头。
-i /dev/video0
-i /dev/video0
表示输入设备,也就是:
USB摄像头
-c:v libx264
-c:v libx264
使用 H.264 编码。
H.264 具有比较好的兼容性,适合网络视频传输。
-preset ultrafast
-preset ultrafast
优先降低编码计算量。
对于树莓派这种边缘计算设备,低延迟和低 CPU 占用通常比较重要。
-tune zerolatency
-tune zerolatency
针对低延迟视频场景进行编码设置。
例如:
实时监控
实时AI检测
远程视频
机器人视觉
都比较关注延迟。
-f rtsp
表示输出格式为 RTSP。
最终发送到:
rtsp://127.0.0.1:8554/camera
十五、为什么 MediaMTX 和 FFmpeg 要分开?
这是一个很重要的架构思想。
不要把:
摄像头
+
编码
+
RTSP服务器
+
AI
全部写在一个程序里面。
可以拆成:
Camera
↓
FFmpeg
↓
MediaMTX
↓
RTSP
↓
客户端
这样每一个模块职责明确。
FFmpeg 负责:采集、编码、推流。
MediaMTX 负责:RTSP 服务和视频流分发。
OpenCV / AI 负责:读取和分析视频。
这样后期维护起来更加方便。
十六、RTSP 可以用于 AI 视觉
例如前面的树莓派 YOLO 项目:
USB摄像头
↓
FFmpeg
↓
MediaMTX
↓
RTSP
↓
AI服务器
↓
YOLO
↓
手势检测
这样就不需要让 AI 服务器直接连接 USB 摄像头。
AI 服务器只需要访问:
rtsp://树莓派IP:8554/camera
即可。
这就形成了:
摄像头边缘采集 + 网络视频传输 + 中心AI推理
架构。
十七、RTSP + YOLO 的应用场景
这个架构非常适合后续扩展。
场景一:手势检测
摄像头
↓
RTSP
↓
YOLO
↓
手势识别
场景二:疲劳驾驶
摄像头
↓
RTSP
↓
YOLO
↓
人脸/眼睛/嘴巴检测
↓
疲劳状态判断
场景三:工业视觉
工业相机
↓
边缘设备
↓
RTSP
↓
AI服务器
↓
缺陷检测
场景四:农业视觉
农业摄像头
↓
树莓派
↓
RTSP
↓
AI服务器
↓
病虫害识别
十八、RTSP 系统的优势
采用 RTSP 之后,摄像头不再局限于"只能给本机程序使用"。
而可以成为一个网络视频源。
例如:
┌── VLC
│
树莓派 ── RTSP ──┼── OpenCV
│
├── YOLO
│
├── NVR
│
└── AI服务器
这也是视频监控、机器人视觉和边缘 AI 中非常常见的一种架构。
十九、树莓派边缘 AI 推荐架构
结合前面的 YOLOv8 部署文章,可以进一步形成:
Raspberry Pi 5
┌────────────────────────────────┐
│ │
│ USB IMX378 Camera │
│ │ │
│ ▼ │
│ FFmpeg │
│ │ │
│ ▼ │
│ MediaMTX │
│ │ │
│ RTSP视频流 │
└───────────────┼────────────────┘
│
▼
局域网 / 5G
│
▼
┌───────────────┐
│ AI服务器 │
│ │
│ YOLOv8/YOLO26 │
│ │
└───────────────┘
这套架构的一个核心特点就是:摄像头负责采集,树莓派负责边缘接入,AI 服务器负责模型推理。
二十、总结
本文完成了树莓派 RTSP 视频系统的基础搭建。
核心步骤非常简单:
① 安装FFmpeg
↓
② 下载MediaMTX
↓
③ 解压ARM64版本
↓
④ 创建Systemd服务
↓
⑤ 设置MediaMTX开机启动
↓
⑥ FFmpeg读取/dev/video0
↓
⑦ 推送RTSP
↓
⑧ VLC/OpenCV/YOLO读取
最终形成:
USB IMX378摄像头
↓
树莓派5
↓
FFmpeg
↓
MediaMTX
↓
RTSP
↓
电脑 / AI服务器 / NVR
↓
YOLO人工智能视觉
对于初学者来说,这个项目非常适合作为树莓派网络视频和边缘 AI 视觉的入门案例。
当 RTSP 视频流能够稳定运行以后,还可以继续优化:
RTSP
↓
FFmpeg硬件编码
↓
低延迟优化
↓
多路摄像头
↓
YOLO实时推理
↓
MQTT上传检测结果
↓
MES/AI平台
最终可以构建完整的:
树莓派边缘采集 + RTSP视频传输 + YOLO AI推理 + MQTT数据通信 + MES平台
工业边缘视觉系统。
推荐阅读
更多工业 AI、智能制造与技术实践文章
SOEM-EtherCAT 源代码解析(一):数据类型定义
逐段拆解开源 EtherCAT 主站库 SOEM 的核心头文件 ec_type.h:从基础数据类型、错误码、帧长与超时宏,到以太网头、数据包头结构体,再到状态/命令/数据类型枚举、SII 从站信息接口、邮箱协议与寄存器定义,一文打透 EtherCAT 主站的类型地基。
绿色设计:可持续发展的“始发站”——从施耐德电气“可持续灯塔工厂”看制造业减碳路径
世界经济论坛公布新一批灯塔工厂名单,施耐德电气北京园区凭端到端减碳成果获评“可持续灯塔工厂”。本文深入解读绿色设计为何是减碳的“始发站”:从源头锁定 80% 的环境影响,以干燥空气替代六氟化硫削减 41% 范围三排放,并结合“四维协同”实施框架,为制造企业提供可落地的绿色转型路径。
无人机AI识虫:用“空中巡检 + GIS地图 + AI识别”解决大规模种植虫害问题
大规模种植基地人工巡田难以做到及时、全面、持续覆盖,虫害早期漏检极易扩散成灾。本文系统讲解“无人机空中巡检 + GIS地图 + AI识别”的完整方案:先普查再精查的两级巡检、边缘AI + 农场服务器架构、虫害热力图与风险预测、GIS精准作业区域生成、植保无人机执行闭环,并给出 ZeroOne 棱壹智慧农业的产品定位。
Linux系统篇(十二)——进程(二):深入剖析 Linux 进程:状态变迁、优先级及调度切换逻辑
深入 Linux 进程内核:六种进程状态与变迁、僵尸孤儿进程、优先级机制,以及 O(1) 调度器的位图与队列原理
树莓派部署YOLOv8手势检测实战:USB IMX378摄像头 + Python + PyTorch + ONNX Runtime + Systemd开机自动运行
本文面向树莓派AI视觉、Python人工智能、YOLOv8目标检测初学者,以树莓派部署手势检测项目为案例,完整介绍从USB IMX378摄像头安装、Miniconda环境配置、Python虚拟环境创建、YOLOv8依赖安装,到手势检测程序Systemd开机自动运行的完整流程。在Raspberry Pi 5 / ARM64(aarch64)环境下建立独立的yolov8-env环境,安装PyTorch、Ultralytics、ONNX Runtime、NumPy等AI视觉组件,最后通过Linux systemd使fatigueDetect.py开机自动运行,实现无需手工登录的AI视觉自动检测,为后续手势识别、人体检测、疲劳驾驶检测、工业视觉检测与边缘AI视觉系统打下基础。
C#调用Intel NPU实现YOLOv26极速推理:OpenVINO工业视觉加速实践
通过C# + OpenVINO Runtime调用Intel Core Ultra NPU运行YOLOv26模型,实现低功耗、毫秒级的工业边缘AI视觉推理,涵盖模型导出、环境配置、推理代码与FP16/INT8/异步推理等性能优化实践。
