#摄像头 #捕获 #网络摄像头 #跨平台

kamera

用于基本用例和学习的简化功能的摄像头API

2个版本

0.0.2 2023年8月13日
0.0.1 2023年7月10日

#1012 in 硬件支持

MIT/Apache

71KB
2K SLoC

kamera

用于基本用例和学习的简化功能的摄像头API。

  • 🚧 Mac支持基于AVFoundation

  • 🚧 Windows支持基于MediaFoundation

  • 🚧 Linux支持基于V4L2

  • ❌ 测试需要在单线程下运行 cargo t -- --test-threads=1 --nocapture 并建议查看测试用例的输出

  • ✔️ PR检查是在Mac、Windows和Linux笔记本电脑内部摄像头设备和罗技外部摄像头上手动运行测试

  • ✔️ CI运行对主分支和PR进行检查、格式化和clippy

use kamera::Camera;

let camera = Camera::new_default_device();
camera.start();

let Some(frame) = camera.wait_for_frame() else { return }; // always blockingly waiting for next new frame
let (w, h) = frame.size_u32();

frame.data().data_u32() // use this buffer, per default in ARGB format
// for real use cases processing or displaying frames can get more complicated when trying to be most efficient

camera.stop() // or drop it

Linux系统依赖

在类似于Debian的系统(例如MX Linux)上,我需要安装以下系统依赖项来构建所有crates

sudo apt install build-essentials cmake libfontconfig1-dev clang
  • TODO winit依赖于sctk-adwaita,它也间接依赖于freetype进行字体渲染。我认为
    • winit可能没有在默认或最小配置中进行字体渲染的真正需求
    • 基本的字体渲染也可以由一个纯Rust依赖项来完成

依赖项

~2–43MB
~623K SLoC