Crates.io | scap |
lib.rs | scap |
version | |
source | src |
created_at | 2024-02-23 01:19:54.311807 |
updated_at | 2024-12-10 13:27:13.649181 |
description | Modern, high-performance screen capture library for Rust. Cross-platform. |
homepage | |
repository | https://github.com/helmerapp/scap |
max_upload_size | |
id | 1149951 |
Cargo.toml error: | TOML parse error at line 22, column 1 | 22 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include` |
size | 0 |
A Rust library for high-quality screen capture that leverages native OS APIs for optimal performance!
We found most of Rust's tooling around screen capture either very outdated, non-performant or platform-specific. This project is our attempt to change that. Contributions, PRs and Issues are most welcome!
If you want to contribute code, here's a quick primer:
cargo run
.win
, mac
and linux
modules.use scap::{
capturer::{Point, Area, Size, Capturer, Options},
frame::Frame,
};
fn main() {
// Check if the platform is supported
if !scap::is_supported() {
println!("❌ Platform not supported");
return;
}
// 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;
}
}
// Get recording targets
let targets = scap::get_all_targets();
println!("Targets: {:?}", targets);
// All your displays and windows are targets
// You can filter this and capture the one you need.
// Create Options
let options = Options {
fps: 60,
target: None, // None captures the primary display
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 Capturer
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();
}
The code in this repository is open-sourced under the MIT license, though it may be relying on dependencies that are licensed differently. Please consult their documentation for exact terms.
Pranav Joglekar 💻 |
Siddharth 💻 |
Rohan Punjani 💻 |
NiiightmareXD 💻 |
MAlba124 💻 |
Anubhav Singhal 💻 |
Vasu Sharma 💻 |
This project builds on top of the fabulous work done by: