3 个版本
0.0.5 | 2024年5月25日 |
---|---|
0.0.4 | 2024年5月25日 |
0.0.3 | 2024年2月23日 |
#63 in 视频
每月下载 27 次
5MB
2K SLoC
一个用于高质量屏幕录制的 Rust 库,利用原生操作系统 API 以实现最佳性能:macOS 上的 Apple 的 ScreenCaptureKit,Windows 上的 Graphics.Capture API 和 Linux 上的 Pipewire。
🚧 WIP. 不适用于生产使用,API 正在迭代。
特性
- 跨平台支持:Windows、Mac 和 Linux!
- 检查支持和使用权限。
- 使用原生操作系统 API 进行屏幕捕获。
- 不同的捕获模式:显示或窗口。
贡献
我们发现 Rust 的屏幕捕获工具大多数性能不佳、过时或非常特定于平台。这个项目是我们试图改变这一点的一个尝试。贡献、PR 和问题都受到热烈欢迎!
如果您想进行开发,这里有一个启动指南
- 克隆仓库并使用
cargo run
运行它。 - 在 lib.rs 中探索 API 和库代码。
- 特定于平台的代码在
win
、mac
和linux
模块中。 - 在 main.rs 中有一个小程序,用于开发和测试。
使用
use scap::{
capturer::{Point, Area, Size, Capturer, Options},
frame::Frame,
};
fn main() {
// Check if the platform is supported
let supported = scap::is_supported();
if !supported {
println!("❌ Platform not supported");
return;
} else {
println!("✅ Platform supported");
}
// Check if we have permission to capture screen
// If we don't, request it.
if !scap::has_permission() {
println!("❌ Permission not granted. Requesting permission...");
if !scap::request_permission() {
println!("❌ Permission denied");
return;
}
}
println!("✅ Permission granted");
// Get recording targets (WIP)
let targets = scap::get_targets();
println!("🎯 Targets: {:?}", targets);
// Create Options
let options = Options {
fps: 60,
targets,
show_cursor: true,
show_highlight: true,
excluded_targets: None,
output_type: scap::frame::FrameType::BGRAFrame,
output_resolution: scap::capturer::Resolution::_720p,
source_rect: Some(Area {
origin: Point { x: 0.0, y: 0.0 },
size: Size {
width: 2000.0,
height: 1000.0,
},
}),
..Default::default()
};
// Create Recorder
let mut capturer = Capturer::new(options);
// Start Capture
capturer.start_capture();
let mut input = String::new();
std::io::stdin().read_line(&mut input).unwrap();
// Stop Capture
capturer.stop_capture();
}
许可证
此仓库中的代码在 MIT 许可证下开源。然而,它可能依赖于不同许可的依赖项。请咨询它们的文档以获取确切条款。
贡献者
Pranav Joglekar 💻 |
Rohan Punjani 💻 |
Siddharth 💻 |
NiiightmareXD 💻 |
MAlba124 💻 |
Anubhav Singhal 💻 |
鸣谢
此项目建立在 @svtlabs 和 @NiiightmareXD 的出色工作之上。
- screencapturekit-rs: Apple的ScreencaptureKit API的Rust绑定。
- windows-capture: Windows.Graphics.Capture的Rust库。
依赖项
~6–49MB
~761K SLoC