Skip to content

Release Notes

v0.2.6 (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)
    • Added new ko-fi button to README.md
    • Added new contributors block to changelog.md
  • 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 YAML
      • Added new bug_report.yaml.
      • Added new question.yaml.
      • Added new proposal.yaml.
      • Deleted depreciated markdown files.
      • Polished forms.
Updates/Improvements
  • Setup.py:
    • Bumped version to 0.2.6.
    • Updated logic operators and dependency.
      • Replaced >= comparsion operator with more flexible ~=.
      • 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.
      • Updated headings and URLs.
    • Redesigned and Rewritten Donation and Contribution section to README.md
    • Updated Zenodo badge and bibtex entry.
    • Updated Admonition Icon, FAQs and site-links.
    • Reformatted code and its comments.
    • Updated changelog.md.
  • API:
  • 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:
    • Xfailed RSTP CamGear CI test.
    • Fixed pinned version syntax bug in docs_deployer workflow.
    • Fixed typos in Github forms and its context.
    • Added missing dependency.
  • Docs:
    • Fixed jinja2 3.1.0 or above breaks mkdocs.
      • jinja2>=3.1.0 breaks mkdocs (mkdocs/mkdocs#2799), therefore pinned jinja2 version to <3.1.0.
    • Fixed support for new mkdocstring versions
      • Replaced rendering sub-value with options.
      • Removed pinned mkdocstrings==0.17.0 version.
    • Fixed Netgear+Webgear bonus example code bugs.(PR by @iandol)
      • Added a missing import.
      • Removed self. typo.
      • Replaced the return value with break in the async as it triggers an error.
    • Fixed external bug that causing "Home" tab to irresponsive randomly when accessed from other tabs.
    • Fixed indentation and spacing.
    • Fixed typos and updated context.
    • Removed dead code.
Pull Requests
New Contributors

 

 

v0.2.5 (2021-02-11)

New Features
  • WriteGear:
    • Add support for GStreamer pipeline in WriteGear API's Non-Compression mode:
      • Implemented GStreamer Pipeline Mode to accept GStreamer pipeline as string to its output_filename parameter.
      • Added new special -gst_pipeline_mode attribute for its output_params parameter.
      • This feature provides flexible way to directly write video frames into GStreamer Pipeline with controlled bitrate.
      • Added new docs and updated existing docs with related changes.
    • Added new -ffpreheaders special attribute to WriteGear's options parameter:
      • 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.
      • Added related docs.
  • NetGear:
    • Added bidirectional data transfer support by extending Bidirectional mode support to exclusive Multi-Clients and Multi-Servers 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 Multi-Clients and Multi-Servers modes already enabled.
      • Added new docs and updated existing docs with related changes.
  • Maintenance:
    • Added official support for Python-3.10 legacies.
    • Added float value support to THREAD_TIMEOUT optional parameter.
    • Added info about dropped support for Python-3.6 legacies through announcement bar.
    • Added config.md file for Issue templates.
    • Added title to Issue templates.
  • Docs:
    • Added new Code Annotations
    • Added new icons to headings.
    • Added Advanced VideoGear usage example with CamGear backend.
Updates/Improvements
  • Setup.py:
    • Dropped support for Python-3.6 and below legacies.
    • Updated logging formatting.
    • Updated python_requires to >=3.7.
    • Bumped version to 0.2.5.
  • Helper:
    • Vidgear will now report current version on every run.
  • Docs:
    • Updated SSH tunneling docs context.
    • Excluded docs directory from CI envs.
    • Updated Zenodo badge and BibTeX entry.
    • Updated dark theme hue to 260.
    • Updated Admonitions.
    • Additional warnings against pushing PR against VidGear's testing branch only.
    • Updated code comments.
  • CI:
    • Removed support for Python-3.6 legacies from all workflows.
    • Updated NetGear's Exclusive Mode tests.
    • Added GStreamer Pipeline Mode tests.
  • Maintenance:
    • Updated Issue and PR templates.
    • Updated metadata.
Breaking Updates/Changes
  • Dropped support for Python-3.6 legacies from vidgear.
Bug-fixes
  • NetGear: Fixed bidirectional mode overriding multi-clients mode's data.
  • WriteGear:
    • Fixed wrongly defined ffmpeg_preheaders.
    • Fixed condition logic bugs.
    • Fixed UnboundLocalError bug.
  • Setup: Fixed uvicorn and aiortc dropped support for Python-3.6 legacies.
  • CI:
    • Fixed GitHub Actions interprets 3.10 as 3.1 if used without strings.
    • Fixed naming error in azure YAML.
  • Docs:
    • Fixed codecov badge URL in README.md
    • Fixed hyperlinks in README.
    • Fixed indentation and spacing.
    • Fixed typos and updated context.
    • Removed dead code.
  • Maintenance:
    • Removed depreciated condition checks.
Pull Requests

 

 

v0.2.4 (2021-12-05)

New Features
  • CamGear:
    • Added a new YT_backend Internal Class with YT-DLP backend:
      • Implemented YT_backend a new CamGear's Internal YT-DLP backend class for extracting metadata from Streaming URLs.
      • Added support for pipeling (live) video-frames from all yt-dlp supported streaming sites: https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md#supported-sites
      • Implemented algorithm from scratch for auto-extracting resolution specific streamable URLs for pipelineing.
      • Implemented logic for auto-calculating best and worst resolutions.
      • Added new ytv_metadata global parameter to CamGear for accessing video's metadata(such as duration, title, description) on-the-go.
      • ⚠️ Playlists are still unsupported.
  • WebGear_RTC:
    • Implemented a new easy way of defining Custom Streaming Class with suitable source(such as OpenCV):
      • Added new custom_stream attribute with WebGear_RTC options parameter that allows you to easily define your own Custom Streaming Class with suitable source(such as OpenCV).
      • This implementation supports repeated Auto-Reconnection or Auto-Refresh out-of-the-box.
      • This implementation is more user-friendly and easy to integrate within complex APIs.
      • This implementation requires at-least read() and stop() methods implemented within Custom Streaming Class, otherwise WebGear_RTC will throw ValueError.
      • This implementation supports all vidgear's VideoCapture APIs readily as input.
  • Maintenance:
    • Added new .gitignore for specifying intentionally untracked files to ignore
      • Added more files entries to .gitignore.
    • Added new .gitattributes to manage how Git reads line endings.
      • Enabled auto default behavior, in case people don't have core.autocrlf set.
      • Enforced LF line-endings for selective files types.
      • Added Binary data files that specifies they are not text, and git should not try to change them.
      • Added Language aware diff headers.
      • Added Linguist language overrides.
  • Docs:
    • Added bonus example to add real-time file audio encoding with VideoGear and Stabilizer class.
    • Added complete usage docs with new CamGear's Internal Class with YT-DLP backend.
    • Added instructions to extract video's metadata in CamGear.
    • Added donation link in page footer with bouncing heart animation through pure CSS.
    • Added info about critical changes in v0.2.4 and above installation through new announcement bar.
    • Added related usage docs for new WebGear_RTC custom streaming class.
    • Added changes for upgrading mkdocs-material from v7.x to newer v8.x.
    • Added outdated version warning block.
Updates/Improvements
  • CamGear:
    • Added is_livestream global YT_backend parameters.
    • Added default options for yt-dlp for extracting info_dict(metadata) of the video as a single JSON line.
    • Completely removed old logic for extracting streams using pafy.
    • Removed all dead code related to streamlink backend.
  • Setup.py:
    • Moved all API specific dependencies to extra_requires under the name "core". [PR #268 by @zpapakipos]
    • Added rule to replace GitHub heading links in description.
    • Updated extra_require dependencies.
    • Removed streamlink dependency.
    • Removed pafy dependency.
    • Removed pyzmq from latest_version group.
    • Updated SEO Keywords.
  • Docs:
    • Re-written pip and source installation docs.
    • Added warning for using -disable_force_termination flag for short duration videos.
    • Added permalink_title entry to mkdocs.yml.
    • Updated CamGear parameters.
    • Updated Admonitions with related information.
    • Updated Functional Block Diagram(gears_fbd.png) image.
    • Updated installation instructions.
    • Updated Advanced examples using WebGear_RTC's custom streaming class.
    • Updated code highlighting.
    • Updated zenodo badge.
    • Updated BibTex for project citation.
    • Replaced incorrect API parameter docs.
    • Updated WebGear_RTC parameters.
  • CI:
    • Updated CI tests for new WebGear_RTC custom streaming class.
    • Restored test_stream_mode CamGear test.
    • Updated Streaming Sites test links.
    • Added more tests cases.
  • Maintenance:
    • Updated spacing in logger formatting.
    • Renamed Asyncio Helper logger name.
    • Changed logging colors.
    • Updated logging messages.
Breaking Updates/Changes
  • Installation command with pip has been changed in v0.2.4:
    • The legacy pip install vidgear command now installs critical bare-minimum dependencies only. Therefore in order to automatically install all the API specific dependencies as previous versions, use pip install vidgear[core] command instead.
  • CamGear:
    • Removed streamlink backend support from stream_mode in favor of more reliable CamGear's Internal YT-DLP backend class for extracting metadata from Streaming URLs.
      • CamGear will raise ValueError if streaming site URL is unsupported by yt-dlp backend.
      • CamGear will raise ValueError if yt-dlp isn't installed and stream_mode is enabled.
    • Removed automatic enforcing of GStreamer backend for YouTube-livestreams and made it optional.
      • The CamGear will not raise ValueError if GStreamer support is missing in OpenCV backends.
  • WebGear_RTC:
    • Removed support for assigning Custom Media Server Class(inherited from aiortc's VideoStreamTrack) in WebGear_RTC through its config global parameter.
    • WebGear_RTC API will now throws ValueError if source parameter is NoneType as well as custom_stream attribute is undefined.
  • Helper:
    • Removed restore_levelnames method.
    • Removed youtube_url_validator helper method.
Bug-fixes
  • CamGear:
    • Fixed KeyError Bug for missing attributed in meta_data json in some streaming sites.
  • Helper:
    • Removed unused imports.
  • Docs:
    • Removed slugify from mkdocs which was causing invalid hyperlinks in docs.
    • Fixed GitHub hyperlinks in README.md.
    • Fixed hyperlink in announcement bar.
    • Fixed content tabs failing to work.
    • Fixed line-endings and usage example code.
    • Removed any pafy and streamlink references.
    • Fixed context and typos.
  • CI:
    • Fixed NameError bugs in WebGear_RTC CI test.
  • Maintenance:
    • Removed dead logger code causing Python's Built-in logging module to hide logs.
    • Removed unused logging import.
    • Updated code comments.
Pull Requests
New Contributors

 

 

v0.2.3 (2021-10-27)

New Features
  • CamGear:
    • Added support for 4K Streaming URLs.
  • Helper:
    • Implemented logging ColorFormatter string alignment.
      • Center aligned logging Level-name and Class-name.
      • Changed % formatting style with modern {.
      • Re-added asctime value to Formatter string.
      • Re-arranged parameter positions in Formatter string.
  • Maintenance:
    • Added new .gitignore for specifying intentionally untracked files to ignore
      • Added more files entries to .gitignore.
    • Added new .gitattributes to manage how Git reads line endings.
      • Enabled auto default behavior, in case people don't have core.autocrlf set.
      • Enforced LF line-endings for selective files types.
      • Added Binary data files that specifies they are not text, and git should not try to change them.
      • Added Language aware diff headers.
      • Added Linguist language overrides.
  • Docs:
    • Added new ScreenGear with WebGear_RTC API bonus example.
    • Added support for hl_lines argument for highlighting specific code lines.
    • Added drop-shadow effects for its slate theme to improve visibility.
Updates/Improvements
  • CamGear:
    • Replaced youtube-dl with yt-dlp as pafy backend for YouTube videos pipelining.
      • Implemented hack to trick pafy into assuming yt-dlp as youtube-dl.
      • Using sys.modules to present yt-dlp as youtube-dl.
      • yt-dlp python API functions exactly similar to youtube-dl.
      • Replaced youtube-dl dependency with yt-dlp.
      • Replaced youtube-dl imports with yt-dlp.
  • StreamGear:
    • Updated default stream_count internal dict key value to 1.
  • Maintenance:
    • Introduced python short-circuiting for handling logging logic.
    • Enabled logging for check_WriteAccess method in WriteGear, StreamGear and NetGear APIs.
  • Docs:
    • Added warning for ScreenGear outputting RGBA frames instead of default BGR frames with mss backend.
    • Added warnings for properly formatting output_params when assigning external audio-source in WriteGear.
    • Added depreciation notice for Python 3.6 legacies.
    • Restructured docs to make it more user-friendly.
    • Updated, Extended and Improved context.
    • Improved code comments.
    • Updated docs admonitions.
    • Updated Zenodo badge.
  • CI:
    • Migrated to new Codecov Uploader in Azure Pipelines.
    • Replaced env with export in ci_linux.yml.
    • Replaced bubkoo/needs-more-info@v1 with wow-actions/needs-more-info@v1.
    • Added codecov secret token through env variable.
    • Added wildcard to skip CI tests for doc(.md) files.
    • Added .md files to Codecov ignore list.
    • Update vidgear's banner image.
Breaking Updates/Changes
  • check_WriteAccess will now return as invalid path if writing directory does not exists. This will effect output file handling in WriteGear and StreamGear APIs.
Bug-fixes
  • StreamGear:
    • Fixed StreamGear Malformed URI Error with HLS Segments [PR #243 by @Vboivin]
      • Removed the extra '%' character from the naming convention for segment files.
      • Used stream_count internal dict variable to alter template for HLS segment filenames.
  • WriteGear:
    • Fixed bug in disable_force_termination logic which accidentally disables force termination.
  • WebGear_RTC:
    • Fixed name 'VideoStreamTrack' is not defined bug.
  • Setup.py:
    • Fixed TypeError bug.
    • Fixed invalid latest_version retrieval.
  • Helper:
    • Fixed check_WriteAccess failing to recognize correct permission for writing the output file on windows platform.
      • Implemented separate logic for Windows and *nix platforms.
      • Added new stat import.
      • Improved warnings and error handling.
      • Added logging parameter to check_WriteAccess.
    • Fixed bug in check_WriteAccess that throws OSError while handling URLs.
  • Docs:
    • Fixed bugs in WriteGear's Compression Mode with Live Audio Input example.
    • Fixed "drop-shadow" property via filter function conflicting with sidecard button.
      • Added new CSS classes for image, admonitions and code highlight in dark theme.
    • Several internal and external webpage links typos fixed.
    • Fixed several language typos.
  • CI:
    • Fixed Azure Pipeline coverage upload bugs.
    • Fixed random errors in CamGear stream_mode test.
  • Bash:
    • Removed the Windows carriage returns from the shell scripts to be able to execute them on Linux.
  • Fixed logging comments.
Pull Requests
New Contributors

 

 

v0.2.2 (2021-09-02)

New Features
  • StreamGear:
    • Native Support for Apple HLS Multi-Bitrate Streaming format:
      • Added support for new Apple HLS (HTTP Live Streaming) HTTP streaming format in StreamGear.
      • Implemented default workflow for auto-generating primary HLS stream of same resolution and framerate as source.
      • Added HLS support in Single-Source and Real-time Frames Modes.
      • Implemented inherit support for fmp4 and mpegts HLS segment types.
      • Added adequate default parameters required for trans-coding HLS streams.
      • Added native support for HLS live-streaming.
      • Added "hls" value to format parameter for easily selecting HLS format.
      • Added HLS support in -streams attribute for transcoding additional streams.
      • Added support for .m3u8 and .ts extensions in clear_prev_assets workflow.
      • Added validity check for .m3u8 extension in output when HLS format is used.
      • Separated DASH and HLS command handlers.
      • Created HLS format exclusive parameters.
      • Implemented -hls_base_url FFMpeg parameter support.
    • Added support for audio input from external device:
      • Implemented support for audio input from external device.
      • Users can now easily add audio device and decoder by formatting them as python list.
      • Modified -audio parameter to support list data type as value.
      • Modified validate_audio helper function to validate external audio devices.
    • Added -seg_duration to control segment duration.
  • NetGear:
    • New SSH Tunneling Mode for remote connection:
      • New SSH Tunneling Mode for connecting ZMQ sockets across machines via SSH tunneling.
      • Added new ssh_tunnel_mode attribute to enable ssh tunneling at provide address at server end only.
      • Implemented new check_open_port helper method to validate availability of host at given open port.
      • Added new attributes ssh_tunnel_keyfile and ssh_tunnel_pwd to easily validate ssh connection.
      • Extended this feature to be compatible with bi-directional mode and auto-reconnection.
      • Disabled support for exclusive Multi-Server and Multi-Clients modes.
      • Implemented logic to automatically enable paramiko support if installed.
      • Reserved port-47 for testing.
    • Additional colorspace support for input frames with Frame-Compression enabled:
      • Allowed to manually select colorspace on-the-fly with JPEG frame compression.
      • Updated jpeg_compression dict parameter to support colorspace string values.
      • Added all supported colorspace values by underline simplejpeg library.
      • Server enforced frame-compression colorspace on client(s).
      • Enable "BGR" colorspace by default.
      • Added Example for changing incoming frames colorspace with NetGear's Frame Compression.
      • Updated Frame Compression parameters in NetGear docs.
      • Updated existing CI tests to cover new frame compression functionality.
  • NetGear_Async:
    • New exclusive Bidirectional Mode for bidirectional data transfer:
      • NetGear_Async's first-ever exclusive Bidirectional mode with pure asyncio implementation.
      • Bidirectional mode is only available with User-defined Custom Source(i.e. source=None)
      • Added support for PAIR & REQ/REP bidirectional patterns for this mode.
      • Added powerful asyncio.Queues for handling user data and frames in real-time.
      • Implemented new transceive_data method to Transmit (in Recieve mode) and Receive (in Send mode) data in real-time.
      • Implemented terminate_connection internal asyncio method to safely terminate ZMQ connection and queues.
      • Added msgpack automatic compression encoding and decoding of data and frames in bidirectional mode.
      • Added support for np.ndarray video frames.
      • Added new bidirectional_mode attribute for enabling this mode.
      • Added 8-digit random alphanumeric id generator for each device.
      • NetGear_Async will throw RuntimeError if bidirectional mode is disabled at server or client but not both.
    • Added new disable_confirmation used to force disable termination confirmation from client in terminate_connection.
    • Added task_done() method after every get() call to gracefully terminate queues.
    • Added new secrets and string imports.
  • WebGear:
    • Updated JPEG Frame compression with simplejpeg:
      • Implemented JPEG compression algorithm for 4-5% performance boost at cost of minor loss in quality.
      • Utilized encode_jpeg and decode_jpeg methods to implement turbo-JPEG transcoding with simplejpeg.
      • Added new options to control JPEG frames quality, enable fastest dct, fast upsampling to boost performance.
      • Added new jpeg_compression, jpeg_compression_quality, jpeg_compression_fastdct, jpeg_compression_fastupsample attributes.
      • Enabled fast dct by default with JPEG frames at 90%.
      • Incremented default frame reduction to 25%.
      • Implemented automated grayscale colorspace frames handling.
      • Updated old and added new usage examples.
      • Dropped support for depreciated attributes from WebGear and added new attributes.
    • Added new WebGear Theme: (Checkout at https://github.com/abhiTronix/vidgear-vitals)
      • Added responsive image scaling according to screen aspect ratios.
      • Added responsive text scaling.
      • Added rounded border and auto-center to image tag.
      • Added bootstrap css properties to implement auto-scaling.
      • Removed old resize() hack.
      • Improved text spacing and weight.
      • Integrated toggle full-screen to new implementation.
      • Hide Scrollbar both in WebGear_RTC and WebGear Themes.
      • Beautify files syntax and updated files checksum.
      • Refactor files and removed redundant code.
      • Bumped theme version to v0.1.2.
  • WebGear_RTC:
    • Added native support for middlewares:
      • Added new global middleware variable for easily defining Middlewares as list.
      • Added validity check for Middlewares.
      • Added tests for middlewares support.
      • Added example for middlewares support.
      • Extended middlewares support to WebGear API too.
      • Added related imports.
    • Added new WebGear_RTC Theme: (Checkout at https://github.com/abhiTronix/vidgear-vitals)
      • Implemented new responsive video scaling according to screen aspect ratios.
      • Added bootstrap CSS properties to implement auto-scaling.
      • Removed old resize() hack.
      • Beautify files syntax and updated files checksum.
      • Refactored files and removed redundant code.
      • Bumped theme version to v0.1.2
  • Helper:
    • New automated interpolation selection for gears:
      • Implemented retrieve_best_interpolation method to automatically select best available interpolation within OpenCV.
      • Added support for this method in WebGear, WebGear_RTC and Stabilizer Classes/APIs.
      • Added new CI tests for this feature.
    • Implemented get_supported_demuxers method to get list of supported demuxers.
  • CI:
    • Added new no-response work-flow for stale issues.
    • Added new CI tests for SSH Tunneling Mode.
    • Added paramiko to CI dependencies.
    • Added support for "hls" format in existing CI tests.
    • Added new functions check_valid_m3u8 and extract_meta_video for validating HLS files.
    • Added new m3u8 dependency to CI workflows.
    • Added complete CI tests for NetGear_Async's new Bidirectional Mode:
      • Implemented new exclusive Custom_Generator class for testing bidirectional data dynamically on server-end.
      • Implemented new exclusive client_dataframe_iterator method for testing bidirectional data on client-end.
      • Implemented test_netgear_async_options and test_netgear_async_bidirectionalmode two new tests.
      • Added timeout value on server end in CI tests.
  • Setup.py:
    • Added new cython and msgpack dependency.
    • Added msgpack and msgpack_numpy to auto-install latest.
  • BASH:
    • Added new temp_m3u8 folder for generating M3U8 assets in CI tests.
  • Docs:
    • Added docs for new Apple HLS StreamGear format:
      • Added StreamGear HLS transcoding examples for both StreamGear modes.
      • Updated StreamGear parameters to w.r.t new HLS configurations.
      • Added open-sourced "Sintel" - project Durian Teaser Demo with StreamGear's HLS stream using Clappr and raw.githack.com.
      • Added new HLS chunks at https://github.com/abhiTronix/vidgear-docs-additionals for StreamGear
      • Added support for HLS video in Clappr within custom.js using HlsjsPlayback plugin.
      • Added support for Video Thumbnail preview for HLS video in Clappr within custom.js
      • Added hlsjs-playback.min.js JS script and suitable configuration for HlsjsPlayback plugin.
      • Added custom labels for quality levels selector in custom.js.
      • Added new docs content related to new Apple HLS format.
      • Updated DASH chunk folder at https://github.com/abhiTronix/vidgear-docs-additionals.
      • Added example for audio input support from external device in StreamGear.
      • Added steps for using -audio attribute on different OS platforms in StreamGear.
    • Added usage examples for NetGear_Async's Bidirectional Mode:
      • Added new Usage examples and Reference doc for NetGear_Async's Bidirectional Mode.
      • Added new image asset for NetGear_Async's Bidirectional Mode.
      • Added NetGear_Async's option parameter reference.
      • Updated NetGear_Async definition in docs.
      • Changed font size for Helper methods.
      • Renamed Bonus section to References in mkdocs.yml.
    • Added Gitter sidecard embed widget:
      • Imported gitter-sidecar script to main.html.
      • Updated custom.js to set global window option.
      • Updated Sidecard UI in custom.css.
    • Added bonus examples to help section:
      • Implemented a curated list of more advanced examples with unusual configuration for each API.
    • Added several new contents and updated context.
    • Added support for search suggestions, search highlighting and search sharing (i.e. deep linking)
    • Added more content to docs to make it more user-friendly.
    • Added warning that JPEG Frame-Compression is disabled with Custom Source in WebGear.
    • Added steps for identifying and specifying sound card on different OS platforms in WriteGear.
    • Added Zenodo DOI badge and its reference in BibTex citations.
    • Added extra.homepage parameter, which allows for setting a dedicated URL for site_url.
    • Added pymdownx.striphtml plugin for stripping comments.
    • Added complete docs for SSH Tunneling Mode.
    • Added complete docs for NetGear's SSH Tunneling Mode.
    • Added pip upgrade related docs.
    • Added docs for installing vidgear with only selective dependencies
    • Added new advance/experiment admonition with new background color.
    • Added new icons SVGs for advance and warning admonition.
    • Added new usage example and related information.
    • Added new image assets for ssh tunneling example.
    • Added new admonitions
    • Added new FAQs.
Updates/Improvements
  • VidGear Core:
    • New behavior to virtually isolate optional API specific dependencies by silencing ImportError on all VidGear's APIs import.
    • Implemented algorithm to cache all imports on startup but silence any ImportError on missing optional dependency.
    • Now ImportError will be raised only any certain API specific dependency is missing during given API's initialization.
    • New import_dependency_safe to imports specified dependency safely with importlib module.
    • Replaced all APIs imports with import_dependency_safe.
    • Added support for relative imports in import_dependency_safe.
    • Implemented error parameter to by default ImportError with a meaningful message if a dependency is missing, Otherwise if error = log a warning will be logged and on error = silent everything will be quit. But If a dependency is present, but older than specified, an error is raised if specified.
    • Implemented behavior that if a dependency is present, but older than min_version specified, an error is raised always.
    • Implemented custom_message to display custom message on error instead of default one.
    • Implemented separate import_core_dependency function to import and check for specified core dependency.
    • ImportError will be raised immediately if core dependency not found.
  • StreamGear:
    • Replaced depreciated -min_seg_duration flag with -seg_duration.
    • Removed redundant -re flag from RTFM.
    • Improved Live-Streaming performance by disabling SegmentTimline
    • Improved DASH assets detection for removal by using filename prefixes.
  • NetGear:
    • Replaced np.newaxis with np.expand_dims.
    • Replaced random module with secrets while generating system ID.
    • Update array indexing with np.copy.
  • NetGear_Async:
    • Improved custom source handling.
    • Removed deprecated loop parameter from asyncio methods.
    • Re-implemented skip_loop parameter in close() method.
    • run_until_complete will not used if skip_loop is enabled.
    • skip_loop now will create asyncio task instead and will enable disable_confirmation by default.
    • Replaced create_task with ensure_future to ensure backward compatibility with python-3.6 legacies.
    • Simplified code for transceive_data method.
  • WebGear_RTC:
    • Improved handling of failed ICE connection.
    • Made is_running variable globally available for internal use.
  • Helper:
    • Added 4320p resolution support to dimensions_to_resolutions method.
    • Implemented new delete_file_safe to safely delete files at given path.
    • Replaced os.remove calls with delete_file_safe.
    • Added support for filename prefixes in delete_ext_safe method.
    • Improved and simplified create_blank_frame functions frame channels detection.
    • Added logging parameter to capPropId function to forcefully discard any error(if required).
  • Setup.py:
  • Asyncio:
    • Changed asyncio.sleep value to 0.
      • The amount of time sleep is irrelevant; the only purpose await asyncio.sleep() serves is to force asyncio to suspend execution to the event loop, and give other tasks a chance to run. Also, await asyncio.sleep(0) will achieve the same effect. https://stackoverflow.com/a/55782965/10158117
  • License:
    • Dropped publication year range to avoid confusion. (Signed and Approved by @abhiTronix)
    • Updated Vidgear license's year of first publication of the work in accordance with US copyright notices defined by Title 17, Chapter 4(Visually perceptible copies): https://www.copyright.gov/title17/92chap4.html
    • Reflected changes in all copyright notices.
  • CI:
    • Updated macOS VM Image to latest in azure devops.
    • Updated VidGear Docs Deployer Workflow.
    • Updated WebGear_RTC CI tests.
    • Removed redundant code from CI tests.
    • Updated tests to increase coverage.
    • Enabled Helper tests for python 3.8+ legacies.
    • Enabled logging in validate_video method.
    • Added -hls_base_url to streamgear tests.
    • Update mpegdash dependency to 0.3.0-dev2 version in Appveyor.
    • Updated CI tests for new HLS support
    • Updated CI tests from scratch for new native HLS support in StreamGear.
    • Updated test patch for StreamGear.
    • Added exception for RunTimeErrors in NetGear CI tests.
    • Added more directories to Codecov ignore list.
    • Imported relative logger_handler for asyncio tests.
  • Docs:
    • Re-positioned few docs comments at bottom for easier detection during stripping.
    • Updated to new extra analytics parameter in Material Mkdocs.
    • Updated dark theme to dark orange.
    • Changed fonts => text: Muli & code: Fira Code
    • Updated fonts to Source Sans Pro.
    • Updated setup.py update-link for modules.
    • Re-added missing StreamGear Code docs.
    • Several minor tweaks and typos fixed.
    • Updated 404.html page.
    • Updated admonitions colors and beautified custom.css.
    • Replaced VideoGear & CamGear with OpenCV in CPU intensive examples.
    • Updated mkdocs.yml with new changes and URLs.
    • Moved FAQ examples to bonus examples.
    • Moved StreamGear primary modes to separate sections for better readability.
    • Implemented separate overview and usage example pages for StreamGear primary modes.
    • Improved StreamGear docs context and simplified language.
    • Renamed StreamGear overview page to introduction.
    • Re-written Threaded-Queue-Mode from scratch with elaborated functioning.
    • Replace Paypal with Liberpay in FUNDING.yml.
    • Updated FFmpeg Download links.
    • Reverted UI change in CSS.
    • Updated changelog.md and fixed clutter.
    • Updated README.md and mkdocs.yml with new additions
    • Updated context for CamGear example.
    • Restructured and added more content to docs.
    • Updated comments in source code.
    • Removed redundant data table tweaks from custom.css.
    • Re-aligned badges in README.md.
    • Beautify custom.css.
    • Updated mkdocs.yml.
    • Updated context and fixed typos.
    • Added missing helper methods in Reference.
    • Updated Admonitions.
    • Updates images assets.
    • Bumped CodeCov.
  • Logging:
    • Improved logging level-names.
    • Updated logging messages.
  • Minor tweaks to needs-more-info template.
  • Updated issue templates and labels.
  • Removed redundant imports.
Breaking Updates/Changes
  • Virtually isolated all API specific dependencies, Now ImportError for API-specific dependencies will be raised only when any of them is missing at API's initialization.
  • Renamed delete_safe to delete_ext_safe.
  • Dropped support for frame_jpeg_quality, frame_jpeg_optimize, frame_jpeg_progressive attributes from WebGear.
Bug-fixes
  • CamGear:
    • Hot-fix for Live Camera Streams:
      • Added new event flag to keep check on stream read.
      • Implemented event wait for read() to block it when source stream is busy.
      • Added and Linked THREAD_TIMEOUT with event wait timout.
      • Improved backward compatibility of new additions.
    • Enforced logging for YouTube live.
  • NetGear:
    • Fixed Bidirectional Video-Frame Transfer broken with frame-compression:
      • Fixed return_data interfering with return JSON-data in receive mode.
      • Fixed logic.
    • Fixed color-subsampling interfering with colorspace.
    • Patched external simplejpeg bug. Issue: https://gitlab.com/jfolz/simplejpeg/-/issues/11
      • Added np.squeeze to drop grayscale frame's 3rd dimension on Client's end.
    • Fixed bug that cause server end frame dimensions differ from client's end when frame compression enabled.
  • NetGear_Async:
    • Fixed bug related asyncio queue freezing on calling join().
    • Fixed ZMQ connection bugs in bidirectional mode.
    • Fixed several critical bugs in event loop handling.
    • Fixed several bugs in bidirectional mode implementation.
    • Fixed missing socket termination in both server and client end.
    • Fixed timeout parameter logic.
    • Fixed typos in error messages.
  • WebGear_RTC:
    • Fixed stream freezes after web-page reloading:
      • Implemented new algorithm to continue stream even when webpage is reloaded.
      • Inherit and modified next_timestamp VideoStreamTrack method for generating accurate timestamps.
      • Implemented reset_connections callable to reset all peer connections and recreate Video-Server timestamps. (Implemented by @kpetrykin)
      • Added close_connection endpoint in JavaScript to inform server page refreshing.(Thanks to @kpetrykin)
      • Added exclusive reset connection node /close_connection in routes.
      • Added reset() method to Video-Server class for manually resetting timestamp clock.
      • Added reset_enabled flag to keep check on reloads.
      • Fixed premature webpage auto-reloading.
      • Added additional related imports.
    • Fixed web-page reloading bug after stream ended:
      • Disable webpage reload behavior handling for Live broadcasting.
      • Disable reload CI test on Windows machines due to random failures.
      • Improved handling of failed ICE connection.
    • Fixed Assertion error bug:
      • Source must raise MediaStreamError when stream ends instead of returning None-type.
  • WebGear
    • Removed format specific OpenCV decoding and encoding support for WebGear.
  • Helper:
    • Regex bugs fixed:
      • New improved regex for discovering supported encoders in get_supported_vencoders.
      • Re-implemented check for extracting only valid output protocols in is_valid_url.
      • Minor tweaks for better regex compatibility.
    • Bugfix related to OpenCV import:
      • Bug fixed for OpenCV import comparison test failing with Legacy versions and throwing ImportError.
      • Replaced packaging.parse_version with more robust distutils.version.
    • Fixed bug with create_blank_frame that throws error with gray frames:
      • Implemented automatic output channel correction inside create_blank_frame function.
      • Extended automatic output channel correction support to asyncio package.
    • Implemented RSTP protocol validation as demuxer, since it's not a protocol but a demuxer.
    • Removed redundant logger_handler, mkdir_safe, retrieve_best_interpolation, capPropId helper functions from asyncio package. Relatively imported helper functions from non-asyncio package.
    • Removed unused aiohttp dependency.
    • Removed asctime formatting from logging.
  • StreamGear:
    • Fixed Multi-Bitrate HLS VOD streams:
      • Re-implemented complete workflow for Multi-Bitrate HLS VOD streams.
      • Extended support to both Single-Source and Real-time Frames Modes.
    • Fixed bugs with audio-video mapping.
    • Fixed master playlist not generating in output.
    • Fixed improper -seg_duration value resulting in broken pipeline.
    • Fixed expected aspect ratio not calculated correctly for additional streams.
    • Fixed stream not terminating when provided input from external audio device.
    • Fixed bugs related to external audio not mapped correctly in HLS format.
    • Fixed OPUS audio fragments not supported with MP4 video in HLS.
    • Fixed unsupported high audio bit-rate bug.
  • Setup.py:
    • Fixed latest_version returning incorrect version for some PYPI packages.
    • Removed latest_version variable support from simplejpeg.
    • Fixed streamlink only supporting requests==2.25.1 on Windows.
    • Removed all redundant dependencies like colorama, aiofiles, aiohttp.
    • Fixed typos in dependencies.
  • Setup.cfg:
    • Replaced dashes with underscores to remove warnings.
  • CI:
    • Replaced buggy starlette.TestClient with async-asgi-testclient in WebGear_RTC
    • Removed run() method and replaced with pure asyncio implementation.
    • Added new async-asgi-testclient CI dependency.
    • Fixed fake_picamera class logger calling vidgear imports prematurely before importing picamera class in tests.
      • Implemented new fake_picamera class logger inherently with logging module.
      • Moved sys.module logic for faking to init.py.
      • Added __init__.py to ignore in Codecov.
    • Fixed event loop closing prematurely while reloading:
      • Internally disabled suspending event loop while reloading.
    • Event Policy Loop patcher added for WebGear_RTC tests.
    • Fixed return_assets_path path bug.
    • Fixed typo in TimeoutError exception import.
    • Fixed eventloop is already closed bug.
    • Fixed eventloop bugs in Helper CI tests.
    • Fixed several minor bugs related to new CI tests.
    • Fixed bug in PiGear tests.
  • Docs:
    • Fixed 404 page does not work outside the site root with mkdocs.
    • Fixed markdown files comments not stripped when converted to HTML.
    • Fixed missing heading in VideoGear.
    • Typos in links and code comments fixed.
    • Several minor tweaks and typos fixed.
    • Fixed improper URLs/Hyperlinks and related typos.
    • Fixed typos in usage examples.
    • Fixed redundant properties in CSS.
    • Fixed bugs in mkdocs.yml.
    • Fixed docs contexts and typos.
    • Fixed stream.release() missing in docs.
    • Fixed several typos in code comments.
    • Removed dead code from docs.
  • Refactored Code and reduced redundancy.
  • Fixed shutdown in main.py.
  • Fixed logging comments.
Pull Requests
New Contributors

 

 

v0.2.1 (2021-04-25)

New Features
  • WebGear_RTC:
    • A new API that is similar to WeGear API in all aspects but utilizes WebRTC standard instead of Motion JPEG for streaming.
    • Now it is possible to share data and perform teleconferencing peer-to-peer, without requiring that the user install plugins or any other third-party software.
    • Added a flexible backend for aiortc - a python library for Web Real-Time Communication (WebRTC).
    • Integrated all functionality and parameters of WebGear into WebGear_RTC API.
    • Implemented JSON Response with a WebRTC Peer Connection of Video Server.
    • Added a internal RTC_VideoServer server on WebGear_RTC, a inherit-class to aiortc's VideoStreamTrack API.
    • New Standalone UI Default theme v0.1.1 for WebGear_RTC from scratch without using 3rd-party assets. (by @abhiTronix)
    • New custom.js and custom.css for custom responsive behavior.
    • Added WebRTC support to custom.js and ensured compatibility with WebGear_RTC.
    • Added example support for ICE framework and STUN protocol like WebRTC features to custom.js.
    • Added resize() function to custom.js to automatically adjust video & img tags for smaller screens.
    • Added WebGear_RTC support in main.py for easy access through terminal using --mode flag.
    • Integrated all WebGear_RTC enhancements to WebGear Themes.
    • Added CI test for WebGear_RTC.
    • Added complete docs for WebGear_RTC API.
    • Added bare-minimum as well as advanced examples usage code.
    • Added new theme images.
    • Added Reference and FAQs.
  • CamGear API:
    • New Improved Pure-Python Multiple-Threaded Implementation:
      • Optimized Threaded-Queue-Mode Performance. (PR by @bml1g12)
      • Replaced regular queue.full checks followed by sleep with implicit sleep with blocking queue.put.
      • Replaced regular queue.empty checks followed by queue.
      • Replaced nowait_get with a blocking queue.get natural empty check.
      • Up-to 2x performance boost than previous implementations.
    • New THREAD_TIMEOUT attribute to prevent deadlocks:
      • Added support for THREAD_TIMEOUT attribute to its options parameter.
      • Updated CI Tests and docs.
  • WriteGear API:
    • New more robust handling of default video-encoder in compression mode:
      • Implemented auto-switching of default video-encoder automatically based on availability.
      • API now selects Default encoder based on priority: "libx264" > "libx265" > "libxvid" > "mpeg4".
      • Added get_supported_vencoders Helper method to enumerate Supported Video Encoders.
      • Added common handler for -c:v and -vcodec flags.
  • NetGear API:
    • New Turbo-JPEG compression with simplejpeg
      • Implemented JPEG compression algorithm for 4-5% performance boost at cost of minor loss in quality.
      • Utilized encode_jpeg and decode_jpeg methods to implement turbo-JPEG transcoding with simplejpeg.
      • Added options to control JPEG frames quality, enable fastest dct, fast upsampling to boost performance.
      • Added new jpeg_compression, jpeg_compression_quality, jpeg_compression_fastdct, jpeg_compression_fastupsample attributes.
      • Enabled fast dct by default with JPEG frames at 90%.
      • Added Docs for JPEG Frame Compression.
  • WebGear API:
    • New modular and flexible configuration for Custom Sources:
      • Implemented more convenient approach for handling custom source configuration.
      • Added new config global variable for this new behavior.
      • Now None-type source parameter value is allowed for defining own custom sources.
      • Added new Example case and Updates Docs for this feature.
      • Added new CI Tests.
    • New Browser UI Updates:
      • New Standalone UI Default theme v0.1.0 for browser (by @abhiTronix)
      • Completely rewritten theme from scratch with only local resources.
      • New custom.js and custom.css for custom responsive behavior.
      • New sample glow effect with css.
      • New sample click to full-screen behavior with javascript.
      • Removed all third-party theme dependencies.
      • Update links to new github server abhiTronix/vidgear-vitals
      • Updated docs with new theme's screenshots.
    • Added enable_infinite_frames attribute for enabling infinite frames.
    • Added New modular and flexible configuration for Custom Sources.
    • Bumped WebGear Theme Version to v0.1.1.
    • Updated Docs and CI tests.
  • ScreenGear API:
    • Implemented Improved Pure-Python Multiple-Threaded like CamGear.
    • Added support for THREAD_TIMEOUT attribute to its options parameter.
  • StreamGear API:
    • Enabled pseudo live-streaming flag re for live content.
  • Docs:
    • Added new native docs versioning to mkdocs-material.
    • Added new examples and few visual tweaks.
    • Updated Stylesheet for versioning.
    • Added new DASH video chunks at https://github.com/abhiTronix/vidgear-docs-additionals for StreamGear and Stabilizer streams.
    • Added open-sourced "Tears of Steel" * project Mango Teaser video chunks.
    • Added open-sourced "Subspace Video Stabilization" http://web.cecs.pdx.edu/~fliu/project/subspace_stabilization/ video chunks.
    • Added support for DASH Video Thumbnail preview in Clappr within custom.js.
    • Added responsive clappr DASH player with bootstrap's embed-responsive.
    • Added new permalink icon and slugify to toc.
    • Added "back-to-top" button for easy navigation.
  • Helper:
    • New GitHub Mirror with latest Auto-built FFmpeg Static Binaries:
      • Replaced new GitHub Mirror abhiTronix/FFmpeg-Builds in helper.py
      • New CI maintained Auto-built FFmpeg Static Binaries.
      • Removed all 3rd-party and old links for better compatibility and Open-Source reliability.
      • Updated Related CI tests.
    • Added auto-font-scaling for create_blank_frame method.
    • Added c_name parameter to generate_webdata and download_webdata to specify class.
    • A more robust Implementation of Downloading Artifacts:
      • Added a custom HTTP TimeoutHTTPAdapter Adapter with a default timeout for all HTTP calls based on this GitHub comment.
      • Implemented http client and the send() method to ensure that the default timeout is used if a timeout argument isn't provided.
      • Implemented Requests sessionwith block to exit properly even if there are unhandled exceptions.
      • Add a retry strategy to custom TimeoutHTTPAdapter Adapter with max 3 retries and sleep(backoff_factor=1) between failed requests.
    • Added create_blank_frame method to create bland frames with suitable text.
  • [CI] Continuous Integration:
    • Added new fake frame generated for fake picamera class with numpy.
    • Added new create_bug parameter to fake picamera class for emulating various artificial bugs.
    • Added float/int instance check on time_delay for camgear and pigear.
    • Added EXIT_CODE to new timeout implementation for pytests to upload codecov report when no timeout.
    • Added auxiliary classes to fake picamera for facilitating the emulation.
    • Added new CI tests for PiGear Class for testing on all platforms.
    • Added shutdown() function to gracefully terminate WebGear_RTC API.
    • Added new coreutils brew dependency.
    • Added handler for variable check on exit and codecov upload.
    • Added is_running flag to WebGear_RTC to exit safely.
  • Setup:
    • New automated latest version retriever for packages:
      • Implemented new latest_version method to automatically retrieve latest version for packages.
      • Added Some Dependencies.
    • Added simplejpeg package for all platforms.
Updates/Improvements
  • Added exception for RunTimeErrors in NetGear CI tests.
  • WriteGear: Critical file write access checking method:
    • Added new check_WriteAccess Helper method.
    • Implemented a new robust algorithm to check if given directory has write-access.
    • Removed old behavior which gives irregular results.
  • Helper: Maintenance Updates
    • Added workaround for Python bug.
    • Added safe_mkdir to check_WriteAccess to automatically create non-existential parent folder in path.
    • Extended check_WriteAccess Patch to StreamGear.
    • Simplified check_WriteAccess to handle Windows envs easily.
    • Updated FFmpeg Static Download URL for WriteGear.
    • Implemented fallback option for auto-calculating bitrate from extracted audio sample-rate in validate_audio method.
  • Docs: General UI Updates
    • Updated Meta tags for og site and twitter cards.
    • Replaced Custom dark theme toggle with mkdocs-material's official Color palette toggle
    • Added example for external audio input and creating segmented MP4 video in WriteGear FAQ.
    • Added example for YouTube streaming with WriteGear.
    • Removed custom dark-material.js and header.html files from theme.
    • Added blogpost link for detailed information on Stabilizer Working.
    • Updated mkdocs.yml and custom.css configuration.
    • Remove old hack to resize clappr DASH player with css.
    • Updated Admonitions.
    • Improved docs contexts.
    • Updated CSS for version-selector-button.
    • Adjusted files to match new themes.
    • Updated welcome-bot message for typos.
    • Removed redundant FAQs from NetGear Docs.
    • Updated Assets Images.
    • Updated spacing.
  • CI:
    • Removed unused github.ref from yaml.
    • Updated OpenCV Bash Script for Linux envs.
    • Added timeout-minutes flag to github-actions workflow.
    • Added timeout flag to pytest.
    • Replaced Threaded Gears with OpenCV VideoCapture API.
    • Moved files and Removed redundant code.
    • Replaced grayscale frames with color frames for WebGear tests.
    • Updated pytest timeout value to 15mins.
    • Removed aiortc automated install on Windows platform within setup.py.
    • Added new timeout logic to continue to run on external timeout for GitHub Actions Workflows.
    • Removed unreliable old timeout solution from WebGear_RTC.
    • Removed timeout_decorator and asyncio_timeout dependencies for CI.
    • Removed WebGear_RTC API exception from codecov.
    • Implemented new fake picamera class to CI utils for emulating RPi Camera-Module Real-time capabilities.
    • Implemented new get_RTCPeer_payload method to receive WebGear_RTC peer payload.
    • Removed PiGear from Codecov exceptions.
    • Disable Frame Compression in few NetGear tests failing on frame matching.
    • Updated NetGear CI tests to support new attributes
    • Removed warnings and updated yaml
      • Added pytest.ini to address multiple warnings.
      • Updated azure workflow condition syntax.
    • Update mike settings for mkdocs versioning.
    • Updated codecov configurations.
    • Minor logging and docs updates.
    • Implemented pytest timeout for azure pipelines for macOS envs.
    • Added aiortc as external dependency in appveyor.yml.
    • Re-implemented WebGear_RTC improper offer-answer handshake in CI tests.
    • WebGear_RTC CI Updated with VideoTransformTrack to test stream play.
    • Implemented fake AttributeError for fake picamera class.
    • Updated PiGear CI tests to increment codecov.
    • Update Tests docs and other minor tweaks to increase overall coverage.
    • Enabled debugging and disabled exit 1 on error in azure pipeline.
    • Removed redundant benchmark tests.
  • Helper: Added missing RSTP URL scheme to is_valid_url method.
  • NetGear_Async: Added fix for uvloop only supporting python>=3.7 legacies.
  • Extended WebGear's Video-Handler scope to https.
  • CI: Remove all redundant 32-bit Tests from Appveyor:
  • Setup: Removed latest_version behavior from some packages.
  • NetGear_Async: Revised logic for handling uvloop for all platforms and legacies.
  • Setup: Updated logic to install uvloop-"v0.14.0" for python-3.6 legacies.
  • Removed any redundant code from webgear.
  • StreamGear:
    • Replaced Ordinary dict with Ordered Dict to use move_to_end method.
    • Moved external audio input to output parameters dict.
    • Added additional imports.
    • Updated docs to reflect changes.
  • Numerous Updates to Readme and mkdocs.yml.
  • Updated font to FONT_HERSHEY_SCRIPT_COMPLEX and enabled logging in create_blank_frame.
  • Separated channels for downloading and storing theme files for WebGear and WebGear_RTC APIs.
  • Removed logging condition to always inform user in a event of FFmpeg binary download failure.
  • WebGear_RTC:
    • Improved auto internal termination.
    • More Performance updates through setCodecPreferences.
    • Moved default Video RTC video launcher to __offer.
  • NetGear_Async: Added timeout to client in CI tests.
  • Reimplemented and updated changelog.md.
  • Updated code comments.
  • Setup: Updated keywords and classifiers.
  • Bumped codecov.
Breaking Updates/Changes
  • WriteGear will automatically switch video encoder to default if specified encoder not found.
  • WriteGear will throw RuntimeError if no suitable default encoder found!
  • Removed format specific OpenCV decoding and encoding support for NetGear.
  • Dropped support for compression_format, compression_param attributes from NetGear.
  • Non-existent parent folder in output_filename value will no longer be considered as invalid in StreamGear and WriteGear APIs.
  • None-type source parameter value is allowed for WebGear and NetGear_Async for defining custom sources.
Bug-fixes
  • CamGear: Fixed F821 undefined name 'queue' bug.
  • NetGear_Async: Fixed source parameter missing None as default value.
  • Fixed uvloops only supporting python>=3.7 in NetGear_Async.
  • Helper:
  • Docs:
    • Invalid site_url bug patched in mkdocs.yml
    • Remove redundant mike theme support and its files.
    • Fixed video not centered when DASH video in fullscreen mode with clappr.
    • Fixed Incompatible new mkdocs-docs theme.
    • Fixed missing hyperlinks.
  • CI:
    • Fixed NetGear Address bug
    • Fixed bugs related to termination in WebGear_RTC.
    • Fixed random CI test failures and code cleanup.
    • Fixed string formating bug in Helper.py.
    • Fixed F821 undefined name bugs in WebGear_RTC tests.
    • NetGear_Async Tests fixes.
    • Fixed F821 undefined name bugs.
    • Fixed typo bugs in main.py.
    • Fixed Relative import bug in PiGear.
    • Fixed regex bug in warning filter.
    • Fixed WebGear_RTC frozen threads on exit.
    • Fixed bugs in codecov bash uploader setting for azure pipelines.
    • Fixed False-positive picamera import due to improper sys.module settings.
    • Fixed Frozen Threads on exit in WebGear_RTC API.
    • Fixed deploy error in VidGear Docs Deployer workflow
    • Fixed low timeout bug.
    • Fixed bugs in PiGear tests.
    • Patched F821 undefined name bug.
  • StreamGear:
    • Fixed StreamGear throwing Picture size 0x0 is invalid bug with external audio.
    • Fixed default input framerate value getting discarded in Real-time Frame Mode.
    • Fixed internal list-formatting bug.
  • Fixed E999 SyntaxError bug in main.py.
  • Fixed Typo in bash script.
  • Fixed WebGear freeze on reloading bug.
  • Fixed anomalies in install_opencv bash script.
  • Helper: Bug Fixed in download_ffmpeg_binaries method.
  • Helper: Fixed OSError bug in check_WriteAccess method.
  • Helper: Fixed Input Audio stream bitrate test failing to detect audio-bitrate in certain videos with validate_audio method.
  • Fixed bugs in requests module's function arguments.
  • Fixed None-type stream bug in WebGear.
  • Fixed random crashes in WebGear.
  • Fixed numerous CI test bugs.
  • Fixed several typos.
Pull Requests
New Contributors

 

 

v0.2.0 (2021-01-01)

New Features
  • CamGear API:
    • Support for various Live-Video-Streaming services:
      • Added seamless support for live video streaming sites like Twitch, LiveStream, Dailymotion etc.
      • Implemented flexible framework around streamlink python library with easy control over parameters and quality.
      • Stream Mode can now automatically detects whether source belong to YouTube or elsewhere, and handles it with appropriate API.
    • Re-implemented YouTube URLs Handler:
      • Re-implemented CamGear's YouTube URLs Handler completely from scratch.
      • New Robust Logic to flexibly handing video and video-audio streams.
      • Intelligent stream selector for selecting best possible stream compatible with OpenCV.
      • Added support for selecting stream qualities and parameters.
      • Implemented new get_supported_quality helper method for handling specified qualities
      • Fixed Live-Stream URLs not supported by OpenCV's Videocapture and its FFmpeg.
    • Added additional STREAM_QUALITY and STREAM_PARAMS attributes.
  • ScreenGear API:
    • Multiple Backends Support:
      • Added new multiple backend support with new pyscreenshot python library.
      • Made pyscreenshot the default API for ScreenGear, replaces mss.
      • Added new backend parameter for this feature while retaining previous behavior.
      • Added native automated RGB to BGR conversion for default PIL backend.
      • Kept support for old mss for old compatibility and multi-screen support.
      • Added native dimensional support for multi-screen.
      • Added support all input from all multiple screens.
      • Updated ScreenGear Docs.
      • Updated ScreenGear CI tests.
  • StreamGear API:
    • Changed default behaviour to support complete video transcoding.
    • Added -livestream attribute to support live-streaming.
    • Added additional parameters for -livestream attribute functionality.
    • Updated StreamGear Tests.
    • Updated StreamGear docs.
  • Stabilizer Class:
    • New Robust Error Handling with Blank Frames:
      • Elegantly handles all crashes due to Empty/Blank/Dark frames.
      • Stabilizer throws Warning with this new behavior instead of crashing.
      • Updated CI test for this feature.
  • Docs:
    • Automated Docs Versioning:
      • Implemented Docs versioning through mike API.
      • Separate new workflow steps to handle different versions.
      • Updated docs deploy worflow to support release and dev builds.
      • Added automatic version extraction from github events.
      • Added version-select.js and version-select.css files.
    • Toggleable Dark-White Docs Support:
      • Toggle-button to easily switch dark, white and preferred theme.
      • New Updated Assets for dark backgrounds
      • New css, js files/content to implement this behavior.
      • New material icons for button.
      • Updated scheme to slate in mkdocs.yml.
    • New Theme and assets:
      • New purple theme with dark-purple accent color.
      • New images assets with updated transparent background.
      • Support for both dark and white theme.
      • Increased rebufferingGoal for dash videos.
      • New updated custom 404 page for docs.
    • Issue and PR automated-bots changes
      • New need_info.yml YAML Workflow.
      • New needs-more-info.yml Request-Info template.
      • Replaced Request-Info templates.
      • Improved PR and Issue welcome formatting.
    • Added custom HTML pages.
    • Added show_root_heading flag to disable headings in References.
    • Added new inserAfter function to version-select.js.
    • Adjusted hue for dark-theme for better contrast.
    • New usage examples and FAQs.
    • Added gitmoji for commits.
  • Continuous Integration:
    • Maintenance Updates:
      • Added support for new VIDGEAR_LOGFILE environment variable in Travis CI.
      • Added missing CI tests.
      • Added logging for helper functions.
    • Azure-Pipeline workflow for MacOS envs
      • Added Azure-Pipeline Workflow for testing MacOS environment.
      • Added codecov support.
    • GitHub Actions workflow for Linux envs
      • Added GitHub Action work-flow for testing Linux environment.
    • New YAML to implement GitHub Action workflow for python 3.6, 3.7, 3,8 & 3.9 matrices.
    • Added Upload coverage to Codecov GitHub Action workflow.
    • New codecov-bash uploader for Azure Pipelines.
  • Logging:
    • Added file support
      • Added VIDGEAR_LOGFILE environment variable to manually add file/dir path.
      • Reworked logger_handler() Helper methods (in asyncio too).
      • Added new formatter and Filehandler for handling logger files.
    • Added restore_levelnames auxiliary method for restoring logging levelnames.
  • Added auto version extraction from package version.py in setup.py.
Updates/Improvements
  • Added missing Lazy-pirate auto-reconnection support for Multi-Servers and Multi-Clients Mode in NetGear API.
  • Added new FFmpeg test path to Bash-Script and updated README broken links.
  • Asset Cleanup:
    • Removed all third-party javascripts from projects.
    • Linked all third-party javascript directly.
    • Cleaned up necessary code from CSS and JS files.
    • Removed any copyrighted material or links.
  • Rewritten Docs from scratch:
    • Improved complete docs formatting.
    • Simplified language for easier understanding.
    • Fixed mkdocstrings showing root headings.
    • Included all APIs methods to mkdocstrings docs.
    • Removed unnecessary information from docs.
    • Corrected Spelling and typos.
    • Fixed context and grammar.
    • Removed motivation.md.
    • Renamed many terms.
    • Fixed hyper-links.
    • Reformatted missing or improper information.
    • Fixed context and spellings in Docs files.
    • Simplified language for easy understanding.
    • Updated image sizes for better visibility.
  • Bash Script: Updated to Latest OpenCV Binaries version and related changes
  • Docs: Moved version-selector to header and changed default to alias.
  • Docs: Updated deploy_docs.yml for releasing dev, stable, and release versions.
  • Re-implemented overridden material theme.
  • Updated docs with all new additions and examples.
  • CamGear: CI Stream Mode test updated.
  • Updated ReadMe.md badges.
  • Updated CI tests.
  • Updated setup.py with new features.
  • Updated contributing.md and ReadMe.md.
  • Updated OpenCV version to 4.5.1-dev in bash scripts
  • Updated changelog.md.
  • Moved WebGear API to Streaming Gears.
  • Bumped Codecov.
  • UI changes to version-select.js
  • Docs: Retitle the versions and mkdocs.yml formatting updated.
  • Docs: Version Selector UI reworked and other minor changes.
Breaking Updates/Changes
  • y_tube parameter renamed as stream_mode in CamGear API!
  • Removed Travis support and travis.yml deleted.
Bug-fixes
  • Fixed StreamGear API Limited Segments Bug
  • Fixed Missing links in docs and bump up version.
  • CI: Fixed Appveyor need newer VM image to support Python 3.9.x matrix.
  • ScreenGear BugFix: Fixed Error Handling and updated CI Tests.
  • Fixed improper mkdocs.yml variables.
  • Fixed GStreamer plugin support in bash scripts.
  • Fixed typos in YAMLs and docs.
  • Docs: Fixed Docs Deployer YAML bug for CI envs.
  • Fixed wrong import in YAML.
  • Fixed visible hyperlink on hover in dark-toggle button.
  • Docs: Deployer YAML bug fixed.
  • Docs YAML: issue jimporter/mike#33 patched and fixed fetch-depth=0.
  • Docs: version-select.js bug fixed.
  • Docs: UI Bugs Fixed.
  • CI: Codecov bugfixes.
  • Azure-Pipelines Codecov BugFixes.
  • Fixed version.json not detecting properly in version-select.js.
  • Fixed images not centered inside <figure> tag.
  • Fixed Asset Colors.
  • Fixed failing CI tests.
  • Fixed Several logging bugs.
Pull Requests

 

 

v0.1.9 (2020-08-31)

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 calculate 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
  • 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 and CI 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

 

 

v0.1.8 (2020-06-12)

New Features
  • NetGear API:
    • Multiple Clients support:
      • 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:
      • 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 - [x] 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

 

 

v0.1.7 (2020-04-29)

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 Enhancements:
    • Added asyncio package to 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/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.
Bug-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
New Contributors

 

 

v0.1.6 (2020-01-01)

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 two most powerful Stonehouse & Ironhouse ZMQ security mechanisms.
      • Added smart auth-certificates/key generation and validation features.
    • Implemented Robust Multi-Servers support for NetGear API:
      • Enables Multiple Servers 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 Bidirectional 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 attribute 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.
  • CI & Tests updates:
    • Replaced python 3.5 matrices with latest python 3.8 matrices in Linux environment.
    • Added full support for Codecov in all CI 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 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 screen casting 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 testdata.
  • 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 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 CI Tests with support for macOS environment.
  • Reformatted & implemented necessary MacOS related changes and dependencies in travis.yml.
Breaking Updates/Changes
  • Python 2.7 legacy support dropped completely.
  • Source-code Relicensed to Apache 2.0 License.
  • Python 3+ are only supported legacies for installing v0.1.6 and above.
  • Python 2.7 and 3.4 legacies support dropped from CI tests.
Bug-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 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
New Contributors

 

 

v0.1.5 (2019-07-24)

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 API's standalone.
  • Added Option to use VideoGear API as internal wrapper around Stabilizer Class.
  • Added new parameter stabilize to API, to enable or disable Video Stabilization.
  • Added support for **option dict attributes to update VidGear's video stabilizer parameters directly.
  • Added brand new 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 CI 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/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 - [x] downloads opensourced test datasets and static FFmpeg binaries for debugging.
  • Changed script folder location to bash/script.
  • Python 3.4 removed from Travis CI tests.
Bug-fixes
  • Temporarily fixed Travis CI bug: Replaced opencv-contrib-python with OpenCV built from scratch as dependency.
  • Fixed CI Timeout Bug: Disable Threaded Queue Mode for CI 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 CI Bug
  • Fixed new Twitter Intent
  • Fixed bug in bash script that not working properly due to changes at server end.
Pull Requests

 

 

v0.1.4 (2019-05-11)

New Features
  • Added new WriteGear API: for enabling lossless video encoding and compression(built around FFmpeg and OpenCV Video Writer)
  • Added YouTube Mode for direct Video Pipelining from YouTube 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 - [x] changes the backend of CamGear's API
  • Added automatic required prerequisites installation ability, when installation from source.
  • Added Travis CI Complete Integration for Linux-based Testing for VidGear.
  • Added and configured travis.yml
  • Added Appveyor CI 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 license to code docs.
  • Added Say Thank you! badge to Readme.md.
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/Changes
  • Removed -height and -width parameter from CamGear API.
  • Replaced dependency opencv-python with opencv-contrib-python completely
Bug-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

 

 

v0.1.3 (2019-04-07)

Bug-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

 

 

v0.1.2 (2019-03-27)

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.
Bug-fixes
  • Improved Error Handling in CamGear & PiGear API.
  • Fixed minor typos in docs.
Pull Requests

 

 

v0.1.1 (2019-03-24)

New Features
  • Release ViGear binaries on the Python Package Index (PyPI)
  • Added new and configured setup.py & setup.cfg
Bug-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

 

 

v0.1.0 (2019-03-17)

New Features
  • Initial Release
  • Converted my imutils PR into Python Project.
  • Renamed conventions and reformatted complete source-code from scratch.
  • Added support for both python 2.7 and 3 legacies
  • Added new multi-threaded CamGear, PiGear, and VideoGear APIs
  • Added multi-platform compatibility
  • Added robust & flexible control over the source in PiGear API.

Last update: July 5, 2022