拓冰建站拓冰建站
首页 / 资讯中心 / 正文

5 步搞定 MediaMTX:零配置搭建多协议流媒体服务器,让摄像头同时喂饱 RTSP、WebRTC 和 HLS

5 步搞定 MediaMTX零配置搭建多协议流媒体服务器让摄像头同时喂饱 RTSP、WebRTC 和 HLS【免费下载链接】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、WebRTC、HLS、SRT 互相转换。你大概也遇过这种尴尬摄像头只吐 RTSP网页却只能看 WebRTC每个协议都得单独搭一套服务。读完这篇你可以独立完成下面三件事在 Linux / Windows / macOS / Docker 上把服务跑起来看懂mediamtx.yml的 paths 路由表新增一条摄像头流完成录制成文件和画面更稳两个进阶动作先跑起来从下载到第一条流出现MediaMTX 是单文件、零依赖的可执行程序不挑环境双核 CPU、512MB 内存、100MB 磁盘就够用。你可以把它想成一个只认协议、不挑设备的转接柜摄像头、OBS、浏览器、监控台谁都能往上接它只负责把信号转到另一头。拿一个对应系统的可执行文件Linux 叫mediamtxWindows 叫mediamtx.exe在工作目录直接启动./mediamtx启动成功的判断标志有两个。第一终端里会按协议逐行打印监听信息看到这几行就说明各端口都活了INF [RTSP] listener opened on :8554 (TCP) INF [RTMP] listener opened on :1935 INF [HLS] listener opened on :8888 (HTTP) INF [WebRTC] listener opened on :8889 (HTTP) INF [SRT] listener opened on :8890 (UDP)第二做一个人肉验收浏览器打开http://localhost:8889/mystream能看到 MediaMTX 自带的 WebRTC 播放器页面没推流时是一片黑屏就说明服务活着不用再去翻日志猜。四种装法各适合谁一张表说清安装方式适合人群启动命令Linux 二进制想直接跑、不想装 Docker./mediamtxWindows本地尝鲜、Windows 桌面.\mediamtx.exemacOSMac 本地尝鲜./mediamtxDocker生产、要隔离与确定性docker run --rm -it --networkhost bluenviron/mediamtx:1看懂它的流清单mediamtx.yml 到底在改什么配置文件mediamtx.yml就像一张流清单paths下面每一个 key 就是一条流的名字名字后面跟着的选项决定这条流从哪来、存不存、什么时候拉。常用四列配置项管什么白话paths下的 key一条流的名称mystream就是一个流名source从哪拉摄像头 RTSP 地址或publisher等人来推record要不要存盘yes就开录sourceOnDemand有没有人看才拉yes省带宽没人看就不断开好消息是默认配置已经能用你不用一上来就改一片。而且 MediaMTX 支持热重载——改完保存服务器会自己检测到变化并生效通常不会踢掉在线客户端当然你重启也行。想加一条摄像头流就是在paths下挂一个新 key最小配置长这样paths: mystream: source: rtsp://user:passcamera-ip:554/stream sourceOnDemand: yes三个高频场景一次配明白场景 ARTSP 摄像头转 WebRTC 的浏览器观看配置摄像头只吐 RTSP你想在浏览器里低延迟看就把 RTSP 转成 WebRTC。在paths下加一条paths: camera: source: rtsp://user:passcamera-ip:554/stream验证地址浏览器打开http://localhost:8889/camera画面出来即成。场景 BOBS 推流一转多协议分发OBS 只负责推一路 RTMP剩下的一转多交给 MediaMTX 自动完成。在 OBS 推流设置里服务器填rtmp://localhost:1935串流密钥填mystreampaths不用额外写默认source: publisher就会接住推来的流。之后同一画面可以这样多端取RTSPrtsp://localhost:8554/mystreamHLShttp://localhost:8888/mystream.m3u8SRTsrt://localhost:8890?streamidread:mystream场景 C树莓派原生摄像头 rpiCamera 零依赖接入树莓派摄像头不用装任何软件MediaMTX 直接读前提是用了带摄像头支持的镜像或构建。加一条paths: rpicam: source: rpiCamera rpiCameraWidth: 1920 rpiCameraHeight: 1080 rpiCameraFPS: 30验证地址http://localhost:8889/rpicam能出 1080p 画面即接入成功。进阶两件事录制成文件让画面更稳1 小时一段的 fMP4 自动录制配置录制只动四个参数。record: yes开录recordPath决定存哪支持%path、%Y-%m-%d这些时间变量recordFormat选格式fmp4 体积更小、能直接拖进剪辑工具mpegts 兼容性更广、老式播放器更友好一般选 fmp4recordSegmentDuration是每段多长、recordDeleteAfter是多久后自动删。pathDefaults: record: yes recordPath: ./recordings/%path/%Y-%m-%d_%H-%M-%S recordFormat: fmp4 recordSegmentDuration: 1h recordDeleteAfter: 24h录好的文件不用翻目录把全局的playback: true打开就能访问http://localhost:9996/在线回放和下载回放实现见 internal/playback/server.go。画面卡顿与延迟高的两条排查路径只给两条最实用的别一上来就调一堆走 HLS 显得慢把hlsSegmentDuration调到1s、hlsPartDuration调到200ms并确认用的是lowLatency变体分段越短首屏越快。走 WebRTC 连不上或延迟高在webrtcICEServers2里加一行stun:stun.l.google.com:19302并确认服务器 UDP 8189 没被防火墙挡住这是 WebRTC 打洞用的端口。下一步往哪儿点想程序化开关流、改配置Control API默认 9997 端口源码在 internal/api/想在客户端连上/断开时触发外部脚本Hooks 事件钩子见 internal/hooks/想给不同流设不同账号密码认证授权见 internal/auth/想要大流量下的高可用读副本与集群部署见 docs/2-features/04-read.md想逐个参数抠细节完整配置注释就在 mediamtx.yml现在就动手用 OBS 推一路流同时开 VLC 走rtsp://localhost:8554/mystream、浏览器走 WebRTC看同一画面能不能三端同看。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门