用 MediaMTX 搭建低延迟直播:从 SRT 推流到 WebRTC 播放的完整指南

发布时间:2026/9/8 17:53:20

用 MediaMTX 搭建低延迟直播:从 SRT 推流到 WebRTC 播放的完整指南
用 MediaMTX 搭建低延迟直播从 SRT 推流到 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推一路线路测试码流到观众屏幕走 HLS 是 3 到 10 秒走 RTMP 也要 1 到 3 秒。对娱乐直播来说尚可忍受但对游戏直播观众看到技能释放时操作已经完成体验直接崩掉。延迟问题的根源不在网络带宽而在协议本身的分段缓冲机制——而破局的办法是用支持WebRTC的流媒体服务器把播放端延迟压到亚秒级。MediaMTX是一个开箱即用的零依赖实时流媒体服务器同时内置 WebRTC、SRT、RTSP、RTMP、LL-HLS 等协议栈可以把一路推流转成任意协议播放并支持录制与回放。一条流如何同时喂饱四种播放器MediaMTX 的核心心智模型很朴素所有流都挂在一个叫path路径的对象上path 由一个path manager统一管理。一个 path 只有一个推流者publisher可以是 RTSP/RTMP/WebRTC/SRT 客户端也可以是被配置拉流的外部源任意多个观众可以用任意受支持的协议读同一条流服务器内部只做remux协议转换、不重编码所以 CPU 开销极低单进程即可撑起多路并发也就是说推流者用 SRT 进来浏览器观众用 WebRTC 看移动端用 LL-HLS 看VLC 用 RTSP 看——它们读的是同一条流。数据流向就是推流客户端 → path → 各协议 server → 观众完整说明见架构文档。关键技术决策为什么用 SRT 推流SRTSecure Reliable Transport是基于 UDP 的可靠传输协议用应用层重传对抗丢包典型端到端延迟在 100ms 量级远低于 TCP 系的 RTSP/RTMP。对游戏场景更重要的是它天然适配 OBS 这类推流端。MediaMTX 的 SRT server 默认开启监听 UDP:8890streamid 同时支持mpublish,rlive这种标准语法部分硬件只认它细节见SRT 特性文档srt: true srtAddress: :8890为什么用 WebRTC 播放WebRTC 在浏览器里无需插件媒体走 SRTP 直连观众端延迟通常在几十毫秒到 100ms 出头。MediaMTX 的 WebRTC 握手走 HTTP:8889媒体走独立的 UDP/ICE 监听默认:8189四层连通方案按优先级排列静态 UDP 端口 → 静态 TCP 端口 → STUN 打洞 → TURN 中继。局域网或端口放通的内网机器默认配置就够了公网部署时把公网 IP 写进webrtcAdditionalHosts即可webrtc: true webrtcAddress: :8889 webrtcLocalUDPAddress: :8189 webrtcAdditionalHosts: [1.2.3.4]为什么留一个 LL-HLS 兜底部分移动端场景尤其是 iOS 系统播放器只能走 HLS。MediaMTX 的 HLS 默认就是lowLatency变体hlsPartDuration: 200ms把 LL-HLS 的 part 粒度压到 200 毫秒配合 CDN 分发时延迟能到 2 秒左右——不是最优但足够覆盖 WebRTC 触达不了的终端。从安装到出画面的最小配置MediaMTX 是单个可执行文件Docker 启动最快。注意 WebRTC 的 UDP 端口8189和 SRT 的8890都要用/udp映射漏掉 8189 是新手最常见的失败点docker run --rm -it \ -p 8554:8554 -p 8888:8888 -p 8889:8889 \ -p 8189:8189/udp -p 8890:8890/udp \ bluenviron/mediamtx:1启动后日志会逐行列出各 server 的监听状态。默认配置仓库根目录的mediamtx.yml共 800 余行注释里authMethod: internal且user: any放行匿名读写局域网实验直接可用上生产前至少要改成按 path 限制权限完整参数以配置文件参考为准。推流端用 FFmpeg 生成测试源走 SRT 标准 streamid 语法推入live路径ffmpeg -re -f lavfi -i testsrcduration30 -f lavfi -i sineduration30 \ -c:v libx264 -preset ultrafast -c:a aac \ -f srt srt://127.0.0.1:8890?streamid#!::mpublish,rlive验证闭环只需要两条命令。第一条确认流真的进了服务器跨协议读取成功ffprobe -v error -show_entries streamcodec_name rtsp://127.0.0.1:8554/live # 预期输出h264 与 aac 两行 codec_name第二条确认 LL-HLS 播放列表已生成curl -s http://127.0.0.1:8888/live/index.m3u8 | head # 预期输出#EXTM3U 开头的播放列表浏览器打开http://服务器IP:8889MediaMTX 自带 WebRTC 查看页填入流地址即可出画面——从推流到出画面这条链路通常不到 1 秒。两个文档不会重点提醒的坑⚠️ 第一个坑在编码器上浏览器用 WebRTC 播 H265 基本全军覆没仅 Windows 版 Chrome 在特定 GPU 下支持而含B 帧的 H264 同样不被 WebRTC 规范接纳——服务端转不动浏览器的编码限制唯一解法是推流端改用 H264 baseline profile Opus 重新编码WebRTC 特性文档 里给了现成的 FFmpeg 转码参数。如果你的推流设备固定输出 B 帧 H264观众端大概率是黑屏而非报错这点非常隐蔽。第二个坑在网络层Docker 部署时如果只映射了8889忘了8189/udp握手 HTTP 200、页面正常加载、但画面永远转圈——因为 ICE 媒体通道根本建立不起来。排查顺序建议照文档的四层方案走先确认 UDP 8189 放通再开webrtcLocalTCPAddress: :8189走 TCP 兜底代价是拥塞时延迟递增最后才上 STUN/TURN。另外录制是默认关闭的record: false开启后recordPath默认按%path与时间戳落盘 fMP4 分段单段 1 小时适合比赛回放详见录制文档。延伸方向大规模并发时把主服务器的 path 通过forward推到边缘 MediaMTX 节点或反向用source拉流做读副本见转发文档用:9998的 Prometheus metrics 端点接 Grafana盯每路的 reader 数与 CPU 占用探索 MoQMedia over QUIC协议栈它基于 HTTP3/WebTransport是比 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),仅供参考

相关新闻

D20 | 上线与监控:从 Demo 到生产环境的最后一公里

D20 | 上线与监控:从 Demo 到生产环境的最后一公里

2026/9/8 17:53:20

文章目录 D20 | 上线与监控:从 Demo 到生产环境的最后一公里 写在前面 一、Demo 到生产的 3 大鸿沟 鸿沟 ①:可访问性(Accessibility) 鸿沟 ②:稳定性(Reliability) 鸿沟 ③:可观测性(Observability) 二、部署 4 选项 2.1 全景对比 2.2 推荐:中小项目用 Vercel 或阿…

Flutter integration_test 示例工程实战:用 flutter drive 跑通 Android/iOS/Web 端到端测试

Flutter integration_test 示例工程实战:用 flutter drive 跑通 Android/iOS/Web 端到端测试

2026/9/8 17:43:19

Flutter integration_test 示例工程实战:用 flutter drive 跑通 Android/iOS/Web 端到端测试 【免费下载链接】flutter Flutter makes it easy and fast to build beautiful apps for mobile and beyond 项目地址: https://gitcode.com/GitHub_Trending/flutter41…

2026年Claude Code插件实战盘点:9款高含金量工具与选型指南

2026年Claude Code插件实战盘点:9款高含金量工具与选型指南

2026/9/8 17:43:19

作为一个天天泡在终端里跟 Claude Code 打交道的人,我见过太多人一上来就满世界找插件,看到 GitHub 上哪个仓库 star 多就装哪个,结果插件列表长得能当购物清单用,真正干活的时候反而被插件之间的配置冲突、上下文污染、token 浪费…

Simulink实现AI模型到MCU的C代码生成与部署指南

Simulink实现AI模型到MCU的C代码生成与部署指南

2026/9/8 18:33:22

写这篇文章前,先分享一个真实的现场:前阵子有朋友拿来一个训练好的电机异常检测模型,在Python里验证集准确率能到98%以上,但下一步就卡住了——他不知道怎么把它放到产线控制器的那颗MCU里去跑。问我要不要把权重导成h文件&#x…

ClickHouse 关联测试选择器深入解析:基于逐测试行级覆盖率的 find_tests.py 架构与实现

ClickHouse 关联测试选择器深入解析:基于逐测试行级覆盖率的 find_tests.py 架构与实现

2026/9/8 18:33:22

ClickHouse 关联测试选择器深入解析:基于逐测试行级覆盖率的 find_tests.py 架构与实现 【免费下载链接】ClickHouse ClickHouse is a real-time analytics database management system 项目地址: https://gitcode.com/GitHub_Trending/cli/ClickHouse 导读 …

freeCodeCamp CSS Flexbox 教程实战:用 flex-direction: column 让弹性子项垂直堆叠

freeCodeCamp CSS Flexbox 教程实战:用 flex-direction: column 让弹性子项垂直堆叠

2026/9/8 18:33:22

freeCodeCamp CSS Flexbox 教程实战:用 flex-direction: column 让弹性子项垂直堆叠 【免费下载链接】freeCodeCamp freeCodeCamp.orgs open-source codebase and curriculum. Learn math, programming, and computer science for free. 项目地址: https://gitcod…

Atmosphere 启动失败怎么办:从黑屏、卡屏到 2162-0002 的完整排查与修复指南

Atmosphere 启动失败怎么办:从黑屏、卡屏到 2162-0002 的完整排查与修复指南

2026/9/8 18:33:22

Atmosphere 启动失败怎么办:从黑屏、卡屏到 2162-0002 的完整排查与修复指南 【免费下载链接】Atmosphere Atmosphre is a work-in-progress customized firmware for the Nintendo Switch. 项目地址: https://gitcode.com/GitHub_Trending/at/Atmosphere 如…

CodeGraph 安装教程:工具调用减少 88%,让 AI 助手不再翻遍整个仓库(100% 本地完整指南)

CodeGraph 安装教程:工具调用减少 88%,让 AI 助手不再翻遍整个仓库(100% 本地完整指南)

2026/9/8 18:33:21

CodeGraph 安装教程:工具调用减少 88%,让 AI 助手不再翻遍整个仓库(100% 本地完整指南) 【免费下载链接】codegraph Pre-indexed code knowledge graph, auto syncs on code changes, for Claude Code, Codex, Gemini, Cursor, Op…

ip2region 离线IP定位库快速上手指南:IPv4/IPv6 微秒级查询完整教程

ip2region 离线IP定位库快速上手指南:IPv4/IPv6 微秒级查询完整教程

2026/9/8 18:23:21

ip2region 离线IP定位库快速上手指南:IPv4/IPv6 微秒级查询完整教程 【免费下载链接】ip2region Ip2region is an offline IP-to-Region localization library and IP data management framework with both IPv4 and IPv6 supports, 10-microsecond level query eff…

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

中国人民大学杨琳团队《Nature Communications》 | 全球潮汐湿地土壤有机碳时空格局与环境驱动:一项2009-2020年的全球评估

2026/9/7 20:21:46

本文首发于“生态学者”!从“湿地面积”到“土壤碳密度”:为什么需要重新认识潮汐湿地蓝碳变化?潮汐湿地位于陆地与海洋的交汇地带,包括红树林、盐沼和潮滩,是全球重要的蓝碳生态系统。其土壤能够长期储存大量有机碳&a…

adb抓包

adb抓包

2026/9/8 4:55:53

前言 本文介绍如何通过 tcpdump 在 Android 手机上抓取网络数据包,并在电脑端使用 Wireshark 进行分析。适用于需要排查 App 网络请求、分析接口调用或调试网络问题的开发与测试场景。1. 手机要有 root 权限2. 下载 tcpdump3. adb push C:\Users\zhangkuixun\Downlo…

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战

2026/9/7 8:03:37

大模型推理镜像极简瘦身:从 25GB 巨无霸到 3GB 精简镜像实战 在云原生基础设施中,容器镜像体积直接决定了服务的部署速度与弹性扩容敏捷度。对于传统的 Go / Java 微服务,镜像体积通常被严格控制在 50MB 到 200MB 以内,拉取镜像只…

芯片良率波动可视化:动画拆解工艺因果,重建客户信任

芯片良率波动可视化:动画拆解工艺因果,重建客户信任

2026/9/8 0:02:30

芯片这个行业有个不太被人摆到台面上、但几乎每天都在发生的场景:客户拿着一条良率曲线截图问你,这批货的良率怎么掉了三个点,是不是工艺出问题了,产生的不良会不会流到他们产线上去。你解释了半天,客户似懂非懂&#…

PyTorch DataLoader参数冲突:sampler与shuffle互斥的根源与正确写法

PyTorch DataLoader参数冲突:sampler与shuffle互斥的根源与正确写法

2026/9/8 0:02:30

ValueError: sampler option is mutually exclusive with shuffle,这个报错我在 PyTorch 的 DataLoader 上至少见过几十次了,而且很有意思的是,它经常不是新手专属——很多写了好几年模型的老手,在从单机改成自定义采样器&#xf…

中国车企再破谣言,GAC吉利零跑获欧盟安全五星

中国车企再破谣言,GAC吉利零跑获欧盟安全五星

2026/9/8 0:02:30

有人可能在网上开着皮卡拍视频,声称中国电动车不仅性能不如美国大排量车型,安全性也堪忧。然而事实恰恰相反,GAC、吉利和零跑最新推出的电动车型在极为严苛的欧盟新车安全评鉴(Euro NCAP)测试中全部斩获满分。就在特斯…

远程协作的工作台整理

远程协作的工作台整理

2026/9/8 4:23:39

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/8 3:19:39

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/8 4:00:23

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…