All Versions
12
Latest Version
Avg Release Cycle
49 days
Latest Release
420 days ago

Changelog History
Page 1

  • v0.1.9 Changes

    September 03, 2020

    ๐Ÿ†• New Features

    • StreamGear API:
      • New API that automates transcoding workflow for generating Ultra-Low Latency, High-Quality, Dynamic & Adaptive Streaming Formats.
      • Implemented multi-platform , standalone, highly extensible and flexible wrapper around FFmpeg for generating chunked-encoded media segments of the media, and easily accessing almost all of its parameters.
      • API automatically transcodes videos/audio files & real-time frames into a sequence of multiple smaller chunks/segments and also creates a Manifest file.
      • Added initial support for MPEG-DASH (Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1).
      • Constructed default behavior in StreamGear, for auto-creating a Primary Stream of same resolution and framerate as source.
      • Added TQDM progress bar in non-debugged output for visual representation of internal processes.
      • Implemented several internal methods for preprocessing FFmpeg and internal parameters for producing streams.
      • Several standalone internal checks to ensure robust performance.
      • New terminate() function to terminate StremGear Safely.
      • New StreamGear Dual Modes of Operation:
      • Implemented Single-Source and Real-time Frames like independent Transcoding Modes.
      • Linked -video_source attribute for activating these modes
      • Single-Source Mode , transcodes entire video/audio file (as opposed to frames by frame) into a sequence of multiple smaller segments for streaming
      • Real-time Frames Mode , directly transcodes video-frames (as opposed to a entire file), into a sequence of multiple smaller segments for streaming
      • Added separate functions, stream() for Real-time Frame Mode and transcode_source() for Single-Source Mode for easy transcoding.
      • Included auto-colorspace detection and RGB Mode like features (extracted from WriteGear), into StreamGear.
      • New StreamGear Parameters:
      • Developed several new parameters such as:
        • output: handles assets directory
        • formats: handles adaptive HTTP streaming format.
        • custom_ffmpeg: handles custom FFmpeg location.
        • stream_params: handles internal and FFmpeg parameter seamlessly.
        • logging: turns logging on or off.
      • New stream_params parameter allows us to exploit almost all FFmpeg parameters and flexibly change its internal settings, and seamlessly generating high-quality streams with its attributes:
        • -streams (list of dictionaries) for building additional streams with -resolution, -video_bitrate & -framerate like sub-attributes.
        • -audio for specifying external audio.
        • -video_source for specifying Single-Source Mode source.
        • -input_framerate for handling input framerate in Real-time Frames Mode.
        • -bpp attribute for handling bits-per-pixels used to auto-calculate video-bitrate.
        • -gop to manually specify GOP length.
        • -ffmpeg_download_path to handle custom FFmpeg download path on windows.
        • -clear_prev_assets to remove any previous copies of SteamGear Assets.
      • New StreamGear docs, MPEG-DASH demo, and recommended DASH players list:
      • Added new StreamGear docs, usage examples, parameters, references, new FAQs.
      • Added Several StreamGear usage examples w.r.t Mode of Operation.
      • Implemented Clappr based on Shaka-Player, as Demo Player.
      • Added Adaptive-dimensional behavior for Demo-player, purely in css.
      • Hosted StreamGear generated DASH chunks on GitHub and served with raw.githack.com.
      • Introduced variable quality level-selector plugin for Clapper Player.
      • Provide various required javascripts and implemented additional functionality for player in extra.js.
      • Recommended tested Online, Command-line and GUI Adaptive Stream players.
      • Implemented separate FFmpeg installation doc for StreamGear API.
      • Reduced rebufferingGoal for faster response.
      • New StreamGear CI tests:
      • Added IO and API initialization CI tests for its Modes.
      • Added various mode Streaming check CI tests.
    • NetGear_Async API:
      • Added new send_terminate_signal internal method.
      • Added WindowsSelectorEventLoopPolicy() for windows 3.8+ envs.
      • Moved Client auto-termination to separate method.
      • Implemented graceful termination with signal API on UNIX machines.
      • Added new timeout attribute for controlling Timeout in Connections.
      • Added missing termination optimizer (linger=0) flag.
      • Several ZMQ Optimizer Flags added to boost performance.
    • WriteGear API:
      • Added support for adding duplicate FFmpeg parameters to output_params:
      • Added new -clones attribute in output_params parameter for handing this behavior..
      • Support to pass FFmpeg parameters as list, while maintaining the exact order it was specified.
      • Built support for zmq.REQ/zmq.REP and zmq.PUB/zmq.SUB patterns in this mode.
      • Added new CI tests debugging this behavior.
      • Updated docs accordingly.
      • Added support for Networks URLs in Compression Mode:
      • output_filename parameter supports Networks URLs in compression modes only
      • Added automated handling of non path/file Networks URLs as input.
      • Implemented new is_valid_url helper method to easily validate assigned URLs value.
      • Validates whether the given URL value has scheme/protocol supported by assigned/installed ffmpeg or not.
      • WriteGear will throw ValueError if -output_filename is not supported.
      • Added related CI tests and docs.
      • Added disable_force_termination attribute in WriteGear to disable force-termination.
    • NetGear API:
      • Added option to completely disable Native Frame-Compression:
      • Checks if any Incorrect/Invalid value is assigned on compression_format attribute.
      • Completely disables Native Frame-Compression.
      • Updated docs accordingly.
    • CamGear API:
      • Added new and robust regex for identifying YouTube URLs.
      • Moved youtube_url_validator to Helper.
    • ๐Ÿ†• New helper.py methods:
      • Added validate_video function to validate video_source.
      • Added extract_time Extract time from give string value.
      • Added get_video_bitrate to caliculate video birate from resolution, framerate, bits-per-pixels values.
      • Added delete_safe to safely delete files of given extension.
      • Added validate_audio to validate audio source.
      • Added new Helper CI tests.
      • Added new check_valid_mpd function to test MPD files validity.
      • Added mpegdash library to CI requirements.
    • ๐Ÿš€ Deployed New Docs Upgrades:
      • Added new assets like images, gifs, custom scripts, javascripts fonts etc. for achieving better visual graphics in docs.
      • Added clappr.min.js, dash-shaka-playback.js, clappr-level-selector.min.js third-party javascripts locally.
      • Extended Overview docs Hyperlinks to include all major sub-pages (such as Usage Examples, Reference, FAQs etc.).
      • Replaced GIF with interactive MPEG-DASH Video Example in Stabilizer Docs.
      • Added new pymdownx.keys to replace [Ctrl+C]/[โŒ˜+C] formats.
      • Added new custom.css stylescripts variables for fluid animations in docs.
      • Overridden announce bar and added donation button.
      • Lossless WEBP compressed all PNG assets for faster loading.
      • Enabled lazy-loading for GIFS and Images for performance.
      • Reimplemented Admonitions contexts and added new ones.
      • Added StreamGear and its different modes Docs Assets.
      • Added patch for images & unicodes for PiP flavored markdown in setup.py.
    • โž• Added Request Info and Welcome GitHub Apps to automate PR and issue workflow
      • Added new config.yml for customizations.
      • Added various suitable configurations.
    • โž• Added new -clones attribute to handle FFmpeg parameter clones in StreamGear and WriteGear API.
    • โž• Added new Video-only and Audio-Only sources in bash script.
    • โž• Added new paths in bash script for storing StreamGear & WriteGear assets temporarily.

    โšก๏ธ Updates/Improvements

    • ๐Ÿ Added patch for NotImplementedError in NetGear_Async API on Windows 3.8+ envs.
    • Check for valid output file extension according to format selected in StreamGear.
    • Completed migration to travis.com.
    • ๐Ÿฑ Created new temp_write temp directory for WriteGear Assets in bash script.
    • ๐Ÿฑ Deleted old Redundant assets and added new ones.
    • Employed isort library to sort and group imports in Vidgear APIs.
    • ๐Ÿ‘ป Enabled exception for list, tuple, int, float in WriteGear API's output_params dict.
    • ๐Ÿ‘ Enabled missing support for frame-compression in its primary Receive Mode.
    • Enforced pixel formats for streams.
    • Improved check for valid system path detection in WriteGear API.
    • โœ… Overrided pytest-asyncio fixture in NetGear_Async API.
    • Quoted Gear Headline for understanding each gear easily.
    • ๐Ÿ‘ Re-Positioned Gear's banner images in overview for better readability.
    • Reduced redundant try-except blocks in NetGear Async.
    • ๐Ÿ“„ Reformatted and Simplified Docs context.
    • โœ… Reimplemented return_testvideo_path CI function with variable streams.
    • Reimplemented skip_loop in NetGear_Async to fix asyncio.CancelledError.
    • Reimplemented buggy audio handler in StreamGear.
    • Reimplemented images with <figure> and <figurecaption> like tags.
    • ๐Ÿ‘ท Removed Python < 3.8 condition from all CI tests.
    • ๐Ÿšš Removed or Grouped redundant code for increasing codecov.
    • ๐Ÿšš Removed redundant code and simplified algorithmic complexities in Gears.
    • Replaced ;nbsp with ;thinsp and ;emsp.
    • Replaced IOError with more reliable RuntimeError in StreamGear Pipelines.
    • Replaced del with pop in dicts.
    • ๐Ÿ‘ท Replaced all Netgear CI tests with more reliable try-except-final blocks.
    • Replaced simple lists with pymdownx.tasklist.
    • Replaced subprocess call() with run() for better error handling in execute_ffmpeg_cmd function.
    • ๐Ÿ“„ Resized over-sized docs images.
    • Simplified delete_safe Helper function.
    • 0๏ธโƒฃ Simplified default audio-bitrate logic in StreamGear
    • โšก๏ธ Updated CI tests and cleared redundant code from NetGear_Async API.
    • โšก๏ธ Updated CI with new tests and Bumped Codecov.
    • โšก๏ธ Updated Issue and PR templates.
    • โšก๏ธ Updated Licenses for new files and shrink images dimensions.
    • โšก๏ธ Updated Missing Helpful tips and increased logging.
    • โšก๏ธ Updated PR guidelines for more clarity.
    • โšก๏ธ Updated WebGear examples addresses from 0.0.0.0 to localhost.
    • โšก๏ธ Updated WriteGear and StreamGear CI tests for not supporting temp directory.
    • โšก๏ธ Updated README.md and changelog.md with new changes.
    • Updated check_output and added force_retrieve_stderr support to **kwargs to extract stderr output even on FFmpeg error.
    • โšก๏ธ Updated dicts2args to support internal repeated coreX FFmpeg parameters for StreamGear.
    • โšก๏ธ Updated mkdocs.yml, changelog.md and README.md with latest changes.
    • โšก๏ธ Updated validate_audio Helper function will now retrieve audio-bitrate for validation.
    • โšก๏ธ Updated buggy mpegdash dependency with custom dev fork for Windows machines.
    • โšก๏ธ Updated core parameters for audio handling.
    • โšก๏ธ Updated logging for debugging selected eventloops in NetGear_Async API.
    • โšก๏ธ Updated termination linger to zero at Server's end.

    ๐Ÿ’ฅ Breaking Updates/Changes

    • ๐Ÿฑ โš ๏ธ Changed Webgear API default address to localhost for cross-compatibility between different platforms.
    • In Netgear_Async API, source value can now be NoneType for a custom frame-generator at Server-end only.
    • ๐Ÿง Temp (such as /tmp in linux) is now not a valid directory for WriteGear & StreamGear API outputs.
    • ๐Ÿ’… Moved vidgear docs assets (i.e images, gifs, javascripts and stylescripts) to override directory.

    ๐Ÿ› Bug-fixes

    • โ†ช Added workaround for system path not handle correctly.
    • ๐Ÿ›  Fixed Bug: URL Audio format not being handled properly.
    • ๐Ÿš‘ Fixed Critical Bug in NetGear_Async throwing ValueError with None-type Source.
    • ๐Ÿš‘ Fixed Critical StreamGear Bug: FFmpeg pipeline terminating prematurely in Single-Source Mode.
    • ๐Ÿš‘ Fixed Critical external audio handler bug: moved audio-input to input_parameters.
    • ๐Ÿ‘ท Fixed Frozen-threads bug in CI tests.
    • ๐Ÿ›  Fixed Mkdocs only accepting Relative paths.
    • ๐Ÿ›  Fixed OSError in WriteGear's compression mode.
    • ๐Ÿ Fixed StreamGear CI bugs for Windows and CI envs.
    • โœ๏ธ Fixed Typos and Indentation bugs in NetGear API.
    • ๐Ÿ›  Fixed ZMQ throwing error on termination if all max-tries exhausted.
    • ๐Ÿ›  Fixed NameError bug in NetGear API.
    • ๐Ÿ›  Fixed NameError bugs in StreamGear CI.
    • ๐Ÿ‘ท Fixed NameError in CI functions and tests.
    • ๐Ÿ‘ท Fixed TimeoutError bug in NetGear_Async CI tests.
    • Fixed get_valid_ffmpeg_path throwing TypeError with non-string values.
    • ๐Ÿ›  Fixed broken links in docs.
    • ๐Ÿš‘ Fixed critical duplicate logging bug.
    • 0๏ธโƒฃ Fixed default gop value not handle correctly.
    • ๐Ÿ›  Fixed handling of incorrect paths detection.
    • ๐Ÿ›  Fixed incorrect definitions in NetGear_Async.
    • ๐Ÿ›  Fixed left-over attribute bug in WriteGear.
    • ๐Ÿ‘ท Fixed logic and indentation bugs in CI tests.
    • ๐Ÿ›  Fixed logic for handling output parameters in WriteGear API.
    • ๐Ÿ›  Fixed missing definitions and logic bug in StreamGear.
    • ๐Ÿ‘ท Fixed missing import and incorrect CI definitions.
    • ๐Ÿ›  Fixed missing source dimensions from extract_resolutions output in StreamGear API.
    • ๐Ÿ›  Fixed missing support for compression parameters in Multi-Clients Mode.
    • ๐Ÿ›  Fixed round off error in FPS.
    • โšก๏ธ Fixed several CI bugs and updated extract_resolutions method.
    • ๐Ÿ‘ท Fixed several bugs from CI Bidirectional Mode tests.
    • โœ๏ธ Fixed several typos in docs usage examples.
    • ๐Ÿ‘ท Fixed various AttributeError with wrong attribute names and definition in CI Helper functions.
    • ๐Ÿ›  Fixed wrong and missing definitions in docs.
    • ๐Ÿ›  Fixed wrong logic for extracting OpenCV frames.
    • ๐Ÿ›  Fixed wrong type bug in StreamGear API.
    • ๐Ÿ›  Fixed wrong type error bug in WriteGear API.
    • ๐Ÿ›  Fixed wrong variable assignments bug in WriteGear API.
    • โœ… Fixes to CLI tests and missing docs imports.
    • โœ๏ธ Many minor typos and wrong definitions.

    Pull Requests

  • v0.1.8 Changes

    June 12, 2020

    ๐Ÿ†• New Features

    ๐Ÿ‘ Multiple Clients support in NetGear API:

    • Implemented support for handling any number of Clients simultaneously with a single Server in this mode.
    • Added new multiclient_mode attribute for enabling this mode easily.
    • Built support for zmq.REQ/zmq.REP and zmq.PUB/zmq.SUB patterns in this mode.
    • Implemented ability to receive data from all Client(s) along with frames with zmq.REQ/zmq.REP pattern only.

    - Updated related CI tests

    ๐Ÿ‘Œ Support for robust Lazy Pirate pattern(auto-reconnection) in NetGear API for both server and client ends:

    • Implemented a algorithm where NetGear rather than doing a blocking receive, will now:
      • Poll the socket and receive from it only when it's sure a reply has arrived.
      • Attempt to reconnect, if no reply has arrived within a timeout period.
      • Abandon the connection if there is still no reply after several requests.
    • Implemented its default support for REQ/REP and PAIR messaging patterns internally.
    • Added new max_retries and request_timeout(in seconds) for handling polling.
    • Added DONTWAIT flag for interruption-free data receiving.

    - Both Server and Client can now reconnect even after a premature termination.

    ๐ŸŽ Performance Updates for NetGear API:

    • Added default Frame Compression support for Bidirectional frame transmission in Bidirectional mode.
    • Added support for Reducer() function in Helper.py to aid reducing frame-size on-the-go for more performance.
    • Added small delay in recv() function at client's end to reduce system load.

    - Reworked and Optimized NetGear termination, and also removed/changed redundant definitions and flags.

    ๐Ÿ“„ Docs Migration to Mkdocs:

    • Implemented a beautiful, static documentation site based on MkDocs which will then be hosted on GitHub Pages.
    • Crafted base mkdocs with third-party elegant & simplistic mkdocs-material theme.
    • Implemented new mkdocs.yml for Mkdocs with relevant data.
    • Added new docs folder to handle markdown pages and its assets.
    • Added new Markdown pages(.md) to docs folder, which are carefully crafted documents - based on previous Wiki's docs, and some completely new additions.
    • Added navigation under tabs for easily accessing each document.
    • New Assets:
    • Added Required Plugins and Extensions:
      • Added support for all pymarkdown-extensions.
      • Added support for some important admonition, attr_list, codehilite, def_list, footnotes, meta, and toc like Mkdocs extensions.
      • Enabled search, minify and git-revision-date-localized plugins support.
      • Added various VidGear's social links to yaml.
      • Added support for en (English) language.
    • Auto-Build API Reference with mkdocstrings:
      • Added support for mkdocstrings plugin for auto-building each VidGear's API references.
      • Added python handler for parsing python source-code to mkdocstrings.
    • Auto-Deploy Docs with Github Actions:
      • Implemented Automated Docs Deployment on gh-pages through GitHub Actions workflow.
      • Added new workflow yaml with minimal configuration for automated docs deployment.
      • Added all required python dependencies and environment for this workflow.
      • Added master branch on Ubuntu machine to build matrix.

    โšก๏ธ Updates/Improvements

    • ๐Ÿ‘ Added in-built support for bidirectional frames(NDarray) transfer in Bidirectional mode.
    • ๐Ÿ‘ Added support for User-Defined compression params in Bidirectional frames transfer.
    • โ†ช Added workaround for address already in use bug at client's end.
    • Unified Bidirectional and Multi-Clients mode for client's return data transmission.
    • Replaced ValueError with more suitable RuntimeError.
    • โšก๏ธ Updated logging for better readability.
    • ๐Ÿ‘ท Added CI test for Multi-Clients mode.
    • Reformatted and grouped imports in VidGear.
    • ๐Ÿ‘ท Added Reducer Helper function CI test.
    • โœ… Added Reliability tests for both Server and Client end.
    • Disabled reliable reconnection for Multi-Clients mode.
    • Replaced os.devnull with suprocess's inbuilt function.
    • โšก๏ธ Updated README.md, Issue and PR templates with new information and updates.
    • โšก๏ธ Moved changelog.md to /docs and updated contribution guidelines.
    • ๐Ÿ“„ Improved source-code docs for compatibility with mkdocstrings.
    • ๐Ÿ— Added additional dependency mkdocs-exclude, for excluding files from Mkdocs builds.
    • โšก๏ธ Updated license and compressed images/diagrams.
    • ๐Ÿ‘ท Added new CI tests and Bumped Codecov.
    • ๐Ÿ‘ท Changed YouTube video URL for CI tests to Creative Commons(CC) video.
    • ๐Ÿšš Removed redundant code.

    ๐Ÿ’ฅ Breaking Updates/Changes

    ๐Ÿšš โš ๏ธVidGear Docs moved to GitHub Pages, Now Available at https://abhitronix.github.io/vidgear.

    • ๐Ÿšš Removed filter attribute from options parameter in NetGear API.
    • ๐Ÿšš Removed force_terminate parameter support from NetGear API.
    • Disabled additional data of datatype numpy.ndarray for Server end in Bidirectional Mode.

    ๐Ÿ› Bug-fixes

    • ๐Ÿ›  Fixed 'NoneType' object is not subscriptable bug.
    • ๐Ÿ›  Fixed bugs related to delayed termination in NetGear API.
    • 0๏ธโƒฃ Reduced default request_timeout value to 4 and also lowered cut-off limit for the same.
    • ๐Ÿšš Removed redundant ZMQ context termination and similar variables.
    • Added missing VidGear installation in workflow.
    • ๐Ÿ— Excluded conflicting assets README.md from Mkdocs builds.
    • ๐Ÿ›  Fixed pattern value check bypassed if wrong value is assigned.
    • ๐Ÿ”€ Fixed incorrect handling of additional data transferred in synchronous mode at both Server and Client end.
    • ๐Ÿ‘ท Replaced Netgear CI test with more reliable try-except-final blocks.
    • โšก๏ธ Updated termination linger to zero at Server's end.
    • ๐Ÿ›  Fixed NameError bug in NetGear API.
    • ๐Ÿ›  Fixed missing support for compression parameters in Multi-Clients Mode.
    • ๐Ÿ›  Fixed ZMQ throwing error on termination if all max-tries exhausted.
    • ๐Ÿ‘ Enabled missing support for frame compression in its primary receive mode.
    • ๐Ÿ‘ท Fixed several bugs from CI Bidirectional Mode tests.
    • ๐Ÿšš Removed or Grouped redundant code for increasing codecov.
    • ๐Ÿ›  Fixed Mkdocs only accepting Relative paths.
    • ๐Ÿ›  Fixed broken links in docs.
    • ๐Ÿ›  Fixed round off error in FPS.
    • โœ๏ธ Many small typos and bugs fixes.

    Pull Requests

  • v0.1.7 Changes

    April 29, 2020

    ๐Ÿ†• New Features:

    WebGear API:

    • Added a robust Live Video Server API that can transfer live video frames to any web browser on the network in real-time.
    • Implemented a flexible asyncio wrapper around starlette ASGI Application Server.
    • Added seamless access to various starlette's Response classes, Routing tables, Static Files, Template engine(with Jinja2), etc.
    • Added a special internal access to VideoGear API and all its parameters.
    • Implemented a new Auto-Generation Work-flow to generate/download & thereby validate WebGear API data files from its GitHub server automatically.
    • Added on-the-go dictionary parameter in WebGear to tweak performance, Route Tables and other internal properties easily.
    • Added new simple & elegant default Bootstrap Cover Template for WebGear Server.
    • Added __main__.py to directly run WebGear Server through the terminal.
    • Added new gif and related docs for WebGear API.

    - Added and Updated various CI tests for this API.

    NetGear_Async API

    • Designed NetGear_Async asynchronous network API built upon ZeroMQ's asyncio API.
    • Implemented support for state-of-the-art asyncio event loop uvloop at its backend.
    • Achieved Unmatchable high-speed and lag-free video streaming over the network with minimal resource constraint.
    • Added exclusive internal wrapper around VideoGear API for this API.
    • Implemented complete server-client handling and options to use variable protocols/patterns for this API.
    • Implemented support for all four ZeroMQ messaging patterns: i.e zmq.PAIR, zmq.REQ/zmq.REP, zmq.PUB/zmq.SUB, and zmq.PUSH/zmq.PULL.
    • Implemented initial support for tcp and ipc protocols.
    • Added new Coverage CI tests for NetGear_Async Network Gear.

    - Added new Benchmark tests for benchmarking NetGear_Async against NetGear.

    Asynchronous I/O Enhancements

    • Added asyncio package to vidgear for handling asynchronous APIs.
    • Moved WebGear API(webgear.py) to asyncio and created separate asyncio helper.py for it.
    • Various Performance tweaks for Asyncio APIs with concurrency within a single thread.
    • Moved __main__.py to asyncio for easier access to WebGear API through the terminal.

    - Updated setup.py with new dependencies and separated asyncio dependencies.

    General Enhancements:

    • Added new highly-precise Threaded FPS class for accurate benchmarking with time.perf_counter python module.
    • Added a new Gitter community channel.
    • Added a new Reducer function to reduce the frame size on-the-go.
    • Add Flake8 tests to Travis CI to find undefined names. (PR by @cclauss)
    • Added a new unified logging handler helper function for vidgear.

    โšก๏ธ Updates/Improvements:

    • Re-implemented and simplified logic for NetGear Async server-end.
    • โž• Added new dependencies for upcoming asyncio updates to setup.py.
    • โž• Added retry function and replaced wget with curl for Linux test envs.
    • โฌ†๏ธ Bumped OpenCV to latest 4.2.0-dev for Linux test envs.
    • โšก๏ธ Updated YAML files to reflect new changes to different CI envs.
    • Separated each API logger with a common helper method to avoid multiple copies.
    • Limited Importing OpenCV API version check's scope to helper.py only.
    • Implemented case for incorrect color_space value in ScreenGear API.
    • โœ‚ Removed old conflicting logging formatter with a common method and expanded logging.
    • ๐Ÿ‘Œ Improved and added shutdown function for safely stopping frame producer threads in WebGear API.
    • ๐Ÿ‘ท Re-implemented and simplified all CI tests with maximum code-coverage in mind.
    • Replaced old mkdir function with new mkdir_safe helper function for creating directories safely.
    • โšก๏ธ Updated ReadMe.md with updated diagrams, gifs and information.
    • ๐Ÿ‘Œ Improve, structured and Simplified the Contribution Guidelines.
    • ๐Ÿ‘ท Bundled CI requirements in a single command.(Suggested by @cclauss)
    • Replaced line endings CRLF with LF endings.
    • โž• Added dos2unix for Travis OSX envs.
    • โฌ†๏ธ Bumped Codecov to maximum.

    ๐Ÿ’ฅ Breaking Updates / Improvements / Changes

    • ๐Ÿ‘€ โš ๏ธ Dropped support for Python 3.5 and below legacies. (See issue #99)
    • โฌ‡๏ธ Dropped and replaced Python 3.5 matrices with new Python 3.8 matrices in all CI environments.
    • Implemented PEP-8 Styled Black formatting throughout the source-code.
    • ๐Ÿ‘ Limited protocols support to tcp and ipc only, in NetGear API.

    ๐Ÿ›  Fixes:

    • Fixed Major NetGear_Async bug where __address and __ port are not set in async mode.(PR by @otter-in-a-suit)
    • ๐Ÿ›  Fixed Major PiGear Color-space Conversion logic bug.
    • โ†ช Workaround for CAP_IMAGES: error in YouTube Mode.
    • Replaced incorrect terminate() with join() in PiGear.
    • โœ‚ Removed uvloop for windows as still NOT yet supported.
    • Refactored Asynchronous Package name async to asyncio, since it is used as Keyword in python>=3.7*(raises SyntaxError)*.
    • ๐Ÿ›  Fixed unfinished close of event loops bug in WebGear API.
    • ๐Ÿ›  Fixed NameError in helper.py.
    • โž• Added fix for OpenCV installer failure on Linux test envs.
    • ๐Ÿ›  Fixed undefined NameError in helper.py context. (@cclauss)
    • ๐Ÿ›  Fixed incorrect logic while pulling frames from ScreenGear API.
    • Fixed missing functions in __main__.py.
    • ๐Ÿ›  Fixed Typos and definitions in docs.
    • โž• Added missing camera_num parameter to VideoGear.
    • ๐Ÿ‘Œ Added OpenSSL's [SSL: CERTIFICATE_VERIFY_FAILED] bug workaround for macOS envs.
    • โœ‚ Removed download_url meta from setup.py.
    • โœ‚ Removed PiGear from CI completely due to hardware emulation limitation.
    • โœ‚ Removed VideoCapture benchmark tests for macOS envs.
    • Removed trivial __main__.py from codecov.
    • โœ‚ Removed several redundant try-catch loops.
    • Renamed youtube_url_validation as youtube_url_validator.
    • ๐Ÿ›  Several minor wrong/duplicate variable definitions and various bugs fixed.
    • ๐Ÿ›  Fixed, Improved & removed many Redundant CI tests for various APIs.

    Pull requests(PR) involved:

    ๐Ÿš€ โš ๏ธ PyPi Release does NOT contain Tests and Scripts!

  • v0.1.7-a0 Changes

    January 06, 2020

    ๐Ÿ›  Fixes:

    • ๐Ÿ›  Fixed critical bug: undefined name self in helper.py context which will raise NameError. (@cclauss)

    Pull requests(PR) involved:

    #88

    ๐Ÿš€ โš ๏ธ PyPi Release does NOT contain Tests and Scripts!

  • v0.1.6 Changes

    December 31, 2019

    ๐Ÿ†• New Features:

    NetGear API:

    • Added powerful ZMQ Authentication & Data Encryption features for NetGear API:
      • Added exclusive secure_mode param for enabling it.
      • Added support for the two most powerful Stonehouse & Ironhouse ZMQ security mechanisms.
      • Added smart auth-certificates/key generation and validation features
    • Implemented Robust Multi-Server support for NetGear API:
      • Enables Multiple Server messaging support with a single client.
      • Added exclusive multiserver_mode param for enabling it.
      • Added support for REQ/REP & PUB/SUB patterns for this mode.
      • Added ability to send additional data of any datatype along with the frame in realtime in this mode.
    • Introducing exclusive Bi-Directional Mode for bidirectional data transmission:
      • Added new return_data parameter to recv() function.
      • Added new bidirectional_mode attribute for enabling this mode.
      • Added support for PAIR & REQ/REP patterns for this mode
      • Added support for sending data of any python datatype.
      • Added support for message parameter for non-exclusive primary modes for this mode.
    • Implemented compression support with on-the-fly flexible frame encoding for the Server-end:
      • Added initial support for JPEG, PNG & BMP encoding formats
      • Added exclusive options attribute compression_format & compression_param to tweak this feature
      • Client-end will now decode frame automatically based on the encoding as well as support decoding flags
    • Added force_terminate attribute flag for handling force socket termination at the Server-end if there's latency in the network.

    - Implemented new Publish/Subscribe(zmq.PUB/zmq.SUB) pattern for seamless Live Streaming in NetGear API.

    PiGear API:

    • Added new threaded internal timing function for PiGear to handle any hardware failures/frozen threads.
    • PiGear will not exit safely with SystemError if Picamera ribbon cable is pulled out to save resources.

    - Added support for new user-defined HWFAILURE_TIMEOUT options attributes to alter timeout.

    VideoGear API:

    • Added framerate global variable and removed redundant function.

    - Added CROP_N_ZOOM attribute in Videogear API for supporting Crop and Zoom stabilizer feature.

    WriteGear API: Added new execute_ffmpeg_cmd function to pass a custom command to its FFmpeg pipeline.

    Stabilizer class:

    • Added new Crop and Zoom feature.
      • Added crop_n_zoom param for enabling this feature.

    - Updated docs.

    โšก๏ธ CLI & Tests updates:

    • Replaced python 3.5 matrices with the latest python 3.8 matrices in the Linux environment.
    • Added full support for Codecov in all CLI environments.
    • Updated OpenCV to v4.2.0-pre(master branch).
    • Added various Netgear API tests.
    • Added initial Screengear API test.
    • More test RTSP feeds added with better error handling in the CamGear network test.
    • Added tests for ZMQ authentication certificate generation.

    - Added badge and Minor doc updates.

    โž• Added VidGear's official native support for macOS environments.

    โšก๏ธ Updates/Improvements:

    • ๐Ÿ–จ Replace print logging commands with python's logging module completely.
    • Implemented encapsulation for class functions and variables on all gears.
    • โšก๏ธ Updated support for screencasting from multiple/all monitors in ScreenGear API.
    • Updated ScreenGear API to use Threaded Queue Mode by default, thereby removed redundant THREADED_QUEUE_MODE param.
    • โšก๏ธ Updated bash script path to download test dataset in $TMPDIR rather than $HOME directory for downloading test data.
    • ๐Ÿ‘ Implemented better error handling of colorspace in various videocapture APIs.
    • โšก๏ธ Updated bash scripts, Moved FFmpeg static binaries to github.com.
    • โšก๏ธ Updated bash scripts, Added additional flag to support un-secure apt sources.
    • CamGear API will now throw RuntimeError if the source provided is invalid.
    • ๐ŸŽ Updated threaded Queue mode in CamGear API for more robust performance.
    • โž• Added new camera_num to support multiple Picameras.
    • ๐Ÿšš Moved thread exceptions to the main thread and then re-raised.
    • โž• Added alternate GitHub mirror for FFmpeg static binaries auto-installation on windows oses.
    • โž• Added colorlog python module for presentable colored logging.
    • Replaced traceback with sys.exc_info.
    • ๐Ÿ“„ Overall APIs Code and Docs optimizations.
    • โšก๏ธ Updated Code Readability and Wiki Docs.
    • โšก๏ธ Updated ReadMe & Changelog with the latest changes.
    • โšก๏ธ Updated Travis CLI Tests with support for the macOS environment.
    • ๐ŸŽ Reformatted & implemented necessary macOS related changes and dependencies in travis.yml.

    ๐Ÿ’ฅ Breaking Updates / Improvements / Changes

    • ๐Ÿฑ โš ๏ธ Python 2.7 legacy support dropped completely.
    • ๐Ÿฑ โš ๏ธ Source-code Relicensed to Apache 2.0 License.
    • ๐Ÿ‘ Python 3+ are only supported legacies for installing Vidgear v0.1.6 and above.
    • โœ… Python 2.7 and 3.4 legacies support dropped from VidGear CLI tests.

    ๐Ÿ›  Fixes

    • ๐ŸŽ Reimplemented Pub/Sub pattern for smoother performance on various networks.
    • ๐Ÿ›  Fixed Assertion error in CamGear API during colorspace manipulation.
    • ๐Ÿ›  Fixed random freezing in Secure Mode and several related performance updates
    • ๐Ÿ›  Fixed multiserver_mode not working properly over some networks.
    • ๐Ÿ›  Fixed assigned Port address ignored bug (commit 073bca1).
    • ๐Ÿ›  Fixed several wrong definition bugs from NetGear API(commit 8f7153c).
    • ๐Ÿ›  Fixed unreliable dataset video URL(rehosted file on github.com).
    • Disabled overwrite_cert for client-end in NetGear API.
    • ๐Ÿ— Disabled Universal Python wheel builds in setup.cfgfile.
    • โœ‚ Removed duplicate code to import MSS(@BoboTiG) from ScreenGear API.
    • Eliminated unused redundant code blocks from the library.
    • ๐Ÿ›  Fixed Code indentation in setup.py and updated new release information.
    • ๐Ÿ›  Fixed code definitions & Typos.
    • Fixed several bugs related to secure_mode & multiserver_mode Modes.
    • ๐Ÿ›  Fixed various macOS environment bugs.

    Pull requests(PR) involved:

    ๐Ÿš€ โš ๏ธ PyPi Release does NOT contain Tests and Scripts!

  • v0.1.5 Changes

    July 24, 2019

    ๐Ÿ†• New Features:

    • โž• Added new ScreenGear API, supports Live ScreenCasting.
    • โž• Added new NetGear API, aids real-time frame transfer through messaging(ZmQ) over network.
    • โž• Added new new Stabilizer Class, for minimum latency Video Stabilization with OpenCV.
    • โž• Added Option to use VidGear API's standalone.
    • โž• Added Option to use VideoGear API as internal wrapper around Stabilizer Class.
    • โž• Added new parameter stabilize to VidGear API, to enable or disable Video Stabilization.
    • โž• Added support for **option dict attributes to update VidGear's video stabilizer parameters directly.
    • โž• Added brand new VidGear logo and functional block diagram (.svg) in readme.md
    • โž• Added new pictures and GIFs for improving readme.md readability
    • โž• Added new contributing.md and changelog.md for reference.
    • โž• Added collections.deque import in Threaded Queue Mode for performance consideration
    • โž• Added new install_opencv.sh bash scripts for Travis cli, to handle OpenCV installation.
    • โž• Added new Project Issue & PR Templates
    • โž• Added new Sponsor Button(FUNDING.yml)

    โšก๏ธ Updates/Improvements:

    • โšก๏ธ Updated New dependencies: mss, pyzmq and rejected redundant ones.
    • Revamped and refreshed look for readme.md and added new badges.
    • ๐Ÿ“š Updated Releases Documentation completely.
    • โšก๏ธ Updated CLI tests for new changes
    • ๐Ÿ“š Updated Code Documentation.
    • โšก๏ธ Updated bash scripts and removed redundant information
    • โšก๏ธ Updated Youtube video URL in tests
    • โšก๏ธ Completely Reformatted and Updated Wiki Docs with new changes.

    ๐Ÿ’ฅ Breaking Updates / Improvements / Changes

    • Implemented experimental Threaded Queue Mode(a.k.a Blocking Mode) for fast, synchronized, error-free multi-threading.
    • โœ… Renamed bash script pre-install.sh to prepare_dataset.sh - downloads opensourced test datasets and static FFmpeg binaries for debugging.
    • ๐Ÿ”„ Changed script folder location to bash/script.
    • ๐Ÿšš Python 3.4 removed from Travis CLI tests.

    ๐Ÿ›  Fixes

    • ๐Ÿ›  Temporarily fixed Travis CLI bug: Replaced opencv-contrib-python with OpenCV built from scratch as dependency.
    • ๐Ÿ›  Fixed CLI Timeout Bug: Disable Threaded Queue Mode for CLI Tests
    • ๐Ÿ›  Fixes sys.stderr.close() throws ValueError bug: Replaced sys.close() with DEVNULL.close()
    • ๐Ÿ›  Fixed Youtube Live Stream bug that return NonType frames in CamGear API.
    • ๐Ÿ›  Fixed NoneType frames bug in PiGear class on initialization.
    • ๐Ÿ›  Fixed Wrong function definitions
    • โœ‚ Removed /xe2 unicode bug from Stabilizer class.
    • Fixed **output_params KeyError bug in WriteGear API
    • ๐Ÿ›  Fixed subprocess not closing properly on exit in WriteGear API.
    • ๐Ÿ›  Fixed bugs in ScreenGear: Non-negative monitor values
    • ๐Ÿ›  Fixed missing import, typos, wrong variable definitions
    • โœ‚ Removed redundant hack from setup.py
    • ๐Ÿ›  Fixed Minor YouTube playback Test CLI Bug
    • ๐Ÿ›  Fixed new Twitter Intent
    • ๐Ÿ›  Fixed bug in bash script that not working properly due to changes at server end.

    Pull requests(PR) involved:

  • v0.1.4 Changes

    May 11, 2019

    ๐Ÿ†• New Features:

    • โž• Added WriteGear API: for enabling lossless video encoding and compression(built around FFmpeg and OpenCV Video Writer)
    • Added YouTube direct Video Pipelining to OpenCV(YouTube Mode) in CamGear API
    • Added new y_tube to access YouTube Mode in CamGear API.
    • โž• Added flexible Output file Compression control capabilities in compression-mode(WriteGear).
    • โž• Added -output_dimensions special parameter to WriteGear API.
    • โž• Added new helper.py to handle special helper functions.
    • โž• Added feature to auto-download and configure FFmpeg Static binaries(if not found) on Windows platforms.
    • โž• Added -input_framerate special parameter to WriteGear class to change/control output constant framerate in compression mode(WriteGear).
    • โž• Added new Direct Video colorspace Conversion capabilities in CamGear and PiGear API.
    • โž• Added new framerate class variable for CamGear API, to retrieve input framerate.
    • โž• Added new parameter backend - changes the backend of CamGear's API
    • โž• Added automatic required prerequisites installation ability, when installation from source.
    • โž• Added Travis CLI Complete Integration for Linux-based Testing for VidGear.
    • โž• Added and configured travis.yml
    • โž• Added Appveyor CLI Complete Integration for Windows-based Testing in VidGear.
    • โž• Added and configured new appveyor.yml
    • โž• Added new bash script Pre-install.sh to download opensourced test datasets and static FFmpeg binaries for debugging.
    • โž• Added several new Tests(including Benchmarking Tests) for each API for testing with pytest.
    • โž• Added Say Thank you! badge to readme.

    โšก๏ธ Updates/Improvements:

    • โœ‚ Removed redundant dependencies
    • โšก๏ธ Updated youtube-dl as a dependency, as required by pafy's backend.
    • โšก๏ธ Updated common VideoGear API with new parameter.
    • โšก๏ธ Update robust algorithm to auto-detect FFmpeg executables and test them, if failed, auto fallback to OpenCV's VideoWriter API.
    • ๐Ÿ‘Œ Improved system previously installed OpenCV detection in setup.py.
    • โšก๏ธ Updated setup.py with hack to remove bullets from pypi description.
    • ๐Ÿ“š Updated Code Documentation
    • Reformatted & Modernized readme.md with new badges.
    • โšก๏ธ Reformatted and Updated Wiki Docs.

    ๐Ÿ’ฅ Breaking Updates / Improvements / Changes

    • ๐Ÿ› Bugs Patched: Removed unnecessary -height and -width parameter from CamGear API.
    • Replaced dependency opencv-python with opencv-contrib-python completely

    ๐Ÿ›  Fixes

    • ๐Ÿ Windows Cross-Platform fix: replaced dependency os with platform in setup.py.
    • Fixed Bug: Arises due to spaces in input **options/** output_param dictionary keys.
    • ๐Ÿ›  Fixed several wrong/missing variable & function definitions.
    • ๐Ÿ›  Fixed code uneven indentation.
    • ๐Ÿ›  Fixed several typos in docs.

    Pull requests(PR) involved:

    ๐Ÿš€ โš ๏ธ PyPi Release does NOT contain Tests and Scripts!

  • v0.1.4-alpha

    May 03, 2019
  • v0.1.3 Changes

    April 07, 2019

    ๐Ÿ›  Fixes

    • Patched Major PiGear Bug: Incorrect import of PiRGBArray function in PiGear Class
    • ๐Ÿ›  Several fixes for backend picamera API handling during frame capture(PiGear)
    • ๐Ÿ›  Fixed missing frame variable initialization.
    • ๐Ÿ›  Fixed minor typos

    Pull requests(PR) Involved:

    ๐Ÿ‘€ Tip ๐Ÿ’ก Go through each PR to see what has changed and when!

  • v0.1.2 Changes

    March 27, 2019

    ๐Ÿ†• New Features:

    • โž• Added easy Source manipulation feature in CamGear API, to control features like resolution, brightness, framerate etc.
    • โž• Added new **option parameter to CamGear API, provides the flexibility to manipulate input stream directly.
    • โž• Added new parameters for Camgear API for time delay and logging.
    • โž• Added new Logo to readme.md
    • โž• Added new Wiki Documentation.

    โšก๏ธ Updates/Improvements:

    • Reformatted readme.md.
    • โšก๏ธ Updated Wiki Docs with new changes.

    ๐Ÿ›  Fixes:

    • ๐Ÿ‘Œ Improved Error Handling in CamGear & PiGear API.
    • ๐Ÿ›  Fixed minor typos in docs.

    Pull requests(PR) Involved:

    ๐Ÿ‘€ Tip ๐Ÿ’ก Go through each PR to see what has changed and when!