MediaMTX 从零到跑通:如何快速搭建 RTSP 实时流媒体服务器 MediaMTX 从零到跑通如何快速搭建 RTSP 实时流媒体服务器【免费下载链接】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当你需要把一路 RTSP 摄像头画面同时推给网页、手机和大屏还要留下可回放的录像时MediaMTX 就是该部署的流媒体服务器一路流进多协议出去再顺手录到磁盘单个二进制、零依赖。3 分钟跑起来两条命令完成发布 → 读取闭环。先发布一路流ffmpeg -re -stream_loop -1 -i file.mp4 -c copy -f rtsp rtsp://localhost:8554/mystream它做了什么把 file.mp4 按实时帧率循环读出来以 RTSP 协议推到 MediaMTX 的 8554 端口路径名定为 mystream。再读取这路流vlc --network-caching50 rtsp://localhost:8554/mystream它做了什么VLC 用 RTSP 拉同一个路径你能看到画面闭环完成。数据是怎么流的MediaMTX 把所有流按路径path组织一个发布者——或一个你配置的外部源——把流交给一个路径这个路径再把流广播给所有连上来的读取者并自动转成各自要的协议RTSP、RTMP、WebRTC、SRT、LL-HLS。如果开了录制记录器也会从同一路径取走一份按 fMP4 或 MPEG-TS 切片写盘。一句话源写入路径路径分发读取者记录器写磁盘。核心实现在 internal/core/ 的路径管理器里。两个最该改的配置把 source 指到外部服务器直接拉摄像头改哪里mediamtx.yml 的pathDefaults下把source从默认的 publisher 改成 URL如source: rtsp://user:pass192.168.1.100:554/stream1改完什么效果不再需要谁主动推流。只要有读取者连接MediaMTX 就主动去拉再用全部 6 种协议分发一条验证命令curl http://localhost:9997/v3/paths响应里出现这条路径即生效打开录制按 1 小时切片存 fMP4改哪里同样在pathDefaults下加四行pathDefaults: record: yes recordPath: ./recordings/%path/%Y-%m-%d_%H-%M-%S recordFormat: fmp4 recordSegmentDuration: 1h改完什么效果每路流自动写盘1 小时一个 fMP4 切片recordDeleteAfter: 1d默认值控制多久后自动清理一条验证命令ls ./recordings/看到新出现的切片文件即成功实战场景把录像自动同步到 S3需求一句话切片一落盘就传到对象存储本地只留最新的。最小配置把 rclone 塞进两个钩子pathDefaults: runOnInit: rclone sync -v ./recordings myconfig:/recordings runOnRecordSegmentComplete: rclone sync -v --min-age1ms ./recordings myconfig:/recordingsrunOnInit启动时补传崩溃后兜底runOnRecordSegmentComplete每个切片完成后触发一次。想上传后删本地把rclone sync换成rclone move。如何验证成功rclone lsd myconfig:/recordings能看到对应切片文件。RTSP 转 WebRTC 低延迟推流需求一句话浏览器直接看流不装播放器延迟压到 1 秒内。最小命令流推到 MediaMTX如rtsp://localhost:8554/mystream即可WebRTC 服务默认开启在 8889 端口浏览器直接打开http://你的服务器:8889/mystream。如何验证成功页面出画面且延迟明显低于 RTSP 读取通常 1s 对 3~5s。压码转码出一路小带宽流需求一句话原始流太大需要一路 600k 压缩版喂给公网端。最小配置paths: compressed: original: runOnReady: ffmpeg -i rtsp://localhost:8554/$MTX_PATH -c:v libx264 -pix_fmt yuv420p -preset ultrafast -b:v 600k -max_muxing_queue_size 1024 -f rtsp rtsp://localhost:8554/compressed runOnReadyRestart: yes如何验证成功向 original 推流后用 VLC 拉rtsp://localhost:8554/compressed码率应稳定在 600k 左右。踩坑速查RTSP 拉流时断时续→原因是 NAT/防火墙拦了 UDP而 MediaMTX 默认先试 UDP→修复配置里设rtspTransports: [tcp]或用环境变量MTX_RTSPTRANSPORTStcp浏览器里 WebRTC 连接失败→原因是 8889 与 8193(UDP) 端口没放行或跨 NAT 缺 STUN 服务器→修复放行 8889/8193 端口或配置webrtcIceServers掉电后录像尾巴缺 1 秒左右→原因是 fMP4 按 1 秒 part 写入recordPartDuration即恢复点目标RPO→修复属设计行为需更短丢失窗口就把recordPartDuration调小收尾MediaMTX 的定位是一台媒体路由器一个进程同时跑 Media-over-QUIC、SRT、WebRTC、RTSP、RTMP、LL-HLS、MPEG-TS、RTP 共 8 类协议覆盖读取、发布、代理、录制、回放。想深入完整参数说明见 docs/路径管理与录制逻辑的源码见 internal/core/。【免费下载链接】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),仅供参考