mediamtx v1.19.3正式发布:认证安全、WebRTC跨域、MoQ稳定性、RTSP与HLS全面升级

🤖 AI总结

主题

MediaMTX v1.19.3版本更新详情

摘要

MediaMTX v1.19.3发布,聚焦安全加固、稳定性修复与流状态钩子,支持MoQ draft-19,并升级多项依赖。

关键信息

  • 1 MediaMTX v1.19.3发布,涉及安全、稳定性和功能更新
  • 2 修复了认证安全、跨域访问、媒体时间戳等问题
  • 3 新增流在线离线钩子,增强Media-Over-QUIC支持

mediamtx v1.19.3正式发布:认证安全、WebRTC跨域、MoQ稳定性、RTSP与HLS全面升级

mediamtx v1.19.3正式发布:认证安全、WebRTC跨域、MoQ稳定性、RTSP与HLS全面升级

mediamtx v1.19.3正式发布:认证安全、WebRTC跨域、MoQ稳定性、RTSP与HLS全面升级

2026年8月5日,MediaMTX 发布 v1.19.3 版本。本次更新覆盖通用功能、API、Media-Over-QUIC、WebRTC、RTSP、HLS、SRT 以及依赖库升级等多个方向。

此次版本的重点非常明确:一是进一步收紧认证与跨域访问的安全边界,二是修复媒体时间戳、播放、UDP 端口、RTCP 解析等影响稳定性的关键问题,三是增强 Media-Over-QUIC 的启动可靠性、内存保护能力和协议兼容性,四是补充流在线与离线状态相关的自动化钩子能力。

对于正在使用 MediaMTX 构建 RTSP、RTMP、SRT、HLS、WebRTC 或 Media-Over-QUIC 流媒体服务的用户来说,v1.19.3 是一次兼顾安全性、稳定性与可维护性的版本更新。

版本信息

• 版本:v1.19.3

  • • 发布时间:2026年8月5日

  • • 项目:github.com/bluenviron/mediamtx

    本次更新核心看点

    v1.19.3 的更新内容可以概括为以下几个重点:

    • 修复allall_others的同义词错误提示问题。

  • • 支持通过空环境变量清空指定列表配置。

  • • 新增runOnOnlinerunOnOffline钩子。

  • • 将runOnReady重命名为runOnAvailable

  • • 将runOnNotReady重命名为runOnUnavailable

  • • 修复alwaysAvailableFile播放时 PTS 错误及节奏异常问题。

  • • 使用常量时间比较方式验证 SHA256 凭据,降低时序攻击风险。

  • • 统一认证失败日志与认证错误处理逻辑。

  • • 针对不支持提交凭据的协议,避免无意义地等待认证信息。

  • • 增加 fail2ban 集成文档。

  • • OpenAPI 的大部分枚举与结构体改为自动生成。

  • • 修复 Media-Over-QUIC 启动竞争、异常崩溃、内存分配风险和重排序器 CPU 占用问题。

  • • 支持 Media-Over-QUIC draft-19 规范,并支持重复订阅同一轨道。

  • • 修复 WebRTC 和 HLS 在通配跨域配置下可能出现的跨域未授权访问问题。

  • • 限制 RTSP UDP 端口范围为 32768-60999。

  • • 改进 RTSP 外部认证、RTCP 解析、SDP 处理、UDP 端口释放等能力。

  • • 修复 SRT 与 StreamToStudio 应用的兼容性问题。

  • • 升级多项 Go、Pion、RTSP、HLS、加密和网络相关依赖。

    通用功能更新:配置、钩子、播放与认证全面优化

    修复all同义词错误提示

    本次更新修复了allall_others同义词时的错误信息问题。

    在配置或权限规则相关场景中,allall_others之间存在同义关系。此前在出现相关错误时,提示信息存在问题。v1.19.3 修正了这一错误提示,使配置错误或参数错误能够得到更准确的反馈。

    对应更新编号:5922。

    环境变量支持通过空值清空列表

    v1.19.3 改进了环境变量配置能力。

    以下环境变量现在可以通过设置为空值的方式,清空其对应的列表配置:

    MTX_AUTHINTERNALUSERS_0_IPS

  • MTX_LOGDESTINATIONS

  • MTX_RTSPTRANSPORTS

    这项改进解决了使用环境变量覆盖配置时无法清空原有列表的问题。

    也就是说,当部署环境需要通过环境变量控制内部认证用户 IP 列表、日志输出目标或 RTSP 传输方式时,现在可以直接传入空值,以清空对应配置项。

    对应更新编号:5410、5924。

    新增runOnOnlinerunOnOffline钩子

    v1.19.3 新增了两个钩子:

    runOnOnline

  • runOnOffline

    这两个钩子用于处理流在线与流离线状态。

    其中,runOnOnline会在流真正在线时触发。这里的“在线”并不只是存在离线片段,而是指流已经处于在线状态。

    runOnOffline则会在流离线时触发。

    对于需要根据流状态执行自动化操作的场景,这两个钩子提供了新的能力。例如,用户可以根据流在线或离线状态联动外部处理逻辑。此次更新明确区分了在线状态与仅由离线片段提供内容的情况。

    对应更新编号:5399、5956。

    钩子名称调整:Ready 与 NotReady 更名

    本次版本对两个原有钩子进行了重命名:

    runOnReady重命名为runOnAvailable

  • runOnNotReady重命名为runOnUnavailable

    新的名称更直接地表达了流可用与不可用的状态含义。

    其中:

    runOnAvailable表示流可用时触发。

  • runOnUnavailable表示流不可用时触发。

    结合新增的runOnOnlinerunOnOffline,MediaMTX 在流状态事件方面形成了更清晰的命名体系,分别覆盖可用、不可用、在线、离线等不同状态。

    对应更新编号:5957。

    修复 alwaysAvailableFile 的 PTS 与播放节奏问题

    v1.19.3 修复了alwaysAvailableFile的错误 PTS 和错误播放问题。

    此前,样本的 PTS 偏移量没有被正确处理。同时,样本之间的等待时间使用了基于 PTS 的方式,而不是基于 DTS 的方式。

    本次修复包括两部分:

    • 正确考虑样本的 PTS 偏移量。

  • • 将样本之间的等待逻辑从 PTS 基础调整为 DTS 基础。

    PTS 与 DTS 的处理对于媒体播放时序非常重要。此次更新针对alwaysAvailableFile的时间戳处理逻辑进行修正,解决了可能出现的播放异常问题。

    对应更新编号:5436、5960。

    SHA256 凭据验证改为常量时间比较

    本次版本提升了 SHA256 凭据验证过程的安全性。

    此前,使用==运算符比较 SHA256 凭据时,比较操作会在发现不匹配后提前结束。这样的短路行为可能受到时序攻击影响。

    v1.19.3 改为使用ConstantTimeCompare进行比较,以避免这一攻击向量。

    常量时间比较不会因为字符在不同位置出现不匹配而产生不同的提前结束行为,从而降低攻击者通过比较耗时推测凭据内容的风险。

    对应更新编号:5961。

    认证错误信息统一化

    v1.19.3 对认证错误日志进行了统一和规范化处理。

    本次调整包括:

    • 尽可能早地记录认证错误。

  • • 将认证错误日志级别设为warn

  • • 无论认证来源或协议是什么,使用相同的认证错误信息。

    通过统一认证错误处理逻辑,MediaMTX 的日志行为更加一致,认证失败事件也能够更早被记录。

    对应更新编号:5421、5959。

    调整代码以避免安全扫描误报

    本次更新对部分代码进行了调整,以避免安全扫描工具产生误报。

    调整内容涉及字符串转义相关问题。

    此外,还增加了注释,以进一步避免安全扫描工具的误判。

    对应更新编号:5963、5973。

    仅在支持凭据输入的协议中请求凭据

    v1.19.3 优化了认证请求流程。

    当客户端通过某些协议连接时,例如 SRT、RTMP,客户端无法在被要求时提供凭据。在这种情况下,继续等待凭据没有实际意义。

    因此,本次更新调整为:

    • 对于不支持提供凭据的协议,不再无意义地等待凭据。

  • • 立即记录认证错误。

  • • 立即应用防暴力破解算法。

    这一调整能够避免不支持凭据交互的连接长时间停留在无效认证等待状态,同时让认证失败处理和防暴力破解逻辑更及时生效。

    对应更新编号:5966。

    新增 fail2ban 集成文档

    v1.19.3 增加了 fail2ban 集成文档。

    结合本次认证错误统一化、认证失败日志提前记录以及防暴力破解逻辑的调整,fail2ban 集成文档为用户提供了关于外部防护工具集成的说明。

    对应更新编号:5016、5967。

    API 更新:大部分 OpenAPI 内容自动生成

    在 API 方面,v1.19.3 改进了 OpenAPI 的生成方式。

    本次更新实现了大部分 OpenAPI 内容自动生成,其中包括:

    • 枚举自动生成。

  • • 结构体自动生成。

    自动生成能够消除部分不一致问题,同时使开发维护更加容易。

    对于 API 使用者而言,这意味着 OpenAPI 中枚举和结构体的描述将通过自动生成机制保持更一致的状态。

    对应更新编号:5918。

    Media-Over-QUIC 更新:启动、内存、协议与性能同步增强

    Media-Over-QUIC 是本次版本改进较为集中的模块之一。v1.19.3 修复了启动过程中的竞争条件,增强了远端输入数据下的内存保护,提升了协议支持能力,并优化了重排序逻辑的 CPU 使用方式。

    修复启动过程中的竞争条件

    本次更新修复了 Media-Over-QUIC 在启动阶段可能出现的竞争条件。

    修复方式是:只有在 MoQ 服务器完成初始化后,才分配 HTTP 服务器。

    这样可以避免 HTTP 服务器在 MoQ 服务器尚未初始化完成时被提前创建,从而降低启动过程中的并发竞争风险。

    对应更新编号:5965。

    修复多个 panic 与 OOM 问题

    v1.19.3 修复了 Media-Over-QUIC 中多个 panic 和 OOM 问题。

    本次改进的关键点在于:对于来自远端对等方的大小参数,在进行内存分配前先检查限制。

    具体来说,MediaMTX 不再直接依据远端传入的大小进行内存分配,而是在分配前对大小进行限制检查。

    这可以避免由远端输入的异常大小参数引发过大内存分配问题。

    同时,本次更新还为所有 MoQ 基础组件增加了模糊测试。

    对应更新编号:5964。

    支持 draft-19 规范与同一轨道重复订阅

    v1.19.3 支持 Media-Over-QUIC 规范 draft-19。

    除此之外,还支持对同一轨道进行多次订阅。

    这一更新使 MediaMTX 的 MoQ 协议支持能力与 draft-19 规范保持一致,并扩展了轨道订阅行为。

    对应更新编号:5968。

    防止重排序器过度消耗 CPU

    本次版本修复了重排序器可能出现的过度 CPU 消耗问题。

    此前,重排序逻辑会基于由用户传入的maxGroupID进行迭代。如果该值过大,可能导致过多循环操作。

    v1.19.3 改为根据内部待处理数据包进行迭代,而不再根据由用户控制的maxGroupID直接迭代。

    也就是说,重排序器现在围绕内部待处理数据包工作,而不是围绕外部输入的最大组标识进行循环,从而避免用户输入导致的过度 CPU 消耗。

    对应更新编号:5976。

    WebRTC 更新:修复通配跨域下的未授权访问问题

    v1.19.3 修复了 WebRTC 中可能存在的跨域未授权访问问题。

    问题出现的条件是:

    • 用户此前通过浏览器向某个 MediaMTX 实例输入过凭据。

  • AllowOrigins被设置为通配符。

  • • 用户随后访问第三方网站。

    在此前的行为下,第三方网站可能在没有限制的情况下读取流。

    本次更新通过调整Access-Control-Allow-Origins响应头解决这一问题:

    AllowOrigins配置为通配符时,返回"*"作为Access-Control-Allow-Origins的值。

    这种行为会阻止浏览器向第三方网站共享凭据,从而防止第三方网站借助用户此前输入的凭据读取流。

    对应更新编号:5975。

    RTSP 更新:端口范围、认证、RTCP、SDP 与资源释放修复

    RTSP 模块在 v1.19.3 中获得多项更新,包括 UDP 端口范围限制、外部认证会话标识支持、64 位数值处理、摄像机 RTCP 兼容性、SDP 数据结构处理,以及客户端 UDP 端口释放与端口耗尽错误处理。

    限制 UDP 端口范围为 32768-60999

    v1.19.3 将 RTSP 使用的 UDP 端口范围限制为:

    32768-60999

    这一范围是 Linux 默认的临时端口范围。

    通过将 UDP 端口范围限制到该区间,RTSP UDP 传输使用的端口范围与 Linux 默认临时端口范围保持一致。

    对应更新编号:5398、5958。

    外部认证服务请求中使用会话 ID

    本次更新使 RTSP 在请求外部认证服务器时使用会话 ID。

    这意味着,RTSP 与外部认证服务之间的请求可以携带会话标识信息。

    对应更新编号:5977。

    防止 32 位平台上的 64 位数值截断

    v1.19.3 修复了在 32 位平台上可能发生的 64 位数值截断问题。

    该修复来自 RTSP 相关依赖更新,目标是防止 64 位数值在 32 位平台上被错误截断。

    对应依赖更新编号:1094。

    修复部分摄像机的 RTCP 解析问题

    本次版本修复了部分 Hanwha 摄像机的 RTCP 解析问题。

    RTCP 是实时传输控制协议,解析兼容性问题可能影响实时流传输过程中的控制信息处理。

    v1.19.3 针对部分摄像机产生的 RTCP 数据进行了兼容性修复。

    对应依赖更新编号:5355、1099。

    使用原始 SDP SessionDescription

    v1.19.3 不再使用自定义的 SDPSessionDescription,而是改用原始的pion/sdp.SessionDescription

    同时,解组器被移动到sdpunmarshaler中。

    这项调整涉及 SDP 会话描述处理方式与解组逻辑的位置调整。

    对应依赖更新编号:1100。

    修复客户端关闭后 UDP 端口未释放的问题

    本次更新修复了 RTSP 客户端在关闭后 UDP 端口没有被释放的问题。

    客户端结束后,如果 UDP 端口没有正确释放,可能导致后续端口资源无法被正常使用。

    v1.19.3 修正了关闭后的端口释放逻辑。

    对应依赖更新编号:1105。

    UDP 端口范围耗尽时返回错误

    v1.19.3 增加了 UDP 端口范围耗尽时的错误返回机制。

    当可用 UDP 端口范围已经耗尽时,客户端现在会返回错误,而不是继续处于无法获得可用端口的状态。

    对应依赖更新编号:1104。

    HLS 更新:修复跨域未授权访问风险

    HLS 模块同步修复了与 WebRTC 相同的跨域未授权访问问题。

    问题同样出现在以下条件下:

    • 用户曾通过浏览器向 MediaMTX 实例输入凭据。

  • AllowOrigins被设置为通配符。

  • • 用户访问了第三方网站。

    此前,第三方网站可能在没有限制的情况下读取流。

    v1.19.3 在AllowOrigins为通配符时,返回"*"作为Access-Control-Allow-Origins的值。

    通过这一行为,浏览器不会向第三方网站共享用户凭据,从而阻止第三方网站未经授权读取 HLS 流。

    对应更新编号:5975。

    SRT 更新:修复与 StreamToStudio 的兼容性

    在 SRT 方面,v1.19.3 修复了与 StreamToStudio 应用之间的兼容性问题。

    这项修复提升了 MediaMTX 使用 SRT 协议与该应用进行交互时的兼容性。

    对应更新编号:5414、5928。

    依赖更新清单

    v1.19.3 同步升级了多个依赖库,覆盖字节格式化、命令行、HLS、RTMP、RTSP、媒体处理、密码学、网络、QUIC、WebRTC、ICE、DTLS、SCTP、STUN、TURN 等领域。

    具体升级如下:

    code.cloudfoundry.org/bytefmt:从 v0.78.0 升级到 v0.82.0

  • github.com/alecthomas/kong:从 v1.15.0 升级到 v1.16.0

  • github.com/bluenviron/gohlslib/v2:从 v2.4.0 升级到 v2.4.1

  • github.com/bluenviron/gortmplib:从 v0.4.0 升级到 v0.4.1

  • github.com/bluenviron/gortsplib/v5:从 v5.6.1 升级到 v5.6.2

  • github.com/bluenviron/mediacommon/v2:从 v2.9.1 升级到 v2.9.2

  • github.com/matthewhartstonge/argon2:从 v1.5.5 升级到 v1.5.6

  • github.com/pion/ice/v4:从 v4.2.8-0.20260604162030-72f5001c4596 升级到 v4.3.0

  • github.com/pion/interceptor:从 v0.1.45 升级到 v0.1.46

  • github.com/pion/rtcp:从 v1.2.16 升级到 v1.2.17

  • github.com/pion/rtp:从 v1.10.2 升级到 v1.10.5

  • github.com/pion/webrtc/v4:从 v4.2.15 升级到 v4.2.17

  • github.com/pires/go-proxyproto:从 v0.12.0 升级到 v0.15.0

  • github.com/quic-go/webtransport-go:从 v0.11.0 升级到 v0.11.1

  • golang.org/x/crypto:从 v0.53.0 升级到 v0.54.0

  • golang.org/x/net:从 v0.56.0 升级到 v0.57.0

  • golang.org/x/sync:从 v0.21.0 升级到 v0.22.0

  • golang.org/x/sys:从 v0.46.0 升级到 v0.47.0

  • golang.org/x/term:从 v0.44.0 升级到 v0.45.0

  • github.com/pion/datachannel:从 v1.6.0 升级到 v1.6.2

  • github.com/pion/dtls/v3:从 v3.1.4 升级到 v3.1.5

  • github.com/pion/sctp:从 v1.10.0 升级到 v1.11.0

  • github.com/pion/stun/v3:从 v3.1.5 升级到 v3.1.6

  • github.com/pion/turn/v5:从 v5.0.9 升级到 v5.0.12

  • golang.org/x/text:从 v0.38.0 升级到 v0.40.0

    安全与二进制完整性验证

    MediaMTX 的二进制文件由 Release 工作流从源代码编译生成。

    该工作流是完全可见的流程,用于防止已生成构件在产物生成过程中被修改或受到外部干扰。

    二进制文件的校验和还会通过 GitHub Attestations 发布到公开区块链中,可以使用以下命令进行验证:

    ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx

    此外,也可以下载checksums.sha256文件后,通过以下命令验证二进制文件校验和:

    cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check

    总结

    MediaMTX v1.19.3 是一次覆盖面广、针对性明确的更新。

    在安全层面,本次版本强化了 SHA256 凭据比较方式,统一了认证失败处理逻辑,改进了不支持凭据协议的认证处理流程,并修复了 WebRTC 与 HLS 通配跨域配置下可能导致第三方网站读取流的未授权访问问题。

    在稳定性层面,Media-Over-QUIC 修复了启动竞争、panic、OOM 与高 CPU 消耗问题;RTSP 修复了 UDP 端口释放、端口耗尽、64 位数值截断、RTCP 解析等问题;alwaysAvailableFile的 PTS 与 DTS 处理也得到了修正。

    在功能与维护层面,新增加的runOnOnlinerunOnOffline钩子,以及runOnAvailablerunOnUnavailable的命名调整,使流状态自动化处理更清晰;OpenAPI 自动生成能力则改善了 API 枚举与结构体定义的一致性。

    对于使用 MediaMTX 作为流媒体接入、转发、分发或协议转换服务的用户,v1.19.3 包含多项值得关注的安全修复、兼容性修复与稳定性改进。

    我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

    © 版权声明

    相关文章