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
Metadata
Release files for vide-python 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vide_python-0.1.0.tar.gz | 46.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vide_python-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 52.0 kB
Release files / vide_python-0.1.0.tar.gz
| Download URL | vide_python-0.1.0.tar.gz |
|---|---|
| Size | 46.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
95d60f7964591980a7af2c149f5a201eacf201e921a9f92b3800b47f9a62f2f2
|
|
BLAKE2b-256 checksum How to use checksums |
ad8fd5fb35e0f012c297e0fc313781024151601855f94f5bd17373a6bf726089
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|
Release files / vide_python-0.1.0-py3-none-any.whl
| Download URL | vide_python-0.1.0-py3-none-any.whl |
|---|---|
| Size | 5.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a29c35db7b3af7cf40273e7b7520b5034a9a701eb34fbc01553413ab3bc6d0b9
|
|
BLAKE2b-256 checksum How to use checksums |
fa50a81a65fa4252384ef0e860c996afeb6c9cf510bcd955fdc04a399315ba8f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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}
|