18 个不稳定版本 (3 个破坏性更新)
0.4.0 | 2024年6月14日 |
---|---|
0.3.9 | 2024年6月7日 |
0.3.7 | 2024年5月29日 |
0.2.5 | 2024年5月16日 |
0.1.3 | 2024年4月23日 |
#23 in 多媒体
66 每月下载量
350KB
7.5K SLoC
CrabGrab 🦀 🖥️ 🦀
Rust 的跨平台屏幕捕获库
从屏幕和应用程序捕获视频可能非常困难,尤其是在跨平台应用程序中进行时。CrabGrab 使得进行连续帧捕获变得容易,可用于单独的截图或视频捕获。它还包括枚举屏幕和应用程序所需的常见功能。您只需几行代码就可以从窗口到像素缓冲区,这些代码在 Windows 和 MacOS 上都适用。
#[tokio::main]
async fn main() {
let token = match CaptureStream::test_access(false) {
Some(token) => token,
None => CaptureStream::request_access(false).await.expect("Expected capture access")
};
let filter = CapturableContentFilter::NORMAL_WINDOWS;
let content = CapturableContent::new(filter).await.unwrap();
let config = CaptureConfig::with_display(content.displays().next().unwrap(), CapturePixelFormat::Bgra8888);
let mut stream = CaptureStream::new(token, config, |stream_event| {
// The stream_event here could be a video frame or audio frame
println!("result: {:?}", stream_event);
}).unwrap();
std::thread::sleep(Duration::from_millis(2000));
stream.stop().unwrap();
}
使用 CrabGrab,您可以构建如下内容
- 一个可以看到您屏幕的 AI 助手。基于 CrabGrab 构建的完整功能 AI 助手可以在开源项目 Snippy 中看到。
- 类似于 Augmend 客户端的屏幕录制工具。
功能
- 支持屏幕和窗口捕获
- 兼容多个 GPU API
- Wgpu
- DX11
- DXGI
- Metal
- IOSurface
- 简单的帧位图生成
- 平台特定扩展功能
- 截图功能
- 声音捕获(进行中)
示例
有关完整应用程序示例,请参阅基于 CrabGrab 构建的 AI 助手 Snippy。
有关如何使用CrabGrab crate的小示例,可以在crabgrab/examples找到。您可以从存储库运行这些示例。
cargorun --example <example_name>
请注意,功能示例将需要该功能
cargorun --example <示例名称> --feature<功能名称>
MacOS 文档
不幸的是,由于我们依赖于metal-rs,由于docs.rs使用Linux容器,因此在macos上构建文档不起作用。作为解决方案,我们将macos文档托管在本存储库中——如上链接。
贡献
欢迎所有贡献!我们正在积极开发此项目,并希望扩展功能,包括声音捕获、Linux支持以及性能改进。
依赖项
~1–45MB
~699K SLoC