Releases: abhiTronix/vidgear
VidGear v0.2.0
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
andSTREAM_PARAMS
attributes.
- Support for various Live-Video-Streaming services:
- ScreenGear API:
- Multiple Backends Support:
- Added new multiple backend support with new
pyscreenshot
python library. - Made
pyscreenshot
the default API for ScreenGear, replacesmss
. - 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.
- Added new multiple backend support with new
- Multiple Backends Support:
- 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.
- New Robust Error Handling with Blank Frames:
- 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
anddev
builds. - Added automatic version extraction from github events.
- Added
version-select.js
andversion-select.css
files.
- Implemented Docs versioning through
- 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
inmkdocs.yml
.
- New Theme and assets:
- New
purple
theme withdark-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.
- New
- 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.
- New
- 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.
- Automated Docs Versioning:
- Continuous Integration:
- Maintenance Updates:
- Added support for new
VIDGEAR_LOGFILE
environment variable in Travis CI. - Added missing CI tests.
- Added logging for helper functions.
- Added support for new
- 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.
- Maintenance Updates:
- 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
- Added
restore_levelnames
auxiliary method for restoring logging levelnames.
- Added file support
- 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
andReadMe.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 asstream_mode
in CamGear API! -
⚠️ Removed Travis support andtravis.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 inversion-select.js
. - Fixed images not centered inside tag.
- Fixed Asset Colors.
- Fixed failing CI tests.
- Fixed Several logging bugs.
Pull Requests
VidGear v0.1.9
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 andtranscode_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 directoryformats
: 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.
- Developed several new parameters such as:
- 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.
- Added new
- WriteGear API:
- Added support for adding duplicate FFmpeg parameters to
output_params
:- Added new
-clones
attribute inoutput_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
andzmq.PUB/zmq.SUB
patterns in this mode. - Added new CI tests debugging this behavior.
- Updated docs accordingly.
- Added new
- 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.
- Added support for adding duplicate FFmpeg parameters to
- 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.
- Checks if any Incorrect/Invalid value is assigned on
- Added option to completely disable Native Frame-Compression:
- CamGear API:
- Added new and robust regex for identifying YouTube URLs.
- Moved
youtube_url_validator
to Helper.
- New
helper.py
methods:- Added
validate_video
function to validate video_source. - Added
extract_time
Extract time from give string value. - Added
get_video_bitrate
to caliculate video birate from resolution, framerate, bits-per-pixels values. - Added
delete_safe
to safely delete files of given extension. - Added
validate_audio
to validate audio source. - Added new Helper CI tests.
- Added new
check_valid_mpd
function to test MPD files validity. - Added
mpegdash
library to CI requirements.
- Added new
- Added
- 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
andWelcome
GitHub Apps to automate PR and issue workflow- Added new
config.yml
for customizations. - Added various suitable configurations.
- Added new
- 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 toformat
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'soutput_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 i...
VidGear v0.1.8
New Features
-
Multiple Clients support in NetGear API:
- Implemented support for handling any number of Clients simultaneously with a single Server in this mode.
- Added new
multiclient_mode
attribute for enabling this mode easily. - Built support for
zmq.REQ/zmq.REP
andzmq.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
andPAIR
messaging patterns internally. - Added new
max_retries
andrequest_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.
- Implemented a algorithm where NetGear rather than doing a blocking receive, will now:
-
Performance Updates for NetGear API:
- Added default Frame Compression support for Bidirectional frame transmission in Bidirectional mode.
- Added support for
Reducer()
function in Helper.py to aid reducing frame-size on-the-go for more performance. - Added small delay in
recv()
function at client's end to reduce system load. - Reworked and Optimized NetGear termination, and also removed/changed redundant definitions and flags.
-
Docs Migration to Mkdocs:
- Implemented a beautiful, static documentation site based on MkDocs which will then be hosted on GitHub Pages.
- Crafted base mkdocs with third-party elegant & simplistic
mkdocs-material
theme. - Implemented new
mkdocs.yml
for Mkdocs with relevant data. - Added new
docs
folder to handle markdown pages and its assets. - Added new Markdown pages(
.md
) to docs folder, which are carefully crafted documents - based on previous Wiki's docs, and some completely new additions. - Added navigation under tabs for easily accessing each document.
- New Assets:
- Added new assets like gifs, images, custom scripts, favicons, site.webmanifest etc. for bringing standard and quality to docs visual design.
- Designed brand new logo and banner for VidGear Documents.
- Deployed all assets under separate Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License.
- Added Required Plugins and Extensions:
- Added support for all pymarkdown-extensions.
- Added support for some important
admonition
,attr_list
,codehilite
,def_list
,footnotes
,meta
, andtoc
like Mkdocs extensions. - Enabled
search
,minify
andgit-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
.
- Added support for
- 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 suitableRuntimeError
. - 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
- Removed
filter
attribute fromoptions
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
VidGear v0.1.7
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
, andzmq.PUSH/zmq.PULL
. - Implemented initial support for
tcp
andipc
protocols. - Added new Coverage CI tests for NetGear_Async Network Gear.
- Added new Benchmark tests for benchmarking NetGear_Async against NetGear.
-
Asynchronous I/O Enhancements
- Added
asyncio
package to vidgear for handling asynchronous APIs. - Moved WebGear API(webgear.py) to
asyncio
and created separate asynciohelper.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.
- Added
-
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.
- Added new highly-precise Threaded FPS class for accurate benchmarking with
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 replacedwget
withcurl
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 newmkdir_safe
helper function for creating directories safely. - Updated ReadMe.md with updated diagrams, gifs and information.
- Improve, structured and Simplified the Contribution Guidelines.
- Bundled CI requirements in a single command.(Suggested by @cclauss)
- Replaced line endings CRLF with LF endings.
- Added dos2unix for Travis OSX envs.
- Bumped Codecov to maximum.
Breaking Updates / Improvements / Changes
⚠️ Dropped support for Python 3.5 and below legacies. (See issue #99)- Dropped and replaced Python 3.5 matrices with new Python 3.8 matrices in all CI environments.
- Implemented PEP-8 Styled Black formatting throughout the source-code.
- Limited protocols support to
tcp
andipc
only, in NetGear API.
Fixes:
- Fixed Major NetGear_Async bug where
__address
and__port
are not set in async mode.(PR by @otter-in-a-suit) - Fixed Major PiGear Color-space Conversion logic bug.
- Workaround for CAP_IMAGES: error in YouTube Mode.
- Replaced incorrect
terminate()
withjoin()
in PiGear. - Removed
uvloop
for windows as still NOT yet supported. - Refactored Asynchronous Package name
async
toasyncio
, 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
asyoutube_url_validator
. - Several minor wrong/duplicate variable definitions and various bugs fixed.
- Fixed, Improved & removed many Redundant CI tests for various APIs.
Pull requests(PR) involved:
VidGear 0.1.7-alpha0
VidGear v0.1.6
New Features:
-
NetGear API:
- Added powerful ZMQ Authentication & Data Encryption features for NetGear API:
- Added exclusive
secure_mode
param for enabling it. - Added support for the two most powerful
Stonehouse
&Ironhouse
ZMQ security mechanisms. - Added smart auth-certificates/key generation and validation features
- Added exclusive
- Implemented Robust Multi-Server support for NetGear API:
- Enables Multiple Server messaging support with a single client.
- Added exclusive
multiserver_mode
param for enabling it. - Added support for
REQ/REP
&PUB/SUB
patterns for this mode. - Added ability to send additional data of any datatype along with the frame in realtime in this mode.
- Introducing exclusive Bi-Directional Mode for bidirectional data transmission:
- Added new
return_data
parameter torecv()
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.
- Added new
- 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 initial support for
- 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.
- Added powerful ZMQ Authentication & Data Encryption features for NetGear API:
-
PiGear API:
- Added new threaded internal timing function for PiGear to handle any hardware failures/frozen threads.
- PiGear will not exit safely with
SystemError
if Picamera ribbon cable is pulled out to save resources. - Added support for new user-defined
HWFAILURE_TIMEOUT
options attributes to alter timeout.
-
VideoGear API:
- Added
framerate
global variable and removed redundant function. - Added
CROP_N_ZOOM
attribute in Videogear API for supporting Crop and Zoom stabilizer feature.
- Added
-
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.
- Added
- Updated docs.
- Added new Crop and Zoom feature.
-
CLI & Tests updates:
- Replaced python 3.5 matrices with the latest python 3.8 matrices in the Linux environment.
- Added full support for Codecov in all CLI environments.
- Updated OpenCV to v4.2.0-pre(master branch).
- Added various Netgear API tests.
- Added initial Screengear API test.
- More test RTSP feeds added with better error handling in the CamGear network test.
- Added tests for ZMQ authentication certificate generation.
- Added badge and Minor doc updates.
-
Added VidGear's official native support for macOS environments.
Updates/Improvements:
- Replace
print
logging commands with python's logging module completely. - Implemented encapsulation for class functions and variables on all gears.
- Updated support for screencasting from multiple/all monitors in ScreenGear API.
- Updated ScreenGear API to use Threaded Queue Mode by default, thereby removed redundant
THREADED_QUEUE_MODE
param. - Updated bash script path to download test dataset in
$TMPDIR
rather than$HOME
directory for downloading test data. - Implemented better error handling of colorspace in various videocapture APIs.
- Updated bash scripts, Moved FFmpeg static binaries to
github.com
. - Updated bash scripts, Added additional flag to support un-secure apt sources.
- CamGear API will now throw
RuntimeError
if the source provided is invalid. - Updated threaded Queue mode in CamGear API for more robust performance.
- Added new
camera_num
to support multiple Picameras. - Moved thread exceptions to the main thread and then re-raised.
- Added alternate GitHub mirror for FFmpeg static binaries auto-installation on windows oses.
- Added
colorlog
python module for presentable colored logging. - Replaced
traceback
withsys.exc_info
. - Overall APIs Code and Docs optimizations.
- Updated Code Readability and Wiki Docs.
- Updated ReadMe & Changelog with the latest changes.
- Updated Travis CLI Tests with support for the macOS environment.
- Reformatted & implemented necessary macOS related changes and dependencies in
travis.yml
.
Breaking Updates / Improvements / Changes
⚠️ Python 2.7 legacy support dropped completely.⚠️ Source-code Relicensed to Apache 2.0 License.- Python 3+ are only supported legacies for installing Vidgear v0.1.6 and above.
- Python 2.7 and 3.4 legacies support dropped from VidGear CLI tests.
Fixes
- Reimplemented
Pub/Sub
pattern for smoother performance on various networks. - Fixed Assertion error in CamGear API during colorspace manipulation.
- Fixed random freezing in
Secure Mode
and several related performance updates - Fixed
multiserver_mode
not working properly over some networks. - Fixed assigned Port address ignored bug (commit 073bca1).
- Fixed several wrong definition bugs from NetGear API(commit 8f7153c).
- Fixed unreliable dataset video URL(rehosted file on
github.com
). - Disabled
overwrite_cert
for client-end in NetGear API. - Disabled Universal Python wheel builds in
setup.cfg
file. - Removed duplicate code to import MSS(@BoboTiG) from ScreenGear API.
- Eliminated unused redundant code blocks from the library.
- Fixed Code indentation in
setup.py
and updated new release information. - Fixed code definitions & Typos.
- Fixed several bugs related to
secure_mode
&multiserver_mode
Modes. - Fixed various macOS environment bugs.
Pull requests(PR) involved:
VidGear v0.1.5
New Features:
- Added new ScreenGear API, supports Live ScreenCasting.
- Added new NetGear API, aids real-time frame transfer through messaging(ZmQ) over network.
- Added new new Stabilizer Class, for minimum latency Video Stabilization with OpenCV.
- Added Option to use VidGear API's standalone.
- Added Option to use VideoGear API as internal wrapper around Stabilizer Class.
- Added new parameter
stabilize
to VidGear API, to enable or disable Video Stabilization. - Added support for
**option
dict attributes to update VidGear's video stabilizer parameters directly. - Added brand new VidGear logo and functional block diagram (
.svg
) in readme.md - Added new pictures and GIFs for improving readme.md readability
- Added new
contributing.md
andchangelog.md
for reference. - Added
collections.deque
import in Threaded Queue Mode for performance consideration - Added new
install_opencv.sh
bash scripts for Travis cli, to handle OpenCV installation. - Added new Project Issue & PR Templates
- Added new Sponsor Button(
FUNDING.yml
)
Updates/Improvements:
- Updated New dependencies:
mss
,pyzmq
and rejected redundant ones. - Revamped and refreshed look for
readme.md
and added new badges. - Updated Releases Documentation completely.
- Updated CLI tests for new changes
- Updated Code Documentation.
- Updated bash scripts and removed redundant information
- Updated
Youtube video
URL in tests - Completely Reformatted and Updated Wiki Docs with new changes.
Breaking Updates / Improvements / Changes
- Implemented experimental Threaded Queue Mode(a.k.a Blocking Mode) for fast, synchronized, error-free multi-threading.
- Renamed bash script
pre-install.sh
toprepare_dataset.sh
- downloads opensourced test datasets and static FFmpeg binaries for debugging. - Changed
script
folder location tobash/script
. Python 3.4
removed from Travis CLI tests.
Fixes
- Temporarily fixed Travis CLI bug: Replaced
opencv-contrib-python
with OpenCV built from scratch as dependency. - Fixed CLI Timeout Bug: Disable Threaded Queue Mode for CLI Tests
- Fixes
sys.stderr.close()
throws ValueError bug: Replacedsys.close()
withDEVNULL.close()
- Fixed Youtube Live Stream bug that return
NonType
frames in CamGear API. - Fixed
NoneType
frames bug in PiGear class on initialization. - Fixed Wrong function definitions
- Removed
/xe2
unicode bug from Stabilizer class. - Fixed
**output_params
KeyError bug in WriteGear API - Fixed subprocess not closing properly on exit in WriteGear API.
- Fixed bugs in ScreenGear: Non-negative
monitor
values - Fixed missing import, typos, wrong variable definitions
- Removed redundant hack from
setup.py
- Fixed Minor YouTube playback Test CLI Bug
- Fixed new Twitter Intent
- Fixed bug in bash script that not working properly due to changes at server end.
Pull requests(PR) involved:
VidGear v0.1.4
New Features:
- Added WriteGear API: for enabling lossless video encoding and compression(built around FFmpeg and OpenCV Video Writer)
- Added YouTube direct Video Pipelining to OpenCV(YouTube Mode) in CamGear API
- Added new
y_tube
to access YouTube Mode in CamGear API. - Added flexible Output file Compression control capabilities in compression-mode(WriteGear).
- Added
-output_dimensions
special parameter to WriteGear API. - Added new
helper.py
to handle special helper functions. - Added feature to auto-download and configure FFmpeg Static binaries(if not found) on Windows platforms.
- Added
-input_framerate
special parameter to WriteGear class to change/control output constant framerate in compression mode(WriteGear). - Added new Direct Video colorspace Conversion capabilities in CamGear and PiGear API.
- Added new
framerate
class variable for CamGear API, to retrieve input framerate. - Added new parameter
backend
- changes the backend of CamGear's API - Added automatic required prerequisites installation ability, when installation from source.
- Added Travis CLI Complete Integration for Linux-based Testing for VidGear.
- Added and configured
travis.yml
- Added Appveyor CLI Complete Integration for Windows-based Testing in VidGear.
- Added and configured new
appveyor.yml
- Added new bash script
Pre-install.sh
to download opensourced test datasets and static FFmpeg binaries for debugging. - Added several new Tests(including Benchmarking Tests) for each API for testing with
pytest
. - Added
Say Thank you!
badge to readme.
Updates/Improvements:
- Removed redundant dependencies
- Updated
youtube-dl
as a dependency, as required bypafy
's backend. - Updated common VideoGear API with new parameter.
- Update robust algorithm to auto-detect FFmpeg executables and test them, if failed, auto fallback to OpenCV's VideoWriter API.
- Improved system previously installed OpenCV detection in setup.py.
- Updated setup.py with hack to remove bullets from pypi description.
- Updated Code Documentation
- Reformatted & Modernized readme.md with new badges.
- Reformatted and Updated Wiki Docs.
Breaking Updates / Improvements / Changes
- Bugs Patched: Removed unnecessary
-height
and-width
parameter from CamGear API. - Replaced dependency
opencv-python
withopencv-contrib-python
completely
Fixes
- Windows Cross-Platform fix: replaced dependency
os
withplatform
in setup.py. - Fixed Bug: Arises due to spaces in input
**options
/**output_param
dictionary keys. - Fixed several wrong/missing variable & function definitions.
- Fixed code uneven indentation.
- Fixed several typos in docs.
Pull requests(PR) involved:
VidGear v0.1.3
Fixes
- Patched Major PiGear Bug: Incorrect import of PiRGBArray function in PiGear Class
- Several fixes for backend
picamera
API handling during frame capture(PiGear) - Fixed missing frame variable initialization.
- Fixed minor typos
Pull requests(PR) Involved:
Tip 💡 Go through each PR to see what has changed and when!
VidGear v0.1.2
New Features:
- Added easy Source manipulation feature in CamGear API, to control features like
resolution, brightness, framerate etc.
- Added new
**option
parameter to CamGear API, provides the flexibility to manipulate input stream directly. - Added new parameters for Camgear API for time delay and logging.
- Added new Logo to readme.md
- Added new Wiki Documentation.
Updates/Improvements:
- Reformatted readme.md.
- Updated Wiki Docs with new changes.
Fixes:
- Improved Error Handling in CamGear & PiGear API.
- Fixed minor typos in docs.
Pull requests(PR) Involved:
- PR #4
Tip 💡 Go through each PR to see what has changed and when!