Skip to main content

vidmux

PyPi badge Python versions badge License badge GitHub issues badge

Inspect and modify video/audio/subtitle tracks using FFmpeg.

Developed and maintained by Philipp Meder.

Quick Start

Install this package:

pip install vidmux

You can get the newest stable version with:

pip install git+https://github.com/philippmeder/vidmux

License

Distributed under the BSD 3-Clause License.

Usage

You may directly call one of the two following lines:

vidmux [OPTIONS]
python -m vidmux [OPTIONS]

Features

For a full list of features, use:

vidmux --help
  1. Get codecs and audio/subtitle tracks
  2. Mux audio tracks
  3. Set audio/subtitle metadata
  4. Scan library structure
  5. Get video resolution
  6. Rename files
  7. Shift SRT timestamps

Scan for codecs, audio and subtitle tracks

Scan the video files of a library for video/audio codecs and the included audio and subtitle tracks.

vidmux scan [-h] [--extensions EXTENSION [EXTENSION ...]] [--print] [--json FILE] [--csv FILE] [--name FILE] [-l LANGUAGE_ID] library

Options:

  • library (positional): Path to the video library directory.
  • --extensions: Specify (multiple) file extensions to include in the scan.
  • --print: Print the results to the console/terminal.
  • --json: Specify a JSON file where the results should be saved.
  • --csv: Specify a CSV file where the results should be saved.
  • --name: Specify a JSON file where name suggestions will be stored (required for the rename feature).
  • -l, --default-language: Language identifier that will be used to interpret undefined languages of audio/subtitle tracks (currently only applied for naming suggestions).

Mux audio tracks

Mux multiple audio tracks into one video file using FFmpeg.

vidmux mux-audio-tracks [-h] [--dry-run] output inputs [inputs ...]

Options:

  • output (positional): Specify the output file.

  • inputs (positional): Pairs or triplets of inputs: input_file lang [title].

    Example: video_en.mp4 eng video_commentary_en.mp4 eng 'English Commentary' video_de.mp4 deu

  • --dry-run: Print the ffmpeg command without executing it.

Set audio and subtitle metadata

Set the metadata, i.e. language and title, for audio and subtitle tracks.

vidmux set-language [-h] --audio-lang LANGUAGE [LANGUAGE ...] [--subtitle-lang [LANGUAGE ...]]
[--audio-title [TITLE ...]]
[--subtitle-title [TITLE ...]]
[--dry-run]
input_file output_file

Options:

  • --audio-lang: List of language identifiers corresponding to the audio tracks, e.g. deu eng.
  • --subtitle-lang: List of language identifiers corresponding to the subtitle tracks, e.g. deu eng.
  • --audio-title: List of titles corresponding to the audio tracks.
  • --subtitle-title: List of titles corresponding to the audio tracks.
  • --dry-run: Print the ffmpeg command without executing it.

Scan for issues in the library structure

Scan and find issues in the structure of a movie library. Following rules are currently used:

  • Every movie should be in an appropriate subfolder with corresponding name, e.g. Seven Samurai (1954)/Seven Samurai (1954).mp4. It is okay to have multiple versions or parts in the same folder as long as the basic name does not change. Example:
    movie-library/Blade Runner (1982)
    ├── Blade Runner (1982) - [1080p].mp4
    ├── Blade Runner (1982) - [480p].mp4
    ├── Blade Runner (1982) - Director's Cut.mp4
    └── Blade Runner (1982) - Final Cut.mp4
    
  • Every movie should include a publishing year, e.g. Paris, Texas (1984).mp4.
  • The usual suspects of special characters are not allowed in the filename, i.e. <>:"/\\|?*.
vidmux lib-structure [-h] [--extensions EXTENSION [EXTENSION ...]] [--print] [--json FILE] [--csv FILE] library

Options:

  • library (positional): Path to the video library directory.
  • --extensions: Specify (multiple) file extensions to include in the scan.
  • --print: Print the results to the console/terminal.
  • --json: Specify a JSON file where the results should be saved.
  • --csv: Specify a CSV file where the results should be saved.

Get video resolution

Inspect and show the video resolution of a video file (supports URL).

vidmux resolution [-h] path_or_url

Rename files

Rename files according to a mapping given by a file (use vidmux scan --name).

vidmux rename [-h] [--no-backup] file

Options:

  • --no-backup: Prevent the creation of a file containing the original filename (so you can revoke the process).

Shift SRT timestamps

Shift all timestamps in a SRT subtitle file.

vidmux srt-tools [-h] -s SECONDS [-o FILE] [--inplace] [--show-count] input_file

Options:

  • -s, --shift: Timeshift in seconds (e.g. 1.5 or -0.8).
  • -o, --output: Output SRT file (if not provided: stdout or --inplace)
  • --inplace: Overwrite original file (a backup will be created).
  • --show-count: Show number of changed timestamps.

Requirements

  • ffmpeg with ffprobe has to be installed

Metadata

Release files for vidmux 0.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vidmux 0.2.2
File Size Uploaded
vidmux-0.2.2.tar.gz 25.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vidmux 0.2.2
File Interpreter ABI Platform
vidmux-0.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 57.6 kB

Release files / vidmux-0.2.2.tar.gz

Download URL vidmux-0.2.2.tar.gz
Size 25.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e358552b443a617ebba7b979b70b7c5dcab1b35183e2d38f53ed2386a453c6df
BLAKE2b-256 checksum
How to use checksums
7c8649c055884e19974a24889e4f6cd94ad9bf75c2525db8a2035bc5d4111c9e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

Release files / vidmux-0.2.2-py3-none-any.whl

Download URL vidmux-0.2.2-py3-none-any.whl
Size 32.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b8ac44ed21262e0b368d5a692c65a93ae412d432b8e56349fb7d44b250d272a3
BLAKE2b-256 checksum
How to use checksums
f52cc15263df5f8c948ec8b4d579c3f713563e89501e9876b494074af7365d74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page