Play & cut videos in the terminal
demo.mp4
vic requires ffmpeg to be on $PATH during runtime.
vic is linked with chafa, a C library that makes pretty pictures in the terminal.
Install chafa from your package manager, or build it from source with something like:
apt-get install libglib2.0-dev
curl 'https://hpjansson.org/chafa/releases/chafa-1.14.4.tar.xz' -O
tar xf chafa-1.14.4.tar.xz
cd chafa-1.14.4
./configure --without-tools
make
make install
ldconfig
Once chafa is installed, you can build the Rust project with cargo build.
Make sure everything is compiled and linked correctly by running cargo test.
You can find the built binary at target/debug/vic, or install it with cargo install --path .
Statically linked binaries (that bundle chafa) for x86-64 Linux can be built with the Dockerfile.
vic video.mp4
vic video.mp4 -w=9999
vic http://example.com/video.avi -w 20
vic video.webm -w 80 --dry-run
vic video.mp4 --log log.txt
vic <filepath> [-w <int, default 40>]
[--dry-run]
[--log <filepath>]
[--help|--version]
-w <int> Max output width, in columns.
Use -w 9999 for fullscreen.
Defaults to 40.
--dry-run Instead of running ffmpeg on finish,
just print the commands to stdout.
--log <path> Write logs to this file.
[ segment mode ]
m ....... make marker
space ... play/pause
j/l ..... back/forwards 15 secs
←/→ ..... back/forwards 5 secs
0-9 ..... seek to 0%, 10%, etc
. ....... advance one frame
q ....... finish
[ marker mode ]
J/L ..... goto prev/next marker
M ....... delete marker
Here's a blog post: https://wonger.dev/posts/chafa-ffmpeg-progress
My main focus for now is creating a separate UI thread and adding audio.
I also need to fiddle with GitHub Actions.
There's several quality-of-life improvements to work on.
Pull requests welcome :)
Created during LMT2.