MediaMTX 实时流媒体服务器实战指南:一个可执行文件搞定推流、拉流与录制
2026/9/8 23:50:55 网站建设 项目流程

MediaMTX 实时流媒体服务器实战指南:一个可执行文件搞定推流、拉流与录制

【免费下载链接】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 是一个零依赖的实时媒体服务器,也是媒体代理:客户端把音视频流转进来,它负责存储、转换、转发、录制和回放。整个服务编译为单个 Go 可执行文件,不需要数据库、不需要运行时环境,覆盖 RTSP、RTMP、WebRTC、SRT、LL-HLS、MPEG-TS、RTP 和 Media-over-QUIC(MoQ)等主流协议。核心价值在于"一进多出":同一路流可以用任意协议推入,再让其他协议同时读取,比如用 RTSP 推入、用 HLS 在浏览器里播放。

谁适合用它

  • 需要把摄像头或推流端统一收进来、再分发给多类客户端的工程师
  • 要搭建轻量直播/监控中台、不想维护一堆中间件的开发者
  • 需要录制、回放历史视频流,或把流转发到其他平台的运维人员

核心能力速览

能力说明
多协议接入RTSP / RTMP / WebRTC / SRT / MoQ / HLS / MPEG-TS / RTP 互相转换
一路流多路消费按路径(path)管理流,每个路径可同时被多个客户端读取
录制与回放落盘为 fMP4 或 MPEG-TS 分段,回放服务可按时间轴下载
按需拉流通过source反向拉取外部 RTSP/RTMP/HLS 等源
热更新配置修改 mediamtx.yml 后不中断已有客户端
控制面Control API、Prometheus 指标、hooks 外部命令回调

各协议实现位于 internal/servers/,想深入某个协议可以按目录找。

安装前检查

  • 系统:Linux、Windows、macOS 均可;单文件部署,无运行时依赖。
  • 端口:确认以下端口未被占用,RTSP 8554、RTMP 1935、HLS 8888、WebRTC 8889(TCP)与 8189(UDP)、SRT 8890(UDP)、MoQ 8892/8893(UDP)。
  • 网络:若客户端跨 NAT 或跨网段访问 WebRTC,需要服务器有一个可达的 IP,后面会讲怎么配置。

最短安装路径

生产环境推荐 Docker,隔离且版本可控。以下命令映射了全部常用端口,适合 Linux 服务器:

docker run --rm -it \ -p 8554:8554 \ -p 1935:1935 \ -p 8888:8888 \ -p 8889:8889 \ -p 8892:8892 \ -p 8890:8890/udp \ -p 8189:8189/udp \ -p 8892:8892/udp \ -p 8893:8893/udp \ bluenviron/mediamtx:1

如果端口映射太繁琐,也可以直接用主机网络(Linux 上可用):

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

不用 Docker 时,从项目 Releases 页下载对应系统的独立二进制,解压后直接运行即可:

./mediamtx

启动后若看到类似level=INFO msg="RTSP server listening on :8554"的日志,说明服务已就绪。

最小可运行配置

首次启动时程序会在当前目录生成默认配置文件 mediamtx.yml。绝大多数场景只需动两个地方,下面是最小示例:

logLevel: info # 日志级别:error / warn / info / debug paths: # 流按路径管理,路径名就是 URL 的最后一段 mystream: source: publisher # 由推流端(RTSP/RTMP 等客户端)提供

逐行说明:

  • logLevel: info控制日志详细度,排障时临时改成debug
  • paths.mystream声明一条流。推流地址即rtsp://服务器IP:8554/mystream,路径名与配置键一致。
  • source: publisher表示等别人推给你。若改成source: rtsp://192.168.1.50:554/cam,服务器就会反向从该摄像头拉流,你无需自己写推流程序。
  • 默认认证策略允许匿名用户发布和读取(仅限内网测试合适),对外部署前建议先在authInternalUsers里收紧权限。

启动与验证:3 条命令跑通

目的:推一路流进去,再从另一协议读出来,确认转码链路正常。

推流——用 FFmpeg 把一个 MP4 循环推入 RTSP 端口:

ffmpeg -re -stream_loop -1 -i file.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream

拉流——另开终端,用 VLC 播放同一 RTSP 地址:

vlc rtsp://localhost:8554/mystream

换协议验证——浏览器直接打开http://localhost:8888/mystream,页面会内嵌 HLS 播放器。能看到画面即代表 RTSP 进、HLS 出整条链路打通。

常见问题

1. Docker 里 RTSP 的 UDP 传输失败?容器网络栈会重写 UDP 源地址,导致 RTP 包回不来。两种解法:改用主机网络(--network=host),或设置环境变量-e MTX_RTSPTRANSPORTS=tcp让 RTSP 只走 TCP。

2. WebRTC 客户端连不上服务器?WebRTC 客户端需要知道服务器的可达地址。在容器里通过-e MTX_WEBRTCADDITIONALHOSTS=<服务器IP>注入;内网和公网 IP 不同时应把两个都配进去。

3. 端口被占用或想换端口?修改 mediamtx.yml 中对应监听项,例如rtspAddress: :8554改成:9054,保存后配置热加载生效,已有连接不会断开。完整端口清单和含义以官方文档 docs/5-references/1-configuration-file.md 为准。

下一步

  • 快速上手与安装细节:docs/1-kickoff/
  • 录制、回放、转发、认证等特性说明:docs/2-features/
  • 用 FFmpeg / GStreamer / OBS 推流的具体示例:docs/3-publish/
  • 各协议客户端读取方式:docs/4-read/

把 mediamtx.yml 通读一遍是最快的进阶方式,每个配置项都有中文注释级别的详细说明。

【免费下载链接】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),仅供参考

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

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

立即咨询