MediaMTX开源实时媒体服务器

介绍

MediaMTX(旧名 rtsp‑simple‑server),Go语言开发、零依赖单二进制文件的开源实时媒体服务器/媒体代理,定位为媒体路由器:接收一路推流,自动转换成多种协议对外分发,默认不做转码,只做协议封装转换。

GitHub:https://github.com/bluenviron/mediamtx
官网:https://mediamtx.org

应用场景

  1. 安防监控Web可视化:IPC(RTSP)接入,浏览器WebRTC低延迟预览,不用安装插件。
  2. 边缘流媒体网关:树莓派/边缘盒子部署,本地处理摄像头,再SRT回传到云端。
  3. 直播协议网关:OBS RTMP推流,同时提供WebRTC网页播放、SRT远距离传输。
  4. 小型NVR录像:内置录制,做简易录像存储。
  5. 测试调试各种流媒体设备,做协议转换工具。

一、核心定位

  • 不是转码服务器,只做协议封装、路由转发、录制;原始编码(H264/H265/AAC等)不变,CPU开销极低。
  • 输入一路流,可同时输出 RTSP / RTMP / WebRTC / SRT / HLS / MPEG‑TS,实现一次推流,多协议分发。
  • 跨平台:Linux、Windows、macOS、ARM(树莓派、嵌入式、OpenWrt),直接运行二进制,无需安装依赖。

二、支持协议

协议 默认端口 说明
RTSP 8554 安防IPC摄像头最常用,支持rtsp‑over‑tcp
RTMP 1935 OBS推流,直播传统协议
WebRTC(WHIP/WHEP) 8889 浏览器无插件低延迟播放,延迟~100‑500ms
SRT 8890 公网弱网可靠传输,远距离回传
HLS / LL‑HLS 8888 网页播放,LL‑HLS降低延迟
MPEG‑TS ‑ UDP/TSP TS流
Media‑over‑QUIC ‑ QUIC新型流媒体协议

编解码支持

H264、H265、VP8/VP9、AV1;AAC、Opus、G711、MP3等;不支持编码格式转换,格式不一致会拒绝流。

三、核心功能

1. 协议自动转换

IPC RTSP摄像头接入,浏览器直接WebRTC播放,无需ffmpeg中转。
摄像头RTSP → MediaMTX → RTSP / WebRTC / HLS / SRT 多客户端同时拉流

2. 流路径 Path 管理

  • 动态路径:任意客户端可以发布 rtsp://ip:8554/mystream,路径自动创建;无人访问自动销毁。
  • 静态路径:配置文件预定义路径,支持按需拉流(source: rtsp://camera):没人看时不连接摄像头,第一个播放者到来才去拉摄像头流,节省带宽。
  • 代理转发:把流转发到另一台MediaMTX或其他流媒体服务器。

3. 内置录制回放

  • 录制为 .ts / .mp4,支持按时间/文件大小自动切片。
  • 文件命名模板,支持日期变量;可配置自动删除过期录像。
  • 支持回放已录制片段(HLS点播)。

4. 鉴权与安全

  • 用户名密码鉴权、IP白名单;区分发布、读取、API权限。
  • RTSP/RTMP/WebRTC/SRT都支持鉴权;支持TLS加密。

5. API与可观测性

  • REST Control API:查询流列表、启停流、动态修改配置。
  • Prometheus指标 /metrics,健康检查 /healthz。
  • pprof性能剖析、分级日志,日志输出stdout或文件。
  • Hook钩子:发布/读取/断开连接时执行外部shell命令,便于告警、联动业务系统。

6. 热重载配置

修改mediamtx.yml,发送SIGHUP信号即可重载,不用重启服务,流不会断开。

7. 集群扩容

原点节点接收推流,多个只读副本对外提供播放,配合负载均衡,支撑大量播放客户端。

四、架构简要

  1. 路径管理器 PathManager:核心,管理所有流path,管理发布者(publisher)、读取者(reader),权限校验,流生命周期管理。
  2. 多协议服务模块:RTSP/RTMP/WebRTC/SRT等模块独立监听端口,接收客户端,把流送入内部统一媒体包。
  3. 媒体路由层:不解码,直接转发原始NALU/音频帧,分发到各个协议输出模块。
  4. 录制、API、metrics、hooks 附属模块。

⚠️重要:没有内置转码。如果源是H265,HLS客户端只支持H264,此时会失败,需要外挂ffmpeg做转码。

优缺点

✅优点

  • 单文件、零依赖,部署极其简单;资源占用低,适合嵌入式。
  • 协议齐全,协议转换能力强。
  • 完善API、监控、钩子,适合二次开发集成。
  • 开源MIT协议,商业可用。

❌缺点

  • 无内置转码,编码不兼容时必须外挂ffmpeg。
  • HLS为分片协议,延迟相对WebRTC高;LL‑HLS可以改善。
  • WebRTC公网部署需要STUN/TURN服务器解决NAT穿透。

原文出处:/show_1GW3rAsNd80P.html