MediaMTX 快速上手:完整安装与配置指南,一条命令跑通多协议直播流
2026/9/8 20:15:33 网站建设 项目流程

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 是一个零依赖、单可执行文件的直播媒体服务器:它能发布、读取、代理、录制和回放音视频流,内置支持 RTSP、RTMP、SRT、WebRTC、LL-HLS、MPEG-TS、RTP 和 MoQ(Media-over-QUIC)等主流协议,流进来后会自动转换成其它协议对外提供。你可以把它理解成一台"媒体路由器":摄像头或推流端从一边接入,播放器、录制系统从另一边取出,适合直播分发、安防监控、视频中转等场景。

开始之前:先花 30 秒自检环境

不用装数据库、不用装运行时,MediaMTX 本身就是单个可执行文件,准备工作非常轻:

检查项说明
操作系统Linux、Windows、macOS 均可(Docker 方式需要 Linux 或 Docker Desktop)
硬件普通服务器或 NAS 级别即可,瓶颈通常在网络而非 CPU
端口本地跑通至少需要 8554(RTSP)、1935(RTMP)、8888(HLS)、8889(WebRTC)、8890/8189(SRT)、8892/8893(MoQ),完整清单见 docs/2-features/05-configuration.md
网络RTSP 的媒体传输默认走 UDP;在 Docker 或 NAT 后建议改用 TCP 传输,或整体改用--network=host方式,避免媒体包"握手成功、画面不出"

到这里你已经确认了环境没有硬伤,可以进入安装。

挑一种方式把服务装好 🚀

选型一句话:想要隔离好、可复现 → Docker;想要一个文件长期自管 → 官方发布包;想改代码、跑最新功能 → 源码构建。

方式适合谁特点
Docker 镜像生产/长期运行环境隔离,官方推荐的生产方式
官方发布包Windows/macOS/普通服务器单可执行文件 + 配置文件,零依赖
源码构建开发者需要 Go 环境,跑 main 分支

用 Docker 一条命令装好并映射端口

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

看到滚动日志即代表服务已在容器里运行。镜像有四种变体:1(基础)、1-ffmpeg(内置 FFmpeg)、1-rpi(树莓派摄像头)、1-ffmpeg-rpi(两者都含)。注意:若外部设备要通过 WebRTC 连接,还要用环境变量MTX_WEBRTCADDITIONALHOSTS告诉它你对外暴露的 IP。你现在已经拥有一个正在监听多个端口、随时可收流的媒体服务器。

下载官方发布包:单文件跑起来

  1. 到官方 Releases 页面,下载与你系统匹配的压缩包(例如mediamtx_linux_amd64.tar.gz),解压后得到mediamtx可执行文件和mediamtx.yml配置文件。
  2. 在解压目录里直接启动:
./mediamtx

Windows 上双击mediamtx.exe效果相同。执行完这一步,服务已用内置默认配置在本地跑起来,你现在已经完成了最简安装。

源码构建:Go 开发者专属

git clone https://gitcode.com/GitHub_Trending/me/mediamtx cd mediamtx go run .

需要本地装有 Go 工具链。命令开始输出监听日志后,你跑的已经是最新开发版了。

写最小配置:只改 2 处就够用 🔧

配置文件mediamtx.yml每个字段都有中文级注释,默认值几乎可以直接生产使用。这里只改两处。第一处:把api: false改成api: true,开启 Control API(一个默认监听 9997 端口的 HTTP 接口,用它验证服务状态最方便)。第二处:在文件末尾的paths:段注册一条流路径,camtest是路径名,之后任何推流端往这个路径推流都会生效:

paths: camtest:

保存文件即可——MediaMTX 支持热加载,改动会被立即检测到并应用,不会断开已有客户端,你现在已经完成了最小配置。

启动并 5 秒确认服务正常工作

启动方式与安装方式一致:二进制为./mediamtx,Docker 直接看容器日志。启动成功的标志是每个协议各一条监听日志,例如:

RTSP: listening on :8554 RTMP: listening on :1935 HLS: listening on :8888 WebRTC: listening on :8889 SRT: listening on :8890

接着做两件事,整个链路就验证完了。第一件事,用 FFmpeg 往camtest推一路测试图案流(testsrc是 FFmpeg 内置的测试信号源,画面是移动的彩色方块和计数秒表):

ffmpeg -re -f lavfi -i testsrc -f lavfi -i sine \ -c:v libx264 -preset ultrafast -c:a aac \ -f rtsp rtsp://127.0.0.1:8554/camtest

第二件事,另开终端探测这条流:

ffprobe rtsp://127.0.0.1:8554/camtest
  • ffprobe列出 H.264/AAC 轨道 → 推流、转发全链路打通,验证成功。
  • ffprobe提示 "not connected" 或超时 → 只是还没有人在推这条路径,属正常现象,先确认 ffmpeg 那条命令还活着。
  • curl 127.0.0.1:9997返回api: not enabled→ 你漏改了api: true;连接被拒绝 → 服务没在运行。
常见现象原因处理
bind: address already in use端口被别的程序占用mediamtx.yml里改对应*Address后保存,热加载生效
ffmpeg 报 Connection refused服务未启动或防火墙拦了 8554先确认监听日志,再放行端口
浏览器/WebRTC 连不上,本地 RTSP 正常服务端不知道自己的公网 IPwebrtcAdditionalHosts,Docker 用-e MTX_WEBRTCADDITIONALHOSTS=你的IP
RTSP 在 Docker 里无画面UDP 媒体包被容器网络改写-e MTX_RTSPTRANSPORTS=tcp,或改用--network=host

排错到这一步,你已经能独立完成日常运维了。

快速回顾 ✅

  • 准备:单可执行文件、零依赖,确认系统支持和端口空闲。
  • 安装:Docker 一条docker run映射端口,或下载官方发布包直接./mediamtx
  • 配置mediamtx.yml改两处——api: true+ 在paths:下注册路径,保存即热加载。
  • 启动:看到各协议 listening 日志即代表启动成功。
  • 验证:ffmpeg 推testsrc测试流 +ffprobe回读,5 秒闭环。

下一步:深入配置参考 docs/5-references/1-configuration-file.md、Control API 手册 docs/5-references/2-control-api.md;常见扩展方向是开启record录制到磁盘、用source把上游流代理进来、以及给路径加鉴权。

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

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

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

立即咨询