Skip to content

This release includes 1 breaking change for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

dash ffmpeg hls live-streaming multithreading opencv
+13 more
picamera2 python real-time screen-capture streaming twitch video video-processing video-stabilization video-streaming webrtc-video youtube yt-dlp

Affected surfaces

breaking_upgrade

ReleasePort's take

Light signal
editorial:auto 13d

The vidgear release 0.3.5 deprecates the enablePiCamera boolean flag, requiring code changes to use Backend.PIGEAR enumeration.

Why it matters: Update any configuration or code that sets enablePiCamera before upgrading; failure will cause runtime errors after the migration deadline.

Summary

AI summary

Deprecated enablePiCamera boolean flag in favor of explicit Backend.PIGEAR enumeration.

Changes in this release

Breaking Medium

Deprecated enablePiCamera boolean flag; replaced with explicit api=Backend.PIGEAR enumeration syntax.

Deprecated enablePiCamera boolean flag; replaced with explicit api=Backend.PIGEAR enumeration syntax.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Feature Medium

Introduced high-performance multi-threaded FFGear video decoding API with hardware acceleration and metadata extraction.

Introduced high-performance multi-threaded FFGear video decoding API with hardware acceleration and metadata extraction.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Added unified Backend Enum for explicit backend selection across VideoGear, WebGear, WebGear_RTC, NetGear_Async.

Added unified Backend Enum for explicit backend selection across VideoGear, WebGear, WebGear_RTC, NetGear_Async.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Refactored Stabilizer into plugin-style architecture with new StabilizerMode enum and factory function.

Refactored Stabilizer into plugin-style architecture with new StabilizerMode enum and factory function.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

WriteGear now allows omitting video codec via None in output_params for auto-selection (e.g., GIF output).

WriteGear now allows omitting video codec via None in output_params for auto-selection (e.g., GIF output).

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Updated Asyncio CLI with proper store_true flags and new -a/--api backend selection flag.

Updated Asyncio CLI with proper store_true flags and new -a/--api backend selection flag.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Feature Medium

Added official Poetry installation guide and ecosystem support for Poetry-managed environments.

Added official Poetry installation guide and ecosystem support for Poetry-managed environments.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Feature Medium

Added py.typed marker for PEP 561 compliance, enabling external type checkers.

Added py.typed marker for PEP 561 compliance, enabling external type checkers.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Performance Medium

Replaced flake8 and black with ruff for unified, high-speed linting and formatting across codebase.

Replaced flake8 and black with ruff for unified, high-speed linting and formatting across codebase.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Bugfix Medium

Fixed severe memory leak in Stabilizer where self.__transforms grew unbounded, preventing OOM hazards.

Fixed severe memory leak in Stabilizer where self.__transforms grew unbounded, preventing OOM hazards.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Bugfix Medium

Corrected FFGear metadata tuple handling when extract_metadata mode is enabled.

Corrected FFGear metadata tuple handling when extract_metadata mode is enabled.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Bugfix Medium

Fixed validate_video to check file path existence before processing.

Fixed validate_video to check file path existence before processing.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Bugfix Medium

Resolved missing demuxer header handling in get_supported_demuxers.

Resolved missing demuxer header handling in get_supported_demuxers.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Bugfix Medium

Improved StopIteration handling in default video codec selection logic.

Improved StopIteration handling in default video codec selection logic.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Bugfix Medium

Fixed IndexError in validate_audio bit-depth parsing for planar sample formats.

Fixed IndexError in validate_audio bit-depth parsing for planar sample formats.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Bugfix Medium

Expanded get_supported_demuxers to handle comma-separated demuxer aliases correctly.

Expanded get_supported_demuxers to handle comma-separated demuxer aliases correctly.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: low

Refactor Medium

Migrated packaging infrastructure from setup.py/setup.cfg to modern pyproject.toml standards.

Migrated packaging infrastructure from setup.py/setup.cfg to modern pyproject.toml standards.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Refactor Medium

Updated type hints to leverage Python 3.10+ structures including PEP 604 union types and generics.

Updated type hints to leverage Python 3.10+ structures including PEP 604 union types and generics.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Refactor Medium

Extracted YT_backend into dedicated module for cleaner separation of concerns.

Extracted YT_backend into dedicated module for cleaner separation of concerns.

Source: granite4.1:8b-q6_K@2026-05-21

Confidence: high

Full changelog

What's Changed (Highlights)

📓 Release Notes can be found here ↗️

New Features ✨

  • FFGear API:
    • Introduced a brand-new high-performance, multi-threaded video decoding Gear built on top of DeFFcode's FFdecoder API.
    • Supports real-time FFmpeg subprocess pipelines, low-overhead hardware-accelerated decoding (e.g., CUDA/NVDEC), flexible pixel format conversions, and asynchronous per-frame metadata extraction.
    • Includes dedicated parameters: source_demuxer, frame_format, custom_ffmpeg, and extract_metadata.
  • ⚡️ Unified Backend Selection (Backend Enum):
    • Introduced a unified api parameter accepting a new Backend enum (Backend.CAMGEAR, Backend.PIGEAR, Backend.FFGEAR) across VideoGear, WebGear, WebGear_RTC, and NetGear_Async.
    • Replaces the legacy enablePiCamera boolean flag with a clean, explicit enumeration-based backend selection.
  • ⚡️ Plugin-Ready Stabilizer Architecture:
    • Refactored the monolithic Stabilizer class into a plugin-style stabilizer/ sub-package with a shared _StabilizerBase, an ASWStabilizer implementation, and a factory Stabilizer() function.
    • Added a new StabilizerMode enum for selecting stabilization backends via VideoGear's STABILIZER_MODE option, with clean provisions for upcoming real-time backends (e.g., Kalman tracking).
  • 🚩 WriteGear: Discard -vcodec via None:
    • Setting -vcodec or -c:v to None in output_params now cleanly omits the video codec parameter, letting FFmpeg auto-select the encoder (useful for GIF output and similar workflows).
  • 📦️ Poetry Package Management:
    • Added an official Poetry installation guide and ecosystem support for Poetry-managed environments.

Updates/Improvements ⚡️

  • Packaging Infrastructure Modernization:
    • Migrated build and metadata configurations from legacy setup.py/setup.cfg to modern pyproject.toml configuration standards.
    • Switched to automatic package discovery via setuptools, excluding tests and docs from distribution builds.
  • Toolchain Overhaul (Ruff Migration):
    • Completely replaced flake8 and black with ruff for unified, high-speed linting and formatting across the entire codebase.
  • Type Hint Modernization:
    • Systematically updated type hints to leverage native Python 3.10+ structures, including PEP 604 union types (X | Y) and built-in collection generics.
  • PEP 561 Compliance:
    • Added a py.typed marker file so external type checkers (e.g., pyright, mypy) properly recognize VidGear as an inline-typed package.
  • CamGear YouTube Backend Refactor:
    • Extracted YT_backend into a dedicated yt_backend module for cleaner separation of concerns and improved maintainability.
  • Asyncio CLI Updates:
    • Replaced boolean string arguments with proper store_true flags for -S, -yt, -l, and -ep.
    • Added -a/--api flag for backend selection (camgear/pigear/ffgear) and FFGear-specific arguments (-sd, -ff, -cf).
    • Marked --enablePiCamera as a deprecated CLI flag with a runtime warning.

Breaking Updates/Changes 💥

  • 💣 Deprecated enablePiCamera:

    • The enablePiCamera boolean flag has been officially deprecated across all core capture APIs (VideoGear, WebGear, WebGear_RTC, NetGear_Async) in favor of the explicit api=Backend.PIGEAR enumeration syntax.
    • Using the old flag will emit a DeprecationWarning at runtime. It will be removed in a future release.

Bug-fixes 🐛

  • Stabilizer Memory Leak:
    • Fixed a severe memory bottleneck where self.__transforms tracking records grew unbounded over the entire runtime duration (O(total_frames) → O(smoothing_radius)), eliminating an out-of-memory hazard for long-running sessions.
  • FFGear Metadata Tuple Handling:
    • Fixed read() to correctly enqueue and return (frame, metadata) tuples when extract_metadata mode is enabled.
  • Helper Utilities:
    • Fixed validate_video to verify file path existence before processing.
    • Fixed missing demuxer header handling in get_supported_demuxers.
    • Corrected StopIteration handling in default video codec selection logic.
    • Fixed IndexError in validate_audio bit-depth parsing by replacing bare re.findall indexing with guarded re.search and adding a fallback parser for planar sample formats (fltp, s16p, u8p, etc.).
    • Fixed get_supported_demuxers to expand all comma-separated demuxer aliases (e.g. "matroska,webm" now yields both entries instead of only the last).

VidGear is free and open source and will always remain so. ❤️

It is something I am doing with my own free time. But so much more needs to be done, and I need your help to do this. For just the price of a cup of coffee 🍵, you can make a difference 🤝


Detailed Changelog: https://github.com/abhiTronix/vidgear/compare/vidgear-0.3.4...vidgear-0.3.5

Breaking Changes

  • Deprecated `enablePiCamera` boolean flag across VideoGear, WebGear, WebGear_RTC, NetGear_Async; will be removed in a future release.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track A Pure-Python Computer Vision Library That's Fast and Minimal

Get notified when new releases ship.

Sign up free

About A Pure-Python Computer Vision Library That's Fast and Minimal

All releases →

Related context

Beta — feedback welcome: [email protected]