ffclip
Humane ffmpeg. The 10 media recipes everyone googles, with sane defaults —
a thin wrapper with zero dependencies. ffmpeg and ffprobe do the real work
(they must be installed and on your PATH).
pip install ffclip
ffclip compress input.mp4 output.mp4 # shrink for sharing (H.264/AAC)
ffclip audio input.mp4 output.mp3 # extract audio
ffclip gif input.mp4 out.gif --from 10 --to 15
ffclip trim input.mp4 out.mp4 --from 1:30 --to 2:45
ffclip mute input.mp4 out.mp4 # strip the audio track
ffclip thumb input.mp4 shot.jpg --at 5
ffclip concat list.txt out.mp4 # join same-codec files
ffclip resize input.mp4 out.mp4 --width 1280
ffclip speed input.mp4 out.mp4 --factor 2 # video + audio stay in sync
ffclip info input.mp4 # human-readable summary
Times accept seconds (90, 90.5) or HH:MM:SS. ffmpeg's own progress
passes straight through to your terminal.
Notes
gifuses the two-pass palette method, so the output doesn't look like it was dithered by a potato — unlike most one-liner recipes.speedchainsatempofilters, so factors outside 0.5–2 (like 4x) work and audio stays pitched correctly relative to video.trimre-encodes for frame accuracy; if you want instant lossless cuts and can live with keyframe granularity, that's a different tool.- Outputs are never overwritten unless you pass
--force/-y. concattakes a text file with onefile 'path'per line (ffmpeg concat demuxer format) and joins same-codec files without re-encoding.
POSIX only (Linux, macOS). Python 3.9+.
License
MIT.
Metadata
Release files for ffclip 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 | |
|---|---|---|---|
| ffclip-0.1.0.tar.gz | 7.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ffclip-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.1 kB
Release files / ffclip-0.1.0.tar.gz
| Download URL | ffclip-0.1.0.tar.gz |
|---|---|
| Size | 7.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a3b55dd7d06dd76879d5d957c7b691756a0b403ccf9b638471b152bbca27a627
|
|
BLAKE2b-256 checksum How to use checksums |
0ac6f3a951e410ff7ab42766f9abd674112d20a9d6b681be2adfde9c781de9e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.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 Oct 11, 2026.
Transparency logRelease files / ffclip-0.1.0-py3-none-any.whl
| Download URL | ffclip-0.1.0-py3-none-any.whl |
|---|---|
| Size | 6.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5debbe9af259c89f11bb6602d58c6caef1478ae5d9afaa40e5ea8a0eea21daa8
|
|
BLAKE2b-256 checksum How to use checksums |
512f5b5080767bda54b8d84adf91fc45d974703ac0971b9e14f44191857859db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.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 Oct 11, 2026.
Transparency log