Convert any video to a stream of ASCII frames
$ asc [OPTIONS] --file <FILE>File
-f, --file <INPUT FILE>
Specify the input video file to be convertered
Output
-o, --output <OUTPUT FILE>
Optional filename for asciiframe to write rendered output to, which can be run later to display the video
Ensure opencv and pkg-config is installed!
cargo install asciiframe
Make sure ~/.cargo/bin is in your path
MacOS:
brew install pkg-config opencv- If you get
dyld: Library not loaded: @rpath/libclang.dylibthen runexport DYLD_FALLBACK_LIBRARY_PATH="$(xcode-select --print-path)/usr/lib/"first
asciiframe is also a package on crates.io
so you can use it in your own project
Once you've added it to your Cargo.toml, you can use the asciiframe::render() function,
which takes an input file fin, width, height, and finally render_frame, a function with the input of a string
As asciiframe::render iterates through the video and converts each frame to a string of ASCII
characters, it then calls render_frame on the string before moving onto the next video frame
As a result, you can call render and pass in a function/closure as render_frame.
The function thus gets called on every frame the moment it gets rendered.
For example
asciiframe::render(fin, width, height, |frame| {
println!("{esc}c", esc = 27 as char);
println!("{}", frame.data);
Ok(())
});This function would print out the frame to stdout the moment it gets converted to ASCII.
- luke-rt(Luke T)
- prebuilt binaries
- examples