A High-performance cross-platform Video Processing Python framework powerpacked with unique trailblazing features :fire:
📓 Complete Release Notes can be found here ↗️
kill
parameter to close()
method to forcefully kill ZMQ context instead of graceful exit only in the receive
mode.subscriber_timeout
integer optional parameter to support timeout with pattern=2
(or Publisher-Subscriber) pattern.
pattern=2
.-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)
-disable_ffmpeg_window
optional Boolean flag is only available on Windows OS with logging disabled(logging=False
) in compression mode..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.3.11.x
legacies.uvicorn
, starlette
, pyzmq
dependencies.3.7
legacy from Programming Language metadata.Funding.yml
.3.8
while installing vidgear in docs.python_requires
to >=3.8
. Thereby python 3.7
and any before legacy are no longer supported.monitor
parameter is not defined.compression_mode
flags in WriteGear API docs.📓 Complete Release Notes can be found here ↗️
"/video"
to any alphanumeric string.custom_video_endpoint
optional string attribute for this purpose.dxcam
backend support for Windows machines.
dxcam
is now the default backend for Windows machines when no backend is defined.dxcam_target_fps
to control the target fps in dxcam
. Defaults to 0
(disabled).(int[device_idx], int[output_idx])
in the dxcam
backend only.
int
index is also allowed as a value for selecting device index.generate_webdata
method to make it more robust for rate limits and other shortcomings.generate_webdata
method will retry a different server when one fails.dxcam
dependency in core
and asyncio
extra requires for Windows machines.format
parameter when constructing a VideoFrame
from ndarray frames.dxcam
backend (if installed) when monitor
is defined on Windows machines.THREAD_TIMEOUT
optional flag.ndim==3
grayscale frames are encountered.
ndim==3
grayscale frames are detected.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
.📓 Complete Release Notes can be found here ↗️
uint
) kind and element size 2
.-input_pixfmt
attribute to output_params
dictionary parameter for easily specifying custom input pixel-format.__enter__()
and __exit__()
methods for proper handling of resources via with
statement for allocating and releasing resources precisely. (Suggested by @sueskind)__enter__()
and __exit__()
methods for proper handling of resources via with
statement for allocating and releasing resources precisely. (Suggested by @sueskind)skip_generate_webdata
boolean optional attribute(False
by default) to completely disable Data-Files Auto-Generation WorkFlow.
/video
route for disabled Data-Files Auto-Generation WorkFlow./dev/video0
).logging=True
).startFFmpeg_Process
internal class method to start_FFProcess
.Preprocess
internal class method to PreprocessFFParams
.startCV_Process
internal class method to start_CVProcess
.initiate
internal class parameter to initiate_process
.force_termination
internal class parameter to forced_termination
.validate_audio
method with improved and more robust regex patterns for identifying audio bitrate in ay audio file.distutils.version.LooseVersion
with pkg_resources.parse_version
.LooseVersion
with parse_version
.Retry
package to be imported from requests.adapters
.12-07-2022
.output_filename
string parameter to output
.cmd
parameter in execute_ffmpeg_cmd()
class method to more sensible command
.ValueError
will be raised if datatype of input frames mismatches.CamGear.read()
blocked unnecessarily.ScreenGear.read()
blocked during startup.
ScreenGear.read()
doesn't checks if queue is empty before continuing.output
value as valid path.fltp
keyword in regex pattern causing non-ftlp streams to be not recognized.content-length
as Nonetype since it may not necessarily have the Content-Length header set.pyzmq==24.0.1
working version.📓 Complete Release Notes can be found here ↗️
.gitignore
to ignore pypi's build
directory and egg-info
files.distutils.version.LooseVersion
with pkg_resources.parse_version
.Bonus
section to navigation and moved suitable pages under it.tostring()
to tobytes()
for the purposes for clarity in Python 3.2.-input_framerate
parameter now accepts any positive value for WriteGear and StreamGear APIs.-input_framerate
less than 5 does not get used in WriteGear and StreamGear APIs.(PR by @freol35241)hls_segment_type
not working bug. (PR by @enarche-ahn)logging=False
in StreamGear's Real-time Mode. (patch suggested by @enarche-ahn)-video_source
attribute to correctly infers it as empty(or invalid).3.1.0
or above breaks mkdocs.
jinja2>=3.1.0
breaks mkdocs (mkdocs/mkdocs#2799), therefore pinned jinja2 version to <3.1.0
.mkdocstring
versions📓 Complete Release Notes can be found here ↗️
output_filename
parameter.-gst_pipeline_mode
attribute to its output_params
dictionary parameter to enable this mode.-ffpreheaders
special attribute to WriteGear's output_params
dictionary parameter in Compression mode:
-re
).float
value support to THREAD_TIMEOUT
optional attributes in threaded gears.>=3.7
.📓 Complete Release Notes can be found here ↗️
YT_backend
a new CamGear's Internal YT-DLP backend class for extracting metadata from Streaming URLs.ytv_metadata
global parameter to CamGear for accessing video's metadata(such as duration, title, description) on-the-go.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).is_livestream
global YT_backend parameters.extra_requires
under the name "core"
. [PR #268 by @zpapakipos]
extra_require
dependencies.streamlink
dependency.pafy
dependency.pip
has been changed in v0.2.4
:
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.streamlink
backend support from stream_mode
in favor of more reliable CamGear's Internal YT-DLP backend class for extracting metadata from Streaming URLs.
ValueError
if streaming site URL is unsupported by yt-dlp backend.ValueError
if yt-dlp
isn't installed and stream_mode
is enabled.config
global parameter.source
parameter is NoneType as well as custom_stream
attribute is undefined.restore_levelnames
method.youtube_url_validator
method.📓 Complete Release Notes can be found here ↗️
4K
Streaming URLs.youtube-dl
with yt-dlp
as pafy backend for YouTube videos pipelining.
yt-dlp
as youtube-dl
.youtube-dl
dependency with yt-dlp
.youtube-dl
imports with yt-dlp
.check_WriteAccess
method..gitignore
for specifying intentionally untracked files to ignore.gitattributes
to manage how Git reads line endings.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.'%'
character from the naming convention for segment files.stream_count
dict variable to alter template for HLS segment filenames.-disable_force_termination
attribute logic which accidentally disables force termination.name 'VideoStreamTrack' is not defined
bug.TypeError
bug.latest_version
retrieval.check_WriteAccess
failing to recognize correct permission for writing the output file on windows platform.
Windows
and *nix
platforms.check_WriteAccess
that throws OSError
while handling URLs.
source=None
)RuntimeError
if bidirectional mode is disabled at server or client but not both.disable_confirmation
used to force disable termination confirmation from client in terminate_connection
.task_done()
method after every get()
call to gracefully terminate queues.secrets
and string
imports.simplejpeg
:
encode_jpeg
and decode_jpeg
methods to implement turbo-JPEG transcoding with simplejpeg
.jpeg_compression
, jpeg_compression_quality
, jpeg_compression_fastdct
, jpeg_compression_fastupsample
attributes.middleware
variable for easily defining Middlewares as list.retrieve_best_interpolation
method to automatically select best available interpolation within OpenCV.get_supported_demuxers
method to get list of supported demuxers.cython
and msgpack
dependency.msgpack
and msgpack_numpy
to auto-install latest.
ImportError
on all VidGear's APIs import.ImportError
on missing optional dependency.ImportError
will be raised only any certain API specific dependency is missing during given API's initialization.-min_seg_duration
flag with -seg_duration
.-re
flag from RTFM.np.newaxis
with np.expand_dims
.random
module with secrets
while generating system ID.np.copy
.loop
parameter from asyncio methods.skip_loop
parameter in close()
method.run_until_complete
will not used if skip_loop
is enabled.skip_loop
now will create asyncio task instead and will enable disable_confirmation
by default.create_task
with ensure_future
to ensure backward compatibility with python-3.6 legacies.transceive_data
method.is_running
variable globally available for internal use.4320p
resolution support to dimensions_to_resolutions
method.delete_file_safe
to safely delete files at given path.os.remove
calls with delete_file_safe
.delete_ext_safe
method.create_blank_frame
functions frame channels detection.logging
parameter to capPropId function to forcefully discard any error(if required).numpy
dependency, numpy
recently dropped support for python 3.6.x legacies. See https://github.com/numpy/numpy/releases/tag/v1.20.0
aiortc
to auto-install latest version.asyncio.sleep
value to 0
.
await asyncio.sleep(0)
will achieve the same effect. https://stackoverflow.com/a/55782965/10158117
ImportError
for API-specific dependencies will be raised only when any of them is missing at API's initialization.delete_safe
to delete_ext_safe
.frame_jpeg_quality
, frame_jpeg_optimize
, frame_jpeg_progressive
attributes from WebGear.
read()
to block it when source stream is busy.THREAD_TIMEOUT
with event wait timout.return_data
interfering with return JSON-data in receive mode.simplejpeg
bug. Issue: https://gitlab.com/jfolz/simplejpeg/-/issues/11
np.squeeze
to drop grayscale frame's 3rd dimension on Client's end.join()
.timeout
parameter logic.next_timestamp
VideoStreamTrack method for generating accurate timestamps.reset_connections
callable to reset all peer connections and recreate Video-Server timestamps. (Implemented by @kpetrykin)close_connection
endpoint in JavaScript to inform server page refreshing.(Thanks to @kpetrykin)/close_connection
in routes.reset()
method to Video-Server class for manually resetting timestamp clock.reset_enabled
flag to keep check on reloads.get_supported_vencoders
.is_valid_url
.ImportError
.create_blank_frame
that throws error with gray frames.RSTP
protocol validation as demuxer, since it's not a protocol but a demuxer.logger_handler
, mkdir_safe
, retrieve_best_interpolation
, capPropId
helper functions from asyncio package. Relatively imported helper functions from non-asyncio package.aiohttp
dependency.asctime
formatting from logging.-seg_duration
value resulting in broken pipeline.latest_version
returning incorrect version for some PYPI packages.latest_version
variable support from simplejpeg
.streamlink
only supporting requests==2.25.1 on Windows.colorama
, aiofiles
, aiohttp
.
aiortc
- a python library for Web Real-Time Communication (WebRTC).RTC_VideoServer
server on WebGear_RTC, a inherit-class to aiortc's VideoStreamTrack API.custom.js
and custom.css
for custom responsive behavior.custom.js
and ensured compatibility with WebGear_RTC.custom.js
.resize()
function to custom.js
to automatically adjust video
& img
tags for smaller screens.--mode
flag.queue.full
checks followed by sleep with implicit sleep with blocking queue.put
.queue.empty
checks followed by queue.nowait_get
with a blocking queue.get
natural empty check.THREAD_TIMEOUT
attribute to prevent deadlocks:
THREAD_TIMEOUT
attribute to its options
parameter."libx264" > "libx265" > "libxvid" > "mpeg4"
.get_supported_vencoders
Helper method to enumerate Supported Video Encoders.-c:v
and -vcodec
flags.encode_jpeg
and decode_jpeg
methods to implement turbo-JPEG transcoding with simplejpeg
.jpeg_compression
, jpeg_compression_quality
, jpeg_compression_fastdct
, jpeg_compression_fastupsample
attributes.config
global variable for this new behavior.source
parameter value is allowed for defining own custom sources.custom.js
and custom.css
for custom responsive behavior.abhiTronix/vidgear-vitals
enable_infinite_frames
attribute for enabling infinite frames.THREAD_TIMEOUT
attribute to its options
parameter.re
for live content.custom.js
.embed-responsive
.abhiTronix/FFmpeg-Builds
in helper.pycreate_blank_frame
method.c_name
parameter to generate_webdata
and download_webdata
to specify class.TimeoutHTTPAdapter
Adapter with a default timeout for all HTTP calls based on this GitHub comment.send()
method to ensure that the default timeout is used if a timeout argument isn't provided.with
block to exit properly even if there are unhandled exceptions.TimeoutHTTPAdapter
Adapter with max 3 retries and sleep(backoff_factor=1
) between failed requests.create_blank_frame
method to create bland frames with suitable text.picamera
class with numpy.create_bug
parameter to fake picamera
class for emulating various artificial bugs.time_delay
for camgear and pigear.EXIT_CODE
to new timeout implementation for pytests to upload codecov report when no timeout.picamera
for facilitating the emulation.shutdown()
function to gracefully terminate WebGear_RTC API.coreutils
brew dependency.is_running
flag to WebGear_RTC to exit safely.latest_version
method to automatically retrieve latest version for packages.simplejpeg
package for all platforms.
check_WriteAccess
Helper method.safe_mkdir
to check_WriteAccess
to automatically create non-existential parent folder in path.check_WriteAccess
Patch to StreamGear.check_WriteAccess
to handle Windows envs easily.validate_audio
method.dark-material.js
and header.html
files from theme.mkdocs.yml
and custom.css
configuration.github.ref
from yaml.timeout-minutes
flag to github-actions workflow.timeout
flag to pytest.aiortc
automated install on Windows platform within setup.py.timeout_decorator
and asyncio_timeout
dependencies for CI.picamera
class to CI utils for emulating RPi Camera-Module Real-time capabilities.get_RTCPeer_payload
method to receive WebGear_RTC peer payload.pytest.ini
to address multiple warnings.mike
settings for mkdocs versioning.aiortc
as external dependency in appveyor.yml
.VideoTransformTrack
to test stream play.AttributeError
for fake picamera class.is_valid_url
method.https
.latest_version
behavior from some packages.move_to_end
method.mkdocs.yml
.FONT_HERSHEY_SCRIPT_COMPLEX
and enabled logging in create_blank_frame.logging
condition to always inform user in a event of FFmpeg binary download failure.setCodecPreferences
.__offer
.changelog.md
.
RuntimeError
if no suitable default encoder found!compression_format
, compression_param
attributes from NetGear.output_filename
value will no longer be considered as invalid in StreamGear and WriteGear APIs.source
parameter value is allowed for WebGear and NetGear_Async for defining custom sources.
source
parameter missing None
as default value.check_output
method due a hidden bug in python. For reference: https://bugs.python.org/issue37380
validate_video
method.site_url
bug patched in mkdocs.ymlmain.py
.picamera
import due to improper sys.module settings.VidGear Docs Deployer
workflowPicture size 0x0 is invalid
bug with external audio.main.py
.install_opencv
bash script.download_ffmpeg_binaries
method.check_WriteAccess
method.validate_audio
method.requests
module's function arguments.
streamlink
python library with easy control over parameters and quality.source
belong to YouTube or elsewhere, and handles it with appropriate API.get_supported_quality
helper method for handling specified qualitiesSTREAM_QUALITY
and STREAM_PARAMS
attributes.pyscreenshot
python library.pyscreenshot
the default API for ScreenGear, replaces mss
.backend
parameter for this feature while retaining previous behavior.mss
for old compatibility and multi-screen support.-livestream
attribute to support live-streaming.-livestream
attribute functionality.mike
API.release
and dev
builds.version-select.js
and version-select.css
files.slate
in mkdocs.yml
.purple
theme with dark-purple
accent color.rebufferingGoal
for dash videos.need_info.yml
YAML Workflow.needs-more-info.yml
Request-Info template.show_root_heading
flag to disable headings in References.inserAfter
function to version-select.js.gitmoji
for commits.VIDGEAR_LOGFILE
environment variable in Travis CI.VIDGEAR_LOGFILE
environment variable to manually add file/dir path.logger_handler()
Helper methods (in asyncio too).restore_levelnames
auxiliary method for restoring logging levelnames.version.py
in setup.py.mkdocstrings
showing root headings.mkdocstrings
docs.motivation.md
.deploy_docs.yml
for releasing dev, stable, and release versions.setup.py
with new features.contributing.md
and ReadMe.md
.4.5.1-dev
in bash scriptschangelog.md
.mkdocs.yml
formatting updated.y_tube
parameter renamed as stream_mode
in CamGear API!travis.yml
deleted.mkdocs.yml
variables.fetch-depth=0
.version-select.js
bug fixed.version.json
not detecting properly in version-select.js
.