There is a newer version of the record available.

Published April 25, 2021 | Version 0.2.1
Software Open

abhiTronix/vidgear: VidGear v0.2.1

  • 1. Researcher, Entrepreneur
  • 2. Christian Clauss
  • 3. @nuxeo

Description

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

Files

abhiTronix/vidgear-vidgear-0.2.1.zip

Files (26.4 MB)

Name Size Download all
md5:249a7160a1e9a633def9cf1e131f8061
26.4 MB Preview Download