# Video Players

Canonical URL: https://encode.wiki/tools/video-players/
Content version: ca42e61ede0a24f789d7287a0001244ad22f4abf
Status: current
License: CC BY-SA 4.0
Checksum (SHA-256): 0d226edcfd07b9a04257ece5d34efe34c97225df1d40d869e6e0cfbc4c3780d6

Any modern player will play your encodes. For checking them, you want one that decodes accurately, shows what it is doing, and steps through frames. That is usually mpv.

| Player                                                     | Platforms             | Notes                                                                                                                         |
| ---------------------------------------------------------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| [mpv](https://mpv.io/)                                     | Windows, macOS, Linux | Minimal interface, scriptable, high-quality libplacebo rendering. The usual choice for inspecting encodes.                    |
| [VLC](https://www.videolan.org/vlc/)                       | All, including mobile | Plays almost anything out of the box. Current release is 3.0.24; VLC 4.0 is still in development.                             |
| [MPC-HC](https://github.com/clsid2/mpc-hc) (clsid2)        | Windows               | Classic Windows player with LAV Filters built in and MPC Video Renderer included. The original project ended in 2017; clsid2's fork is the maintained one. |
| [MPC-BE](https://github.com/Aleksoid1978/MPC-BE)           | Windows               | A separate, also maintained MPC fork with its own interface and filters.                                                      |
| [IINA](https://iina.io/)                                   | macOS                 | Native macOS interface built on mpv.                                                                                          |

mpv also has graphical front ends for each desktop: IINA on macOS, Celluloid (GNOME) and Haruna (KDE) on Linux, and mpv.net on Windows. They share mpv's decoding and rendering.

## Check an encode in mpv

Hardware decoding is off by default in mpv, so it uses FFmpeg's software decoders (dav1d for AV1). That is what you want for judging an encode: the picture is decoded exactly, and you see how heavy the file is for a CPU. Turn hardware decoding on with `Ctrl+h` or `--hwdec=auto` to test whether your GPU can play it.

The default keys most useful for inspection:

| Key                   | Action                                                  |
| --------------------- | ------------------------------------------------------- |
| `Space`               | Pause / play                                            |
| `.` / `,`             | Step one frame forward / back (and pause)               |
| `Shift+→` / `Shift+←` | Seek exactly 1 second, not to the nearest keyframe     |
| `i` / `I`             | Show statistics once / toggle them (decoder, format, dropped frames) |
| `s` / `S`             | Screenshot with / without subtitles, at video resolution |
| `#` / `j`             | Cycle audio / subtitle tracks                           |
| `[` / `]`             | Slow down / speed up playback                           |

Screenshots are JPEG by default. Use `--screenshot-format=png` when you want to compare stills without adding JPEG artifacts.

To watch the source and an encode side by side, synchronised:

```sh
mpv --external-file=encode.mkv --lavfi-complex="[vid1][vid2]hstack[vo]" source.mkv
```

`hstack` needs both videos to have the same height; scale the encode in the filter graph if you changed the resolution. Watch at normal speed first, then step through the frames of any section that looks wrong. Metrics can tell you where to look, but your eyes decide; see [Compare encoding quality](/guides/compare-encoding-quality/).

## HDR

mpv's default renderer (`gpu-next`) tone-maps HDR to SDR on an SDR display. On Windows (D3D11) and Wayland it can also switch an HDR-capable display into HDR and pass the signal through, which it does automatically when the display's capabilities are known (`--target-colorspace-hint`). On Windows, MPC-HC plays HDR through MPC Video Renderer or madVR. Judge HDR encodes on an HDR display where you can; tone-mapped previews vary with the player's settings. See [Preserve colour and HDR](/guides/preserve-color-and-hdr/).
