vidmux
Inspect and modify video/audio/subtitle tracks using FFmpeg.
Developed and maintained by Philipp Meder.
- Source code: https://github.com/PhilippMeder/vidmux.git
- Report bugs: https://github.com/PhilippMeder/vidmux/issues
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
- Get codecs and audio/subtitle tracks
- Mux audio tracks
- Set audio/subtitle metadata
- Scan library structure
- Get video resolution
- Rename files
- 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 therenamefeature).-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
ffmpegwithffprobehas 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)
| File | Size | Uploaded | |
|---|---|---|---|
| vidmux-0.2.2.tar.gz | 25.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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 logRelease 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