MediaMTX开源实时媒体服务器 作者:马育民 • 2026-08-13 23:00 • 阅读:10001 # 介绍 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