Crate gridvid

Source
Expand description

Gridvid is a Rust wrapper library for rendering MP4 videos from 2D vectors using a minimal interface.

The outer vector translates to the X-axis and the inner vectors translate to the Y-axis.

§Basic Usage

    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];
    let filename = std::env::temp_dir().join("gridvid_example.mp4");

    // 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(&filename, 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()?;
    println!("Output written to: {}", &filename.display());

This sample code renders and exports the following:

§Options Summary

    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()?;

§Encoder Defaults:

Structs§

Encoder
A video encoder wrapper. Converts grid to encoded video frames and writes output to a file.
EncoderBuilder
EncoderBuilder allows for flexible customization of the video Encoder.

Enums§

Error
The error type for Gridvid operations.
Gridlines
Options for showing or hiding gridlines. Gridlines are 2 pixels in width for all scaling options.
Scaling
Options for upscaling the video.

Constants§

OPENH264_MAX_SIZE
OpenH264 limits a frame’s width×height to this value

Type Aliases§

Converter
A function to map grid element type to Rgb.
Result
A specialized Gridvid Result type.
Rgb
A tuple containing Red, Green and Blue color intensities.