Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release VidGear v0.2.0 #186

Merged
merged 82 commits into from
Jan 1, 2021
Merged

Release VidGear v0.2.0 #186

merged 82 commits into from
Jan 1, 2021

Conversation

abhiTronix
Copy link
Owner

@abhiTronix abhiTronix commented Dec 31, 2020

Description

VidGear is all set to release next Trailblazing Stable release with lots of new and exciting features. πŸ’₯πŸ”₯

What's new & what has changed? πŸŽ…

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 Running install-extras command changing contents of mkdocs.ymlΒ 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 tag.
  • Fixed Asset Colors.
  • Fixed failing CI tests.
  • Fixed Several logging bugs.

Requirements / Checklist

Related Issue

#133
#160
#161
#165
#168
#169
#172
#179
#180
#182

Context

VidGear's next biggest milestone release i.e. v0.2.0 just around the corner, that contain major new features (such as streaming), lots of bug fixes, and under the hood updates. Happy New Year πŸŽ‰

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

- `FORCE_YTUBE_VAMODE` boolean in `options` dictionary to force Video+Audio only streams in YouTube Mode.
- Bumped version to `0.2.0-dev`
- Changed default behaviour to support complete video transcoding.
- Added `-livestream` attribute to support livestreaming.
- Added addtional parameter for this functionality.
- Updated StreamGear Tests.
- Updated StreamGear docs and added missing values.
- Bumped version.
- Added missing Lazy-pirate auto-reconnection support for Multi-Servers and Multi-Clients Mode in NetGear API.
- Added `FORCE_YTUBE_VAMODE` boolean in `options` dictionary to force Video+Audio only streams in YouTube Mode for temporarily fixing issue with some live streams. (will be replaced later)
- Added new ffmpeg test path to Bash-Script and updated README broken links.
- Disabled youtube tests since `youtube-dl` no longer works.
- Fixed StreamGear API Limited Segments Bug
  - Changed default behaviour to support complete video transcoding.
  - Added `-livestream` attribute to support livestreaming.
  - Added additional parameters for this functionality.
  - Updated StreamGear Tests.
  - Updated StreamGear docs.
- Fixed Missing links in docs and bump up version.
- Added new multiple backend support with new `pyscreenshot` API.
- Made `pyscreenshot` the default API for ScreenGear, replaces `mss`.
- Added new `backend` parameter for this feature while retaining previous behaviour.
- Added native BGR to RGB automated converion 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.
- Code cleanup and bug fixes.
- Updated ScreenGear CI tests.
- Bumped DEV version.
- ScreenGear: minor fixes and code tweaks.
- Disabled override behaviour for docs material theme
- Moved assets folder and web menifest to docs.
- Updated All ScreenGear Docs.
- Added new multiple backend support with new [`pyscreenshot`](https://github.com/ponty/pyscreenshot) python library.
- Made `pyscreenshot` the default API for ScreenGear, replaces `mss`.
- Added new `backend` parameter for this feature while retaining previous behaviour.
- 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 All ScreenGear Docs.
- ScreenGear: minor fixes and code tweaks.
- Disabled override behaviour for docs material theme
- Moved assets folder and web manifest to docs.
- Code cleanup and bug fixes.
- Updated ScreenGear CI tests.
- Fixed assets links
- Bumped DEV version.
- Elegantly handles all crashes due to Empty/Blank/Dark frames.
- Stabilizer throws Warning with this new behavior instead of crashing.
- Updated CLI test for this feature.
- Elegantly handles all crashes due to Empty/Blank/Dark frames.
- Stabilizer throws Warning with this new behaviour instead of crashing.
- Updated CLI test for this feature.
- Other minor tweaks.
- CI Tests: Bumped Codecov
- ScreenGear BugFix: Fixed Error Handling and updated CI Tests
- 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.
- Toggleable Dark-White Docs Support:
  - Toggle-button to easily switch dark, white and preferred theme.
  - 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.
- Asset Cleanup:
  - Removed all third-party javascripts from projects.
  - Implemented all third-party javascript inside libs.
  - Cleaned up necessary code from CSS and JS files.
- Docs Reformatted:
  - New usage examples and FAQs.
  - Reformatted missing or improper information.
  - Fixed context and spellings in Docs files.
  - Simplified language for easy understanding.
  - Updated image sizes for better visibility.
- Updated Assets location:
  - Re-implemented overridden material theme.
  - Added custom HTML pages.
- Added `show_root_heading` flag to disable headings in References.
- Temporarily disabled `testing` branch push workflow.
- Adjusted hue for dark-theme for better contrast.
- Fixed improper `mkdocs.yml` variables.
- Bumped up version to `dev-3`.
- 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.
- Added `gitmoji` for commits.
- Fixed hyper-links.
- New `need_info.yml` YAML Workflow.
- New `needs-more-info.yml` Request-Info template.
- Replaced Request-Info templates.
- Improved PR and Issue welcome formatting.
- 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.
- 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.
- Asset Cleanup:
  - Removed all third-party javascripts from projects.
  - Implemented all third-party javascript inside libs.
  - 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.
  - Added `gitmoji` for commits.
  - Fixed hyper-links.
  - New usage examples and FAQs.
  - Reformatted missing or improper information.
  - Fixed context and spellings in Docs files.
  - Simplified language for easy understanding.
  - Updated image sizes for better visibility.
- 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.
- Updated Assets location:
  - Re-implemented overridden material theme.
  - Added custom HTML pages.
- Added `show_root_heading` flag to disable headings in References.
- Temporarily disabled `testing` branch push workflow.
- Adjusted hue for dark-theme for better contrast.
- Fixed improper `mkdocs.yml` variables.
- Bumped up version to `dev-3`.
- Fixed Asset Colors
- 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 auto version extraction from package `version.py` in setup.py.
⚠️ `y_tube` parameter renamed as `stream_mode`!
⚠️ Removed `FORCE_YTUBE_VAMODE` attribute.

- 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.
- Added additional `STREAM_QUALITY` and `STREAM_PARAMS` attributes for CamGear.
- Implemented new `get_supported_quality` helper method for handling specified qualities
- Fixed Live-Stream URLs not supported by OpenCV's Videocapture and its FFmpeg.
- Bumped `dev` version.
- Implemented automatic youtube livestream URLs handling with Stream Mode to workaround bug.
- Stream Mode now automatically enforces GStreamer backend(backend=cv2.CAP_GStreamer), if livestream.
- Added new `check_gstreamer_support` helper method to check if OpenCV is compiled with GStreamer support.
- Added `get_supported_resolution` & `dimensions_to_resolutions` to handle resolutions properly.
- ⚠️ CamGear will now throw `RuntimeError` if source is livestream but GStreamer backend unsupportted.
- ⚠️ Renamed `STREAM_QUALITY` attribute to `STREAM_RESOLUTION`.
- Fixed user-specified resolution selection for livestreams.
- Added CI tests for Stream Mode and its behaviour.
- Updated docs with all new additions and examples.
- Fixed Minor bugs.
- Added support for new `VIDGEAR_LOGFILE` env variable in Travis CI.
- Fixed failing CI tests.
- Added missing CI tests.
- Added logging for helper functions.
- Updated `contributing.md`
- Bumped codecov.
@abhiTronix abhiTronix added BUG πŸ› Vidgear api's error, flaw or fault ENHANCEMENT ⚑ New Feature/Addition/Improvement MAINTENANCE πŸ—οΈ Just sorting things out! WORK IN PROGRESS 🚧 currently been worked on. NEW RELEASE πŸ”₯ New Release. Yay! DOCS πŸ“œ Issue/PR is related to vidgear docs. labels Dec 31, 2020
@abhiTronix abhiTronix added this to the 0.2.0 milestone Dec 31, 2020
@abhiTronix abhiTronix self-assigned this Dec 31, 2020
@codecov
Copy link

codecov bot commented Dec 31, 2020

Codecov Report

Merging #186 (79eb9af) into master (562e0fd) will increase coverage by 0.16%.
The diff coverage is 94.02%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #186      +/-   ##
==========================================
+ Coverage   94.58%   94.74%   +0.16%     
==========================================
  Files          15       15              
  Lines        2198     2304     +106     
==========================================
+ Hits         2079     2183     +104     
- Misses        119      121       +2     
Impacted Files Coverage Ξ”
vidgear/gears/asyncio/netgear_async.py 92.30% <ΓΈ> (-1.29%) ⬇️
vidgear/gears/asyncio/webgear.py 98.29% <ΓΈ> (ΓΈ)
vidgear/gears/videogear.py 100.00% <ΓΈ> (ΓΈ)
vidgear/gears/writegear.py 93.26% <ΓΈ> (ΓΈ)
vidgear/gears/asyncio/helper.py 95.79% <57.14%> (+0.10%) ⬆️
vidgear/gears/streamgear.py 97.92% <87.50%> (-0.26%) ⬇️
vidgear/gears/helper.py 95.26% <88.57%> (-1.11%) ⬇️
vidgear/gears/stabilizer.py 98.56% <91.66%> (+0.81%) ⬆️
vidgear/gears/camgear.py 97.59% <95.55%> (+1.21%) ⬆️
vidgear/gears/screengear.py 91.40% <97.72%> (+3.11%) ⬆️
... and 7 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Ξ” = absolute <relative> (impact), ΓΈ = not affected, ? = missing data
Powered by Codecov. Last update 562e0fd...79eb9af. Read the comment docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment