|
|
788327047c
|
feat(audio): 使用 oto/v3 重构音频播放系统,移除 beep/v2 依赖
核心变更:
- 实现全局 oto.Context 单例管理(sync.Once)
- 实现一次性播放:PlayWav/PlayMP3(支持 context 取消)
- 实现 BGM 循环播放:PlayMP3Loop(atomic.Bool + WaitGroup)
- 迁移所有业务层到新 API(TTS/BGM/待机音频)
- 添加完整的单元测试(6/6 通过)
技术栈:
- oto/v3 v3.3.2(低级音频播放)
- hajimehoshi/go-mp3 v0.3.4(MP3 解码)
- youpy/go-wav v0.3.2(WAV 解码)
移除依赖:
- gopxl/beep/v2 及所有相关依赖
优化:
- 流式播放,无需预先加载
- 并发安全,无竞态条件
- 资源管理清晰(defer cleanup)
- Sleep 间隔优化(1ms → 10ms,降低 CPU 占用)
|
2026-04-08 19:21:48 +08:00 |
|
|
|
e4c34f0eec
|
refactor(tts): TTS 极简重构与代码质量提升
## 核心改进
### TTS 模块重构
- 统一 API,仅保留 Sound(ctx, text) 方法
- 优化日志,添加 [TTS] 前缀和结构化字段
- 实现互斥等待:同时只播放一个,新请求等待旧播放完成
- 响应 context 取消:超时或断开时立即停止播放
- 移除全局 context 存储,改为参数传递
- 简化实例化:New(config) 无需传入 context
### 代码质量提升
- 修复 PlayWav/PlayMP3 的死循环 bug(context 取消时缺少 return)
- 修复 standby_ctrl/pause.go 的忙循环(添加 Sleep 避免CPU 100%)
- 添加关键路径错误传播(only_video.go 不再忽略播放错误)
- 新增 pkg/errorsx/handler.go 统一错误处理工具
## 代码优化
- TTS 代码从 234 行精简到 166 行(减少 29%)
- 移除冗余状态管理(playing 标志、等待循环)
- 利用互斥锁的阻塞特性实现优雅等待
- 保持简洁易读的代码风格
## 行为说明
✅ 同时只能播放一个 TTS(互斥)
✅ 新请求等待当前播放完成(不打断)
✅ 响应 context 取消(超时停止)
✅ 日志完善,便于排查问题
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-08 14:05:16 +08:00 |
|
|
|
4349413887
|
refactor(utils): 禁用屏幕开关并优化 xset 查找逻辑
- 注释掉所有 BlankOpen/BlankClose 调用,启动不再关屏
- 将 xset 路径查找改为 init + sync.Once 缓存,避免重复执行
- 清理未使用的 utils 导入
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
|
2026-04-07 16:52:33 +08:00 |
|
|
|
ec48fad615
|
对投影机打开状态,每半小时轮询检查
|
2025-04-29 14:15:02 +08:00 |
|
|
|
e1384504f1
|
增加待机报文缓存,无网状态也能执行待机任务;投影仪指令结果以设备状态为准
|
2025-04-29 13:48:35 +08:00 |
|
|
|
4189705922
|
优化逻辑
|
2025-03-13 19:18:10 +08:00 |
|
|
|
febcdfdbf7
|
mqtt加入认证,优化视频播放与浏览器
|
2025-03-07 16:04:19 +08:00 |
|
|
|
c71e8bc13d
|
修复投影仪控制
|
2025-03-05 11:03:19 +08:00 |
|