2个版本
0.0.2 | 2022年8月12日 |
---|---|
0.0.1 | 2022年8月12日 |
#559 在 图像
44KB
972 代码行
bevy_capture_media
基于事件的Bevy图像和视频捕获
特性
- 跟踪任意数量的摄像头进行录制
- 分发事件以控制录制生命周期
- 为每个录制器保留过去X帧的帧缓冲区(其中X是用户提供的任何
Duration
) - 使用功能选择要录制的格式
wasm
支持
支持的格式
- PNG截图
- GIF录制
- GIF录制功能正常,但需要工作
路线图
- 透视相机支持
- 更多格式
- 更多控制帧走私
- 截图水印
- 改进的Web性能
简单示例
use std::time::Duration;
use bevy::prelude::*;
use bevy_capture_media::{MediaCapture, BevyCapturePlugin};
pub fn spawn_cameras(
mut commands: Commands,
mut capture: MediaCapture,
) {
let camera_entity = commands
.spawn_bundle(Camera2dBundle::default())
.id();
// The tracking ID (1357) is arbitrary, but uniquely identifies this tracker
capture.start_tracking_camera(1357, camera_entity, Duration::from_secs(5));
}
pub fn take_screenshot(
input: Res<Input<KeyCode>>,
mut capture: MediaCapture,
) {
if input.just_released(KeyCode::RShift) {
// If you have many cameras, consider storing their IDs
// in a resource
capture.capture_png(1357);
}
}
fn main() {
app::new()
.add_plugin(DefaultPlugins)
.add_plugins(bevy_capture_media::BevyCapturePlugin)
.add_startup_system(spawn_cameras)
.add_system(take_screenshot);
}
https://user-images.githubusercontent.com/2522620/184448446-8cd5214b-81fa-41a3-bdbe-156412cc99cc.mp4
贡献
欢迎所有建议、问题和拉取请求。任何贡献都必须与该存储库兼容。
我想添加一个新格式!
是的!这很棒!任何新格式都需要满足以下清单才能被包括
- 编码必须在纯Rust中完成。没有编译的C库,没有绑定到其他语言的库。
- 格式必须对Web目标表现良好 - 如果有很好的理由绕过这一点,格式仍可能被接受。
- 默认情况下,格式和任何依赖项必须是可选的并需要用户选择。
- 不接受受专利限制或封闭的格式,除非此项目和任何最终用户都有免费和宽泛的许可证。
依赖项
~36–52MB
~728K SLoC