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 多媒体

Download history 9/week @ 2024-04-29 1323/week @ 2024-05-13 241/week @ 2024-05-20 123/week @ 2024-05-27 358/week @ 2024-06-03 287/week @ 2024-06-10 22/week @ 2024-06-17 93/week @ 2024-07-01 8/week @ 2024-07-08 8/week @ 2024-07-22 8/week @ 2024-07-29 23/week @ 2024-08-05 27/week @ 2024-08-12

66 每月下载量

MIT/Apache

350KB
7.5K SLoC

CrabGrab 🦀 🖥️ 🦀

Rust 的跨平台屏幕捕获库

Crates.io 版本 docs.rs MacOS 文档

从屏幕和应用程序捕获视频可能非常困难,尤其是在跨平台应用程序中进行时。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,您可以构建如下内容

  1. 一个可以看到您屏幕的 AI 助手。基于 CrabGrab 构建的完整功能 AI 助手可以在开源项目 Snippy 中看到。

Snippy, an AI assistant

  1. 类似于 Augmend 客户端的屏幕录制工具。

Augmend, a video capture tool

功能

  • 支持屏幕和窗口捕获
  • 兼容多个 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