4个版本 (2个破坏性更新)
0.3.0 | 2023年4月21日 |
---|---|
0.2.0 | 2023年4月5日 |
0.1.1 | 2023年3月10日 |
0.1.0 | 2023年3月10日 |
#367 in 视频
44KB
369 行
gridvid
Gridvid是一个使用最小接口从2D向量渲染MP4视频的Rust包装库。
外部向量映射到X轴,内部向量映射到Y轴。
基本用法
use gridvid::Encoder;
// Create a 2D Vec of any element type, bool in this example
let mut grid: Vec<Vec<bool>> = vec![vec![false; 10]; 10];
// fn to map grid element reference to RGB tuple `(u8, u8, u8)`
let convert = |&b: &bool| if b { (0, 0, 255) } else { (0, 0, 0) };
// Initialize video encoder
let mut video = Encoder::new("/tmp/output.mp4", Box::new(convert)).build()?;
// Update the grid as desired, adding a new frame for each grid state
for i in 0..grid.len() {
grid[i][i] = true;
video.add_frame(&grid)?;
}
// Write encoded video to output file
video.close()?;
以下示例渲染并导出以下内容
选项摘要
use gridvid::{Encoder, Gridlines, Scaling};
let mut video = Encoder::new(filename, Box::new(convert))
.fps(20) // Set video frame rate to 20 fps
// Video Frame Scaling options
.scale(Scaling::Uniform(16)) // Upscale by a factor of 16
.scale(Scaling::MaxSize(720, 480)) // Scale to 720x480, keeping aspect ratio
.scale(Scaling::Stretch(720, 480)) // Stretch to 720x480, ignoring aspect ratio
// Gridline options
.gridlines(Gridlines::Show((255,255,255))) // Set gridline color to white
.gridlines(Gridlines::Hide) // Hide gridlines
.build()?;
编码器默认值
- 视频帧率是4 fps
- 黑色网格线:
Gridlines(0,0,0)
- 视频缩放到720x720:
MaxSize(720, 720)
文档
画廊
来自examples/game_of_life.rs
的示例输出
许可证
从版本0.2.0开始,根据MIT许可证授权。
依赖关系
~6.5–10MB
~164K SLoC