Skip to content

v0.9.0

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Feb 14:19

v0.9.0 Release Notes

新特性:硬件加速转码

概述

新增 FFmpeg 硬件加速编码支持,视频转码可自动利用 GPU 完成,大幅提升转码速度并降低 CPU 占用。
启动时自动探测可用硬件编码器,无需手动配置即可生效;不可用时无感回退到原有软件编码。

支持的硬件编码器

编码器 平台 说明
h264_nvenc Windows / Linux NVIDIA GPU
h264_qsv Windows / Linux / macOS Intel Quick Sync
h264_amf Windows AMD AMF
h264_vaapi Linux VA-API
h264_videotoolbox macOS Apple VideoToolbox

配置项

config.json 新增 playback.video.encoding 字段:

{
  "playback": {
    "video": {
      "encoding": {
        "hwAccel": "auto",
        "maxJobs": 0
      }
    }
  }
}
  • hwAccel — 硬件加速模式(默认 "auto"
    • auto:启动时自动探测最佳编码器
    • nvenc / qsv / amf / vaapi / videotoolbox:强制指定
    • none:禁用硬件加速,始终使用 libx264
  • maxJobs — 最大并发转码数(默认 0 即自动:软件 2 路,硬件 4 路)

兼容性

  • 旧版 config.json 升级时 ApplyDefaults() 自动补全 encoding 字段并回写磁盘
  • 无硬件编码器的环境行为与 v0.8.x 完全一致(libx264 fast preset)
  • 运行时硬件编码失败自动标记禁用,后续请求无感切回软件编码

变更文件

新增

  • internal/media/hwaccel.go — 硬件加速探测、缓存、参数生成、运行时回退
  • internal/media/hwaccel_test.go — 探测逻辑单元测试(11 个用例)

修改

  • internal/media/transcoder.go — 视频编码参数委托 BuildVideoArgs() 统一出口;新增 SetTranscodeLimit() 支持动态并发上限
  • internal/media/transcoder_test.go — 补充 SetTranscodeLimit 测试
  • internal/config/config.go — 新增 TranscodeConfig 结构体及 PlaybackVideoConfig.Encoding 字段;Default()ApplyDefaults() 补全默认值
  • internal/config/validate.go — 新增 validateTranscodeConfig() 验证 HWAccel 白名单和 MaxJobs 非负
  • internal/config/validate_test.go — 补充 7 个验证测试用例
  • cmd/msp/main.go — 启动时调用 initHWAccel() 探测硬件并设置并发上限
  • config.example.json — 补充 encoding 字段
  • docs/CONFIG_EXAMPLE.md — 补充 encoding 配置说明(含各模式注释)
  • docs/API_REFERENCE.md — 配置响应示例展开 playback.video.encoding

验证

  • go vet ./...
  • go test ./internal/media/... ✅(全部通过,含硬件探测)
  • go test ./internal/config/... ✅(全部通过,含新验证用例)
  • go build ./cmd/msp

影响评估

  • 不引入新外部依赖,仅依赖系统已有的 FFmpeg
  • 不改动 API 协议,仅扩展配置 schema(向后兼容)
  • 对无硬件加速的环境零影响,行为与 v0.8.x 完全一致