scikit-video
Video Processing in Python
What it is and what it does
scikit-video is a Python video processing library that reads, writes, and analyzes video files by delegating I/O to FFmpeg and providing a NumPy-based interface for frame manipulation and quality metrics. It borrows conventions from scikit-image and scikit-learn, exposing functions for motion estimation and video quality assessment (SSIM, PSNR, NIQE, BRISQUE, VIIDEO, Video-BLIINDS). The library is built on numpy, scipy, and Pillow, and is actively maintained with recent releases fixing metric accuracy against reference MATLAB implementations and adding support for modern Python and NumPy versions.
Typical use cases include extracting frames from video files, computing frame-level quality scores, analyzing motion between frames, and batch-processing video datasets. The package handles both local files and file-like objects, supports pathlib.Path, and can pass audio through unchanged during video processing. Recent versions removed deprecated libav/avconv support and cleaned up Python-2-era code, making it more maintainable for current environments.
Use it for:
- Extract and analyze individual frames from video files for computer vision tasks.
- Compute video quality metrics (SSIM, PSNR, NIQE) to compare original and processed videos.
- Calculate motion vectors between consecutive frames for motion analysis.
- Batch-process video datasets to generate frame-level features for machine learning.
- Validate video codec and container compatibility before processing in production pipelines.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
scikit-video reads, writes, and analyzes video files using FFmpeg, providing Python functions for frame extraction and video quality metrics including SSIM, PSNR, NIQE, and BRISQUE.
Yes, if you need video I/O and quality metrics in Python. The package is actively maintained, has low install friction, carries no known vulnerabilities, and uses a permissive license. The main gotcha is the hard requirement for FFmpeg on the system PATH and Python >= 3.10; verify your environment supports both before committing. Recent metric accuracy fixes mean scores from 1.2.0+ are not comparable to 1.1.x, so check whether existing benchmarks or thresholds need recalibration.
Install
scikit-video on PyPI
pip
pip install scikit-videouv
uv add scikit-videopoetry
poetry add scikit-videoInstalling scikit-video
Before you install
Low install friction with a pure-wheel distribution. Actively maintained as of 2026; recent releases modernized the codebase for NumPy 2.x and Python 3.10+ compatibility. Requires FFmpeg >= 2.8 on system PATH as a runtime dependency.
License in practice
Distributed under BSD (permissive), allowing commercial and private use with minimal restrictions beyond attribution and liability disclaimers.
Quickstart
pip install scikit-video
import numpy
import scipy
import pillow
# Read video frames and process with numpy/scipy operations
FFmpeg >= 2.8 must be installed and available on system PATH; Python >= 3.10 required.
Verify before relying
- Exact scope and performance of supported video codecs and containers beyond FFmpeg's defaults.
- Whether the metric accuracy overhaul in 1.2.0 affects existing workflows that depend on 1.1.x scores.
- Real-world latency and memory usage for large video files or batch processing.
Package facts
| License | BSD (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — numpy, pillow, scipy |
| Maintenance | actively maintained — 2,887 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,246,075/month — #4,164 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: scikit_video-1.1.11-py2.py3-none-any.whl
Tags
More Scientific/Engineering packages
NumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
pandaspandas provides fast, flexible data structures…
permissive · top 100 on PyPI
scipyscipy provides numerical algorithms for…
permissive · top 100 on PyPI
scikit-learnscikit-learn provides a comprehensive Python…
permissive · top 1,000 on PyPI
dilldill extends Python's pickle module to…
permissive · top 1,000 on PyPI
multiprocessMultiprocess is an enhanced fork of Python's…
permissive · top 1,000 on PyPI
knowitExtracts detailed metadata from media files…
permissive · top 15,000 on PyPI
image-similarity-measuresComputes eight standard image similarity…
permissive · top 15,000 on PyPI
imageio-ffmpegProvides a simple Python wrapper around ffmpeg…
permissive · top 5,000 on PyPI
moviepyMoviePy is a Python library for video editing…
permissive · top 5,000 on PyPI
decordDecord decodes video and audio files with…
permissive · top 5,000 on PyPI
mediapyMediapy reads, writes, and displays images and…
permissive · top 5,000 on PyPI
decord2Decord2 decodes video and audio files with…
permissive · top 15,000 on PyPI
ffmpegWraps FFmpeg and FFprobe command-line tools to…
permissive · top 15,000 on PyPI
ffmpeg-pythonffmpeg-python provides a Python interface to…
permissive · top 5,000 on PyPI