moviepy
Video editing with Python
What it is and what it does
MoviePy converts video and audio files into Python objects (numpy arrays) so you can access individual frames and apply effects programmatically. It handles reading multiple formats (mp4, webm, gif), compositing clips together, adding text overlays, adjusting volume, and writing the result back to disk. The library trades raw speed for flexibility—operations are slower than calling ffmpeg directly because of the overhead of importing and exporting media as arrays, but this makes it approachable for developers who want to script video workflows in pure Python.
The package depends on imageio for media I/O, imageio_ffmpeg to provide ffmpeg binaries, numpy for array operations, and several utility libraries (decorator, proglog, python-dotenv, pillow). It runs on Windows, Mac, and Linux with Python 3.9+. Version 2.2.1 is a recent stable release, though the project entered v2 with significant breaking changes from v1, so upgrading existing code may require work.
Use it for:
- Batch-process video files: cut, concatenate, or resize multiple videos programmatically.
- Add dynamic overlays: insert text, images, or watermarks at specific times or positions.
- Generate animated GIFs from video clips or sequences of images.
- Build video pipelines: chain effects, transitions, and compositing operations in code.
- Extract and manipulate audio: adjust volume, mix tracks, or sync with video frames.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
MoviePy is a Python library for video editing that reads, processes, and writes video and audio files by converting them to numpy arrays for frame-level manipulation and effect application.
Yes, if you need to automate video editing workflows in Python and can accept slower performance than raw ffmpeg. The low install friction, permissive license, and stable API make it a solid choice for scripted video tasks. The aging maintenance status (450 days since last release) is a minor concern but not a blocker given the Production/Stable classifier and active maintainers. Be aware of v2 breaking changes if upgrading from v1.
Install
moviepy on PyPI
pip
pip install moviepyuv
uv add moviepypoetry
poetry add moviepyInstalling moviepy
Before you install
Low install friction with a pure-Python wheel distribution. Maintenance status is aging—last release was 450 days ago—though the project remains in Production/Stable status with active maintainers listed. The v2 upgrade introduced breaking changes, so existing codebases may require migration effort.
License in practice
MIT License (permissive) means you can use, modify, and distribute MoviePy freely in commercial and private projects with minimal restrictions, provided you include the license notice.
Quickstart
pip install moviepy
from moviepy import VideoFileClip, TextClip, CompositeVideoClip
clip = VideoFileClip("video.mp4").subclipped(10, 20)
txt_clip = TextClip(text="Hello", font_size=70, color='white').with_duration(10)
final = CompositeVideoClip([clip, txt_clip])
final.write_videofile("output.mp4")
Requires Python 3.9+ and ffmpeg installed on the system (imageio_ffmpeg handles this on most platforms, but custom ffmpeg setups may need manual configuration).
Verify before relying
- Whether v2's breaking changes affect common workflows or only edge cases.
- Performance characteristics for large video files or real-time processing.
- Current state of issue backlog and typical response time for bug reports.
Package facts
| License | MIT License (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 7 — decorator, imageio, imageio_ffmpeg, numpy, proglog, python-dotenv, pillow |
| Maintenance | aging — 450 days since the last release |
| First released | |
| Downloads | 8,186,009/month — #1,654 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: moviepy-2.2.1-py3-none-any.whl
Keywords: video, editing, audio, compositing, ffmpeg
Tags
More Multimedia packages
Reads metadata (artist, title, duration,…
permissive · top 5,000 on PyPI
xhtml2pdfConverts HTML and CSS to PDF documents using…
permissive · top 5,000 on PyPI
ffmpyffmpy is a Python wrapper around FFmpeg that…
permissive · top 5,000 on PyPI
piexifPiexif reads, writes, and manipulates EXIF…
permissive · top 5,000 on PyPI
torch-audiomentationsProvides PyTorch-native audio data augmentation…
permissive · top 5,000 on PyPI
artConverts text and generates one-line ASCII art…
permissive · top 5,000 on PyPI
typed-ffmpegA Python wrapper around FFmpeg with full type…
permissive · top 15,000 on PyPI
ffmpegWraps FFmpeg and FFprobe command-line tools to…
permissive · top 15,000 on PyPI
mediapyMediapy reads, writes, and displays images and…
permissive · top 5,000 on PyPI
imageio-ffmpegProvides a simple Python wrapper around ffmpeg…
permissive · top 5,000 on PyPI
pyaaf2Read, write, and modify Advanced Authoring…
permissive · top 15,000 on PyPI
pymp4Parses and builds MP4 box structures from…
permissive · top 5,000 on PyPI
scikit-videoscikit-video reads, writes, and analyzes video…
permissive · top 5,000 on PyPI
scenedetectDetects scene cuts and shot changes in videos,…
permissive · top 5,000 on PyPI
ffmpeg-pythonffmpeg-python provides a Python interface to…
permissive · top 5,000 on PyPI