A High-performance cross-platform Video Processing Python framework powerpacked with unique trailblazing features :fire:
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
.:warning: 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.cfg
file.setup.py
and updated new release information.secure_mode
& multiserver_mode
Modes.:warning: 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.py
y_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.yml
appveyor.yml
Pre-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.:warning: PyPi Release does NOT contain Tests and Scripts!
picamera
API handling during frame capture(PiGear)Tip :bulb: 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 :bulb: Go through each PR to see what has changed and when!
setup.py
& setup.cfg
__init__.py
in each folderdistutils.core
with setuptools