ZeroOne AI
← 返回文章列表

树莓派推送RTSP视频流实战:FFmpeg + rtsp-simple-server(MediaMTX)搭建局域网视频直播服务

👁 1
分类:AI视觉

本文面向树莓派视频流、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服务器

这样就可以实现:

因此 RTSP 非常适合作为树莓派边缘视觉系统中的视频传输接口。

二、整体系统架构

本文最终搭建的系统可以理解为:

 Raspberry Pi
┌─────────────────┐
│                 │
USB Camera ──►│  FFmpeg    │
│                 │
│        ▼        │
│    RTSP推送      │
└────────┬────────┘
         │
         ▼
     MediaMTX
    RTSP Server
         │
┌────────────┼────────────┐
▼            ▼            ▼
VLC        OpenCV      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视觉

无人机AI识虫:用“空中巡检 + GIS地图 + AI识别”解决大规模种植虫害问题

大规模种植基地人工巡田难以做到及时、全面、持续覆盖,虫害早期漏检极易扩散成灾。本文系统讲解“无人机空中巡检 + GIS地图 + AI识别”的完整方案:先普查再精查的两级巡检、边缘AI + 农场服务器架构、虫害热力图与风险预测、GIS精准作业区域生成、植保无人机执行闭环,并给出 ZeroOne 棱壹智慧农业的产品定位。

工业互联网

Linux系统篇(十二)——进程(二):深入剖析 Linux 进程:状态变迁、优先级及调度切换逻辑

深入 Linux 进程内核:六种进程状态与变迁、僵尸孤儿进程、优先级机制,以及 O(1) 调度器的位图与队列原理

AI视觉

树莓派部署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/异步推理等性能优化实践。

评论(0