Ruffle
Ruffle是一个用Rust编程语言编写的Adobe Flash Player模拟器。Ruffle同时支持桌面和使用WebAssembly的网页应用。
目录
项目状态
Ruffle对ActionScript 1、2和3的支持相当不错,但仍然没有完全完成。请在问题追踪器中报告任何问题。
使用Ruffle
尝试Ruffle最简单的方法是访问网页演示页面,然后点击"选择文件"按钮来加载你选择的SWF文件。
Ruffle的每日构建版本可用于桌面和网页平台。
有关更详细的说明,请参阅我们的维基页面。
从源代码构建
前提条件
- Rust的最新稳定版本
- Java,可在PATH中作为
java
使用(用于构建包含ActionScript 3内置Flash类的库)
Linux前提条件
以下是Linux的典型依赖项:
- libasound2-dev
- libxcb-shape0-dev
- libxcb-xfixes0-dev
- libgtk-3-dev
- libudev-dev
- libxcb-xinput-dev
- libxcb-xkb-dev
- libxcb-cursor-dev
- default-jre-headless
- cmake
- g++
桌面版
构建
使用以下命令构建并运行桌面应用:
cargo run --release --package=ruffle_desktop
要运行特定的SWF文件,请将SWF路径作为参数传递:
cargo run --release --package=ruffle_desktop -- test.swf
要以调试模式构建,只需从命令中省略--release
。
macOS
Ruffle桌面版可以通过我们的Homebrew Tap构建:
brew install --HEAD ruffle-rs/ruffle/ruffle
注意:因为它是仅HEAD版本,每次你想更新时都需要运行brew upgrade --fetch-HEAD ruffle
。
网页版或浏览器扩展
按照web目录中的说明构建Ruffle的网页版或浏览器扩展版本。
本项目使用BrowserStack进行测试。
Android
按照ruffle-android
项目中的说明构建Ruffle的Android应用。
扫描器
如果你有一系列"真实世界"的SWF文件用于测试,可以使用扫描器来对ruffle的解析能力进行基准测试。提供一个文件夹和一个输出文件名,它将尝试读取所有Flash文件并报告此任务的成功情况。
cargo run --release --package=ruffle_scanner -- scan folder/with/swfs/ results.csv
导出工具
如果您有一个SWF文件并想捕获其图像,可以使用导出工具。 这目前需要硬件加速,但可以无头运行(无窗口)。
cargo run --release --package=exporter -- path/to/file.swf
cargo run --release --package=exporter -- path/to/file.swf path/to/screenshots --frames 5
结构
core
- 核心模拟器和通用代码swf
- SWF和ActionScript解析器desktop
- 桌面客户端(使用wgpu-rs
)web
- 网页客户端和浏览器扩展(使用wasm-bindgen
)render
- 适用于桌面和网页的各种渲染后端video
- 视频解码后端flv
- Flash视频解码器wstr
- 与Flash兼容的字符串实现scanner
- 批量解析SWF文件的工具exporter
- 生成SWF文件PNG截图的工具
赞助商
您可以通过GitHub Sponsors支持Ruffle的开发。您的赞助将有助于确保Flash内容在未来的可访问性。谢谢您!
衷心感谢Ruffle的钻石级赞助商:
许可证
Ruffle的许可证采用以下两种方式之一
- Apache许可证2.0版(http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(http://opensource.org/licenses/MIT)
您可以选择其中之一。
Ruffle依赖于兼容许可证下的第三方库。有关完整信息,请参阅LICENSE.md。
贡献
Ruffle欢迎每个人的贡献。有关入门帮助,请参阅CONTRIBUTING.md。
除非您明确声明,否则您有意提交以包含在作品中的任何贡献均应按上述方式双重许可,无需任何额外条款或条件。
整个Ruffle社区,包括聊天室和GitHub项目,都应遵守Rust项目本身遵循的行为准则。