开发流程。。。
2026/7/10 19:29:52 网站建设 项目流程

这个方案更合理!结合了自动检测和手动触发

我理解了你的新思路:

工作流程

┌─────────────────────────────────────────────────────────────────────┐ │ SERVER.PY 主流程 │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────┐ │ 启动服务器 │ │ - 后台轮询B站API(保持不变) │ │ - 检测当前播放视频 │ │ - 检测到新视频自动生成音频 │ │ - 但不发送音频流(待机) │ └───────────────────────────────┘ │ ▼ ┌───────────────────────────────┐ │ 等待手机控制指令 │ │ - 手机连接电脑热点 │ │ - 打开网页控制面板 │ └───────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────────┐ │ 手机控制流程 │ └─────────────────────────────────────────────────────────────────────┘ │ ┌───────────────┴───────────────┐ │ │ ▼ ▼ ┌─────────────────────┐ ┌─────────────────────┐ │ 点击 "开始播放" │ │ 点击 "暂停" │ │ 从第0秒开始发送 │ │ 停止发送音频 │ └─────────────────────┘ └─────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 音频播放逻辑(顺序播放) │ │ 1. 从当前音频段的0秒开始发送 │ │ 2. 发送完整个文件(约23秒) │ │ 3. 检查秒数是否达到20的整数倍 │ │ - 是 → 切换到下一段 │ │ - 否 → 继续播完当前段 │ │ 4. 所有音频播完 → 回到待机状态 │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 后台任务(持续运行) │ │ - 监控B站当前播放视频 │ │ - 如果视频切换,自动生成新音频 │ │ - 更新当前视频的音频段列表 │ │ - 更新总时长 │ └─────────────────────────────────────────────────────────┘

详细流程

阶段1:启动 + 待机
启动 server.py │ ├─ 启动后台轮询线程(每4秒检测B站) │ ├─ 检测到视频 → 记录 bvid │ ├─ 检查音频文件是否存在 │ │ ├─ 存在 → 记录音频段列表 │ │ └─ 不存在 → 调用 watch.py 生成 │ └─ 视频切换 → 更新音频段列表 │ ├─ 启动HTTP服务器 │ ├─ / → 控制网页 │ ├─ /stream → 音频流(待机状态不发送数据) │ └─ /status → 当前状态(视频信息、进度等) │ └─ 等待手机连接
阶段2:手机控制
手机连接电脑热点 → 打开 http://电脑IP:8080/ │ ▼ 网页显示: - 当前视频标题 - 总时长 - 已生成音频段数 - 播放状态(待机/播放中/已播完) - 控制按钮:[开始播放] [暂停] [重置] - 进度条显示 │ ▼ 点击 [开始播放] │ ▼ 服务器开始从第0段发送音频 │ ├─ 播放第1段(0-20s,实际23秒) │ └─ 发送完整文件 │ ├─ 播放第2段(21-41s,实际23秒) │ └─ 发送完整文件 │ ├─ 播放第3段(42-62s,实际23秒) │ └─ 发送完整文件 │ ├─ ... 直到所有段播完 │ └─ 所有段播完 → 回到待机状态
阶段3:切换逻辑
播放过程中,后台轮询持续工作: │ ├─ 检测到视频切换 │ ├─ 更新音频段列表 │ ├─ 重置播放进度 │ └─ 回到待机状态(等待重新开始) │ └─ 检测到同一个视频 ├─ 继续播放 └─ 不中断

与ESP32的关系

┌─────────────────────────────────────────────────────────────────────┐ │ ESP32 角色 │ └─────────────────────────────────────────────────────────────────────┘ │ ▼ ┌───────────────────────────────┐ │ 连接电脑热点 │ │ 接收音频流并播放 │ │ (无控制逻辑,纯接收端) │ └───────────────────────────────┘

ESP32只负责:

  1. 连接电脑热点
  2. 请求/stream获取音频
  3. 播放音频(通过I2S)

所有控制逻辑在电脑上,手机通过网页控制电脑。

优势

  1. 保留B站自动检测:视频切换自动处理
  2. 手动控制播放:用户决定何时开始
  3. 顺序播放:不会漏段,不会重叠
  4. ESP32简化:只需接收和播放
  5. 手机控制直观:大按钮,适合操作

下一步实现

按这个逻辑重写server.py

  1. 保留后台轮询(检测视频、生成音频)
  2. 添加播放状态机(待机 → 播放中 → 完成)
  3. 添加控制API(开始、暂停、重置)
  4. 修改/stream逻辑(根据播放状态发送音频)
  5. 提供控制网页

开始写代码?

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询