A video editing utility
Project description
vide
A video editing utility for the command line. vide wraps
PySceneDetect and FFmpeg
behind a small, composable CLI: split a video into scene clips, edit or drop
the ones you don't want, and merge the rest back together — all without
re-encoding on the merge side.
Requirements
- Python 3.12+
- The
ffmpegbinary on yourPATH(brew install ffmpeg,apt install ffmpeg, …)
Installation
$ uv tool install vide
# or
$ pip install vide
Usage
Split a video into scenes
Detects scene cuts and writes one clip per scene:
$ vide split-scenes input.mp4 --output /tmp/clips
$ ls /tmp/clips
input-Scene-001.mp4 input-Scene-002.mp4 input-Scene-003.mp4
| Option | Description |
|---|---|
-o, --output DIRECTORY |
Where to write clips. Defaults to ./<video name>_scenes. |
--threshold FLOAT |
Scene cut sensitivity (default 27.0). Lower detects more cuts. |
Merge clips into one video
Concatenates clips in the order given using FFmpeg's concat demuxer with stream copy — instant and lossless, no re-encoding:
$ vide merge-scenes /tmp/clips/*.mp4 --output final.mp4
| Option | Description |
|---|---|
-o, --output FILE |
Path of the merged video (default merged.mp4). |
Because streams are copied, all inputs must share the same codec, resolution,
and framerate — always true for clips produced by vide split-scenes from the
same source.
Documentation
Full documentation lives in docs/. Build it locally with:
$ make sphinx
$ open docs/_build/html/index.html
Development
$ git clone https://github.com/inkylabsdev/vide.git
$ cd vide
$ uv sync
$ make test
The test suite runs real vide invocations against videos generated on the
fly with FFmpeg, and enforces 100% coverage.
Adding a command is a single file: drop a module into vide/commands/
exposing a module-level cli click
command, and it is registered automatically.
License
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 vide_python-0.1.0.tar.gz.
File metadata
- Download URL: vide_python-0.1.0.tar.gz
- Upload date:
- Size: 46.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95d60f7964591980a7af2c149f5a201eacf201e921a9f92b3800b47f9a62f2f2
|
|
| MD5 |
bb53887217f8ac2b191732a0d793501f
|
|
| BLAKE2b-256 |
ad8fd5fb35e0f012c297e0fc313781024151601855f94f5bd17373a6bf726089
|
File details
Details for the file vide_python-0.1.0-py3-none-any.whl.
File metadata
- Download URL: vide_python-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a29c35db7b3af7cf40273e7b7520b5034a9a701eb34fbc01553413ab3bc6d0b9
|
|
| MD5 |
6584a904e5409a0730df8c3e2e21094b
|
|
| BLAKE2b-256 |
fa50a81a65fa4252384ef0e860c996afeb6c9cf510bcd955fdc04a399315ba8f
|