Vidgear Versions Save

A High-performance cross-platform Video Processing Python framework powerpacked with unique trailblazing features :fire:

vidgear-0.1.9

3 years ago

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.
  • 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

  • :warning: 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.
  • 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

  • PR #129
  • PR #130
  • PR #155
  • PR #157

vidgear-0.1.8

3 years ago

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.
  • 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

  • PR #129
  • PR #130

vidgear-0.1.7

4 years ago

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

  • :warning: 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:

  • PR #88
  • PR #91
  • PR #93
  • PR #95
  • PR #98
  • PR #101
  • PR #114
  • PR #118
  • PR #124

:warning: PyPi Release does NOT contain Tests and Scripts!

vidgear-0.1.7-a0

4 years ago

Fixes:

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

Pull requests(PR) involved:

#88

:warning: PyPi Release does NOT contain Tests and Scripts!

vidgear-0.1.6

4 years ago

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

  • :warning: Python 2.7 legacy support dropped completely.
  • :warning: 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.cfg file.
  • 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:

  • PR #39
  • PR #42
  • PR #44
  • PR #52
  • PR #55
  • PR #62
  • PR #67
  • PR #72
  • PR #77
  • PR #78
  • PR #82
  • PR #84

:warning: PyPi Release does NOT contain Tests and Scripts!

vidgear-0.1.5

4 years ago

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:

  • PR #17
  • PR #21
  • PR #22
  • PR #27
  • PR #31
  • PR #32
  • PR #33
  • PR #34

videgear-0.1.4

5 years ago

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:

  • PR #7
  • PR #8
  • PR #10
  • PR #12

:warning: PyPi Release does NOT contain Tests and Scripts!

videgear-0.1.3

5 years ago

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:

  • PR #6
  • PR #5

Tip :bulb: Go through each PR to see what has changed and when!

videgear-0.1.2

5 years ago

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:

  • PR #4

Tip :bulb: Go through each PR to see what has changed and when!

videgear-0.1.1

5 years ago

VidGear v0.1.1

New Features:

  • Release ViGear binaries on the Python Package Index (PyPI)
  • Added new and configured setup.py & setup.cfg

Fixes:

  • Fixed PEP bugs: added and configured properly __init__.py in each folder
  • Fixed PEP bugs: improved code Indentation
  • Fixed wrong imports: replaced distutils.core with setuptools
  • Fixed readme.md