引言
MediaMTX(原rtsp-simple-server)是一款轻量级、高性能的流媒体服务器,广泛应用于实时视频传输、监控和流媒体处理场景。近日,MediaMTX发布了v1.15.0版本,带来了多项重要功能更新和性能优化。本文将详细介绍此次更新的核心内容,包括RTMP协议增强、RTSP-over-HTTP/WebSocket支持、安全改进及依赖库升级等。
新增主要功能
通用
- 文档已迁移到专用网站:mediamtx.org/
网站内容基于 MediaMTX 仓库中的 markdown 文件,并可以通过 GitHub 编辑。
RTMP
- 支持更多增强的 RTMP 功能:
- 支持读取 AV1、VP9、H265、Opus、AC-3、G711、LPCM
- 支持一次读取多个视频或音频轨道。
RTSP
- 支持 RTSP-over-HTTP
- 支持 RTSP-over-WebSocket
修复与改进
通用
- 重构:使用内置的 max/min 简化代码
- 重构:移除重复的 http 中间件
- 播放:修复认证错误期间的崩溃问题
- 在建立 TLS 连接时发送服务器名称(SNI)
- H264:修复 DTS 提取器与 Apple VT HEVC 硬件编码器的兼容性问题
- H265:修复 DTS 提取器与 Apple VT HEVC 硬件编码器的兼容性问题
- AC3:修复对 bsid 不等于 8 的支持
- 处理 AV1 时提升性能
- H265:修复 DTS 提取器与 libx265 的兼容性问题
- 更新 readme
- H265:修复引入的 DTS 提取器回归问题,恢复对同时作为 B 帧的 IDR 帧的支持。
API
- 为 RTSP 连接与会话添加 tunnel 和 profile
RTSP
- 切换到 gortsplib/v5
- 修复关闭会话时的内存泄漏
- 支持通过 HTTP 或 WebSocket 隧道的流读取
- 修复 NTP 小数部分的编码和解码
- 修正将 KLV 数据包识别为 SMPTE336M 编码时的拼写错误
- 修复 SDP 解析重复时间字段但无偏移的情况
- 客户端:修复在打开 UDP 监听器时的崩溃
- 服务端:修复引入的 panic
- 服务端:防止在通过 HTTP 隧道时使用 UDP
RTMP
- 提高与非标准摄像机控制消息的兼容性
- 将实现迁移到 gortmplib
HLS
- 新增
disablepictureinpicture参数 - 提升 AV1 处理性能
WebRTC
- 新增
disablepictureinpicture参数
RPI 摄像机
- 修复在重新加载参数时的竞争条件
- 降低 GPU 占用,避免分配无用的缓冲区
- 使用 openh264 作为软件 H264 编码器,以避免许可问题
依赖项更新
- Go 从 1.24 升级到 1.25
- code.cloudfoundry.org/bytefmt 从 v0.45.0 升级到 v0.51.0
- github.com/MicahParks/jwkset 从 v0.9.6 升级到 v0.10.0
- github.com/bluenviron/gohlslib/v2 从 v2.2.2 升级到 v2.2.3
- github.com/bluenviron/gortsplib/v4 已移除
- github.com/bluenviron/mediacommon/v2 从 v2.4.1 升级到 v2.4.3
- github.com/gookit/color 从 v1.5.4 升级到 v1.6.0
- github.com/matthewhartstonge/argon2 从 v1.3.4 升级到 v1.4.0
- github.com/pion/rtp 从 v1.8.21 升级到 v1.8.22
- github.com/pion/sdp/v3 从 v3.0.15 升级到 v3.0.16
- github.com/pion/webrtc/v4 从 v4.1.3 升级到 v4.1.4
- github.com/stretchr/testify 从 v1.10.0 升级到 v1.11.1
- golang.org/x/crypto 从 v0.41.0 升级到 v0.42.0
- golang.org/x/sys 从 v0.35.0 升级到 v0.36.0
- golang.org/x/term 从 v0.34.0 升级到 v0.35.0
- github.com/pion/dtls/v3 从 v3.0.6 升级到 v3.0.7
- github.com/pion/srtp/v3 从 v3.0.6 升级到 v3.0.7
- github.com/pion/turn/v4 从 v4.0.0 升级到 v4.1.1
- github.com/xo/terminfo 从 v0.0.0-20210125001918-ca9a967f8778 升级到 v0.0.0-20220910002029-abceb7e1c41e
- golang.org/x/net 从 v0.43.0 升级到 v0.44.0
- golang.org/x/text 从 v0.28.0 升级到 v0.29.0
- 新增 github.com/bluenviron/gortmplib v0.1.0
- 新增 github.com/bluenviron/gortsplib/v5 v5.0.0
- github.com/bluenviron/mediamtx-rpicamera 从 v2.4.4 升级到 v2.5.0
- hls.js 从 v1.6.9 升级到 v1.6.12
安全性
二进制文件通过 Release 工作流从源码直接编译,无人工干预,防止外部篡改。
你可以通过 GitHub Attestations 验证二进制文件来源:
ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx
你也可以通过校验和验证二进制文件:
cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check
四、总结
MediaMTX v1.15.0通过增强协议支持、优化性能和完善安全机制,进一步巩固了其作为轻量级流媒体服务器的领先地位。此次更新特别注重对新兴编码格式(如AV1、HEVC)和复杂网络环境(如HTTP隧道)的支持,满足了现代流媒体应用的需求。建议用户尽快升级至最新版本,以获取更好的性能和稳定性。