The project's README from github.com/rumoii/streamfirefly. As one markdown file: README.md.
流萤由浏览器扩展和 Windows 本地助手两部分组成。扩展在网页里发现视频、音频、图片和 HLS/DASH 清单;本地助手用 Rust 编写,负责下载、排队、断点恢复和 FFmpeg 合并。任务和设置只保存在本机。
当前版本为 1.0.8。流萤不绕过 DRM,请只下载你拥有版权或已获授权的内容。
流萤分为两个发行版,源码相同:
![]() 资源列表 |
![]() 下载任务 |
![]() 悬浮工作区 |
![]() HLS 解析 |
截图来自自动化界面测试,资源为测试数据。
| 类型 | 状态 | 说明 |
|---|---|---|
| 普通 HTTP 文件 | 支持 | 视频、音频、图片;并发下载、暂停续传 |
| HLS 点播 | 支持 | 切片级重试、检查点与重启恢复 |
| HLS AES-128 | 支持 | 批量下载前先用第一个切片验证密钥 |
| HLS 直播 | 支持 | 在解析页单独开始录制;不支持 LL-HLS Part |
| DASH 点播 | 实验性 | 仅静态、单 Period、非加密清单 |
| Blob / MediaSource | 实验性 | 通过缓存捕捉保存开始捕捉之后播放的数据 |
| DRM、SAMPLE-AES | 不支持 | 只提示,不绕过 |
bilibili.com)。可在设置中改回资源原名或关闭分文件夹,已有文件不会移动。从 Releases 下载适合架构的 Windows 完整包,再按安装指南操作。
需要 Node.js 24、Rust 1.98(MSVC 工具链,需安装 Visual Studio C++ 生成工具),与 CI 使用的版本一致;以及 Chrome/Edge 116+ 或 Firefox 140+。本地助手使用 Windows 自带的 curl 下载,HLS/DASH 合并需要 FFmpeg。
npm install
npm run build:extension
cargo build --release --manifest-path native-host/Cargo.toml
在 chrome://extensions 开启开发者模式,加载 extension/ 目录,记下扩展 ID。
注册本地助手:
.\tools\install-native-host.ps1 `
-ChromeExtensionId '<Chrome 扩展 ID>' `
-FirefoxExtensionId '[email protected]'
每次重新编译本地助手后需要再运行一次安装脚本;扩展更新后在扩展管理页点击“重新加载”。
默认只在流萤打开时嗅探。列表为空时先播放一下视频;还是没有的话,刷新网页后重新打开流萤,或在设置里把嗅探时机改为“始终嗅探”。
小提示:推荐开启深度搜索。 深度搜索默认关闭。开启后,流萤还会识别网页用脚本动态生成的视频清单,能找到更多资源。开启方法:在“资源”页点击工具栏的雷达图标 →“开启深搜”,然后刷新网页。常用的网站可以勾选“记住此站点”。
%LOCALAPPDATA%\StreamFirefly\downloads,可以在设置里改成常用文件夹。floatingUiLayout 中。
| 目录 | 内容 |
|---|---|
extension/ |
浏览器扩展:后台、内容脚本、页面探针和清单 |
extension-ui/ |
侧栏与网页内工作区界面(Vue 3) |
native-host/ |
本地助手:协议、任务存储、调度和 HTTP/HLS/DASH 下载 |
shared/ |
扩展与界面共用的识别、提取和模板逻辑 |
tools/ |
构建、测试和 Windows 安装脚本 |
docs/ |
设计决策与开发说明 |
npm install
npm run typecheck
npm run validate:extension # 构建并校验 Chrome / Firefox 扩展
npm run test:unit
npm run test:ui:browser # 界面测试,使用模拟 API,截图在 test-results/ui/
npm run verify:features # 包括 cargo test 和本地助手集成测试
使用独立的临时配置,不影响日常浏览器数据。
npm run test:chrome
npm run test:firefox
npm run test:browsers # 依次运行 Chrome、Edge、Firefox
浏览器路径可以用 CHROME_BINARY、EDGE_BINARY、FIREFOX_BINARY 指定。
cargo test --manifest-path native-host/Cargo.toml
npm run test:native
首次运行前准备测试用 FFmpeg(不需要安装 Inno Setup):
.\tools\download-ffmpeg.ps1 -Architecture x64 # 发布包捆绑的精简版
New-Item -ItemType Directory -Force installer\build\x64 | Out-Null
Copy-Item tools\ffmpeg-cache\ffmpeg-x64.exe installer\build\x64\ffmpeg.exe
.\tools\download-fixture-ffmpeg.ps1 # 生成测试素材用的完整版
test:native 默认使用刚编译的 debug 版本,任务写入临时目录;可以用 STREAMFIREFLY_NATIVE_EXE 指定其他版本。HLS/DASH 测试中,本地助手使用 STREAMFIREFLY_FFMPEG_EXE 指定的精简版 FFmpeg(默认 installer/build/x64/ffmpeg.exe);测试素材的生成和检查使用 tools/download-fixture-ffmpeg.ps1 下载的完整版 FFmpeg 和 FFprobe,也可用 STREAMFIREFLY_FIXTURE_FFMPEG_EXE、STREAMFIREFLY_FFPROBE_EXE 指定。
开发自测:
.\tools\package-extension.ps1 -Edition general # 通用版 Chromium 扩展
.\tools\package-extension.ps1 -Edition chrome-store # Chrome 应用商店上传包
npm run package:firefox # Firefox 测试用 XPI(未签名)
.\tools\build-installer.ps1 -Architecture x64 # 本地 EXE 安装器,不进 Release;arm64 同理
正式发布入口是 .\tools\package-release.ps1 -SignedFirefoxXpi '<已签名 XPI 路径>',签名、验收和上传的完整步骤见正式发布流程。
tools/prepare-release.ps1 是旧的发布流程,产出 EXE 安装器和未签名 XPI,已废弃,不要用于发布。installer/build/<架构>/ffmpeg.exe。捆绑的 FFmpeg 是 tools/ffmpeg/build.sh 编译的精简 LGPL 版,按固定 SHA-256 下载,不提交到仓库。gimoeapmpoeogpabfdplccplmmohklff,不要用它构建对外发布的安装包。Firefox 固定使用 [email protected]。store-assets/。%LOCALAPPDATA%\StreamFirefly\tasks.json、同目录下的 tasks 文件夹和已下载的文件。Cookie 和 Authorization 只在下载过程中保存在内存里,不写入任务记录。缓存捕捉只保存开始捕捉之后的数据,不读取浏览器缓存。详见隐私政策。
流萤使用了 Vue、Pinia、hls.js、Tabler Icons、curl 和 FFmpeg。第三方许可见 THIRD_PARTY_NOTICES.md,FFmpeg 来源见 installer/FFMPEG-SOURCE.txt。