十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MediaMTX 部署完整指南:从单机 Docker 到 Kubernetes 高可用的 3 条路

MediaMTX 部署完整指南:从单机 Docker 到 Kubernetes 高可用的 3 条路 MediaMTX 部署完整指南从单机 Docker 到 Kubernetes 高可用的 3 条路【免费下载链接】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、WebRTC、RTSP、RTMP、HLS 等多协议的实时媒体服务器既能转推直播流也能录制和回放。按本指南的 MediaMTX Docker 部署路线走一遍先用一条命令在单机上跑起来再改掉 mediamtx.yml 里最关键的几个开关最后把服务升级到 Kubernetes 集群。零基础也能走完全程。一、先选路线单机还是集群这一步做完你会知道自己该用哪种方式部署避免一上来就堆复杂度。方案适用场景维护成本Docker 单机一台机器、一条或几条流、先跑通验证业务低一条命令起容器Docker Compose单机上要同时管 mediamtx 和周边服务数据库、反代等低一个 compose 文件管全部Kubernetes 集群流数量大、要高可用、需要自动扩缩容较高要维护整套资源清单推荐路径先用 Docker 单机验证业务跑顺了再迁到 K8s。两阶段的配置基本通用迁移成本低。二、最快上手一条命令部署 MediaMTX这一步做完你会得到一个正在监听全部常用端口的 mediamtx 容器并且能用浏览器或播放器确认它在服务。docker pull bluenviron/mediamtx docker run -d --name mediamtx --restart unless-stopped \ -p 1935:1935 \ -p 8554:8554 \ -p 8888:8888 \ -p 8889:8889 \ -p 8890:8890 \ -p 9997:9997 \ -p 9998:9998 \ -v $(pwd)/mediamtx.yml:/mediamtx.yml:ro \ -v $(pwd)/recordings:/recordings \ bluenviron/mediamtx各端口对应关系记一下1935RTMP8554RTSP8888HLS8889WebRTC8890SRT9997控制 API9998Metrics 指标配置文件可以不用改仓库里自带的 mediamtx.yml 就是完整默认配置拷出来直接挂载即可。跑完执行下面这步验证访问http://localhost:9997/v3/info能返回 JSON 说明控制 API 活着用 VLC 打开rtsp://localhost:8554/你的流名或推一路流到rtmp://localhost:1935/你的流名试读如果单机还要带周边服务把上面的docker run换成 Compose 更省事服务、端口、卷都写在一个文件里docker compose up -d即可。三、mediamtx.yml 必动的 6 个配置项这一步做完你会清楚哪些开关真正影响行为改配置不再靠猜。完整配置不用看新手容易改错的就这 6 处配置项作用建议值logLevel日志详细程度error / warn / info / debug生产用info排查问题时临时调debugrtsp、rtmp、hls、webrtc、srt各协议服务的总开关用到哪个开哪个yes不用的关掉rtspAddress、rtmpAddress、hlsAddress、webrtcAddress、srtAddress各协议监听地址保持默认端口即可改端口要同步改客户端api/metrics控制 API 与指标服务开关都开yes后面监控探活都要靠它们record、recordFormat是否录制及格式fmp4/mp4/mpegts需要留存录像才开格式推荐fmp4recordPath、recordDeleteAfter录像存放路径模板与保留时长路径用/recordings/%path/%Y-%m-%d_%H-%M-%S-%f保留期按合规要求设如7d录制相关配置放在pathDefaults下对所有路径生效。只给个别流单独设置时才需要在paths里建同名段落覆盖。四、集群升级MediaMTX 上 Kubernetes这一步做完你会拿到一套多副本的部署请求先进 Service再被分发到后端任意一个 mediamtx Pod录像落到共享存储上。资源按这个顺序kubectl apply依赖才不会断kubectl apply -f namespace.yaml kubectl apply -f pvc.yaml kubectl apply -f configmap.yaml kubectl apply -f deployment.yaml kubectl apply -f service.yaml清单本身不复杂真正要盯住的是这 3 个点探活liveness 和 readiness 都打控制 API 的/v3/info9997 端口比打媒体端口可靠。示例livenessProbe: httpGet: path: /v3/info port: api initialDelaySeconds: 30 periodSeconds: 10副本数replicas从 2 起步配RollingUpdate策略保证升级不中断。注意 mediamtx 是多播式服务同一路流的推流端和拉流端可能落在不同 Pod 上客户端要支持按流名重新路由或改用单推流入口。存储录像目录挂 ReadWriteMany 的 PVC如 nfs 类 storageClass多 Pod 共享写入recordDeleteAfter负责自动清理别忘了配。Service 把 1935 / 8554 / 8888 / 8889 / 8890 / 9997 / 9998 逐个声明为端口条目即可协议默认 TCPWebRTC 还要放通 UDP 范围SRT 走 8890。五、生产环境清单集群跑起来之后把下面 4 项逐项过一遍每项一两句话就能落地监控Prometheus 直接抓 9998 端口的/metricsPod 上打prometheus.io/scrape注解或建 ServiceMonitor告警盯连接数与进程存活。自动扩缩容HPA 指向 deploymentCPU 利用率 70% 左右触发扩容minReplicas2、maxReplicas按预算设。网络策略NetworkPolicy 只放行媒体端口的入向流量和 DNS 出向其余全拒缩小暴露面。TLS对外暴露的 RTSP / SRT / WebRTC 配置各自的 TLS 证书项证书可用 cert-manager 签发并自动续期避免手写证书过期翻车。更多协议细节SRT 参数、WebRTC 打洞等建议直接翻仓库里的 docs/ 目录按协议查对应章节。六、出问题先查这里现象常见原因处理动作客户端连接超时端口没映射或被 NetworkPolicy 拦截核对docker port或 Service 端口条目检查策略放行推流成功但播放无画面客户端协议/端口与开关不匹配如用了没开的协议对照mediamtx.yml里各协议开关和*Address录像目录是空的record没开或录制路径不可写确认pathDefaults.record: yes检查挂载卷权限Pod 反复重启探活路径写错或资源不足被 OOM确认探活打/v3/info看kubectl describe pod的退出码日志看不懂日志级别是 error细节没打出来把logLevel临时调到debug复现后调回升级后旧连接全断滚动更新时客户端没重连客户端加重连逻辑或降低maxUnavailable到这里单机到集群的完整链路就走完了。下一步可以按这个顺序推进给自己的一路真实业务流做 24 小时录制压测给/metrics配上至少两条告警进程存活、连接数突增演练一次 PVC 备份与恢复确认真出事时拿得回录像【免费下载链接】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),仅供参考
返回列表