legolord208 / termplay
- среда, 21 июня 2017 г. в 03:12:36
Rust
Play image/video in your terminal!
Name by the awesome @tbodt
Are you a terminal fanboy like me?
Sure, but do you ever watch YouTube? In your terminal?
termplay
is the tool to convert images to ANSI sequences.
But it also supports playing videos... and YouTube...
Written in the systems language Rust, it has some solid performance.
When playing a video:
ffmpeg
is still processing!
Or if you want to maintain ratio
(Landscape image from pexels.com)
This tool is tested in GNOME Terminal, Konsole and alacritty (glitchy but amazing framerate).
Might not be fully or supported at all by whatever terminal you use.
termplay-image
Convert a single image to text
USAGE:
termplay image [FLAGS] [OPTIONS] <IMAGE>
FLAGS:
-k, --keep-size Keep the frame size. Overrides -w and -h
--help Prints help information
-V, --version Prints version information
OPTIONS:
-w, --width <width> The max width of the frame
-h, --height <height> The max height of the frame
--converter <converter> How to convert the frame to ANSI. [default: truecolor]
[values: truecolor, 256-color, sixel]
--ratio <ratio> Change frame pixel width/height ratio (may or may not do
anything) [default: 0]
ARGS:
<IMAGE> The image to convert
termplay-video
Play a video in your terminal
USAGE:
termplay video [FLAGS] [OPTIONS] <VIDEO> [FRAMES]
FLAGS:
-k, --keep-size Keep the frame size. Overrides -w and -h
--help Prints help information
-V, --version Prints version information
OPTIONS:
-w, --width <width> The max width of the frame
-h, --height <height> The max height of the frame
--converter <converter> How to convert the frame to ANSI. [default: truecolor]
[values: truecolor, 256-color, sixel]
-r, --rate <rate> The framerate of the video [default: 10]
--ratio <ratio> Change frame pixel width/height ratio (may or may not do
anything) [default: 0]
ARGS:
<VIDEO> The video file path to play
<FRAMES> The FRAMES parameter is the number of frames processed. It will be returned
when you pre-process a video
Replace video
with ytdl
, and supply a URL as VIDEO, and boom!
Watch from YouTube directly!
Also has --format
(short -f
) to supply formats to youtube-dl to change quality and stuff.
If you feel like playing a video multiple times on the same settings,
you can pre-process a video.
That means doing all the processing part separately, so you can skip it if you do it multiple times.
Example:
$ termplay preprocess video.mp4
Checking ffmpeg... SUCCESS
Creating directory...
Starting conversion: Video -> Image...
Started new process.
Converting: Image -> Text
Processing frame622.png
Seems like we have reached the end
Converting: Video -> Music
Number of frames: 621
$ termplay video termplay-video 621 # 'termplay-video' is the default name for the processed folder.
Fun fact:
If you change the rate, you have to do it on both while pre-processing and while playing.
Or... don't. And enjoy playing the video in fast or slow motion.
... That said, it comes with a slight flaw. For now, you have to compile this yourself. No big deal.
You do need to install anything ears requires, though.
Other than that, this project is hosted on crates.io.
So to install you just need
cargo install termplay
On Ubuntu, a full installation from nothing (not even Rust installed) would look like
curl https://sh.rustup.rs -sSf | sh
sudo apt install libopenal-dev libsndfile1-dev ffmpeg # FFmpeg if using video/ytdl feature
sudo -H pip install --upgrade youtube-dl # If using ytdl feature. Sudo is required if you're not using a single user python installation
cargo install termplay
Poof! targets/release/termplay
is created