Skip to main content

vapoursynth-imageseqs

License VapourSynth version Build Rust tests

A native VapourSynth plugin for reading ordered image sequences and writing PNG frames. File types are detected from their contents, so filenames do not need the matching extension.

install

Install the platform-specific wheel:

python -m pip install vapoursynth-imageseqs

You need VapourSynth R79 or newer. The wheel installs the plugin and manifest in VapourSynth's plugin directory; it does not install VapourSynth or provide a Python import package.

You can also download a plugin ZIP from Releases or the build workflow. Copy its imageseqs folder into your VapourSynth plugin directory. If the plugin does not load automatically, load the library directly:

core.std.LoadPlugin(r"path/to/plugin-library")

read images

Pass paths in the order you want them in the clip:

from pathlib import Path
import vapoursynth as vs

core = vs.core
files = sorted(Path(r"I:\images").glob("*.png"))

clip = core.imgseqs.Read(files=[str(path) for path in files])

Each still image contributes one frame. Read returns the color clip. ReadAlpha returns both the color clip and a separate gray alpha clip. Images without alpha get a fully opaque alpha frame:

result = core.imgseqs.ReadAlpha(files=[str(path) for path in files])
clip = result["clip"]
alpha = result["alpha"]

Read and ReadAlpha options

option default description
files required Image paths, in frame order.
fpsnum, fpsden 24, 1 Output frame rate.
mismatch False Allow frames with different sizes or pixel formats.
apply_rotation True Apply the orientation stored in each image. Some orientations swap width and height.
icc_profile False Copy embedded ICC bytes to the ICCProfile frame property. Pixels are not color transformed.
prefetch automatic, up to 4 workers Background workers for upcoming frames. Set to 0 to disable lookahead.
prefetch_memory automatic, at least 192 MiB Memory budget for prefetched frames, in MiB. Must be positive.
debug False Write timing information to the VapourSynth log.

By default, all frames must have the same size and pixel format. Set mismatch=True to allow variation; downstream filters may still need a consistent clip, so convert it before using those filters.

supported formats

PNG (including APNG), JPEG, BMP, GIF, ICO, TIFF, DDS, Farbfeld, WebP, AVIF, HEIF/HEIC, JPEG XL, JPEG 2000, EXR, HDR, PNM, QOI, and TGA.

Animated GIF, APNG, WebP, JPEG XL, AVIF, and HEIF/HEIC contribute their displayed timeline at the requested frame rate. Each file plays once; its loop count is ignored. A picture held across multiple output ticks appears in each corresponding frame.

Gray and RGB images keep their supported bit depth, including depths from 9 to 15 bits. Compatible WebP, AVIF, HEIF/HEIC, and JPEG 2000 images may be returned as YUV planes instead of RGB. Monochrome images are returned as gray.

color and metadata

The plugin applies image orientation by default and reports the source's color metadata through VapourSynth frame properties. It does not apply ICC color transforms. Use icc_profile=True to copy the raw profile into ICCProfile; ImgSeqHasICC reports whether a profile exists either way.

You can then utilize VapourSynth-ICCConvert to do the ICC color transform.

VapourSynth resize filters can convert YUV clips to RGB using the frame's color properties:

rgb = core.resize.Bicubic(clip, format=vs.RGB24)

For clips without matrix metadata, provide the correct matrix to the resize filter. See the VapourSynth resize documentation.

Useful source properties include ImgSeqPath, ImgSeqIndex, ImgSeqAnimationIndex (for animated files), ImgSeqOrientation, and ImgSeqHasICC. Standard color properties are set when the file provides values VapourSynth supports.

write PNGs

PNGWrite creates a node with the same frames as its input clip. Requesting a frame writes it as a PNG; creating the node alone writes no PNG:

writer = core.imgseqs.PNGWrite(
    clip,
    output_path=r"exports\frame%04d.png",
)

for n in range(writer.num_frames):
    with writer.get_frame(n):
        pass

To keep each source file's own name, give output_dir instead of output_path:

writer = core.imgseqs.PNGWrite(clip, output_dir=r"exports")

The directory is created recursively. output_path and output_dir are mutually exclusive.

Use a literal path for a one-frame clip, or a numbered path such as %d, %04d, or %06d for a longer clip. %% writes a literal percent sign. The output_path directory must already exist. With output_dir, a still is written as <stem>.png from ImgSeqPath; an animated file's output frames use the writer's own frame index, <stem>-0000.png, <stem>-0001.png, and so on, because the picture index repeats while a picture is held.

option default description
clip required Gray, RGB, or YUV integer frames from 8 to 16 bits, or float gray/RGB.
output_path None One filename or a numbered filename template. Required unless output_dir is given.
output_dir None Directory to write into; a still is named from ImgSeqPath, an animated frame from the writer's index; created recursively. Required unless output_path is given.
alpha None Matching gray clip to write as alpha.
depth 8 for 8-bit input, otherwise 16 PNG sample depth: 1, 2, 4, 8, or 16. Packed depths are for gray clips.
compression 6 Lossless compression level from 0 to 9.
start_number 0 Number added to the writer's frame index. Only with output_path.
always_save False Write a frame again if this writer has already saved it.
overwrite False Allow replacing an existing destination.
icc_profile False Embed the frame's raw ICCProfile property.
matrix frame metadata Matrix code to use when converting YUV without matrix metadata.
debug False Write timing information to the VapourSynth log.

The writer converts supported YUV formats to RGB using the frame's matrix, range, and chroma location. If the frame has no matrix, pass matrix= or convert it before writing. Float samples are treated as values from 0 to 1 and clamped to that range. For 9–15-bit input, the default 16-bit PNG preserves the source precision; depth=8 reduces it by rounding.

build from source

Build a wheel with Python 3.12 or newer, Rust 1.94 or newer, CMake, Ninja, and pkg-config. Native codec dependencies vary by platform; the Linux release build setup is documented in the Linux build guide.

python -m pip install ".[dev]"
python -m build

license

The plugin is licensed under the Mozilla Public License 2.0. See LICENSE and the third-party notices for the licenses of bundled libraries.

Metadata

Release files for vapoursynth-imageseqs 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vapoursynth-imageseqs 0.4.1
File Size Uploaded Provenance
vapoursynth_imageseqs-0.4.1.tar.gz 816.9 kB With provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for vapoursynth-imageseqs 0.4.1
File
vapoursynth_imageseqs-0.4.1-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
vapoursynth_imageseqs-0.4.1-py3-none-musllinux_1_2_x86_64.whl Python 3 none Linux musl 1.2+ x86-64 Details
vapoursynth_imageseqs-0.4.1-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details
vapoursynth_imageseqs-0.4.1-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details

Total release size: 37.5 MB

Release files / vapoursynth_imageseqs-0.4.1.tar.gz

Download URL vapoursynth_imageseqs-0.4.1.tar.gz
Size 816.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3d2cef517404b887f03330e98a9879277d9c4c59cf6007e85e7bd063bc0fd7fa
BLAKE2b-256 checksum
How to use checksums
5e130861b63f32e804a7880ce22ea6dc718645ecad377e26dff1181806e5986a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 25, 2026.

Transparency log

Release files / vapoursynth_imageseqs-0.4.1-py3-none-win_amd64.whl

Download URL vapoursynth_imageseqs-0.4.1-py3-none-win_amd64.whl
Size 11.2 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
be309a1c30bda8574bdce5a85ee0dc385c87d13d42196e1b25dc47eed04e1879
BLAKE2b-256 checksum
How to use checksums
a6f47ea0e03906daa85e8547e0479537dd0e9014b15f5d8d90b74554940cff2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 25, 2026.

Transparency log

Release files / vapoursynth_imageseqs-0.4.1-py3-none-musllinux_1_2_x86_64.whl

Download URL vapoursynth_imageseqs-0.4.1-py3-none-musllinux_1_2_x86_64.whl
Size 11.6 MB
Tags Linux musl 1.2+ x86-64 Python 3
SHA-256 checksum
How to use checksums
5960411eeaaeb802e1b6482fcc5b6fd887dd945a494d970c373559771aff715e
BLAKE2b-256 checksum
How to use checksums
7916f79e652d7936d843b2104a43eb649a4dc478f5ce52d26bf7f01892f7dd57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 25, 2026.

Transparency log

Release files / vapoursynth_imageseqs-0.4.1-py3-none-manylinux_2_28_x86_64.whl

Download URL vapoursynth_imageseqs-0.4.1-py3-none-manylinux_2_28_x86_64.whl
Size 10.5 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
0329b44bfe8444a3f2afdaa324f47a881d44ba1f1ffbcc251094d3f03f3c8460
BLAKE2b-256 checksum
How to use checksums
1868de8418bd01f7870cbe57d13860adda46e30b07b33480b4323b23c55f2946
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 25, 2026.

Transparency log

Release files / vapoursynth_imageseqs-0.4.1-py3-none-macosx_11_0_arm64.whl

Download URL vapoursynth_imageseqs-0.4.1-py3-none-macosx_11_0_arm64.whl
Size 3.4 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
513c7bd423315265d15b2676101bba659d31757c9164d4bc34db9bb0dd24e5b8
BLAKE2b-256 checksum
How to use checksums
e725c810d76c7ea48348a412a9b7bf98f9d4240b0587ef384afeb05708623ef1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 25, 2026.

Transparency log

Security for vapoursynth-imageseqs 0.4.1

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.

Full provenance

All 5 files in this release have been uploaded with provenance metadata.

Select from 5 files

Attestation for vapoursynth_imageseqs-0.4.1.tar.gz

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 25, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.1 This release

5 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page