MediaMTX 上手指南:5 分钟跑通八路协议的推流、拉流与录制 📅 发布时间:2026/9/8 20:18:02 👁 浏览次数: MediaMTX 上手指南5 分钟跑通八路协议的推流、拉流与录制【免费下载链接】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/mediamtxMediaMTX 是一个零依赖、单二进制运行的实时流媒体服务器启动后同时开放 SRT、RTSP、RTMP、WebRTC、LL-HLS 等 8 路协议的收发端口并自动完成协议间转换、录制与回放。适合想在几分钟内搭起一路流转接、监控分发或直播推流的开发者和运维。它适合哪些场景摄像机流多端分发RTSP 摄像头推上来后你用浏览器直接以 WebRTC 或 LL-HLS 方式观看协议转换由服务器在内部完成不需要自己写转接层。直播留档与点播回放开播同时把流写成 fMP4 或 MPEG-TS 分段回看时通过内置的 HTTP 回放服务按时间段取流可直接嵌进video标签。流源中断时保持画面在线开启alwaysAvailable后发布端掉线期间服务器循环播放一个离线片段观众端连接不断开发布端恢复后无缝切回。一路流分发到多个平台用forward条目把同一路流以 SRT、RTSP、WHIP 等方式转发给其它服务器或给 YouTube、Twitch 这类直播平台。最快上手路径不需要安装任何依赖用 Docker 一条命令拉起服务把常用端口映射出去docker run --rm -it \ -p 8554:8554 -p 1935:1935 \ -p 8888:8888 -p 8889:8889 \ -p 8189:8189/udp -p 8890:8890/udp \ bluenviron/mediamtx:1Windows、macOS 或想快速验证时从 Release 下载对应平台的单文件二进制执行./mediamtx效果相同。启动后立即推流——以 FFmpeg 把一个 MP4 循环作为 RTSP 源推入路径mystreamffmpeg -re -stream_loop -1 -i file.mp4 -c copy \ -f rtsp rtsp://localhost:8554/mystream再开一个终端拉流验证vlc --network-caching50 rtsp://localhost:8554/mystream此时路径mystream已同时在 8 个协议端口上可用用http://localhost:8888/mystream/playlist.m3u8这类地址就能以其它协议读取同一路流。完整的默认配置项都写在 mediamtx.yml 里每项都有注释也可以不用改文件用MTX_参数名形式的环境变量临时覆盖例如MTX_RTSPTRANSPORTStcp ./mediamtx。按任务拆解你能用它做什么推流与播放发布端可以是 FFmpeg、OBS、GStreamer、浏览器WebRTC/WHIP、Raspberry Pi 摄像头甚至直接拉另一路远程流当源。读流端同理VLC、FFmpeg、浏览器都行。关键参数是pathDefaults.source默认值publisher表示路径由客户端推流提供把它改成rtsp://myurl就变成服务器主动去拉。录制与回放在配置文件里给路径或全局默认值打开录制开关流会被按分段写到磁盘pathDefaults: record: yes recordFormat: fmp4 recordSegmentDuration: 1h recordDeleteAfter: 1d关键参数recordDeleteAfter控制过期自动清理设为0s则永久保留。回放服务通过playback: yes打开默认监听 9996 端口/list?pathmystream返回该路径所有可回看的时间段 JSON/get返回 fMP4 流可直接作为video的 src个别播放器不兼容时追加formatmp4输出标准 MP4。若想同步上云把 rclone 命令挂到runOnRecordSegmentComplete钩子即可。协议转换与压缩同一路流推入后所有协议端口天然互通这步零配置。若需要转码比如压到 600k 带宽用runOnReady钩子在路径上线时拉起一个 FFmpeg 进程把它编码后的结果再推回服务器的另一条路径runOnReadyRestart: yes保证崩溃后自动重启。转发与代理转发给路径加forward条目dest写目标地址即可如srt://host:port?streamid...或whip://host:port/...。代理把paths.mypath.source指向上游rtsp://地址本服务器就变成一个透明的多级中转节点。踩坑与调优WebRTC 握手卡住浏览器拿不到流原因ICE 协商时服务器没有告知客户端可被它访问的地址。解法把客户端能连到你的公网 IP 或内网地址填进webrtcAdditionalHosts并确保容器或 NAT 把 UDP 8189 转发到服务器若防火墙拦 UDP设置webrtcLocalTCPAddress: :8189改走 TCP 兜底。H265 或含 B 帧的 H264 推给 WebRTC 后浏览器播不了原因多数浏览器不支持 WebRTC 读 H265且 B 帧不在 WebRTC 规范内、被浏览器刻意排除。解法推流前用 FFmpeg 转成无 B 帧的 H264 baseline profile 加 Opus 音频-c:v libx264 -pix_fmt yuv420p、-c:a libopus再推入服务器。Docker 里 RTSP 的 UDP 传输报地址错误原因Docker 网络栈会改写入站 UDP 包的真实源地址导致 RTSP 会话校验失败。解法设MTX_RTSPTRANSPORTStcp只用 TCP 传输或给容器加--networkhost绕过网络栈。改动以上任何配置项后无需重启——服务器会热重载配置文件并在可能时不踢断现有连接。需要说明边界MediaMTX 本身只做流的接收、路由、录制不做转码压缩转码要靠钩子里的 FFmpeg 完成规模化扩展则是按路径分片跑多个实例。下一步建议打开 docs/ 查一遍完整配置项再给测试路径加上record: yes用 Control API默认 9997 端口确认流的状态。【免费下载链接】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),仅供参考