MediaMTX 快速上手:三行配置搞定 RTSP 转 WebRTC
2026/9/8 18:49:44 网站建设 项目流程

MediaMTX 快速上手:三行配置搞定 RTSP 转 WebRTC

【免费下载链接】mediamtxReady-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams.项目地址: https://gitcode.com/GitHub_Trending/me/mediamtx

MediaMTX 是一款多协议流媒体服务器:单个程序同时监听 RTSP、RTMP、WebRTC、HLS、SRT 五种协议,任何一路协议推进来的媒体,都能从另一种协议读出去。如果你的需求是把安防摄像头画面搬进浏览器、让 OBS 的一路推流变成多端可播,或者要把直播流留下来存盘,这个工具都能覆盖。你可以把它理解成一台媒体路由器:流从一侧进来,换几种格式从另一侧出去,中间不用额外写转码程序。下面用一路真实流串起完整流程:部署、接入、多端观看、录制,最后扫一遍常见坑。

先对场景:MediaMTX 适合解决哪些需求

动手写配置前,先对照一下你的需求长不长这样:

  • 安防取流:摄像头只会推 RTSP(摄像头最常用的实时流协议),而你要在浏览器里看;把源地址填进服务器,网页端直接打开画面。
  • 推流分发:OBS 推一路 RTMP(网络直播最常用的推流协议),服务器同时给出 WebRTC(浏览器原生支持的低延迟协议)、HLS(基于 HTTP 分片的点播式协议)、RTSP 三个出口。
  • 低延迟观看:WebRTC 播放延迟通常在一秒内,比传统分片方案体验好得多;HLS 也有 LL(低延迟)模式可用。
  • 录像与回放:流可以按 fMP4 / MPEG-TS(广播传输常用容器)分段存盘,按保留期自动清理。

确认需求对得上,下一步先把服务跑起来。

两条命令跑起 MediaMTX

硬件门槛不高:双核 CPU、512MB 内存就够用。安装分两条路径,任选其一:

二进制安装

./mediamtx

拿到对应系统的发布包后直接执行单一可执行文件,同目录的mediamtx.yml即配置文件,全部默认值即可用。

Docker 安装

docker run --rm -it --network=host bluenviron/mediamtx:latest

需要调用 FFmpeg 等外部工具时,换成latest-ffmpeg镜像变体即可。

终端里看到server is ready,说明启动完成。服务起来了,接下来接入第一路真实的流。

接一路 RTSP 摄像头,在浏览器里看它

MediaMTX 的核心概念是路径(path):每条路径代表一路流,路径名就是读取它的钥匙。以把摄像头转成网页流为例,在 mediamtx.yml 的paths块下加三行:

paths: camera: source: rtsp://user:pass@192.168.1.100:554/stream sourceOnDemand: yes

sourceOnDemand: yes表示有人观看才向摄像头拉流,最后一个人离开 10 秒后断开,省带宽。其余配置项保持默认即可。

保存后重启./mediamtx,再按下表验证,WebRTC 那行能出画面就算整条链路通了:

协议地址说明
WebRTChttp://localhost:8889/camera内置网页播放页,浏览器直接打开
RTSPrtsp://localhost:8554/cameraVLC、FFmpeg 等播放器可打开
HLShttp://localhost:8888/camera/index.m3u8分片播放,兼容性最好
SRTsrt://localhost:8890?streamid=read:camera基于 UDP 的传输协议,弱网更抗造

能看了之后,紧接着要考虑的就是把流留下来。

把流变成录像文件:四行配置加自动清理

录像功能很直白,在对应路径下追加四行:

record: yes recordPath: ./recordings/%path/%Y-%m-%d_%H-%M-%S recordFormat: fmp4 recordDeleteAfter: 7d

recordPath里的%path和日期变量会让文件按“流名 + 日期”自动归档成目录;recordDeleteAfter: 7d表示分段完成 7 天后自动删除,不用手写清理脚本。若希望在线回看,把playback: true打开,访问http://localhost:9996/,该服务源码在 internal/playback/。

观看和留存都齐了,最后熟悉几个大概率会踩的坑。

卡住了先查这五个坑

  • WebRTC 页面转圈连不上→ 多半是防火墙拦了 MediaMTX 的 WebRTC 数据通道 UDP 8189,放行该端口;客户端与服务器不同网段时,再在webrtcICEServers2加一个公网 STUN。
  • RTSP 源拉流超时→ 摄像头要求鉴权或 UDP 被阻断;在source地址上补上账号密码,或用rtspTransport: tcp强制走 TCP。
  • OBS 在直播但浏览器 404→ 路径名没对上:推流密钥写的是mystream,观看地址里也必须用mystream
  • HLS 播放感觉延迟高→ 确认没有覆盖默认的低延迟参数,hlsSegmentDuration: 1shlsPartDuration: 200ms保持原样。
  • 录像目录是空的→ 该路径还没有活跃流:录制只在流被发布或拉取时进行;也检查配置是否写错层级被pathDefaults覆盖。
  • 端口被占用→ 所有监听端口在mediamtx.yml中都能单独改,如rtspAddressrtmpAddress,改一行重启即可。

环境顺了之后,就可以给服务器加程序化控制和权限了。

进阶方向:四扇门各一句话

到这里,一台可用的多协议流媒体服务器已经搭完:一个配置文件搞定转协议、多端观看和录像。

  • Control API:把api: true打开,用 HTTP 查询路径状态、上下线信息,细节见 docs/5-references/2-control-api.md。
  • 事件钩子:流上线、读写者变化、分段完成等事件都能触发 shell 命令,参考 internal/hooks/。
  • 认证:通过authInternalUsers给用户分配推流 / 读取权限,控制哪些路径对外开放。
  • 多实例与分发:结合forward转发和代理能力做多实例分发,架构思路见文档中的架构一章。

【免费下载链接】mediamtxReady-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams.项目地址: https://gitcode.com/GitHub_Trending/me/mediamtx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询