A simple and easy-to-use ffmpeg wrapper for common video operations
Project description
vidio
Stop Googling ffmpeg flags. Just tell vidio what you want.
vidio trim long-meeting.mp4 highlight.mp4 --start 1:30 --duration 45
vidio resize raw-footage.mp4 web-ready.mp4 --width 1280
vidio to-gif funny-moment.mp4 reaction.gif --fps 15 --quality high
vidio is a CLI tool that wraps ffmpeg with sane defaults so you can trim, resize, crop, concatenate, and convert videos without memorizing arcane flags every single time.
Install
Requires Python 3.10+ and ffmpeg in your PATH.
# Recommended — install as a standalone tool with uv
uv tool install vidio-cli
# Or run it directly without installing
uvx vidio-cli trim input.mp4 output.mp4 --start 10 --end 30
# Or if you prefer pip
pip install vidio-cli
Once installed, the vidio command is available globally.
What's in the box
| Command | What it does |
|---|---|
vidio ls |
Find video files in a directory |
vidio info |
Inspect metadata, codecs, resolution |
vidio trim |
Cut a clip by time range |
vidio resize |
Scale to target dimensions or percentage |
vidio crop |
Crop to aspect ratios like 16:9, 9:16, square |
vidio concat |
Place videos side-by-side or stacked |
vidio grid |
Build multi-video grid layouts |
vidio to-gif |
Convert clips to GIF with palette optimization |
That's it. No bloat, no kitchen-sink features. Just the things you actually do with video files on a regular basis.
Usage
Every command has --help:
vidio --help
vidio trim --help
Trim
# Cut from 30s to 1:30
vidio trim input.mp4 clip.mp4 --start 30 --end 1:30
# Take 45 seconds starting at 1:30
vidio trim input.mp4 clip.mp4 --start 1:30 --duration 45
# Chop off everything after 2:15
vidio trim input.mp4 clip.mp4 --end 2:15
Resize
# Scale to a specific width (height calculated automatically)
vidio resize input.mp4 output.mp4 --width 1280
# Scale to 50%
vidio resize input.mp4 output.mp4 --scale 0.5
# Force exact dimensions (may distort)
vidio resize input.mp4 output.mp4 -w 1920 -h 1080 --force-aspect
Crop
# Square crop, centered (great for Instagram)
vidio crop input.mp4 output.mp4 --preset center-square
# Vertical video for Reels/TikTok
vidio crop input.mp4 output.mp4 --preset 9:16
# Widescreen
vidio crop input.mp4 output.mp4 --preset 16:9
# Manual crop with offset
vidio crop input.mp4 output.mp4 -w 1280 -h 720 --x 100 --y 50
Concat
# Side-by-side
vidio concat left.mp4 right.mp4 combined.mp4
# Stacked vertically
vidio concat top.mp4 bottom.mp4 combined.mp4 --vertical
Grid
# Auto-arranged grid
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4
# Explicit 2x2 with padding
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4 --rows 2 --cols 2 --padding 10
# Custom cell size
vidio grid a.mp4 b.mp4 c.mp4 d.mp4 mosaic.mp4 --width 640 --height 360
Convert to GIF
# Good defaults out of the box
vidio to-gif clip.mp4 output.gif
# Optimized for small file size
vidio to-gif clip.mp4 output.gif --scale 0.3 --fps 8 --quality low
# Specific time range
vidio to-gif clip.mp4 output.gif --start 10 --duration 5
List & Info
# Quick ls-style listing
vidio ls
# Detailed view with duration, resolution, codec
vidio ls --list
# Recursive search
vidio ls --recursive
# JSON output (handy for scripting)
vidio ls --json
# Full metadata for a single file
vidio info video.mp4
vidio info video.mp4 --json
Development
git clone https://github.com/matanb/vidio-cli.git
cd vidio-cli
uv sync --group dev
# Run tests
uv run pytest -q
# Lint
uv run ruff check .
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vidio_cli-0.1.1.tar.gz.
File metadata
- Download URL: vidio_cli-0.1.1.tar.gz
- Upload date:
- Size: 42.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab683ddf2306f73f4193d6bd96b30fa680a39d604cd357e353d82d22f5bbec41
|
|
| MD5 |
748ff1d22b9095242bd325b1f857eed8
|
|
| BLAKE2b-256 |
0a13e87e01d0aa40fb8bdf4a6e4e8462204bea9f6e7a0a1db63e56c4454d7bc8
|
Provenance
The following attestation bundles were made for vidio_cli-0.1.1.tar.gz:
Publisher:
publish.yml on matanby/vidio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vidio_cli-0.1.1.tar.gz -
Subject digest:
ab683ddf2306f73f4193d6bd96b30fa680a39d604cd357e353d82d22f5bbec41 - Sigstore transparency entry: 975813357
- Sigstore integration time:
-
Permalink:
matanby/vidio@35a488bd0358cb37678e68360bb2334cac1865b2 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/matanby
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@35a488bd0358cb37678e68360bb2334cac1865b2 -
Trigger Event:
release
-
Statement type:
File details
Details for the file vidio_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: vidio_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 27.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4513a5265ac4bde7f0a80313d3ea074df8f7e5299f5d730c593ebb81dcd4892b
|
|
| MD5 |
3bedf5af73f87d6456d8cedfbc18a46d
|
|
| BLAKE2b-256 |
4e1cf2e501d855b209130c1928f8b252a18823a36e097de174d76271c9c78815
|
Provenance
The following attestation bundles were made for vidio_cli-0.1.1-py3-none-any.whl:
Publisher:
publish.yml on matanby/vidio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
vidio_cli-0.1.1-py3-none-any.whl -
Subject digest:
4513a5265ac4bde7f0a80313d3ea074df8f7e5299f5d730c593ebb81dcd4892b - Sigstore transparency entry: 975813358
- Sigstore integration time:
-
Permalink:
matanby/vidio@35a488bd0358cb37678e68360bb2334cac1865b2 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/matanby
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@35a488bd0358cb37678e68360bb2334cac1865b2 -
Trigger Event:
release
-
Statement type: