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 完全一致