Skip to content

Automates converting BluRay rips (mkv) with Dolby Vision profile 7 to Profile 8.1

License

Notifications You must be signed in to change notification settings

cryptochrome/dovi_convert

Repository files navigation

dovi_convert

Documentation Homebrew


Convert Dolby Vision Profile 7 MKV files to Profile 8.1 for universal playback compatibility.

Why?

Most streaming devices (Apple TV, Shield, Amazon Fire*, etc.) don't support Profile 7's Enhancement Layer. They either fall back to HDR10 or blindly strip the layer, potentially ruining the picture.

dovi_convert analyzes files first, converts only what's safe, and preserves dynamic metadata for correct Dolby Vision playback.

What's New (v8.x)

Major Breaking Changes:

  • Complete rewrite of the CLI interface (argument parsing and syntax).
  • Merged batchand convert into a new, unified convert command. It now handles both single file and batch conversions of entire directories.

Make sure to read the Changelog for full details.

Documentation

Important

Reading the documentation before you begin is highly recommended.

Full documentation, guides, and command reference:

Compatibility

  • macOS (tested on macOS 26)
  • Linux (any modern distribution)
  • Windows (via WSL2 or Docker)

Requirements

  • Python 3.8+
  • ffmpeg, mkvtoolnix, mediainfo, dovi_tool

Missing dependencies are detected and can be installed automatically.

Quick Start

Terminal

Homebrew (macOS/Linux):

brew install dovi_convert

Manual Installation:

curl -sSLO https://github.com/cryptochrome/dovi_convert/releases/latest/download/dovi_convert.py
chmod +x dovi_convert.py && sudo mv dovi_convert.py /usr/local/bin/dovi_convert

Docker

docker run

docker run -d \
  --name=dovi_convert \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Europe/Berlin \
  -p 7681:7681 \
  -v /path/to/media:/data \
  --restart unless-stopped \
  cryptochrome/dovi_convert:latest

docker-compose.yml

services:
  dovi_convert:
    image: cryptochrome/dovi_convert:latest
    container_name: dovi_convert
    environment:
      - PUID=1000 # Change to required User ID, if needed
      - PGID=1000 # Change to required Group ID, if needed
      - TZ=Europe/Berlin # Change to your timezone
    volumes:
      - /path/to/media:/data # Change to your media directory
    ports:
      - 7681:7681 # Change left port to your desired port (e. g. 8080:7681)
    restart: unless-stopped

Access the web terminal at http://<your-docker-host>:7681.

Basic Usage

dovi_convert scan                     # Analyze files in current directory
dovi_convert convert Movie.mkv        # Convert a single file
dovi_convert convert /path/to/media   # Batch convert directory

Before You Convert

  • Not all Profile 7 files should be converted. Some use the Enhancement Layer for brightness expansion, which causes incorrect tone mapping if removed.
  • The tool detects these "Complex FEL" files and skips them by default. Don't use --force unless you understand the consequences.
  • FEL can also contain film grain, noise, and color data. Retaining this data during conversion requires re-encoding, which is out of scope. Your player can't decode FEL anyway, so this data is already inaccessible. You do retain the Dolby Vision dynamic metadata (RPU).
  • Original files are backed up automatically. The --delete flag removes them permanently.
  • Read Before You Start for the full explanation.

Changelog & Roadmap

Credits