Skip to content

Conversation

@L-aros
Copy link

@L-aros L-aros commented Dec 20, 2025

📜 标题(Title)

请提供这个Pull Request中提议的更改的简洁描述:

  • Update app/scripts/ffmpeg_install.py:使用稳定下载源重写 FFmpeg 安装流程并增强可用性。

🔍 描述(Description)

请描述这个PR做了什么/为什么这些更改是必要的:

  • 更换 FFmpeg 下载源与安装策略
    • 移除对蓝奏云页面解析的依赖(之前通过解析 HTML/JS 获取下载链接,容易因页面改版或反爬机制导致失败)。
    • 优先使用官方可信的二进制构建源:
      • 首选 Gyan.dev 发布的 ffmpeg-release-essentials.zip
      • 如果 Gyan.dev 不可访问,则回退到 GitHub(如 BtbN 的预构建版本)作为备选。
    • 使用 httpx.AsyncClient,支持重定向和超时控制,避免长时间卡死。
  • 安装路径与目录规范化
    • 解压后的目录统一规范为项目根目录下的 ffmpeg 目录(例如将 ffmpeg-8.0.1-essentials_build 结构整理到 ./ffmpeg,并确保 ffmpeg.exe 等二进制存在于该目录中);
    • 对临时目录和目标目录进行存在性检查与清理,避免遗留无用文件夹。
  • PATH 与可执行文件检测增强
    • 在安装完成后,确保应用使用的是项目本地 ffmpeg 目录中的可执行文件,而不是依赖系统 PATH 中不确定的版本;
    • ffmpeg 版本进行检测和日志记录,便于用户确认已安装版本(如 ffmpeg 8.0.1-essentials_build-www.gyan.dev)。
  • 进度与错误反馈优化
    • 在安装过程使用分阶段进度回调(下载、解压、移动文件、清理等阶段),便于 UI 层展示安装进度;
    • 对下载失败、网络错误、解压失败、文件缺失等情况提供更明确的异常信息与日志输出,方便用户排查问题。
  • 这些更改的必要性:
    • 旧的蓝奏云方案已经不稳定,容易出现“无法获取下载地址”的错误;
    • 使用官方/社区常用构建源可以显著提高安装成功率;
    • 路径规范化与日志增强让用户更容易理解当前 FFmpeg 状态和安装过程。

📝 类型(Type of Change)

这个PR引入了哪种类型的更改?(请勾选所有适用的选项)

  • 修复Bug
  • 新功能(更稳定的自动安装逻辑)
  • 代码风格更新(格式化,局部变量)
  • 重构(改进代码结构与容错)
  • 构建相关更改(依赖项,构建脚本等)
  • 其他:安装流程与用户体验优化

🏗️ 测试(Testing)

请描述您已经进行的测试:

  • 在 Windows 环境中执行自动安装流程:
    • 删除或重命名现有 ffmpeg 目录以模拟“未安装”场景;
    • 启动应用或显式触发 FFmpeg 检测逻辑,观察自动安装是否顺利完成;
    • 确认日志中输出了正确的版本信息(例如 ffmpeg version 8.0.1-essentials_build-www.gyan.dev ...)。
  • 网络异常与回退路径测试:
    • 人为阻断对 Gyan.dev 的访问(或模拟失败),验证脚本是否自动回退到 GitHub 下载源,而不是直接失败;
    • 对解压失败、文件缺失等异常情况,检查是否抛出可读的错误信息,而不是静默失败。
  • 路径与执行验证:
    • 确认项目根目录下生成 ./ffmpeg/ffmpeg.exe./ffmpeg/ffplay.exe./ffmpeg/ffprobe.exe 等;
    • 通过应用的录制流程实际调用 FFmpeg,确认能正常拉流与录制。

如果适用,请提供测试更改的说明:

  • 清理旧状态后测试:
    1. 关闭应用,删除项目根目录下的 ffmpeg 文件夹;
    2. 再次启动应用,等待自动安装完成;
    3. 检查日志文件 logs/streamget.log 中的 FFmpeg 安装与版本信息;
    4. 添加录制任务并开始录制,确认生成的视频文件正常。

📋 检查清单(Checklist)

在您创建这个PR之前,请确保以下所有框都被勾选,方法是在每个框中放置一个x

  • 我已经阅读了贡献指南文档
  • 我的更改没有产生新的警告
  • 我已经添加了覆盖我更改的测试
  • 我已经相应地更新了文档(如果适用)
  • 我遵循了这个项目的代码风格

注意: 这个PR在所有复选框被勾选之前不会被合并。


感谢您的贡献!

  - 修复 FFmpeg 安装逻辑:移除对蓝奏云页面解析的依赖,改为优先使用 Gyan.dev 官方构建与 GitHub 备用下载源。
  - 新增目录规范化逻辑,并在安装完成后确保 `ffmpeg.exe` 等二进制放置到项目根目录下的 `ffmpeg` 目录中,便于后续检测。
  - 优化进度回调与错误信息,方便在 UI 中反馈安装过程状态。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant