引言

MediaMTX(原rtsp-simple-server)是一款轻量级、高性能的流媒体服务器,广泛应用于实时视频传输、监控和流媒体处理场景。近日,MediaMTX发布了v1.15.0版本,带来了多项重要功能更新和性能优化。本文将详细介绍此次更新的核心内容,包括RTMP协议增强、RTSP-over-HTTP/WebSocket支持、安全改进及依赖库升级等。

新增主要功能 通用

  • • 文档已迁移到专用网站:https://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隧道)的支持,满足了现代流媒体应用的需求。建议用户尽快升级至最新版本,以获取更好的性能和稳定性。

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