首页
/ MediaMTX极速上手指南:3分钟搭建跨协议流媒体服务器

MediaMTX极速上手指南:3分钟搭建跨协议流媒体服务器

2026-02-05 04:14:41作者:明树来

你还在为多协议流媒体服务配置复杂而烦恼?还在为直播推流、转码、分发的高延迟发愁?本文将带你3分钟从零搭建一个支持RTSP、RTMP、WebRTC、HLS等多协议的流媒体服务器,让你轻松应对安防监控、直播推流、视频会议等多种场景。读完本文,你将掌握MediaMTX的安装部署、基础配置、协议转换和录制存储等核心技能,从此告别繁琐的配置流程。

项目logo

一、MediaMTX简介

MediaMTX(原rtsp-simple-server)是一款零依赖、高性能的实时媒体服务器,支持多种音视频协议的发布、读取、代理和录制。它就像一个"媒体路由器",能够将来自不同协议的媒体流无缝转换并分发给各种客户端,解决了不同设备和平台间的协议兼容性问题。

1.1 核心功能

  • 多协议支持:支持RTSP、RTMP、WebRTC、HLS、SRT等多种协议的输入输出
  • 自动协议转换:无需额外配置,自动实现不同协议间的转换
  • 低延迟传输:优化的流媒体传输机制,最低延迟可达几百毫秒
  • 灵活的录制功能:支持fMP4和MPEG-TS格式的分段录制
  • 跨平台兼容:可在Linux、Windows、macOS和树莓派等多种设备上运行

1.2 支持的协议与编解码

MediaMTX支持丰富的协议和编解码格式,以下是主要支持的协议及其编解码能力:

协议 视频编解码 音频编解码
RTSP H265, H264, VP9, VP8, AV1等 AAC, MP3, Opus, G711等
RTMP H264 AAC, MP3
WebRTC H264, VP9, VP8, AV1 Opus, G711, G722
HLS H265, H264, VP9, AV1 AAC, Opus
SRT H265, H264, MPEG-4等 AAC, MP3, Opus等

完整的协议和编解码支持列表可参考官方文档

二、快速安装部署

2.1 环境要求

MediaMTX对系统资源要求较低,最低配置如下:

  • CPU:双核处理器
  • 内存:512MB RAM
  • 存储:至少100MB可用空间
  • 操作系统:Linux、Windows、macOS或树莓派系统

2.2 安装步骤

2.2.1 二进制安装(推荐)

  1. 从项目仓库下载对应系统的二进制文件(目前已预装在当前环境中)

  2. 启动服务器:

./mediamtx

2.2.2 Docker安装

如果需要使用Docker部署,可以执行以下命令:

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

可用的Docker镜像类型:

镜像名称 包含FFmpeg 支持树莓派摄像头
bluenviron/mediamtx:latest
bluenviron/mediamtx:latest-ffmpeg
bluenviron/mediamtx:latest-rpi
bluenviron/mediamtx:latest-ffmpeg-rpi

三、基础配置与启动

3.1 配置文件详解

MediaMTX的配置文件为mediamtx.yml,位于项目根目录。该文件采用YAML格式,主要包含以下配置块:

  • Global settings:全局设置,如日志级别、认证方式等
  • RTSP server:RTSP协议相关配置
  • RTMP server:RTMP协议相关配置
  • HLS server:HLS协议相关配置
  • WebRTC server:WebRTC协议相关配置
  • SRT server:SRT协议相关配置
  • Path settings:媒体流路径相关配置

默认配置已足够应对大多数基础场景,无需修改即可直接使用。

3.2 启动服务器

在项目根目录执行以下命令启动服务器:

./mediamtx

成功启动后,将看到类似以下输出:

2023/10/01 12:00:00 INF MediaMTX v1.0.0
2023/10/01 12:00:00 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2023/10/01 12:00:00 INF [RTMP] listener opened on :1935
2023/10/01 12:00:00 INF [HLS] listener opened on :8888
2023/10/01 12:00:00 INF [WebRTC] listener opened on :8889 (HTTP)
2023/10/01 12:00:00 INF [SRT] listener opened on :8890
2023/10/01 12:00:00 INF [API] listener opened on :9997
2023/10/01 12:00:00 INF [Metrics] listener opened on :9998
2023/10/01 12:00:00 INF server is ready

这表明服务器已成功启动,各协议的监听端口已打开。

四、协议转换实战

4.1 RTSP转WebRTC示例

假设我们有一个RTSP摄像头,地址为rtsp://camera-ip:554/stream,现在需要将其转换为WebRTC流以便在浏览器中观看。

4.1.1 配置修改

编辑mediamtx.yml文件,添加以下内容:

paths:
  camera:
    source: rtsp://camera-ip:554/stream
    sourceOnDemand: yes

这里:

  • camera是我们定义的流名称
  • source指定了源RTSP流地址
  • sourceOnDemand设为yes表示按需拉流,节省带宽

4.1.2 重启服务器

修改配置后,需要重启服务器使配置生效:

./mediamtx

4.1.3 在浏览器中观看

打开浏览器,访问以下地址:

http://localhost:8889/camera

MediaMTX提供了内置的WebRTC播放器页面,位于internal/servers/webrtc/read_index.html,通过上述地址即可直接观看转换后的WebRTC流。

4.2 OBS推流转多协议分发

下面介绍如何将OBS的RTMP推流转换为多种协议流进行分发。

4.2.1 配置OBS

  1. 打开OBS,进入"设置" -> "推流"
  2. 服务选择"自定义..."
  3. 服务器填写rtmp://localhost/live
  4. 串流密钥填写mystream
  5. 点击"确定"保存设置

4.2.2 开始推流

在OBS中点击"开始推流",此时OBS会将视频流推送到MediaMTX的RTMP端口。

4.2.3 多协议访问

MediaMTX会自动将RTMP流转换为其他协议,你可以通过以下地址访问:

  • RTSP: rtsp://localhost:8554/mystream
  • WebRTC: http://localhost:8889/mystream
  • HLS: http://localhost:8888/mystream.m3u8
  • SRT: srt://localhost:8890?streamid=read:mystream

五、高级功能

5.1 视频录制

MediaMTX支持将流录制到本地磁盘,支持fMP4和MPEG-TS两种格式。

5.1.1 配置录制功能

编辑mediamtx.yml,添加以下配置:

paths:
  recorded_stream:
    record: yes
    recordPath: ./recordings/%path/%Y-%m-%d_%H-%M-%S
    recordFormat: fmp4
    recordSegmentDuration: 1h
    recordDeleteAfter: 24h

配置说明:

  • record: yes:启用录制功能
  • recordPath:录制文件保存路径,支持时间变量
  • recordFormat:录制格式,可选fmp4或mpegts
  • recordSegmentDuration:每个分段时长,这里设为1小时
  • recordDeleteAfter:自动删除24小时前的录制文件

5.1.2 查看录制文件

录制的文件会保存在./recordings/recorded_stream/目录下,可通过播放页面http://localhost:9996/查看和下载录制文件,对应的源码实现位于internal/playback/server.go

5.2 树莓派摄像头支持

MediaMTX对树莓派摄像头有原生支持,无需额外安装软件。

5.2.1 配置树莓派摄像头

编辑mediamtx.yml,添加以下配置:

paths:
  rpi_cam:
    source: rpiCamera
    rpiCameraWidth: 1920
    rpiCameraHeight: 1080
    rpiCameraFPS: 30

这里配置了树莓派摄像头的分辨率为1080p,帧率为30fps。

5.2.2 启动服务

在树莓派上启动MediaMTX:

./mediamtx

现在可以通过http://raspberrypi-ip:8889/rpi_cam访问树莓派摄像头的WebRTC流了。

六、常见问题解决

6.1 WebRTC连接问题

WebRTC在某些网络环境下可能存在连接困难,可尝试以下解决方案:

  1. 配置ICE服务器:编辑mediamtx.yml,添加公共STUN服务器:
webrtcICEServers2:
  - url: stun:stun.l.google.com:19302
  1. 指定服务器IP:如果服务器有公网IP,可在配置中指定:
webrtcAdditionalHosts: ["your-public-ip"]
  1. 检查防火墙:确保服务器的UDP端口8189未被防火墙阻止

6.2 视频卡顿或延迟过高

如果出现视频卡顿或延迟过高,可尝试以下优化:

  1. 调整HLS配置:降低HLS分段时长
hlsSegmentDuration: 1s
hlsPartDuration: 200ms
  1. 优化网络:确保服务器和客户端之间网络稳定,带宽充足

  2. 调整编解码参数:降低视频分辨率或比特率,减少网络负载

七、总结与进阶

通过本文的介绍,你已经掌握了MediaMTX的基本使用方法,能够快速搭建一个支持多协议转换的流媒体服务器。MediaMTX还有更多高级功能等待你探索:

  • API控制:通过Control API实现程序化控制
  • 钩子函数:利用Hooks实现事件触发
  • 认证授权:配置认证功能保护流媒体资源
  • 集群部署:实现负载均衡和高可用

更多详细内容可参考官方文档README.md和配置文件mediamtx.yml。现在,你已经拥有了一个功能强大的流媒体服务器,快去尝试构建自己的流媒体应用吧!

如果你觉得本文对你有帮助,请点赞、收藏并关注,后续将带来更多MediaMTX高级应用技巧。

登录后查看全文
热门项目推荐
相关项目推荐