avirus
is a library for manipulating AVI files for purposes such as glitch art.
[dependencies]
avirus = "0.2.5"
avirus::AVI
takes an existing AVI file and loads it into memory for manipulation. avirus::frames
exposes a meta
field, which holds simple structures with metadata about a frame. This field can be iterated over, and modified to create odd effects in the output file. When the AVI file's output()
function is called, a new file will be rebuilt with the modified metadata.
extern crate avirus;
use avirus::AVI;
use avirus::frame::Frame;
fn main() {
let mut avi = AVI::new("sample.avi").unwrap();
let mut new_meta: Vec<Frame> = Vec::new();
for frame in &mut avi.frames.meta {
if frame.is_pframe() || frame.is_audioframe() {
for _ in 0..3 {
new_meta.push(*frame);
}
}
else {
new_meta.push(*frame);
}
}
avi.frames.meta = new_meta;
avi.output("sample_output.avi").unwrap();
}