Vidgear Versions Save

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

vidgear-0.3.2

7 months ago

📓 Complete Release Notes can be found here ↗️


New Features ✨

  • NetGear:
    • Added new kill parameter to close() method to forcefully kill ZMQ context instead of graceful exit only in the receive mode.
    • Added new subscriber_timeout integer optional parameter to support timeout with pattern=2 (or Publisher-Subscriber) pattern.
      • Receiver will exit safely if timeout defined(any value(in milliseconds) > 0), and timeout occurs in Receiver Mode with pattern=2.
      • 💬 Note: Default behavior still is to block the thread till infinite time.
  • WriteGear:
    • Added new -disable_ffmpeg_window optional Boolean flag to enable patch that prevents FFmpeg creation window from opening when building .exe files on Windows OS. (PR by @ibtsam3301)
      • 💬 Note: -disable_ffmpeg_window optional Boolean flag is only available on Windows OS with logging disabled(logging=False) in compression mode.
      • 💬 Use Case: This flag can be useful while creating an .exe file for a python script that uses WriteGear API. On windows even after creating the .exe file in windowed mode or no-console mode, the ffmpeg.exe command line window would pop up while its being used by WriteGear API.
  • Setup.py
    • Added official support for python 3.11.x legacies.

Updates/Improvements ⚡️

  • Asyncio:
    • Formatted TemplateResponse class parameters w.r.t new changes in backend Starlette API.
  • Setup.py:
    • Readded latest patch to uvicorn, starlette, pyzmq dependencies.
    • Removed 3.7 legacy from Programming Language metadata.
  • Maintenance:
    • Added GitHub sponsors and dropped liberapay from Funding.yml.
  • Docs:
    • Updated information related to Supported Dimensional Attributes in ScreenGear docs.
    • Updated minimum python to version 3.8 while installing vidgear in docs.
    • Updated API-specific dependencies in docs.

Breaking Updates/Changes 💥

  • Setup.py:
    • 💣 Removed support for python-3.7 legacies
      • 💬 Raised python_requires to >=3.8. Thereby python 3.7 and any before legacy are no longer supported.

Bug-fixes 🐛

  • ScreenGear:
    • Fixed swapped region dimensions bug with dxcam backend.
    • Fixed "mss" backend disabled when monitor parameter is not defined.
  • Docs:
    • Fixed missing compression_mode flags in WriteGear API docs.

vidgear-0.3.1

9 months ago

📓 Complete Release Notes can be found here ↗️


New Features ✨

  • WebGear:
    • Added an option to add a custom video endpoint path.
      • Users can now change the video endpoint path from "/video" to any alphanumeric string.
      • Added the custom_video_endpoint optional string attribute for this purpose.
      • Only alphanumeric strings with no spaces in between are allowed as its value.
  • ScreenGear:
    • Added dxcam backend support for Windows machines.
      • dxcam is now the default backend for Windows machines when no backend is defined.
      • Added support for variable screen dimensions to capture an area from the screen.
      • Added the optional flag dxcam_target_fps to control the target fps in dxcam. Defaults to 0 (disabled).
    • Added support for tuple values in the monitor parameter to specify device and output indexes as (int[device_idx], int[output_idx]) in the dxcam backend only.
      • Default int index is also allowed as a value for selecting device index.
  • Helper
    • Added multiple servers support for downloading assets.
      • Added GitHub server to the generate_webdata method to make it more robust for rate limits and other shortcomings.
      • Now, the generate_webdata method will retry a different server when one fails.
  • Setup.py
    • Added dxcam dependency in core and asyncio extra requires for Windows machines.

Updates/Improvements ⚡️

  • WebGear:
    • Improved the conditions logic to check if non-empty values are assigned to optional parameters.
  • WebGear_RTC:
    • Improved the handling of the format parameter when constructing a VideoFrame from ndarray frames.
  • ScreenGear:
    • Enforced dxcam backend (if installed) when monitor is defined on Windows machines.
    • Refactored code blocks to ensure backward compatibility.

Breaking Updates/Changes 💥

  • ScreenGear:
    • 💣 Previously enforced threaded queue mode is now completely removed, resulting in a potential performance boost. + 💬 Reason: The IO is automatically blocked by the screen refresh rate, so adding the overhead of maintaining a separate queue is pointless.
    • 💣 Removed the THREAD_TIMEOUT optional flag.

Bug-fixes 🐛

  • WebGear_RTC:
    • Fixed a bug caused by PyAV's error when ndim==3 grayscale frames are encountered.
      • The API will now drop the third dimension if ndim==3 grayscale frames are detected.
  • Setup.py:
    • Starting from version 8.0.0, the python-mss library dropped support for Python 3.7, so as a temporary measure, mss dependency has been pinned to version 7.0.1.

vidgear-0.3.0

1 year ago

📓 Complete Release Notes can be found here ↗️


New Features ✨

  • WriteGear:
    • Added support for higher than 8-bit depth frames with datatypes of unsigned integer(uint) kind and element size 2.
    • Added new -input_pixfmt attribute to output_params dictionary parameter for easily specifying custom input pixel-format.
    • Added support for Context Managers __enter__() and __exit__() methods for proper handling of resources via with statement for allocating and releasing resources precisely. (Suggested by @sueskind)
  • StreamGear:
    • Added support for Context Managers __enter__() and __exit__() methods for proper handling of resources via with statement for allocating and releasing resources precisely. (Suggested by @sueskind)
  • WebGear:
    • Added new skip_generate_webdata boolean optional attribute(False by default) to completely disable Data-Files Auto-Generation WorkFlow.
      • This flag enables only /video route for disabled Data-Files Auto-Generation WorkFlow.
  • Helper:
    • Added more robust implementation of validate_audio method with more robust regex pattern for extracting audio-samplerate.
    • Added support for Linux video device path (such as /dev/video0).
  • Maintenance:
    • Logging current vidgear version when vidgear APIs are called, not at import.
      • Current version can only be logged by VidGear APIs with the logging turned on (i.e. logging=True).

Updates/Improvements ⚡️

  • WriteGear:
    • Updated comments, description, and logging messages to more sensible and developer friendly.
      • Renamed startFFmpeg_Process internal class method to start_FFProcess.
      • Renamed Preprocess internal class method to PreprocessFFParams.
      • Renamed startCV_Process internal class method to start_CVProcess.
      • Renamed initiate internal class parameter to initiate_process.
      • Renamed force_termination internal class parameter to forced_termination.
  • Helper:
    • Updated validate_audio method with improved and more robust regex patterns for identifying audio bitrate in ay audio file.
  • Setup.py:
    • Replaced distutils.version.LooseVersion with pkg_resources.parse_version.
  • Maintenance:
    • Replaced depreciated LooseVersion with parse_version.
    • Updated Retry package to be imported from requests.adapters.
  • Bash Scripts:
    • Updated FFmpeg Static Binaries links to latest date/version tag to 12-07-2022.

Breaking Updates/Changes 💥

  • WriteGear:
    • 💣 Renamed output_filename string parameter to output.
    • 💣 Renamed cmd parameter in execute_ffmpeg_cmd() class method to more sensible command.
    • 💣 ValueError will be raised if datatype of input frames mismatches.

Bug-fixes 🐛

  • Camgear:
    • Fixed CamGear.read() blocked unnecessarily.
    • Fixed deadlock on termination.
  • ScreenGear:
    • Fixed ScreenGear.read() blocked during startup.
      • 💬 During startup, ScreenGear.read() doesn't checks if queue is empty before continuing.
  • WriteGear:
    • Fixed gstpipeline_mode not activating when wrongly assuming output value as valid path.
    • Fixed name 'compression' is not defined bug.
  • Helper:
    • Fixed fltp keyword in regex pattern causing non-ftlp streams to be not recognized.
    • Fixed response.headers returning content-length as Nonetype since it may not necessarily have the Content-Length header set.
  • Setup:
    • Pinned pyzmq==24.0.1 working version.

vidgear-0.2.6

1 year ago

📓 Complete Release Notes can be found here ↗️


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

Updates/Improvements ⚡️

  • Setup.py:
    • 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.
    • Redesigned and Rewritten Donation and Contribution section to README.md.
  • API:
    • Updated depreciated tostring() to tobytes() for the purposes for clarity in Python 3.2.
  • 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:
    • Fixed pinned version syntax bug in docs_deployer workflow.
    • Fixed typos in Github forms and its context.
  • 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
    • Fixed Netgear+Webgear bonus example code bugs.(PR by @iandol)
    • Fixed external bug that causing "Home" tab not responsive randomly when accessed from other tabs.

vidgear-0.2.5

2 years ago

📓 Complete Release Notes can be found here ↗️


New Features ✨

  • WriteGear:
    • Added support for GStreamer pipeline in WriteGear API's Non-Compression mode:
      • Implemented GStreamer Pipeline Mode to accept GStreamer pipeline formatted as string to its output_filename parameter.
      • Added new special -gst_pipeline_mode attribute to its output_params dictionary parameter to enable this mode.
      • This feature provides flexible way to directly write video frames into custom GStreamer Pipeline with controlled bitrate.
    • Added new -ffpreheaders special attribute to WriteGear's output_params dictionary parameter in Compression mode:
      • 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.
  • NetGear:
    • Added bidirectional data transfer support to existing exclusive Multi-Clients and Multi-Servers exclusive 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 enabled along with Multi-Clients and Multi-Servers exclusive modes.
  • Maintenance:
    • 🌟 Added official support for Python-3.10 legacies. 🌟
    • Added float value support to THREAD_TIMEOUT optional attributes in threaded gears.

Updates/Improvements ⚡️

  • Setup.py:
    • Dropped support for Python-3.6 and below legacies.
    • Updated logging formating.
    • Updated python_requires to >=3.7.
  • Helper:
    • Vidgear will now report current version on every run.

Breaking Updates/Changes 💥

  • :warning: Dropped support for Python-3.6 legacies from vidgear.

Bug-fixes 🐛

  • NetGear: Fixed bidirectional mode forcefully overriding multi-clients mode's payload.
  • Setup: Fixed uvicorn and aiortc dropped support for Python-3.6 legacies.

vidgear-0.2.4

2 years ago

📓 Complete Release Notes can be found here ↗️


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.
      • 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 supports all vidgear's VideoCapture APIs readily as input.

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

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

Bug-fixes 🐛

  • CamGear:
    • Fixed KeyError Bug for missing attributed in meta_data json in some streaming sites.
  • Helper:
    • Removed unused imports.
  • PR #268
  • PR #272
  • PR #274

vidgear-0.2.3

2 years ago

📓 Complete Release Notes can be found here ↗️


New Features ✨

  • CamGear:
    • Added support for 4K Streaming URLs.
  • Helper:
    • Implemented logging ColorFormatter string alignment.

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.
      • Replaced youtube-dl dependency with yt-dlp.
      • Replaced youtube-dl imports with yt-dlp.
  • Helper:
    • Enabled logging for check_WriteAccess method.
  • Maintenance:
    • Added .gitignore for specifying intentionally untracked files to ignore
    • Added .gitattributes to manage how Git reads line endings.
    • Introduced python short-circuiting for handling logging logic in APIs.

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 internal stream_count dict variable to alter template for HLS segment filenames.
  • WriteGear:
    • Fixed bug in -disable_force_termination attribute 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.
    • Fixed bug in check_WriteAccess that throws OSError while handling URLs.
  • PR #249
  • PR #262

vidgear-0.2.2

2 years ago

:notebook: Complete Release Notes can be found here :arrow_upper_right:

New Features ✨

  • StreamGear:
    • Added native support for new Apple HLS (HTTP Live Streaming) HTTP streaming format in StreamGear.
    • Added seamless support for audio input from external audio devices.
  • NetGear:
    • New SSH Tunneling Mode for remote connection of ZMQ sockets across machines via SSH tunneling.
    • Additional colorspace support for input frames with Frame-Compression enabled.
      • Allowed users to manually select colorspace on-the-fly with its JPEG frame compression mode.
  • NetGear_Async:
    • New exclusive Bidirectional Mode for bidirectional data transfer with pure asyncio implementation.
      • :warning: Bidirectional mode is only available with User-defined Custom Source(i.e. source=None)
      • :warning: 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.
    • 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.
  • WebGear_RTC:
    • Added native support for middlewares:
      • Added new global middleware variable for easily defining Middlewares as list.
    • 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.
  • Helper:
    • New automated interpolation selection for gears:
      • Implemented retrieve_best_interpolation method to automatically select best available interpolation within OpenCV.
    • Implemented get_supported_demuxers method to get list of supported demuxers.
  • Setup.py:
    • Added new cython and msgpack dependency.
    • Added msgpack and msgpack_numpy to auto-install latest.

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.
    • :warning: Now ImportError will be raised only any certain API specific dependency is missing during given API's initialization.
  • 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.
    • :warning: run_until_complete will not used if skip_loop is enabled.
    • :warning: 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

Breaking Updates/Changes 💥

  • :bomb: 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.
  • :bomb: Renamed delete_safe to delete_ext_safe.
  • :bomb: 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.
  • 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.
  • 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.
    • 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.
    • Bugfix related to OpenCV import:
      • Bug fixed for OpenCV import comparison test failing with Legacy versions and throwing ImportError.
    • Fixed bug with create_blank_frame that throws error with gray frames.
    • 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.
  • Setup.cfg:
    • Replaced dashes with underscores to remove warnings.

  • PR #210
  • PR #215
  • PR #222
  • PR #223
  • PR #227
  • PR #231
  • PR #233
  • PR #237
  • PR #239
  • PR #243

vidgear-0.2.1

3 years ago

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 💥

  • :warning: WriteGear will automatically switch video encoder to default if specified encoder not found.
  • :warning: WriteGear will throw RuntimeError if no suitable default encoder found!
  • :warning: Removed format specific OpenCV decoding and encoding support for NetGear.
  • :warning: 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

  • PR #129
  • PR #130
  • PR #155
  • PR #207

vidgear-0.2.0

3 years ago

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

  • :warning: y_tube parameter renamed as stream_mode in CamGear API!
  • :warning: 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
    tag.
  • Fixed Asset Colors.
  • Fixed failing CI tests.
  • Fixed Several logging bugs.

Pull Requests

  • PR #164
  • PR #170
  • PR #173
  • PR #181
  • PR #183
  • PR #184