Skip to content

parkejunior/jellycc-cli

Repository files navigation

JellyCC CLI

A smart CLI that diagnoses, audits, repairs, standardizes, and optimizes your media to ensure Direct Play on Jellyfin.

🇬🇧 English | 🇧🇷 Português (Brasil)

JellyCC CLI Screenshot

✨ Features

  • 🔍 Compatibility Analysis — Compatibility matrix for Direct Play per Jellyfin client (Chrome, Firefox, Android TV, etc.).
  • 🚀 Cleanup (Remux) — Re-wraps to MKV without re-encoding, preserving the original quality.
  • 🔄 Conversion (Transcode) — Converts to Direct Play codecs (H.264 8-bit / AAC, EAC3, or FLAC) with configurable fallback rules.
  • 🔧 Forced Repair — Fixes files with corrupted timestamps via an intermediate pipeline (.w64/.mp4).
  • 🔬 Quick Scan + Deep Scan — Checks container integrity and analyzes frame by frame looking for artifacts and errors.
  • 🔬 Myopic Scan — Deep Scan restricted to selected tracks.
  • 🎛️ Track Selection — Choose which video, audio, and subtitle streams to keep in the final file.
  • ⏱️ Sync Adjustment / End Cut — Defines time offset and end cut to avoid lip-sync issues.
  • 🔀 File Merging — Merges tracks from two files into a single MKV, with automatic/manual sync and Strict Mode.
  • 🏷️ Tag Editing — Edits language (e.g., por, eng, jpn) and title for each track.
  • 🌐 Internationalization — Interface in English (en-US) and Brazilian Portuguese (pt-BR).
  • ⚠️ Embedded Junk Detection — Detects and removes covers/thumbnails and PGS subtitles that force transcoding.

🛠️ Prerequisites

📦 Installation

Important

Make sure FFmpeg and FFprobe are installed globally on your system, as JellyCC strictly depends on them to perform analysis and conversions.

Run the installation script:

curl -fsSL https://raw.githubusercontent.com/parkejunior/jellycc-cli/main/install.sh | bash

🚀 Usage

Analysis and Cleanup

To analyze a video file, run the command:

jellycc

Or if you prefer, you can open the file directly in the terminal:

jellycc check [path/to/file]
# or
jellycc [path/to/file]

If you want to run the full analysis, include the --deep-scan parameter:

jellycc check [path/to/file] --deep-scan

Merging

To merge multiple files into a single MKV, run the command:

jellycc merge

Language

If you want to change the interface language, run the command:

jellycc lang

Tip

Drag and drop the video file directly into the terminal to automatically fill in the path.

Note

The result is saved in the same folder as the original media with the suffixes .jellycc.mkv or .jellycc_merged.mkv.

☰ Interactive Menu

After analyzing a file, an interactive menu is displayed with the following options:

  • 🚀 Cleanup (Remux) — Re-wraps without re-encoding.
  • 🔄 Conversion — Converts incompatible codecs for Direct Play.
  • 🔧 Forced Repair — Re-encoding via an intermediate pipeline for files with corrupted timestamps.
  • 🎛️ Modify tracks — Selects which video, audio, and subtitle streams to keep.
  • ⏱️ Adjust Sync / End Cut — Defines time offset and end cut.
  • 🔍 Deep Scan — Frame-by-frame analysis of all tracks.
  • 🔬 Myopic Scan — Deep Scan only on selected tracks.
  • 🏷️ Edit Tags — Edits language and title of each track.

⚙️ Configuration

JellyCC uses two main configuration files:

  • jellyfin-codec-support.yaml — Compatibility matrix per client (Chrome, Firefox, Android TV, etc.) based on the official Jellyfin documentation.
  • fallback_rules.yaml — Conversion rules (container, video and audio codec).

You can edit these files according to your needs. Language preferences are automatically saved in ~/.jellycc.json.

⚖️ License

JellyCC is licensed under the terms of the MIT + Commons Clause.