网易首页 > 网易号 > 正文 申请入驻

mediamtx v1.21.1发布:浏览器请求安全加固、HLS 会话重构、WebRTC 播放修复与全链路媒体兼容性升级

0
分享至




2026 年 9 月 24 日,mediamtx 发布 v1.21.1 最新版本。本次更新重点覆盖通用安全、配置认证、H265 与 MP4 媒体处理、RTSP、RTMP、HLS、WebRTC,以及大量依赖组件升级。

从更新内容来看,v1.21.1 并非单一功能版本,而是一次围绕“安全性、协议兼容性、长时间流稳定性、浏览器播放体验、会话管理效率”展开的集中修复版本。尤其是浏览器 POST 请求来源校验、HLS 会话生命周期重构、DJI 无人机流兼容性修复、AV1 浏览器播放卡住处理等内容,对生产环境中的流媒体服务稳定性具有直接意义。

一、通用功能与安全:浏览器 POST 请求必须校验允许来源

本次版本首先对浏览器发起的 POST 请求进行了安全强化。

此前,浏览器可以在不执行预检请求的情况下发送 POST 请求,同时浏览器也不会主动确认请求来源是否位于Access-Control-Allow-Origin允许范围内。这样的行为可能导致服务端仅依赖浏览器侧跨域机制,而没有对请求来源执行足够的服务端校验。

v1.21.1 针对这一情况进行了处理:服务端会拦截来自浏览器的 POST 请求,并检查请求的来源是否被允许。如果请求来源不在允许列表内,服务端将直接阻止该请求。

这项改动对应事项 6238。它让来源控制不再仅依赖浏览器的预检流程,而是通过服务端主动校验补足安全边界。对于存在浏览器控制接口、网页播放器控制接口或浏览器侧 API 调用的部署场景,这项改动尤为重要。

二、配置与认证:修复默认内部认证用户的比较和共享问题

v1.21.1 修复了配置系统中默认authInternalUsers的比较与共享问题,对应事项 6205。

authInternalUsers用于内部认证用户相关配置。默认配置对象在比较或共享时如果处理不正确,可能导致配置判断结果异常,或者使多个配置使用场景之间出现不符合预期的共享行为。

此次修复聚焦默认认证用户配置的比较逻辑与共享逻辑,使默认值在处理过程中更加正确、稳定。

三、H265 与媒体基础能力:修复长期参考帧 DTS 提取

在 H265 流处理方面,v1.21.1 修复了包含长期参考图片流的 DTS 提取问题。

H265 视频流中可能包含长期参考图片。对于这类流,如果 DTS 提取逻辑不正确,就可能影响时间戳处理和后续封装、转发或播放流程。

本次修复来自媒体公共组件更新,对应事项 371。修复后,包含长期参考图片的 H265 流可以得到正确的 DTS 提取结果。

四、MP4 与分段 MP4:提升封装、解析与长时间媒体轨道兼容性

v1.21.1 对普通 MP4 与分段 MP4 的支持进行了多项重要修复,覆盖样本大小、H265 SPS 校验、缺少编辑列表、读取定位错误、时序字段和超长轨道等场景。

1. 支持固定样本大小的 stsz

本次更新支持stsz中使用固定样本大小的媒体文件,对应事项 5803 和媒体组件事项 373。

stsz是 MP4 中与样本大小相关的结构。当媒体轨道使用固定样本大小时,解析逻辑需要正确识别这一模式。此前如果相关支持不足,可能导致特定 MP4 文件无法被正常处理。

v1.21.1 增加这一兼容能力后,可正确支持使用固定样本大小的stsz结构。

2. 恢复入站 H265 SPS 检查

普通 MP4 与分段 MP4 均恢复了对入站 H265 SPS 的检查,对应媒体组件事项 374。

有效的 H265 SPS 是重新封装 MP4 所必需的数据。如果没有有效 SPS,就无法正确生成或回写 MP4。因此,本次版本恢复了对入站 H265 SPS 的校验。

这一调整意味着:当输入 H265 流中的 SPS 无效时,系统会重新执行必要检查,而不是继续进入可能无法正确封装 MP4 的流程。

3. 支持没有 edts 的轨道

v1.21.1 支持没有edts的 MP4 轨道,对应媒体组件事项 375。

根据 ISO/IEC 14496-12 的 8.6.5 节,编辑框是可选的。此前,没有edts的轨道可能会被拒绝,并返回类似“unexpected box 'mdia'”的错误。

本次修复后,缺少edts的媒体轨道不会再因为这一可选结构不存在而被错误拒绝。

4. 正确返回 GetPayload 的 seek 错误

本次更新修复了GetPayload在定位读取时未正确返回 seek 错误的问题,对应媒体组件事项 376。

此前,GetPayload在执行 seek 后检查了错误的变量。因此,当 seek 失败时,错误可能被忽略,读取操作会从读取器的当前位置继续执行。

这种情况可能造成读取位置错误,进而导致载荷读取结果不正确。v1.21.1 修复后,seek 失败会被正确识别并返回,避免从错误位置读取媒体载荷。

5. 正确填充 HvcC 的 NumTemporalLayers 与 TemporalIdNested

普通 MP4 与分段 MP4 均修复了 HvcC 参数填充问题,对应媒体组件事项 379。

本次修复会根据 H265 SPS 正确填充以下字段:

  • •NumTemporalLayers

  • •TemporalIdNested

这两个字段与 H265 视频的时间层信息相关。此前如果未根据 SPS 正确填写,可能导致生成的 HvcC 配置信息不完整或不准确。

6. 支持超过 2 的 32 次方时间刻度的轨道

v1.21.1 支持时长超过 2 的 32 次方 ticks 的媒体轨道,对应媒体组件事项 377。

对于超长时间运行的流、长时长录像或时间刻度累计较大的 MP4 轨道,时间值可能超过传统 32 位范围。此前这样的轨道可能无法被正确处理。

本次更新提升了 MP4 对超长轨道的兼容能力。

五、RTSP:MJPEG、MPEG-4 Audio LATM 与 SDP 解析修复

RTSP 相关改动覆盖 MJPEG、MPEG-4 Audio LATM 和 SDP 三部分。

1. 拒绝保留的 MJPEG 量化值 127

本次版本修复 RTP MJPEG 对量化值的校验逻辑,对应 RTSP 组件事项 1161。

RFC 2435 中规定,量化值 100 到 127 为保留值。此前的判断条件使用了Quantization < 127,导致量化值 127 没有被正确拒绝。

v1.21.1 修复后,会拒绝保留量化值 127,从而使校验行为符合保留值范围要求。

2. MPEG-4 Audio LATM 复用配置层不再触发异常退出

本次更新修复了 MPEG-4 Audio LATM 在某个层复用配置时可能发生异常退出的问题,对应 RTSP 组件事项 1162。

当某个 LATM 层复用已有配置时,处理逻辑需要正确识别并使用已有配置。此前这一场景可能导致程序发生异常退出。

修复后,复用配置的层可以被正确处理,不再因该情况触发异常。

3. SDP 支持 origin 中的超大数值

v1.21.1 提升了 SDP 的兼容性,支持 origin 字段中的超大数字,对应事项 5949 与 RTSP 组件事项 1171。

SDP 的 origin 信息中可能出现超出普通数值处理范围的大型数字。此前,如果解析逻辑无法处理这类数值,就可能导致 SDP 解析失败。

本次修复后,SDP origin 中的超大数值能够被支持。

六、RTMP:H265 配置字段修复与 DJI 独立 SEI 支持

RTMP 部分同样包含两项针对视频流兼容性的改动。

1. 根据 SPS 正确填充 HvcC 时间层字段

RTMP 处理逻辑中,也修复了 HvcC 的NumTemporalLayers和TemporalIdNested填充问题,对应 RTMP 组件事项 129。

修复方式与 MP4、分段 MP4 部分一致:从 H265 SPS 中提取相关信息,并据此正确填写 HvcC 字段。

2. 支持来自 DJI 无人机的独立 SEI

v1.21.1 的 RTMP reader 支持来自 DJI 无人机流中的独立 SEI,对应事项 5221 和 RTMP 组件事项 130。

部分 DJI 无人机输出的视频流会包含独立存在的 SEI 单元。此前,如果读取逻辑无法正确处理这些独立 SEI,可能影响流的后续解析或播放。

本次更新增加对这一类独立 SEI 的支持。

七、HLS:会话由服务器统一管理,关闭后的返回语义更准确

HLS 是本次版本改动较集中的模块之一,核心方向是会话管理重构与关闭状态下的响应优化。

1. HLS 会话改由服务器管理

v1.21.1 让 HLS 服务器负责管理会话,对应事项 6239。

此前,HLS 会话的生命周期与 muxer 存在关联。此次调整后,会话生命周期从 muxer 中分离出来,由 HLS 服务器统一管理。

这一改动带来性能提升。原因在于:查找会话时,现在只需要遍历单个互斥锁,而不再需要像此前一样经过两个通道。

因此,本次 HLS 会话重构包含两层变化:

  • • 会话生命周期不再绑定 muxer;

  • • 会话查找路径更简化,只需经过单个互斥锁。

2. muxer 已关闭但会话仍有效时返回 404

本次版本修复了一个 HLS 会话与 muxer 关闭后的状态判定问题,对应事项 5736 和 6240。

HLS muxer 关闭后,相关 HLS 会话会保留最多 30 秒。在这段时间内,服务器仍可处理属于这些会话的入站请求。

这一机制的目的,是让服务器能够将此类请求正确分类为 404,而不是错误地归类为 401。

也就是说,当会话仍然有效,但对应 muxer 已关闭时,服务端将返回 404。

3. 会话不存在时调整错误信息

v1.21.1 还修改了 HLS 会话未找到时返回的错误信息,对应事项 6241。

新的行为与 RTSP 保持一致:当会话不存在时,返回“session not found”一类的会话未找到信息,而不是返回“authentication error”。

认证错误应仅用于创建会话时的认证失败,而不应被用于已经进入会话使用阶段、但目标会话不存在的情况。

这一改动让 HLS 的错误语义更加准确:

  • • 创建会话失败时,认证错误仍用于认证场景;

  • • 使用会话时找不到会话,则返回会话未找到信息。

4. muxer 关闭时返回 404

HLS muxer 本身也调整为在关闭状态下返回 404,对应 HLS 组件事项 394。

这一调整与前述会话保留、关闭后请求分类逻辑相互配合,使关闭状态下的 HTTP 响应更加清晰。

八、WebRTC:解决 AV1 卡住问题,修复 DJI 无人机视频解码停滞

WebRTC 部分包含两个直接影响浏览器播放体验的修复,以及一个网络接口配置能力补充。

1. 通过移除填充数据修复 AV1 播放卡住

v1.21.1 修复了 AV1 视频在浏览器中可能卡住的问题,对应事项 5632、5774 和 6242。

多个编码器会生成 AV1 OBU padding,也就是 OBU 填充数据。实际验证表明,移除这些填充数据能够解决大多数浏览器播放此类流时卡住的情况。

因此,本次更新会剥离 AV1 OBU padding,以改善浏览器播放稳定性。

该修复主要针对浏览器播放场景,解决部分 AV1 流在播放过程中停滞的问题。

2. 过滤特定 DJI SEI,修复浏览器解码卡住

v1.21.1 修复了 DJI 无人机流在浏览器中出现视频解码卡住的问题,对应事项 5221、6051 和 6243。

DJI 无人机视频流中包含某些 SEI 单元,这些单元具有以下特征:

  • • SEI payload type 为 5;

  • • 包含特定 UUID。

这些 SEI 单元似乎会导致 Chrome 和 Firefox 中的视频播放停滞。为处理这一问题,本次版本会过滤掉这些特定 SEI 单元。

需要注意的是,这与 RTMP 部分支持独立 SEI 的更新并不矛盾:RTMP reader 增加了对 DJI 独立 SEI 的支持,而 WebRTC 则针对会导致浏览器解码停滞的特定 SEI 内容进行过滤。

3. 支持排除网络接口

WebRTC 新增了排除网络接口的能力,对应事项 5788。

通过这一能力,可以在 WebRTC 网络接口选择过程中排除指定接口。

九、依赖组件升级:媒体、网络、加密、WebRTC 与数据处理组件全面更新

v1.21.1 同步更新了多项依赖,涉及字节格式化、密钥处理、MP4、HLS、RTMP、RTSP、媒体处理、性能分析、加密、ICE、SDP、传输、WebRTC、数据库、文本处理、协议缓冲等模块。

以下为本次更新的完整依赖变更。

  • •code.cloudfoundry.org/bytefmt从v0.88.0更新至v0.90.0

  • •github.com/MicahParks/keyfunc/v3从v3.8.1更新至v3.8.2

  • •github.com/abema/go-mp4从v1.7.1更新至v1.7.3

  • •github.com/bluenviron/gohlslib/v2从v2.4.4更新至v2.4.5

  • •github.com/bluenviron/gortmplib从v1.0.2更新至v1.0.3

  • •github.com/bluenviron/gortsplib/v5从v5.6.5更新至v5.6.6

  • •github.com/bluenviron/mediacommon/v2从v2.9.4更新至v2.9.5

  • •github.com/gin-contrib/pprof从v1.5.4更新至v1.5.5

  • •github.com/matthewhartstonge/argon2从v1.5.7更新至v1.6.3

  • •github.com/pion/ice/v4从v4.4.1更新至v4.4.2

  • •github.com/pion/interceptor从v0.1.47更新至v0.1.48

  • •github.com/pion/sdp/v3从v3.0.19更新至v3.0.20

  • •github.com/pion/transport/v4从v4.1.0更新至v4.1.1

  • •github.com/pion/webrtc/v4从v4.2.19更新至v4.2.20

  • •golang.org/x/crypto从v0.55.0更新至v0.57.0

  • •golang.org/x/net从v0.58.0更新至v0.59.0

  • •golang.org/x/sync从v0.22.0更新至v0.23.0

  • •golang.org/x/sys从v0.47.0更新至v0.48.0

  • •golang.org/x/term从v0.45.0更新至v0.46.0

  • •github.com/bytedance/gopkg从v0.1.3更新至v0.1.4

  • •github.com/bytedance/sonic从v1.15.0更新至v1.15.2

  • •github.com/bytedance/sonic/loader从v0.5.0更新至v0.5.1

  • •github.com/cloudwego/base64x从v0.1.6更新至v0.1.7

  • •github.com/gabriel-vasile/mimetype从v1.4.12更新至v1.4.13

  • •github.com/gin-contrib/sse从v1.1.0更新至v1.1.1

  • •github.com/go-playground/validator/v10从v10.30.1更新至v10.30.3

  • •github.com/goccy/go-json从v0.10.5更新至v0.10.6

  • •github.com/klauspost/cpuid/v2从v2.3.0更新至v2.4.0

  • •github.com/mattn/go-isatty从v0.0.20更新至v0.0.23

  • •github.com/pelletier/go-toml/v2从v2.2.4更新至v2.4.3

  • •github.com/pion/dtls/v3从v3.1.5更新至v3.1.8

  • •github.com/pion/mdns/v2从v2.1.0更新至v2.2.0

  • •github.com/pion/srtp/v3从v3.0.13更新至v3.0.15

  • •github.com/pion/stun/v3已移除

  • •github.com/pion/turn/v5从v5.0.13更新至v5.1.0

  • •go.mongodb.org/mongo-driver/v2从v2.5.0更新至v2.8.0

  • •golang.org/x/arch从v0.22.0更新至v0.29.0

  • •golang.org/x/text从v0.41.0更新至v0.42.0

  • •google.golang.org/protobuf从v1.36.10更新至v1.36.11

  • • 新增github.com/pion/stun/v4,版本为v4.0.0

  • •hls.js从v1.7.2更新至v1.7.3

十、发布安全:从源码构建、公开流程与二进制校验能力

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

该发布流程完全公开,可以防止发布产物在构建过程中被修改,或受到外部干扰。

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

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

还可以下载checksums.sha256文件,并执行以下命令验证二进制校验和:

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

十一、版本总结

代码地址:github.com/bluenviron/mediamtx

mediamtx v1.21.1 的更新重点可以归纳为以下几个方面:

  • • 浏览器 POST 请求增加允许来源服务端校验;

  • • 修复默认内部认证用户配置的比较和共享;

  • • 改进 H265 长期参考图片流的 DTS 提取;

  • • 强化 MP4、分段 MP4 对样本大小、SPS、编辑列表、长轨道和 HvcC 参数的兼容能力;

  • • 修复 RTSP 中 MJPEG、MPEG-4 Audio LATM、SDP 的边界问题;

  • • 改进 RTMP 对 H265 配置及 DJI 无人机独立 SEI 的处理;

  • • 重构 HLS 会话管理机制,并优化 muxer 关闭后的 404 响应行为;

  • • 修复 WebRTC 中 AV1 OBU padding 导致的浏览器播放卡住问题;

  • • 过滤可能导致浏览器解码停滞的 DJI 特定 SEI;

  • • 增加 WebRTC 排除网络接口的能力;

  • • 升级媒体处理、网络传输、WebRTC、加密、数据库及多个基础依赖;

  • • 提供发布构建来源与二进制校验验证方式。

对于使用 HLS、WebRTC、RTMP、RTSP、MP4 录像或 H265 视频流的场景,mediamtx v1.21.1 将重点改善安全校验、协议兼容、长时间流处理和浏览器播放稳定性。

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

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
“全班就2个女生表情正常”,廉价毕业照被吐槽,家长咋不管管

“全班就2个女生表情正常”,廉价毕业照被吐槽,家长咋不管管

番外行
2026-10-06 19:03:28
中国女篮21次失误,日本仅9次!U18亚洲杯小组赛收官战:中国女篮68-73惜败日本

中国女篮21次失误,日本仅9次!U18亚洲杯小组赛收官战:中国女篮68-73惜败日本

开成运动会
2026-10-06 23:29:57
陕西女警花卧底被揪出,被歹徒折磨7天解救:人都已经垮了

陕西女警花卧底被揪出,被歹徒折磨7天解救:人都已经垮了

罪案洞察者
2025-03-07 08:59:25
打俄军神器海马斯真要过时了?乌军越来越少使用海马斯,波兰可能要转卖刚到手的20套美国海马斯火箭炮!

打俄军神器海马斯真要过时了?乌军越来越少使用海马斯,波兰可能要转卖刚到手的20套美国海马斯火箭炮!

古古聊军事
2026-10-06 19:22:32
5万公里高铁背后,大量女乘务员纷纷离职,藏着多少现实困境?

5万公里高铁背后,大量女乘务员纷纷离职,藏着多少现实困境?

猫叔东山再起
2026-10-05 18:35:13
别被“某音”前凸后翘的网红骗了

别被“某音”前凸后翘的网红骗了

健身厨屋
2026-06-17 18:56:01
热苏斯朋友:事态之所以被点燃,罪魁祸首就是C罗身边的人

热苏斯朋友:事态之所以被点燃,罪魁祸首就是C罗身边的人

懂球帝
2026-10-06 17:53:34
松岛辉空发文庆祝!张本智和放话:要夺回第一并在半决赛击败对手

松岛辉空发文庆祝!张本智和放话:要夺回第一并在半决赛击败对手

排球黄金眼
2026-10-06 09:19:47
齐达内封神!四大替补踢疯了:14分钟连造4球 法国4-1逆转FIFA第8

齐达内封神!四大替补踢疯了:14分钟连造4球 法国4-1逆转FIFA第8

狍子歪解体坛
2026-10-06 04:47:20
演员张小婉经纪人曝男同事被导演揩油!娱乐圈的恶,从来不只针对女明星

演员张小婉经纪人曝男同事被导演揩油!娱乐圈的恶,从来不只针对女明星

师维
2026-10-06 23:05:18
中国人还在快乐过节,世界已发生很大变化

中国人还在快乐过节,世界已发生很大变化

牛弹琴
2026-10-06 07:56:47
调整!今晚中国男足直播表:CCTV5,CCTV5+不播,CCTV16节目单

调整!今晚中国男足直播表:CCTV5,CCTV5+不播,CCTV16节目单

阿嵀体育评论
2026-10-06 16:03:09
《兰香如故》大结局:吕蕺儿经商20年重回金陵!许兰香独撑林家濒临绝境,蕺儿携十万两白银救急,两姐妹后巷抱头痛哭:我再也不走了

《兰香如故》大结局:吕蕺儿经商20年重回金陵!许兰香独撑林家濒临绝境,蕺儿携十万两白银救急,两姐妹后巷抱头痛哭:我再也不走了

喵喵的追剧笔记
2026-10-05 19:09:22
“生了这种闺女,天都塌了!”,家长晒中学女儿,网友看着,称实在夸不出口

“生了这种闺女,天都塌了!”,家长晒中学女儿,网友看着,称实在夸不出口

蝴蝶花雨话教育
2026-10-06 12:51:00
看完国足0-1塔吉克斯坦!不得不承认的5个事实,韦世豪还是不成熟

看完国足0-1塔吉克斯坦!不得不承认的5个事实,韦世豪还是不成熟

烟雨洛神生
2026-10-06 23:14:23
那些鼓吹色情合法化的人,看看泰国色情合法化如今的现状!

那些鼓吹色情合法化的人,看看泰国色情合法化如今的现状!

童童聊娱乐啊
2026-10-06 01:07:06
医生发现:天天走路锻炼的糖尿病人,过不了多久,会有 8 大好处

医生发现:天天走路锻炼的糖尿病人,过不了多久,会有 8 大好处

华庭讲美食
2026-10-06 00:53:38
蔡康永家世被扒,评论区:这背景不独才怪!

蔡康永家世被扒,评论区:这背景不独才怪!

默默有话说
2026-10-05 16:25:09
历史规律会再次应验?中国或有可能,成为最后一个超级大国?

历史规律会再次应验?中国或有可能,成为最后一个超级大国?

黄丽搞笑小能手
2026-10-06 12:54:52
小米SU7高速实测:700km标称续航,实际跑了多少?

小米SU7高速实测:700km标称续航,实际跑了多少?

侃故事的阿庆
2026-10-06 08:16:51
2026-10-07 00:04:49
moonfdd incentive-icons
moonfdd
福大大架构师每日一题
1497文章数 83关注度
往期回顾 全部

科技要闻

物理学奖揭晓!一位天体物理科学家独享

头条要闻

婚宴14道主菜上错7道 新郎父亲:亲友说菜太差 没面子

头条要闻

婚宴14道主菜上错7道 新郎父亲:亲友说菜太差 没面子

体育要闻

30天30队·雄鹿:没有扬尼斯,重新试错吧

娱乐要闻

身家千万独居的王曼昱,私底下有多壕

财经要闻

杨植麟断腕:Kimi的至暗时刻与远征

汽车要闻

智能化再提升 2027款东风标致、东风雪铁龙新车更人性化了

态度原创

健康
艺术
数码
教育
军事航空

刷酸祛痘,为什么有人翻车?

艺术要闻

等了20年!李祖原操刀“高雄之门”,正式动工

数码要闻

穷人救星!AMD锐龙5 5600X3D暴降至1072元:成最便宜X3D处理器

教育要闻

今年成都又有一批新校投用,划片表里藏着哪些变化家长该看

军事要闻

也门政府军称收复红海港口城市穆哈

无障碍浏览 进入关怀版