Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jd91mzm2/termplay

GitLab: https://gitlab.com/jD91mZM2/termplay
https://github.com/jd91mzm2/termplay

ansi audio rust terminal truecolor video watch youtube youtube-dl

Last synced: about 15 hours ago
JSON representation

GitLab: https://gitlab.com/jD91mZM2/termplay

Awesome Lists containing this project

README

        

# termplay
*Name by the awesome [@tbodt](https://github.com/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...
Written in the systems language Rust, it has some solid performance.

- **Multiple modes**
- Sixels: Only supported by a few terminals, like xterm.
- Unicode halfblock: This is the same as TrueColor below, but uses unicode half-blocks for smaller pixels.
- TrueColor: Any RGB color, supported by most terminals.
- 256 color: The closest representation of a color that can be fit within 1 byte. Use this if nothing else works.
- **Flexible**
- Change framerate, size and more using command line switches
- **Adapting size**
- Automatically scales the image to fit your terminal

Termplay also allows you to control the media, such as zoom in or pause the video.

- **Mouse Scroll / +/-**: Zoom
- **Mouse Drag / W/A/S/D**: Pan
- **Space**: Play/Pause
- **Left/Right**: Seek
- **Up/Down**: Volume
- **q / Ctrl+C**: Quit

![Example image](https://i.imgur.com/54MXrSk.png)
*(Landscape image from [pexels.com](https://www.pexels.com/photo/beautiful-holiday-lake-landscape-358482/))*

## Using

### Image

```
termplay 2.0.0
jD91mZM2
Play images/videos in your terminal

USAGE:
termplay [FLAGS] [OPTIONS]

FLAGS:
--help Prints help information
-q, --quiet Ignores all the nice TUI things for simple image viewing
-V, --version Prints version information

OPTIONS:
-c, --converter Decides how the image should be displayed [default: halfblock] [possible values:
color256, halfblock, sixel, truecolor]
-h, --height Sets the height (defaults to the terminal size, or 24)
-r, --rate Sets the framerate [default: 24]
--ratio Sets the terminal font ratio (only takes effect with some converters)
-w, --width Sets the width (defaults to the terminal size, or 80)

ARGS:
Specifies the path to the image/video to play
```

## Compiling

### Compile time requirements

**Rust v1.25 or more** is required. See your Rust version with
```
rustc --version
```
Update rust with
```
rustup update stable
```

### Compiling!

Other than that, [this project is hosted on crates.io](https://crates.io/crates/termplay).
So to install you just need to run
```
cargo install termplay --features bin
```

(Note: The `--features` part is a hack because binaries don't allow specifying separate dependencies)

### Features

Almost all dependencies are optional and can be disabled!

Default features:

- termion: This is what enables the rich image viewer. Disabling this will disable almost everything.
- gst: Video support, requires [gstreamer](https://gstreamer.freedesktop.org/)
- sixel: Support for sixels, requires [libsixel](https://github.com/saitoha/libsixel)

To disable default features, run

```
cargo install termplay --no-default-features --features "bin,..."
```
where `...` is a comma separated list of features you want to keep.

### Nix

Termplay is available with the default features on Nix!

```
nix-env -iA nixpkgs.termplay
```

### Arch Linux

If you just want to get this running on Arch Linux with the default features, you can use the
[AUR Package (unofficial)](https://aur.archlinux.org/packages/termplay/)

### Debian / Ubuntu

Example:

```
sudo apt install libopenal-dev libsndfile1-dev libsixel-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev
cargo install termplay --features bin
```