vidtoolz
Make videos using python. A plugin-based CLI toolset for editing, authering videos, built with python.
Overview
vidtoolz is a collection of command-line tools designed to make videos and edit videos easier. The project takes a plugin-based approach, allowing users to extend its functionality by creating custom plugins.
After installing vidtoolz, install any of the following plugins.
Default Plugins
vidtoolz comes with several built-in plugins for common video operations:
| Plugin | Description | Command |
|---|---|---|
| info | Get video information (codecs, duration, etc.) | vidtoolz info video.mp4 |
| clip | Clip a portion of a video | vidtoolz clip input.mp4 output.mp4 -s 00:00:10 -d 00:00:05 |
| ffconcat | Concatenate multiple videos | vidtoolz ffconcat video1.mp4 video2.mp4 -o output.mp4 |
| ffoverlay | Overlay one video on another | vidtoolz ffoverlay background.mp4 overlay.mp4 -o output.mp4 |
| play | Play a video file | vidtoolz play video.mp4 |
| reverse | Reverse a video (uses FFmpeg by default) | vidtoolz reverse input.mp4 output.mp4 |
| scale | Scale/resize a video | vidtoolz scale input.mp4 output.mp4 640 480 |
| speed | Change video playback speed | vidtoolz speed input.mp4 output.mp4 2.0 |
VidToolz Plugins
| Tool | Description | Category |
|---|---|---|
| Reverse | Reverse a video file | Video Effects |
| Zoomtext | Zoom out the video and display text as caption | Video Effects |
| Mchap | Make chapters using a list of videos | Video Effects |
| Lightning | Add lightning effects on video | Video Effects |
| Flicker | Add flicker effects on video | Video Effects |
| Slideshow | Create slideshow with images using ffmpeg | Video Effects |
| Split | Split a video into two | Video Effects |
| Normalize | Normalize audio of a video | Audio Enhancements |
| Shake | Shake a portion of a video | Special Effects |
| Flip | Flip a vedio vertically or horizontally | Special Effects |
| Denoise | Denoise audio in a video | Audio Enhancements |
| Enhance | Enhance audio of a video using ffmpeg | Audio Enhancements |
| Twitch | Add twitch effect to a video | Video Effects |
| H2R | Tools for hum hai rahi channel | Video Effects |
| Vintage | Create vintage effect on videos using ffmpeg | Video Effects |
| Jitter | Add jitter effect to a video using moviepy | Special Effects |
| Trim | Trim video using ffmpeg | Video Effects |
| Rotate | Rotates a video | Special Effects |
| Metadata | Add metadata to a video for better SEO | Metadata and SEO |
| Stitch | Stitch videos using music | Music Integration |
| Highlights | Make highlights from videos | Video Effects |
| Fade | Add fade in and out for a video using ffmpeg | Video Effects |
| Fadeinout | Apply fadein-fadeout effects on videos | Video Effects |
| Soundeffects | Add sound effects to videos | Audio Enhancements |
| Getframe | Get frame out of a video for thumbnail | Special Effects |
| Chapters | Write formated youtube chapters with text inputs | Video Effects |
| Hue | Add a hue to a video using ffmpeg | Video Effects |
| Echo | Apply noise reduction and echo effect | Audio Enhancements |
| Beats | Get beats from a mp3 song | Music Analysis |
| Greenscreen | Apply greenscreen video on top of a video | Special Effects |
| Shorts | Create shorts from long form videos | Video Effects |
| Freeze | Use moviepy to flash freeze a frame just like imovie | Special Effects |
| Intro | Create intro video from a series of videos | Video Effects |
| Repaudio | Replace audio for a video file | Audio Enhancements |
| Vignette | Apply Vignette on Video | Video Effects |
| Addtext | Add text to a video file | Text and Overlay |
| Volume | Increase decrease volume | Audio Control |
| Addsound | Add sound to a video | Audio Control |
| Loudness | Use EBU R128 Loudness Normalization with ffmpeg | Audio Enhancements |
| Overlay | Add overlay effect on video using ffmpeg | Text and Overlay |
| Textclip | Create a color clip with overlaid text | Text and Overlay |
| Compose | Compose Videos using the supplied compose_vid file | Video Composition |
| Concat | Concat videos using ffmpeg | Video Composition |
To get help, just type vidtoolz or its shortcut vid to access the cli.
vidtoolz --help
or
vid --help
This will show all the plugins installed.
usage: vid [-h]
{plugins,install,trim,addtext,chapters,beats,greenscreen,shorts,repaudio,addsound,concat}
...
Video Tools for editing videos using python
positional arguments:
plugins Get all listed plugins
install Install plugins in the same environemnt as vidtoolz
trim Trim video using ffmpeg
addtext Add text to a video file
chapters Write formated youtube chapters with text inputs
beats Get beats from a mp3 song
greenscreen Apply greenscreen video on top of a video
shorts Create shorts from long form videos
repaudio Replace audio for a video file
addsound Add sound to a video
concat Concat videos using ffmpeg
optional arguments:
-h, --help show this help message and exit
To install a plugin, just type
vid install vidtoolz-trim
Features
- A simple and intuitive CLI interface
- Extensive plugin support for customizing and extending the toolset
- Integration with popular Python libraries and frameworks
- Support for multiple Python versions (>=3.9)
- Comprehensive testing suite with integration tests for all default plugins
- FFmpeg-based operations for better performance
Testing
vidtoolz includes a comprehensive test suite that covers all default plugins:
# Run all tests
python -m pytest tests/
# Run specific tests
python -m pytest tests/test_vidtoolz.py::test_info_plugin -v
python -m pytest tests/test_vidtoolz.py::test_reverse_plugin -v
python -m pytest tests/test_vidtoolz.py::test_speed_plugin -v
The tests use the provided test data (tests/test_data/) and verify:
- Output file creation and validation
- Proper error handling
- Argument parsing and validation
- Performance characteristics
Speed Plugin
The speed plugin allows you to change video playback speed with flexible audio handling options:
# 2x speed with adjusted audio (default)
vidtoolz speed input.mp4 output.mp4 2.0
# Half speed with muted audio
vidtoolz speed input.mp4 output.mp4 0.5 -a mute
# 1.5x speed keeping original audio
vidtoolz speed input.mp4 output.mp4 1.5 -a keep
# Auto-generated output filename
vidtoolz speed input.mp4 1.8
Audio Modes:
adjust(default): Adjust audio speed to match video speedmute: Remove audio from the output videokeep: Keep original audio unchanged (video only speed change)
Reverse Plugin Enhancement
The reverse plugin now uses FFmpeg by default for much faster performance:
# Fast FFmpeg-based reversal (default)
vidtoolz reverse input.mp4 output.mp4
# Original MoviePy-based reversal (slower but may work better for some files)
vidtoolz reverse input.mp4 output.mp4 --use-moviepy
The FFmpeg version typically completes in seconds vs minutes for the MoviePy version.
Requirements
- Python 3.9 or later
- The
pluggylibrary for plugin management
Installation
pip install vidtoolz
Developing your plugin
You'll need to have cookiecutter installed.
pipx install cookiecutter
Regular pip will work OK too.
Usage
Run cookiecutter gh:sukhbinder/vidtoolz-plugin and then answer the prompts. Here's an example run:
cookiecutter gh:sukhbinder/vidtoolz-plugin
This will show this. Fill this and the template is ready. Just add your code.
plugin_name []: vidtoolz plugin template demo
description []: Demonstrating https://github.com/sukhbinder/vidtoolz-plugin
hyphenated [vidtoolz-plugin-template-demo]:
underscored [vidtoolz_plugin_template_demo]:
github_username []: sukhbinder
author_name []: Sukhbinder Singh
Development
To contribute to this tool, first checkout the code. Then create a new virtual environment:
# To clone
git clone https://github.com/sukhbinder/vidtoolz.git
# And create a new virtual environment
cd vidtoolz
python -m venv venv
source venv/bin/activate
# In windows
venv\Scripts\activate
Now install the dependencies and test dependencies:
pip install -e '.[test]'
To run the tests:
python -m pytest
Metadata
Release files for vidtoolz 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| vidtoolz-0.1.5.tar.gz | 23.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vidtoolz-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.4 kB
Release files / vidtoolz-0.1.5.tar.gz
| Download URL | vidtoolz-0.1.5.tar.gz |
|---|---|
| Size | 23.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7c1d90356bff24f23eddf720d96852dfdeeeaa91d211a94d44d036a7c4922c7b
|
|
BLAKE2b-256 checksum How to use checksums |
16d54d9c568417e4a1c833fb09cc8aa84f5c626efa950e5ab5418e50149b4e52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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 23, 2026.
Transparency logRelease files / vidtoolz-0.1.5-py3-none-any.whl
| Download URL | vidtoolz-0.1.5-py3-none-any.whl |
|---|---|
| Size | 22.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ba308af9fcbe7e4842245ce84ca965e2c9d70632332b7e7536c6e4420c3a2490
|
|
BLAKE2b-256 checksum How to use checksums |
1392ba423d3373a8fb139c8c14217e37b9a48efe50b6331280fe2aecd5094be5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
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 23, 2026.
Transparency logSecurity for vidtoolz 0.1.5
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for vidtoolz-0.1.5.tar.gz
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 23, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.