Debian 系统上安装与配置 MediaMTX


🎯 在 Debian 系统上安装与配置 MediaMTX(原 rtsp-simple-server):打造轻量级流媒体服务器

作者:远在太平洋
环境:Debian 10/11/12 | Ubuntu 可参考
关键词:MediaMTX、rtsp-simple-server、RTSP、RTMP、HLS、WebRTC、流媒体服务器、Debian 安装教程


随着视频监控、直播推拉流等场景的普及,搭建一个简单高效、功能完整的流媒体服务器变得越来越重要。而 MediaMTX(前身是 rtsp-simple-server)正是这样一个开源神器!

它支持 RTSP、RTMP、HLS、SRT、WebRTC 等多种协议,开箱即用,无需复杂依赖,非常适合用于树莓派、VPS 或本地开发测试。

本文将手把手教你如何在 Debian 系统上部署并使用 MediaMTX,涵盖两种主流安装方式(推荐二进制安装),以及基础推拉流测试和配置说明。


🔧 方法一:使用预编译二进制文件(推荐 ✅)

这是官方最推荐的方式,无需编译,直接运行,适合绝大多数用户。

步骤 1️⃣:访问 GitHub 发布页

前往 MediaMTX 的 GitHub 发布页面,获取最新稳定版本:

🔗 https://github.com/mediamtx/mediamtx/releases

⚠️ 注意:项目已从 bluenviron/rtsp-simple-server 迁移至 mediamtx/mediamtx,请认准新地址。


步骤 2️⃣:下载对应架构的压缩包

根据你的设备选择合适的版本:

设备类型下载文件
x86_64 / AMD64(PC/VPS)mediamtx_vX.X.X_linux_amd64.tar.gz
树莓派 4 / ARMv7mediamtx_vX.X.X_linux_arm7.tar.gz
树莓派 3 / ARMv6mediamtx_vX.X.X_linux_arm6.tar.gz
树莓派 64位系统 / ARM64mediamtx_vX.X.X_linux_arm64.tar.gz

使用 wget 命令下载(以 v1.14.0 amd64 为例):

wget https://github.com/mediamtx/mediamtx/releases/download/v1.14.0/mediamtx_v1.14.0_linux_amd64.tar.gz

步骤 3️⃣:解压文件

tar xvf mediamtx_v1.14.0_linux_amd64.tar.gz

解压后你会看到两个关键文件:

  • mediamtx:主程序可执行文件
  • mediamtx.yml:默认配置文件

步骤 4️⃣:安装到系统目录(推荐)

为了管理方便,建议将文件移动到标准路径:

# 创建配置目录
sudo mkdir -p /etc/mediamtx# 移动二进制文件
sudo mv mediamtx /usr/local/bin/# 移动配置文件
sudo mv mediamtx.yml /etc/mediamtx/# 赋予执行权限
sudo chmod +x /usr/local/bin/mediamtx

步骤 5️⃣:创建 Systemd 服务(实现开机自启)

为了让 MediaMTX 后台运行并随系统启动,我们创建一个 systemd 服务。

sudo nano /etc/systemd/system/mediamtx.service

粘贴以下内容:

[Unit]
Description=MediaMTX - SRT/WebRTC/RTSP/RTMP/LL-HLS 流媒体服务器
After=network.target[Service]
Type=simple
User=nobody
Group=nogroup
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/bin/mediamtx /etc/mediamtx/mediamtx.yml[Install]
WantedBy=multi-user.target

保存并退出(Ctrl+X → Y → Enter)。


步骤 6️⃣:启动并启用服务

# 重新加载 systemd 配置
sudo systemctl daemon-reload# 启动服务
sudo systemctl start mediamtx# 设置开机自启
sudo systemctl enable mediamtx# 查看状态
sudo systemctl status mediamtx

✅ 如果输出中包含 active (running),说明服务已成功启动!


💻 方法二:从源码编译安装(适用于开发者)

如果你希望体验最新功能或进行二次开发,可以选择源码编译。

步骤 1️⃣:安装 Go 环境

sudo apt update
sudo apt install golang-go git -y

步骤 2️⃣:克隆并编译

git clone https://github.com/mediamtx/mediamtx.git
cd mediamtx
go build -o mediamtx .

编译完成后,当前目录会生成 mediamtxmediamtx.yml

后续操作与方法一相同:移动文件 → 创建服务 → 启动服务


📡 操作与测试:推流 & 拉流

MediaMTX 默认监听以下端口:

协议端口说明
RTSP554 (TCP), 8000 (UDP)实时流传输协议
RTMP1935直播常用推流协议
HLS8888HTTP 直播流,支持网页播放
WebRTC8889低延迟实时通信
API/UI9997Web 管理界面

🛡️ 若使用了防火墙(如 ufw),需放行相关端口:

sudo ufw allow 554/tcp
sudo ufw allow 1935/tcp
sudo ufw allow 8888/tcp
sudo ufw allow 9997/tcp

1️⃣ 推流测试(使用 FFmpeg)

准备一个本地视频文件(如 my_video.mp4),使用 FFmpeg 推流:

推送到 RTMP:
ffmpeg -re -stream_loop -1 -i my_video.mp4 -c copy -f flv rtmp://你的服务器IP/mylive/mystream
推送到 RTSP:
ffmpeg -re -stream_loop -1 -i my_video.mp4 -c copy -f rtsp rtsp://你的服务器IP/mylive/mystream

📌 参数说明:

  • -re:按原始帧率读取
  • -stream_loop -1:无限循环播放
  • mylive:路径名(可自定义)
  • mystream:流密钥(可自定义)

2️⃣ 拉流播放

使用 VLCFFplay 或浏览器(HLS)播放:

协议播放地址
RTMPrtmp://你的服务器IP/mylive/mystream
RTSPrtsp://你的服务器IP/mylive/mystream
HLShttp://你的服务器IP:8888/mylive/mystream/index.m3u8

例如,使用 ffplay 测试:

ffplay rtsp://127.0.0.1/mylive/mystream

3️⃣ 查看服务器状态(Web UI)

MediaMTX 提供了一个简洁的 Web 管理界面,访问:

🌐 http://你的服务器IP:9997

你可以在这里查看:

  • 当前活跃的推流
  • 正在观看的客户端
  • 实时带宽、编码信息等

非常适合作为监控面板使用!


⚙️ 配置文件详解(/etc/mediamtx/mediamtx.yml)

默认配置允许匿名推拉流,适合测试。但在生产环境中,建议修改配置以增强安全性。

常见配置项包括:

  • 认证机制:设置用户名密码
  • 路径限制:只允许特定路径推流
  • TLS/SSL:启用 HTTPS 和加密流
  • 录制功能:自动保存流到本地
  • 外部程序钩子:推流开始/结束时触发脚本

🔧 完整配置说明请参考官方 Wiki:

🔗 https://github.com/mediamtx/mediamtx/wiki


✅ 总结

通过本文,你已经成功在 Debian 系统上部署了一个功能强大的流媒体服务器 —— MediaMTX

它不仅轻量、易用,还支持多协议互通,无论是做 摄像头接入、直播中转、还是 WebRTC 低延迟应用,都非常合适。


📌 常见问题 FAQ

Q1:为什么推流失败?提示连接被拒绝?
A:检查防火墙是否放行 554、1935 等端口,或使用 netstat -tuln | grep 554 确认服务是否监听。

Q2:如何实现身份验证?
A:编辑 mediamtx.yml,添加 paths:readUsers / writeUsers 配置。

Q3:支持 H.265 编码吗?
A:支持!只要推流端发送的是标准 H.265 流即可,MediaMTX 不做转码。

Q4:能否跨平台使用?
A:当然!MediaMTX 支持 Linux、Windows、macOS、Docker,甚至 Android(Termux)。


🌟 结语

MediaMTX 是目前最简洁高效的开源流媒体方案之一。相比 Nginx-RTMP、Wowza 等重型方案,它更适合个人开发者和边缘设备部署。

赶快动手试试吧!欢迎在评论区交流使用心得~ 😊

👍 如果你觉得这篇文章对你有帮助,别忘了点赞、收藏、关注,让更多人看到!


版权声明:本文原创,转载请注明出处及作者链接。
GitHub 示例代码:https://github.com/yourname/mediamtx-setup(可选)


💡 延伸阅读

  • MediaMTX 官方文档
  • FFmpeg 推流参数详解
  • 树莓派搭建监控服务器实战

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/922203.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922203.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式专题——10.4 ShardingSphere-Proxy服务端分库分表

1 为什么要有服务端分库分表? ShardingSphere-Proxy 是 ShardingSphere 提供的服务端分库分表工具,定位是“透明化的数据库代理”。 它模拟 MySQL 或 PostgreSQL 的数据库服务,应用程序(Application)只需像访问单个数据…

Mysql相关的面试题1

什么是聚集索引(聚簇索引)?什么是二级索引(非聚簇索引)? 聚集索引就是叶子节点关联行数据的索引,二级索引就是叶子节点关联主键的索引,聚集索引必须有且仅有一个,二级索引…

电涌保护器:为现代生活筑起一道隐形防雷网

何为电涌保护器?电涌保护器(Surge Protective Device,简称SPD)主要用于控制信号系统,保护电气电子设备信号线路免受雷电电磁脉冲、感应过电压、操作过电压的影响,广泛应用于工控、消防、安防监控、交通、电…

【uniapp微信小程序】扫普通链接二维码打开小程序

需求:用户A保存自己的邀请码海报,用户B扫描该普通连接二维码,打开微信小程序,并且携带用户A的邀请码信息,用户B登录时,跟用户A关联,成为用户A的下级。 tips:保存海报到手机相册可以参…

LeetCode 378 - 有序矩阵中第 K 小的元素

文章目录摘要描述题解答案题解代码分析代码解析示例测试及结果输出结果时间复杂度空间复杂度总结摘要 在开发中,我们经常遇到需要处理大规模有序数据的场景,比如数据库分页、排行榜查询、或者处理排序过的矩阵。LeetCode 第 378 题“有序矩阵中第 K 小的…

【Lua】Windows 下编写 C 扩展模块:VS 编译与 Lua 调用全流程

▒ 目录 ▒🛫 导读需求环境1️⃣ 核心原理:Windows下Lua与C的交互逻辑2️⃣ Windows下编写步骤:以mymath模块为例2.1 步骤1:准备Windows开发环境方式1:官网下载Lua源码并编译(可控性高)方式2&am…

Python快速入门专业版(二十九):函数返回值:多返回值、None与函数嵌套调用

目录引一、多返回值:一次返回多个结果的优雅方式1. 多返回值的本质:隐式封装为元组示例1:返回多个值的函数及接收方式2. 多返回值的接收技巧技巧1:用下划线_忽略不需要的返回值技巧2:用*接收剩余值(Python …

python使用pip安装的包与卸载

1:基本卸载命令 # 卸载单个包 pip uninstall package_name# 示例:卸载requests包 pip uninstall requests2:卸载多个包 # 一次性卸载多个包 pip uninstall package1 package2 package3# 示例 pip uninstall requests numpy pandas3&#xff1…

超级流水线和标量流水线的原理

一、什么是流水线?要理解这两个概念,首先要明白流水线(Pipelining) 的基本思想。想象一个汽车装配工厂:* 没有流水线:一个工人负责组装一整辆汽车,装完一辆再装下一辆。效率很低。* 有了流水线&…

【Ansible】管理复杂的Play和Playbook知识点

1.什么是主机模式?答:主机模式是Ansible中用于从Inventory中筛选目标主机的规则,通过灵活的模式定义可精准定位需要执行任务的主机。2.主机模式的作用答:筛选目标:从主机清单中选择一个或多个主机/组,作为P…

FastGPT源码解析 Agent 智能体应用创建流程和代码分析

FastGPT对话智能体创建流程和代码分析 平台作为agent平台,平台所有功能都是围绕Agent创建和使用为核心的。平台整合各种基础能力,如大模型、知识库、工作流、插件等模块,通过可视化,在界面上创建智能体,使用全部基础能…

缺失数据处理全指南:方法、案例与最佳实践

如何处理缺失数据:方法、案例与最佳实践 1. 引言 在数据分析和机器学习中,缺失数据是一个普遍存在的问题。如何处理缺失值,往往直接影响到后续分析和建模的效果。处理不当,不仅会浪费数据,还可能导致模型预测结果的不准…

为什么Cesium不使用vue或者react,而是 保留 Knockout

1. Knockout-ES5 插件的语法简化优势 自动深度监听:Cesium 通过集成 Knockout-ES5 插件,允许开发者直接使用普通变量语法(如 viewModel.property newValue)替代繁琐的 observable() 包装,无需手动声明每个可观察属性。…

Word怎么设置页码总页数不包含封面和目录页

有时候使用页码格式是[第x页/共x页]或[x/x]时会遇到word总页数和实际想要的页数不一致,导致显示不统一,这里介绍一个简单的办法,适用于比较简单的情况。 一、wps版本 文章分节 首先将目录页与正文页进行分节:在目录页后面选择插入…

突破机器人通讯架构瓶颈,CAN/FD、高速485、EtherCAT,哪种总线才是最优解?

引言: 从协作机械臂到人形机器人,一文拆解主流总线技术选型困局 在机器人技术飞速发展的今天,从工厂流水线上的协作机械臂到科技展会上的人形机器人,它们的“神经系统”——通讯总线,正面临着前所未有的挑战。特斯拉O…

Java核心概念详解:JVM、JRE、JDK、Java SE、Java EE (Jakarta EE)

1. Java是什么? Java首先是一种编程语言。它拥有特定的语法、关键字和结构,开发者可以用它来编写指令,让计算机执行任务。核心特点: Java最著名的特点是“一次编写,到处运行”(Write Once, Run Anywhere - …

OSPF高级技术 相关知识点

1.多区域OSPFospf 设计多区域原因:① 每个区域的路由器只需同步自己所在区域的链路状态数据库,分区域设 计可以使得每个区域的链路状态数据库得以减少。以降低路由器cpu、内存 的消耗。② 避免某区域内的网络故障(例如:接口频繁up…

Linux / Windows 下连续发送多帧 8 字节指令,下位机只响应第一帧,第二帧“丢失”。

串口编程易错点笔记 基于 serial::Serial(wjwwood serial 库) 场景:Linux / Windows 下连续发送多帧 8 字节指令,下位机只响应第一帧,第二帧“丢失”。1. 现象 serial::Serial ser("/dev/ttyUSB0", 115200);…

三十九、案例-配置文件-参数配置化(了解即可,现在主流使用yml配置文件)

参数配置化-问题引出参数配置化-问题解决参数配置化-代码与过程解析代码: AliOSSUtils(工具类) package com.itheima.utils;import com.aliyun.oss.OSS; import com.aliyun.oss.OSSClientBuilder; import org.springframework.beans.factory.…

Linux之virtio实现原理--pci 基础

一、概述 virtio设备可以基于不同总线来实现,本文介绍基于pci实现的virtio-pci设备。以virtio-blk为例,首先介绍PCI配置空间内容,virtio-pci实现的硬件基础——capability,最后分析PIC设备的初始化以及virtio-pci设备的初始化。 …