Files
biliup/.github/desktop-release-notes.md
Noah e4fb9c01df feat(desktop): bundle ffmpeg and run external tools without console windows (#1735)
* feat(cli): locate ffmpeg via ffmpeg_path / host / PATH and start child processes without console windows

- New `tools` module in both crates. `tools::command()` starts external
  programs with CREATE_NO_WINDOW on Windows; every ffmpeg, streamlink,
  yt-dlp, ytarchive and hook shell process now goes through it.
- ffmpeg is looked up in this order: the new optional `ffmpeg_path`
  setting, then `ServeOptions::ffmpeg` (for an ffmpeg shipped by the
  embedding host), then `ffmpeg` on PATH. Unset keeps today's behaviour.
- `ffmpeg_path` is global (not overridable per streamer) and visible in
  the redacted configuration.

* feat(api): GET /v1/tools reports ffmpeg availability, version and license

Read-only, allowed for every logged-in role. Returns whether the ffmpeg
that would be used runs, where it came from (config / bundled / path),
the first line of `ffmpeg -version` (cached per program; failures are
retried) and the license derived from its configure flags. Errors say
what to fix.

* feat(desktop): bundle ffmpeg in the Windows installer, same BtbN build as Docker

- desktop-publish.yml downloads the BtbN win64 GPL static zip of the tag
  and version the Dockerfile pins (read by .github/scripts/ffmpeg-version.sh),
  checks its SHA-256 and ships only ffmpeg.exe, LICENSE.txt and a README
  with the source links as bundle resources (tauri.ffmpeg.conf.json),
  installed under ffmpeg\.
- The shell passes resource_dir()/ffmpeg/ffmpeg.exe to ServeOptions::ffmpeg
  when the file exists. The ffmpeg_path setting still wins; builds without
  the overlay keep using PATH.

* ci(desktop): attach the FFmpeg corresponding source and download notes to releases

- New ffmpeg-source job: FFmpeg at the pinned commit, the BtbN build
  scripts at the pinned tag, and the source of every library those
  scripts build (fetched by their own download.sh at the commits pinned
  in scripts.d/), plus a README and SHA256SUMS. Uploaded on release
  events only; manual runs just list the files.
- On release events, append .github/desktop-release-notes.md to the
  release body once: setup.exe is the recommended download, and how to
  get past the browser warning and SmartScreen while it is unsigned.

* fix(cli): only use CREATE_NO_WINDOW when biliup has no console

`biliup server` in a Windows terminal keeps sharing its console with the
programs it starts, as before: Ctrl+C and their output still reach the
terminal. Only a process without a console window (the desktop app)
starts them with CREATE_NO_WINDOW. The choice is logged at startup and
covered by a Windows-only test that runs itself as a child with and
without a console.

* ci(desktop): link to the upstream FFmpeg source instead of uploading it to releases

Drop the ffmpeg-source job that packed about 2 GB of FFmpeg and dependency
source into every release. The installer's ffmpeg/README.txt and the release
notes now point to the FFmpeg commit and the BtbN/FFmpeg-Builds tree of the
bundled build (full commit hashes, resolved at build time), whose scripts.d/
pins the version and source URL of every library. The Docker image uses the
same BtbN tag, so the same links cover it.
2026-09-24 09:50:42 +00:00

1.3 KiB
Raw Permalink Blame History

Windows 桌面版

  • 推荐下载 biliup_*_x64-setup.exe:双击安装,默认装在当前用户目录下,不需要管理员权限,也不需要另装 Python 或 FFmpeg。装在系统盘时,第一次打开会询问数据和录像放在哪里。.msi 适合批量部署。
  • 安装包暂未签名,Windows 可能会拦一下:
    • 浏览器提示「不常下载」「可能有害」时,在下载列表里点「…」→「保留」(Edge 还要再点「显示详细信息」→「仍然保留」)。
    • 第一次运行出现蓝色的「Windows 已保护你的电脑」(SmartScreen)时,点「更多信息」→「仍要运行」。
  • 安装包内置 FFmpeg {{FFMPEG_VERSION}}(BtbN/FFmpeg-Builds {{FFMPEG_TAG}} 的 win64 GPL 静态构建),在安装目录的 ffmpeg\ 下,按 GPLv3 分发,许可文本见同目录 LICENSE.txt。Docker 镜像用的是同一 tag 的 linux64 / linuxarm64 构建。对应源码由上游托管:
    • FFmpeg 源码:<{{FFMPEG_SOURCE_URL}}>
    • BtbN 构建脚本与补丁:<{{FFMPEG_BUILD_SCRIPTS_URL}}>(scripts.d/ 固定了各依赖库的版本与源码地址,download.sh 可一次拉取全部依赖源码)