ruffle 中文文档 下载 App

Scanner 批量检查 SWF 目录与 Exporter 截帧工具

这两个工具在哪里

它们是 Ruffle 仓库里独立的 Rust crate——ruffle_scanner 和 exporter。GitHub Releases 里的预编译包默认不带这两个,你需要自己从源码构建,或者从 nightly 构建的 Assets 里找是否包含。

Scanner:批量解析 SWF,做兼容性摸底

用途

如果你手里有一批(几十到几千个).swf 文件,想提前知道哪些能跑、哪些可能有问题——Scanner 就是为这个场景做的。

它不真正执行 SWF,只做解析层面的工作:读取文件头、解析 tag、校验结构,然后输出一个 CSV(或 JSON)报告,告诉你哪些是正常的、哪些结构有问题、哪些文件损坏。

构建

cargo build --release --package=ruffle_scanner

运行

ruffle_scanner.exe scan C:\flash-archive C:\reports\swf-check.csv

参数:第一个是输入目录(可以递归),第二个是输出 CSV 文件路径。

输出字段

列含义
pathSWF 文件路径
resultok / failed
versionSWF 版本号
length文件大小(字节)
error如果 failed,错误信息

实际用法

Flashpoint 和 Internet Archive 这种大型存档项目在导入新 SWF 时,会先用 Scanner 扫一遍把损坏文件挑出来。你自己的小收藏(比如几百个)也可以用它做一次体检。

Exporter:把 SWF 某一帧或序列帧截成 PNG

用途

想给一个 SWF 做封面缩略图、想批量给一组游戏截图、想做一个自动生成截图的脚本——Exporter 就是 headless 截图工具。

构建

cargo build --release --package=exporter

注意:Exporter 需要硬件加速(wgpu),所以不能在 headless CI 里跑(除非 CI 机器有 GPU 且配置了合适的渲染后端)。文档里说可以 headless 跑,但需要机器有可用的硬件加速后端。

运行

单帧截一张:

exporter.exe C:\games\old-game.swf

默认会从第一帧开始,存成 old-game.png 放在当前目录。

多帧截序列:

exporter.exe C:\games\old-game.swf C:\screenshots --frames 5

会从第一帧开始截 5 张 PNG,存到 C:\screenshots\old-game-frame-0001.png 这种命名。

更多参数

实际用法

站长用它批量给自己网站上的 Flash 游戏生成封面缩略图、做自动定期兼容性测试(跑一批 SWF → 比对截图 → 找出哪些在 nightly 更新后出问题了)。

headless 注意事项

Exporter 默认会弹窗口。加 --headless 参数可以不弹窗口直接跑——但前提是机器有可用的渲染后端(WSL2 里需要有 WSLg,Linux 里需要 X11 或 Wayland,或者用 xvfb-run)。纯无 GPU 的服务器 headless 跑不起来,需要 CPU 后端:

exporter.exe --backend cpu --headless --frames 10 game.swf

CPU 后端慢得多但能跑。