MediaMTX极速上手指南:3分钟搭建跨协议流媒体服务器
你还在为多协议流媒体服务配置复杂而烦恼?还在为直播推流、转码、分发的高延迟发愁?本文将带你3分钟从零搭建一个支持RTSP、RTMP、WebRTC、HLS等多协议的流媒体服务器,让你轻松应对安防监控、直播推流、视频会议等多种场景。读完本文,你将掌握MediaMTX的安装部署、基础配置、协议转换和录制存储等核心技能,从此告别繁琐的配置流程。
一、MediaMTX简介
MediaMTX(原rtsp-simple-server)是一款零依赖、高性能的实时媒体服务器,支持多种音视频协议的发布、读取、代理和录制。它就像一个"媒体路由器",能够将来自不同协议的媒体流无缝转换并分发给各种客户端,解决了不同设备和平台间的协议兼容性问题。
1.1 核心功能
- 多协议支持:支持RTSP、RTMP、WebRTC、HLS、SRT等多种协议的输入输出
- 自动协议转换:无需额外配置,自动实现不同协议间的转换
- 低延迟传输:优化的流媒体传输机制,最低延迟可达几百毫秒
- 灵活的录制功能:支持fMP4和MPEG-TS格式的分段录制
- 跨平台兼容:可在Linux、Windows、macOS和树莓派等多种设备上运行
1.2 支持的协议与编解码
MediaMTX支持丰富的协议和编解码格式,以下是主要支持的协议及其编解码能力:
| 协议 | 视频编解码 | 音频编解码 |
|---|---|---|
| RTSP | H265, H264, VP9, VP8, AV1等 | AAC, MP3, Opus, G711等 |
| RTMP | H264 | AAC, MP3 |
| WebRTC | H264, VP9, VP8, AV1 | Opus, G711, G722 |
| HLS | H265, H264, VP9, AV1 | AAC, Opus |
| SRT | H265, H264, MPEG-4等 | AAC, MP3, Opus等 |
完整的协议和编解码支持列表可参考官方文档。
二、快速安装部署
2.1 环境要求
MediaMTX对系统资源要求较低,最低配置如下:
- CPU:双核处理器
- 内存:512MB RAM
- 存储:至少100MB可用空间
- 操作系统:Linux、Windows、macOS或树莓派系统
2.2 安装步骤
2.2.1 二进制安装(推荐)
-
从项目仓库下载对应系统的二进制文件(目前已预装在当前环境中)
-
启动服务器:
./mediamtx
2.2.2 Docker安装
如果需要使用Docker部署,可以执行以下命令:
docker run --rm -it --network=host bluenviron/mediamtx:latest
可用的Docker镜像类型:
| 镜像名称 | 包含FFmpeg | 支持树莓派摄像头 |
|---|---|---|
| bluenviron/mediamtx:latest | 否 | 否 |
| bluenviron/mediamtx:latest-ffmpeg | 是 | 否 |
| bluenviron/mediamtx:latest-rpi | 否 | 是 |
| bluenviron/mediamtx:latest-ffmpeg-rpi | 是 | 是 |
三、基础配置与启动
3.1 配置文件详解
MediaMTX的配置文件为mediamtx.yml,位于项目根目录。该文件采用YAML格式,主要包含以下配置块:
- Global settings:全局设置,如日志级别、认证方式等
- RTSP server:RTSP协议相关配置
- RTMP server:RTMP协议相关配置
- HLS server:HLS协议相关配置
- WebRTC server:WebRTC协议相关配置
- SRT server:SRT协议相关配置
- Path settings:媒体流路径相关配置
默认配置已足够应对大多数基础场景,无需修改即可直接使用。
3.2 启动服务器
在项目根目录执行以下命令启动服务器:
./mediamtx
成功启动后,将看到类似以下输出:
2023/10/01 12:00:00 INF MediaMTX v1.0.0
2023/10/01 12:00:00 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2023/10/01 12:00:00 INF [RTMP] listener opened on :1935
2023/10/01 12:00:00 INF [HLS] listener opened on :8888
2023/10/01 12:00:00 INF [WebRTC] listener opened on :8889 (HTTP)
2023/10/01 12:00:00 INF [SRT] listener opened on :8890
2023/10/01 12:00:00 INF [API] listener opened on :9997
2023/10/01 12:00:00 INF [Metrics] listener opened on :9998
2023/10/01 12:00:00 INF server is ready
这表明服务器已成功启动,各协议的监听端口已打开。
四、协议转换实战
4.1 RTSP转WebRTC示例
假设我们有一个RTSP摄像头,地址为rtsp://camera-ip:554/stream,现在需要将其转换为WebRTC流以便在浏览器中观看。
4.1.1 配置修改
编辑mediamtx.yml文件,添加以下内容:
paths:
camera:
source: rtsp://camera-ip:554/stream
sourceOnDemand: yes
这里:
camera是我们定义的流名称source指定了源RTSP流地址sourceOnDemand设为yes表示按需拉流,节省带宽
4.1.2 重启服务器
修改配置后,需要重启服务器使配置生效:
./mediamtx
4.1.3 在浏览器中观看
打开浏览器,访问以下地址:
http://localhost:8889/camera
MediaMTX提供了内置的WebRTC播放器页面,位于internal/servers/webrtc/read_index.html,通过上述地址即可直接观看转换后的WebRTC流。
4.2 OBS推流转多协议分发
下面介绍如何将OBS的RTMP推流转换为多种协议流进行分发。
4.2.1 配置OBS
- 打开OBS,进入"设置" -> "推流"
- 服务选择"自定义..."
- 服务器填写
rtmp://localhost/live - 串流密钥填写
mystream - 点击"确定"保存设置
4.2.2 开始推流
在OBS中点击"开始推流",此时OBS会将视频流推送到MediaMTX的RTMP端口。
4.2.3 多协议访问
MediaMTX会自动将RTMP流转换为其他协议,你可以通过以下地址访问:
- RTSP:
rtsp://localhost:8554/mystream - WebRTC:
http://localhost:8889/mystream - HLS:
http://localhost:8888/mystream.m3u8 - SRT:
srt://localhost:8890?streamid=read:mystream
五、高级功能
5.1 视频录制
MediaMTX支持将流录制到本地磁盘,支持fMP4和MPEG-TS两种格式。
5.1.1 配置录制功能
编辑mediamtx.yml,添加以下配置:
paths:
recorded_stream:
record: yes
recordPath: ./recordings/%path/%Y-%m-%d_%H-%M-%S
recordFormat: fmp4
recordSegmentDuration: 1h
recordDeleteAfter: 24h
配置说明:
record: yes:启用录制功能recordPath:录制文件保存路径,支持时间变量recordFormat:录制格式,可选fmp4或mpegtsrecordSegmentDuration:每个分段时长,这里设为1小时recordDeleteAfter:自动删除24小时前的录制文件
5.1.2 查看录制文件
录制的文件会保存在./recordings/recorded_stream/目录下,可通过播放页面http://localhost:9996/查看和下载录制文件,对应的源码实现位于internal/playback/server.go。
5.2 树莓派摄像头支持
MediaMTX对树莓派摄像头有原生支持,无需额外安装软件。
5.2.1 配置树莓派摄像头
编辑mediamtx.yml,添加以下配置:
paths:
rpi_cam:
source: rpiCamera
rpiCameraWidth: 1920
rpiCameraHeight: 1080
rpiCameraFPS: 30
这里配置了树莓派摄像头的分辨率为1080p,帧率为30fps。
5.2.2 启动服务
在树莓派上启动MediaMTX:
./mediamtx
现在可以通过http://raspberrypi-ip:8889/rpi_cam访问树莓派摄像头的WebRTC流了。
六、常见问题解决
6.1 WebRTC连接问题
WebRTC在某些网络环境下可能存在连接困难,可尝试以下解决方案:
- 配置ICE服务器:编辑mediamtx.yml,添加公共STUN服务器:
webrtcICEServers2:
- url: stun:stun.l.google.com:19302
- 指定服务器IP:如果服务器有公网IP,可在配置中指定:
webrtcAdditionalHosts: ["your-public-ip"]
- 检查防火墙:确保服务器的UDP端口8189未被防火墙阻止
6.2 视频卡顿或延迟过高
如果出现视频卡顿或延迟过高,可尝试以下优化:
- 调整HLS配置:降低HLS分段时长
hlsSegmentDuration: 1s
hlsPartDuration: 200ms
-
优化网络:确保服务器和客户端之间网络稳定,带宽充足
-
调整编解码参数:降低视频分辨率或比特率,减少网络负载
七、总结与进阶
通过本文的介绍,你已经掌握了MediaMTX的基本使用方法,能够快速搭建一个支持多协议转换的流媒体服务器。MediaMTX还有更多高级功能等待你探索:
- API控制:通过Control API实现程序化控制
- 钩子函数:利用Hooks实现事件触发
- 认证授权:配置认证功能保护流媒体资源
- 集群部署:实现负载均衡和高可用
更多详细内容可参考官方文档README.md和配置文件mediamtx.yml。现在,你已经拥有了一个功能强大的流媒体服务器,快去尝试构建自己的流媒体应用吧!
如果你觉得本文对你有帮助,请点赞、收藏并关注,后续将带来更多MediaMTX高级应用技巧。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
