Vidgear

Latest version: v0.3.3

Safety actively analyzes 702445 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 4

0.3.3

---------

_This update significantly enhances Vidgear's capabilities, ensuring better performance, broader compatibility, and improved user experience. The introduction of the Picamera2 API support, enhanced error handling, and detailed documentation updates are pivotal in making Vidgear more robust and user-friendly._

**📓 Complete Release Notes can be found [here ↗️](https://abhitronix.github.io/vidgear/latest/changelog/#v033-2024-06-22)**

---------


<div align="center">
<img src="https://abhitronix.github.io/vidgear/latest/assets/images/help_us.png" alt="PiGear" width="40%" />
<p><i>VidGear is free and open source and will always remain so. ❤️</i></p>


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 🙂

<a href='https://ko-fi.com/W7W8WTYO' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://cdn.ko-fi.com/cdn/kofi1.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' /></a>
</div>

What's Changed

New Features ✨
- **PiGear:**
+ **Official Support for [Picamera2](https://datasheets.raspberrypi.com/camera/picamera2-manual.pdf) API backend:**
* This massive update brings official support for the new Picamera2 API, unlocking powerful features for Raspberry Pi Camera Modules and limited USB camera support.
* **Seamless Python wrapper:** A robust wrapper around Picamera2 API library simplifies integration with minimal code changes for existing PiGear users.
* **Enhanced camera control:** Leverages libcamera API under the hood for Raspberry Pi Camera Modules.
* **Existing compatibility:** Maintains compatibility with PiGear's existing super-charged multi-threaded and colorspace manipulation framework.
* **Proper Resource management:** Ensures proper resource release during PiGear termination.
* **USB camera support (limited):** Provides basic functionality for USB webcams. PiGear could accurately differentiates between USB and Raspberry Pi cameras using metadata.
* **Backward compatibility:** Seamlessly switches to the legacy Picamera library backend if Picamera2 is unavailable.
* **Standalone functionalities:** Standalone functionalities for both legacy `picamera` and newer `picamera2` backends for clarity.
* **Advanced optional parameters handling:** Handles camera configurational parameters and user-defined settings for various camera types.
- **StreamGear:**
* Introduced new `-enable_force_termination` attribute for immediate FFmpeg process termination.
- **Helper:**
* Added support for SRTP/RTSPS in `is_valid_url` function:
+ SRTP/RTSPS extends RTSP/RTP to encrypt video and audio data using the same ciphers as HTTPS, typically AES with a 128-bit key length.
* Added a custom deprecated decorator to mark deprecated functions and parameters.

Updates/Improvements ⚡️

- Core:
* Improved exception handling for module imports.
* Improved colorspace handling in videocapture gears.
- Asyncio:
* Replaced deprecated Starlette's `on_shutdown` parameter with an async context manager `lifespan` in WebGear and WebGear_RTC APIs.
- NetGear_Async API:
* Changed launch method to use `self.loop.create_task()` instead of `asyncio.ensure_future()`
* Moved the event loop initialization code to an earlier point before setting event loop policy to ensure it is set up correctly before selecting `WindowsSelectorEventLoop` policy.
- StreamGear:
* Updated `close()` methods for handling gracefully signal interruptions based on different operating systems with device audio streams.
* Enhanced stream copy support in Single Source mode.
- NetGear:
* Handled socket session expiration more gracefully in `recv_handler`.
* Ensured proper termination of the ZMQ context and socket when closing the NetGear instance.
- WebGear:
* Enhanced error messages for WebGear auto-generation workflow.
- WriteGear:
* Improved error handling in `execute_ffmpeg_cmd` method.
- Setup.py:
* Dropped legacy `picamera` dependency in `setup.py`.
* Updated `pyzmq` version to address installation issues.
- Helper:
* Updated `extract_time` helper function regex to handle milliseconds.

Breaking Updates/Changes 💥

- StreamGear:
* 💣 **Deprecated `terminate()` method and introduce `close()` method.**
+ The `terminate()` method in StreamGear is now deprecated and will be removed in a future release. Developers should use the new `close()` method instead, which provides a more descriptive name like in WriteGear API for terminating StreamGear processes safely.
* 💣 **Deprecated `rgb_mode` parameter in `stream()` method.**
+ This parameter will be removed in a future version, and only BGR format frames will be supported.
* 💣 **Restricted `-livestream` parameter to Real-time Frames Mode only.**
+ Live streaming is intended for low-latency streaming of real-time frames, where chunks contain only the most recent frames. It doesn't make sense when streaming from a video file, as the entire file can be streamed normally without the need for live streaming.

Bug-fixes 🐛
- PiGear:
* Modify PiGear class behavior when `enforce_legacy_picamera=True` on unsupported system.
- StreamGear:
* Removed non-essential aspect ratio parameter to prevent unwanted distortions.
- NetGear:
* Fixed Secure Mode failing to work on conflicting ZMQ Contexts.
* Fixed `msg_json` undefined when terminating context in the `recv_handler` method.
- CamGear:
* Fixed logging condition for yt-dlp.

0.3.2

📓 Complete Release Notes can be found [here ↗️](https://abhitronix.github.io/vidgear/latest/changelog/#v032-2023-09-10)

----

New Features ✨
- **NetGear:**
* Added new `kill` parameter to `close()` method to forcefully kill ZMQ context instead of graceful exit only in the `receive` mode.
* Added new `subscriber_timeout` integer optional parameter to support timeout with `pattern=2` _(or Publisher-Subscriber)_ pattern.
+ Receiver will exit safely if timeout defined(any value(in milliseconds) > 0), and timeout occurs in Receiver Mode with `pattern=2`.
+ 💬 Note: Default behavior still is to block the thread till infinite time.
- **WriteGear:**
* Added new `-disable_ffmpeg_window` optional Boolean flag to enable patch that prevents FFmpeg creation window from opening when building `.exe` files on Windows OS. _(PR by ibtsam3301)_
+ 💬 Note: `-disable_ffmpeg_window` optional Boolean flag is only available on Windows OS with logging disabled(`logging=False`) in compression mode.
+ 💬 Use Case: This flag can be useful while creating an `.exe` file for a python script that uses WriteGear API. On windows even after creating the `.exe` file in windowed mode or no-console mode, the `ffmpeg.exe` command line window would pop up while its being used by WriteGear API.
- **Setup.py**
* Added official support for python `3.11.x` legacies.


Updates/Improvements ⚡️
- Asyncio:
* Formatted TemplateResponse class parameters w.r.t new changes in backend Starlette API.
- Setup.py:
* Readded latest patch to `uvicorn`, `starlette`, `pyzmq` dependencies.
* Removed `3.7` legacy from Programming Language metadata.
- Maintenance:
* Added GitHub sponsors and dropped liberapay from `Funding.yml`.
- Docs:
* Updated information related to Supported Dimensional Attributes in ScreenGear docs.
* Updated minimum python to version `3.8` while installing vidgear in docs.
* Updated API-specific dependencies in docs.


Breaking Updates/Changes 💥
- Setup.py:
* 💣 Removed support for python-3.7 legacies
+ 💬 Raised `python_requires` to `>=3.8`. Thereby python `3.7` and any before legacy are no longer supported.

Bug-fixes 🐛
- ScreenGear:
* Fixed swapped region dimensions bug with dxcam backend.
* Fixed "mss" backend disabled when `monitor` parameter is not defined.
- Docs:
* Fixed missing `compression_mode` flags in WriteGear API docs.

0.3.1

📓 Complete Release Notes can be found [here ↗️](https://abhitronix.github.io/vidgear/latest/changelog/#v031-2023-07-22)

----

New Features ✨
- **WebGear:**
* Added an option to add a custom video endpoint path.
+ Users can now change the video endpoint path from `"/video"` to any alphanumeric string.
+ Added the `custom_video_endpoint` optional string attribute for this purpose.
+ Only alphanumeric strings with no spaces in between are allowed as its value.
- **ScreenGear:**
* Added `dxcam` backend support for Windows machines.
+ `dxcam` is now the default backend for Windows machines when no backend is defined.
+ Added support for variable screen dimensions to capture an area from the screen.
+ Added the optional flag `dxcam_target_fps` to control the target fps in `dxcam`. Defaults to `0` (disabled).
* Added support for tuple values in the monitor parameter to specify device and output indexes as `(int[device_idx], int[output_idx])` in the `dxcam` backend only.
+ Default `int` index is also allowed as a value for selecting device index.
- **Helper**
* Added multiple servers support for downloading assets.
+ Added GitHub server to the `generate_webdata` method to make it more robust for rate limits and other shortcomings.
+ Now, the `generate_webdata` method will retry a different server when one fails.
- **Setup.py**
* Added `dxcam` dependency in `core` and `asyncio` extra requires for Windows machines.


Updates/Improvements ⚡️
- WebGear:
* Improved the conditions logic to check if non-empty values are assigned to optional parameters.
- WebGear_RTC:
* Improved the handling of the `format` parameter when constructing a `VideoFrame` from ndarray frames.
- ScreenGear:
* Enforced `dxcam` backend (if installed) when `monitor` is defined on Windows machines.
* Refactored code blocks to ensure backward compatibility.

Breaking Updates/Changes 💥
- ScreenGear:
* 💣 Previously enforced threaded queue mode is now completely removed, resulting in a potential performance boost.
+ 💬 Reason: The IO is automatically blocked by the screen refresh rate, so adding the overhead of maintaining a separate queue is pointless.
* 💣 Removed the `THREAD_TIMEOUT` optional flag.

Bug-fixes 🐛
- WebGear_RTC:
* Fixed a bug caused by PyAV's error when `ndim==3` grayscale frames are encountered.
+ The API will now drop the third dimension if `ndim==3` grayscale frames are detected.
- Setup.py:
* Starting from version `8.0.0`, the python-mss library dropped support for Python `3.7`, so as a temporary measure, `mss` dependency has been pinned to version `7.0.1`.

0.3.0

📓 Complete Release Notes can be found [here ↗️](https://abhitronix.github.io/vidgear/latest/changelog/#v030-2023-01-26)

----

New Features ✨
- **WriteGear:**
* Added support for higher than 8-bit depth frames with datatypes of unsigned integer(`uint`) kind and element size `2`.
* Added new `-input_pixfmt` attribute to `output_params` dictionary parameter for easily specifying custom input pixel-format.
* Added support for Context Managers `__enter__()` and `__exit__()` methods for proper handling of resources via `with` statement for allocating and releasing resources precisely. (Suggested by sueskind)
- **StreamGear:**
* Added support for Context Managers `__enter__()` and `__exit__()` methods for proper handling of resources via `with` statement for allocating and releasing resources precisely. (Suggested by sueskind)
- **WebGear:**
* Added new `skip_generate_webdata` boolean optional attribute(`False` by default) to completely disable Data-Files Auto-Generation WorkFlow.
+ This flag enables only `/video` route for disabled Data-Files Auto-Generation WorkFlow.
- **Helper:**
* Added more robust implementation of validate_audio method with more robust regex pattern for extracting audio-samplerate.
* Added support for Linux video device path _(such as `/dev/video0`)_.
- **Maintenance:**
* Logging current vidgear version when vidgear APIs are called, not at import.
+ Current version can only be logged by VidGear APIs with the logging turned on _(i.e. `logging=True`)_.


Updates/Improvements ⚡️
- WriteGear:
* Updated comments, description, and logging messages to more sensible and developer friendly.
+ Renamed `startFFmpeg_Process` internal class method to `start_FFProcess`.
+ Renamed `Preprocess` internal class method to `PreprocessFFParams`.
+ Renamed `startCV_Process` internal class method to `start_CVProcess`.
+ Renamed `initiate` internal class parameter to `initiate_process`.
+ Renamed `force_termination` internal class parameter to `forced_termination`.
- Helper:
* Updated `validate_audio` method with improved and more robust regex patterns for identifying audio bitrate in ay audio file.
- Setup.py:
* Replaced `distutils.version.LooseVersion` with `pkg_resources.parse_version`.
- Maintenance:
* Replaced depreciated `LooseVersion` with `parse_version`.
* Updated `Retry` package to be imported from `requests.adapters`.
- Bash Scripts:
* Updated FFmpeg Static Binaries links to latest date/version tag to `12-07-2022`.

Breaking Updates/Changes 💥
- WriteGear:
* 💣 Renamed `output_filename` string parameter to `output`.
* 💣 Renamed `cmd` parameter in `execute_ffmpeg_cmd()` class method to more sensible `command`.
* 💣 `ValueError` will be raised if datatype of input frames mismatches.

Bug-fixes 🐛
- Camgear:
* Fixed `CamGear.read()` blocked unnecessarily.
* Fixed deadlock on termination.
- ScreenGear:
* Fixed `ScreenGear.read()` blocked during startup.
+ 💬 During startup, `ScreenGear.read()` doesn't checks if queue is empty before continuing.
- WriteGear:
* Fixed gstpipeline_mode not activating when wrongly assuming `output` value as valid path.
* Fixed name 'compression' is not defined bug.
- Helper:
* Fixed `fltp` keyword in regex pattern causing non-ftlp streams to be not recognized.
* Fixed response.headers returning `content-length` as Nonetype since it may not necessarily have the Content-Length header set.
- Setup:
* Pinned `pyzmq==24.0.1` working version.

0.2.6

📓 Complete Release Notes can be found [here ↗️](https://abhitronix.github.io/vidgear/latest/changelog/#v026-2022-07-05)

----

New Features ✨
- **Docs:**
* Added new bonus example for RSTP/RTP Live-Streaming using WriteGear's Compression Mode.
* Added "How to resolve zmq.error.ZMQError" FAQ for NetGear API.(PR by iandol)
- **Maintenance:**
* Added new patterns to `.gitignore` to ignore pypi's `build` directory and `egg-info` files.
- **CI:**
* Switched to new Issue GitHub's form schema using YAMLs.

Updates/Improvements ⚡️
- Setup.py:
* Replaced `distutils.version.LooseVersion` with `pkg_resources.parse_version`.
- Docs:
* Updated Site Navigation.
+ Added new notices to inform users more effectively about bonus examples.
+ Added new `Bonus` section to navigation and moved suitable pages under it.
* Redesigned and Rewritten Donation and Contribution section to README.md.
- API:
* Updated depreciated `tostring()` to `tobytes()` for the purposes for clarity in Python 3.2.
- CI:
* Added more paths and files to skip commits.

Breaking Updates/Changes 💥
- `-input_framerate` parameter now accepts any positive value for WriteGear and StreamGear APIs.

Bug-fixes 🐛
- API: Fixed `-input_framerate` less than 5 does not get used in WriteGear and StreamGear APIs.(PR by freol35241)
- CamGear: Fixed Yt-dlp generated HTTP DASH Segments URLs not supported by OpenCV's VideoCapture(PR by DynamiteC)
- StreamGear:
* Fixed `hls_segment_type` not working bug. (PR by enarche-ahn)
* Fixed critical logging parameter bug
+ Fixed debug logs even when `logging=False` in StreamGear's Real-time Mode. (patch suggested by enarche-ahn)
+ Added length check to `-video_source` attribute to correctly infers it as empty(or invalid).
- CI:
* Fixed pinned version syntax bug in docs_deployer workflow.
* Fixed typos in Github forms and its context.
- Docs:
* Fixed jinja2 `3.1.0` or above breaks mkdocs.
+ `jinja2>=3.1.0` breaks mkdocs (mkdocs/mkdocs2799), therefore pinned jinja2 version to `<3.1.0`.
* Fixed support for new `mkdocstring` versions
* Fixed Netgear+Webgear bonus example code bugs.(PR by iandol)
* Fixed external bug that causing "Home" tab not responsive randomly when accessed from other tabs.

0.2.5

📓 Complete Release Notes can be found [here ↗️](https://abhitronix.github.io/vidgear/v0.2.5-stable/changelog/#v025-2021-02-11)

----

New Features ✨
- **WriteGear:**
* Added support for GStreamer pipeline in WriteGear API's Non-Compression mode:
+ Implemented GStreamer Pipeline Mode to accept GStreamer pipeline formatted as string to its `output_filename` parameter.
+ Added new special `-gst_pipeline_mode` attribute to its `output_params` dictionary parameter to enable this mode.
+ This feature provides flexible way to directly write video frames into custom GStreamer Pipeline with controlled bitrate.
* Added new `-ffpreheaders` special attribute to WriteGear's `output_params` dictionary parameter in Compression mode:
+ This attribute is specifically required to set special FFmpeg parameters in Compression Mode that are present at the starting of command(such as `-re`).
+ This attribute only accepts **list** datatype as value.
- **NetGear:**
* Added bidirectional data transfer support to existing exclusive Multi-Clients and Multi-Servers exclusive modes:
+ Users will now able to send data bidirectionally in both Multi-Clients and Multi-Servers exclusive modes.
+ Bidirectional mode will no longer disables automatically when enabled along with Multi-Clients and Multi-Servers exclusive modes.
- **Maintenance:**
* **🌟 Added official support for **Python-3.10** legacies. 🌟**
* Added `float` value support to `THREAD_TIMEOUT` optional attributes in threaded gears.

Updates/Improvements ⚡️
- Setup.py:
* Dropped support for Python-3.6 and below legacies.
* Updated logging formating.
* Updated python_requires to `>=3.7`.
- Helper:
* Vidgear will now report current version on every run.

Breaking Updates/Changes 💥
- ***:warning: Dropped support for Python-3.6 legacies from vidgear.***

Bug-fixes 🐛
- NetGear: Fixed bidirectional mode forcefully overriding multi-clients mode's payload.
- Setup: Fixed uvicorn and aiortc dropped support for Python-3.6 legacies.

Page 1 of 4

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.