termplay 2.0.2

Play images/videos in your terminal
# 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 <me@krake.one>
Play images/videos in your terminal

USAGE:
    termplay [FLAGS] [OPTIONS] <path>

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

ARGS:
    <path>    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 --example termplay
```

(Note: The `--example` part is a hack because normal 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 --example termplay --no-default-features
```

To enable specific features, run  
```
cargo install termplay --example termplay --no-default-features --features "..."
```
where `...` is a comma separated list of features.

### Arch Linux

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

### Ubuntu

Example:

```
sudo apt install libopenal-dev libsndfile1-dev libgstreamer1.0-dev libsixel-dev
cargo install termplay --example termplay
```