terminate() function to terminate StremGear Safely.-video_source attribute for activating these modesstream() for Real-time Frame Mode and transcode_source() for Single-Source Mode for easy transcoding.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.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.raw.githack.com.extra.js.rebufferingGoal for faster response.send_terminate_signal internal method.WindowsSelectorEventLoopPolicy() for windows 3.8+ envs.signal API on UNIX machines.timeout attribute for controlling Timeout in Connections.linger=0) flag.output_params:-clones attribute in output_params parameter for handing this behavior..zmq.REQ/zmq.REP and zmq.PUB/zmq.SUB patterns in this mode.output_filename parameter supports Networks URLs in compression modes onlyis_valid_url helper method to easily validate assigned URLs value.ValueError if -output_filename is not supported.disable_force_termination attribute in WriteGear to disable force-termination.compression_format attribute.youtube_url_validator to Helper.helper.py methods:
validate_video function to validate video_source.extract_time Extract time from give string value.get_video_bitrate to caliculate video birate from resolution, framerate, bits-per-pixels values.delete_safe to safely delete files of given extension.validate_audio to validate audio source.check_valid_mpd function to test MPD files validity.mpegdash library to CI requirements.clappr.min.js, dash-shaka-playback.js, clappr-level-selector.min.js third-party javascripts locally.pymdownx.keys to replace [Ctrl+C]/[β+C] formats.custom.css stylescripts variables for fluid animations in docs.setup.py.Request Info and Welcome GitHub Apps to automate PR and issue workflow
config.yml for customizations.-clones attribute to handle FFmpeg parameter clones in StreamGear and WriteGear API.NotImplementedError in NetGear_Async API on Windows 3.8+ envs.output file extension according to format selected in StreamGear.travis.com.temp_write temp directory for WriteGear Assets in bash script.isort library to sort and group imports in Vidgear APIs.list, tuple, int, float in WriteGear API's output_params dict.pytest-asyncio fixture in NetGear_Async API.return_testvideo_path CI function with variable streams.skip_loop in NetGear_Async to fix asyncio.CancelledError.<figure> and <figurecaption> like tags.;nbsp with ;thinsp and ;emsp.IOError with more reliable RuntimeError in StreamGear Pipelines.del with pop in dicts.try-except-final blocks.pymdownx.tasklist.call() with run() for better error handling in execute_ffmpeg_cmd function.delete_safe Helper function.0.0.0.0 to localhost.README.md and changelog.md with new changes.check_output and added force_retrieve_stderr support to **kwargs to extract stderr output even on FFmpeg error.dicts2args to support internal repeated coreX FFmpeg parameters for StreamGear.mkdocs.yml, changelog.md and README.md with latest changes.validate_audio Helper function will now retrieve audio-bitrate for validation.mpegdash dependency with custom dev fork for Windows machines.localhost for cross-compatibility between different platforms.source value can now be NoneType for a custom frame-generator at Server-end only./tmp in linux) is now not a valid directory for WriteGear & StreamGear API outputs.override directory.ValueError with None-type Source.NameError bug in NetGear API.NameError bugs in StreamGear CI.NameError in CI functions and tests.TimeoutError bug in NetGear_Async CI tests.get_valid_ffmpeg_path throwing TypeError with non-string values.gop value not handle correctly.extract_resolutions output in StreamGear API.extract_resolutions method.AttributeError with wrong attribute names and definition in CI Helper functions.π Multiple Clients support in NetGear API:
multiclient_mode attribute for enabling this mode easily.zmq.REQ/zmq.REP and zmq.PUB/zmq.SUB patterns in this mode.zmq.REQ/zmq.REP pattern only.π Support for robust Lazy Pirate pattern(auto-reconnection) in NetGear API for both server and client ends:
REQ/REP and PAIR messaging patterns internally.max_retries and request_timeout(in seconds) for handling polling.DONTWAIT flag for interruption-free data receiving.π Performance Updates for NetGear API:
Reducer() function in Helper.py to aid reducing frame-size on-the-go for more performance.recv() function at client's end to reduce system load.π Docs Migration to Mkdocs:
mkdocs-material theme.mkdocs.yml for Mkdocs with relevant data.docs folder to handle markdown pages and its assets..md) to docs folder, which are carefully crafted documents - based on previous Wiki's docs, and some completely new additions.admonition, attr_list, codehilite, def_list, footnotes, meta, and toc like Mkdocs extensions.search, minify and git-revision-date-localized plugins support.en (English) language.mkdocstrings:
mkdocstrings plugin for auto-building each VidGear's API references.mkdocstrings.master branch on Ubuntu machine to build matrix.NDarray) transfer in Bidirectional mode.address already in use bug at client's end.ValueError with more suitable RuntimeError.Reducer Helper function CI test.os.devnull with suprocess's inbuilt function.changelog.md to /docs and updated contribution guidelines.mkdocstrings.mkdocs-exclude, for excluding files from Mkdocs builds.π β οΈVidGear Docs moved to GitHub Pages, Now Available at https://abhitronix.github.io/vidgear.
filter attribute from options parameter in NetGear API.force_terminate parameter support from NetGear API.numpy.ndarray for Server end in Bidirectional Mode.'NoneType' object is not subscriptable bug.request_timeout value to 4 and also lowered cut-off limit for the same.README.md from Mkdocs builds.pattern value check bypassed if wrong value is assigned.try-except-final blocks.NameError bug in NetGear API.WebGear API:
starlette ASGI Application Server.__main__.py to directly run WebGear Server through the terminal.NetGear_Async API
uvloop at its backend.zmq.PAIR, zmq.REQ/zmq.REP, zmq.PUB/zmq.SUB, and zmq.PUSH/zmq.PULL.tcp and ipc protocols.Asynchronous I/O Enhancements
asyncio package to vidgear for handling asynchronous APIs.asyncio and created separate asyncio helper.py for it.__main__.py to asyncio for easier access to WebGear API through the terminal.setup.py with new dependencies and separated asyncio dependencies.General Enhancements:
time.perf_counter python module.logging handler helper function for vidgear.setup.py.retry function and replaced wget with curl for Linux test envs.4.2.0-dev for Linux test envs.helper.py only.color_space value in ScreenGear API.shutdown function for safely stopping frame producer threads in WebGear API.mkdir function with new mkdir_safe helper function for creating directories safely.tcp and ipc only, in NetGear API.__address and __ port are not set in async mode.(PR by @otter-in-a-suit)terminate() with join() in PiGear.uvloop for windows as still NOT yet supported.async to asyncio, since it is used as Keyword in python>=3.7*(raises SyntaxError)*.helper.py context. (@cclauss)__main__.py.camera_num parameter to VideoGear.download_url meta from setup.py.__main__.py from codecov.try-catch loops.youtube_url_validation as youtube_url_validator.π β οΈ PyPi Release does NOT contain Tests and Scripts!
NetGear API:
secure_mode param for enabling it.Stonehouse & Ironhouse ZMQ security mechanisms.multiserver_mode param for enabling it.REQ/REP & PUB/SUB patterns for this mode.return_data parameter to recv() function.bidirectional_mode attribute for enabling this mode.PAIR & REQ/REP patterns for this modemessage parameter for non-exclusive primary modes for this mode.JPEG, PNG & BMP encoding formatscompression_format & compression_param to tweak this featureforce_terminate attribute flag for handling force socket termination at the Server-end if there's latency in the network.zmq.PUB/zmq.SUB) pattern for seamless Live Streaming in NetGear API.PiGear API:
SystemError if Picamera ribbon cable is pulled out to save resources.HWFAILURE_TIMEOUT options attributes to alter timeout.VideoGear API:
framerate global variable and removed redundant function.CROP_N_ZOOM attribute in Videogear API for supporting Crop and Zoom stabilizer feature.WriteGear API: Added new execute_ffmpeg_cmd function to pass a custom command to its FFmpeg pipeline.
Stabilizer class:
crop_n_zoom param for enabling this feature.β‘οΈ CLI & Tests updates:
β Added VidGear's official native support for macOS environments.
print logging commands with python's logging module completely.THREADED_QUEUE_MODE param.$TMPDIR rather than $HOME directory for downloading test data.github.com.RuntimeError if the source provided is invalid.camera_num to support multiple Picameras.colorlog python module for presentable colored logging.traceback with sys.exc_info.travis.yml.Pub/Sub pattern for smoother performance on various networks.Secure Mode and several related performance updatesmultiserver_mode not working properly over some networks.github.com).overwrite_cert for client-end in NetGear API.setup.cfgfile.setup.py and updated new release information.secure_mode & multiserver_mode Modes.π β οΈ PyPi Release does NOT contain Tests and Scripts!
stabilize to VidGear API, to enable or disable Video Stabilization.**option dict attributes to update VidGear's video stabilizer parameters directly..svg) in readme.mdcontributing.md and changelog.md for reference.collections.deque import in Threaded Queue Mode for performance considerationinstall_opencv.sh bash scripts for Travis cli, to handle OpenCV installation.FUNDING.yml)mss, pyzmq and rejected redundant ones.readme.md and added new badges.Youtube video URL in testspre-install.sh to prepare_dataset.sh - downloads opensourced test datasets and static FFmpeg binaries for debugging.script folder location to bash/script.Python 3.4 removed from Travis CLI tests.opencv-contrib-python with OpenCV built from scratch as dependency.sys.stderr.close() throws ValueError bug: Replaced sys.close() with DEVNULL.close()NonType frames in CamGear API.NoneType frames bug in PiGear class on initialization./xe2 unicode bug from Stabilizer class.**output_params KeyError bug in WriteGear APImonitor valuessetup.pyy_tube to access YouTube Mode in CamGear API.-output_dimensions special parameter to WriteGear API.helper.py to handle special helper functions.-input_framerate special parameter to WriteGear class to change/control output constant framerate in compression mode(WriteGear).framerate class variable for CamGear API, to retrieve input framerate.backend - changes the backend of CamGear's APItravis.ymlappveyor.ymlPre-install.sh to download opensourced test datasets and static FFmpeg binaries for debugging.pytest.Say Thank you! badge to readme.youtube-dl as a dependency, as required by pafy's backend.-height and -width parameter from CamGear API.opencv-python with opencv-contrib-python completelyos with platform in setup.py.**options/** output_param dictionary keys.π β οΈ PyPi Release does NOT contain Tests and Scripts!
picamera API handling during frame capture(PiGear)π Tip π‘ Go through each PR to see what has changed and when!
resolution, brightness, framerate etc.**option parameter to CamGear API, provides the flexibility to manipulate input stream directly.π Tip π‘ Go through each PR to see what has changed and when!