打开网易新闻 查看精彩图片

近日,开源 WebRTC 项目 LiveKit 正式发布了 v1.9.1 版本。该版本在稳定性、功能扩展和协议支持等方面进行了多项重要更新,进一步提升了实时音视频通信的可靠性和性能。以下是本次更新的详细内容解析:

修复(Fixed)

  • • 修复 pub/sub 轨道指标(track metrics)交换的问题

  • • 修复 SDP rid 的 bug,只清除溢出的部分

  • • 在downtrack.Bind时不要检查bindState

  • • 当请求的画质高于最大可用层时,返回最高可用层

  • • 修复participant.go中数据包ParticipantIdentity覆盖逻辑的问题

  • • 修复 iOS 上 Chrome 移动版的 SVC 编码问题

  • • 迁移时offer可能为nil

  • • 修复依赖:更新github.com/livekit/protocol模块到 v1.39.3

  • • 为图层索引增加边界检查

  • • 如果是旧客户端且为nil,不要发送leave

  • • 修复transferParticipantRingingTimeout被跳过的问题

  • • 处理 track info 中无编码器(codec)的情况

  • • 修复遗漏的解锁

  • • 修复StopEgress的超时处理

  • • 修复:在刷新 token 时确保参与者类型被设置

  • • 不要为 RED 广告 NACK

  • • 不要同时发送abs-send-timetwcc

  • • 防止在确定 BWE 类型时的竞争条件

新增(Added)
  • • 将 Devin 加入 readme,使其每周自动更新 DeepWiki

  • • 允许向 RTC 端点传递额外属性

  • • 当在 token 中使用凭据时发出警告

  • • 为 webhook 的统计桶添加协议依赖

  • • 真正拾取 webhook 队列长度统计的协议更改

  • • 实现房间指标的可观测性

  • • 数据通道的端到端可靠性

  • • 为 WHIP 添加多码流(simulcast)支持

  • • 在 SDP 信令消息中添加 ID

  • • 在 TrackInfo 中设置并使用 rid/spatial layer

  • • 添加丢弃乱序可靠消息的日志

  • • chore: 在作业创建时设置 workerid

  • • 在移动 egress/agent 参与者时返回错误

  • • SVC 中通过 RID 映射到空间层

  • • feat(cli-flags): 添加 CPU 性能分析选项

  • • 默认启用 H265

  • • 开始实现 Signalling V2 协议

  • • Signal v2:使用封装和分片作为传输消息格式

  • • 将所有信令消息分组到participant_signal

  • • 开始实现信号接收器接口

  • • 信号处理接口以及参与者特定的 HTTP PATCH

  • • 拆分信令分段器与重组器

  • • 填充 v2 中不太可能更改的消息

  • • 使用来自 protocol 的信令工具

  • • v2 信令验证端点

  • • 更多 v2 信令更改

  • • 小改动:保持 RPC 类型在服务级别

  • • 在边缘 Prometheus 统计中添加国家标签

  • • HTTP DELETE 参与者会话

  • • 实现可建立订阅者 PeerConnection

  • • 实现可连接发布者 PeerConnection 并用于异步信令

  • • 支持将加入请求作为 proto + Base64 编码的查询参数

  • • 使用包装的加入请求以同时支持压缩和非压缩

  • • 在加入请求中处理SyncState

  • • 支持基于编码器的每码流多层

  • • 支持从客户端传入视频层模式并使代码更好地识别 MIME 类型

  • • 当参与者会话被关闭时发送participant_connection_aborted

  • • 支持 G.711 A-law 和 U-law

  • • 从媒体流中提取视频分辨率

  • • 更新 mediatransport 工具以支持 3478 端口

  • • 单一 PeerConnection 模式

  • • 在 SVC 中处理帧号回绕(wrap back)

  • • 使用来自房间预设的离开(departure)超时

  • • 使用RequestResponse报告协议处理错误

改动(Changed)
  • • 在声明联合排队区域之前添加趋势检查

  • • 小改动:添加/使用长度检查的辅助函数

  • • 删除未使用的 ws 信令读取循环

  • • 在关闭时刷新统计

  • • 不再要求为 WHIP 参与者提供创建权限

  • • 在房间管理器构造函数中创建客户端配置管理器

  • • 删除未发布的层的默认 rids

  • • 如果 SDP 中不存在 rid,则清除 rids

  • • 还原清除 RIDs 的改动

  • • 从请求中获取 ClientInfo

  • • 删除未使用代码

  • • 复用已编译的客户端配置脚本

  • • feat(cli): 升级到urfave/cli/v3

  • • 将 egress roomID 加载移至启动器

  • • 记录之前的分配以查看变化

  • • 不仅仅是清理接收器——移除该接口

  • ClearAllReceivers接口现在用于暂停中继轨道

  • • 临时更改:使用预定义的 rids

  • • 还原 "临时更改:使用预定义的 rids"

  • • 记录 SDP rids 以更好理解其映射

  • • 限制仅在 WHIP 路径中从 SDP 提取 rids

  • • 为所有编码器设置 rids

  • • 对于无效的 rid + track info 组合,返回默认层

  • • 规范化已知的 rids

  • • 将 agent id 转发到作业状态

  • • 在StopEgress中将ErrNoResponse映射到ErrRequestTimedOut,避免返回 503

  • • 当 PeerConnection 已连接时将参与者标记为活动

  • • 处理RoomConfig中的 Metadata 字段

  • • [ readme-manager] 更新 README

  • • 将RTCRest重命名为 WHIP

  • • 删除 v2 信令

  • • 清理遗漏的 v2 代码

  • • 更新 Go 依赖

  • • 当可用时,将 SDP cid 填入 track info

  • • 将信令消息记录为调试级别

  • • 在媒体节点上记录信令消息

  • • 增加轨道设置信息的日志

  • • 更新 pion 依赖

  • • 更新 golang Docker 版本到 v1.25

  • • 更新github.com/livekit/protocol到 v1.40.0

  • • 删除不必要的检查

  • • 分块房间更新

  • • 将已知的 rids 从012切换为210,用于 OBS

  • • 初始化 UA(User-Agent)解析器只执行一次

  • • 在迁移场景中恢复使用 answer

  • • 在单一 PeerConnection 模式下更好地处理迁移

总结

LiveKit v1.9.1 版本在稳定性、功能丰富性和协议支持方面均有显著提升,尤其针对移动端兼容性、音频编码支持和信令传输效率进行了重点优化。建议所有用户升级至该版本,以获得更稳定、高效的 WebRTC 通信体验。

下载与文档:

项目地址:https://github.com/livekit/livekit

官方文档:https://docs.livekit.io

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