WebGear_RTC API Usage Examples:¶
Requirements¶
Installation with Asyncio Support¶
WebGear_RTC API is the part of asyncio package of VidGear, thereby you need to install VidGear with asyncio support as follows:
Aiortc¶
Must Required with WebGear_RTC API. You can easily install it via pip:
Microsoft Visual C++ 14.0 is required.
Installing aiortc on windows requires Microsoft Build Tools for Visual C++ libraries installed. You can easily fix this error by installing any ONE of these choices:
While the error is calling for VC++ 14.0 - but newer versions of Visual C++ libraries works as well.
- Microsoft Build Tools for Visual Studio.
- Alternative link to Microsoft Build Tools for Visual Studio.
- Offline installer: vs_buildtools.exe
Afterwards, Select: Workloads → Desktop development with C++, then for Individual Components, select only:
- Windows 10 SDK
- C++ x64/x86 build tools
Finally, proceed installing aiortc via pip.
ASGI Server¶
You'll also need to install an ASGI Server to run following WebGear_RTC usage examples, and by default WebGear_RTC ships the state-of-the-art uvicorn Server. But you can also use other ASGI server such as daphne, or hypercorn with it.
Bare-Minimum Usage¶
Let's implement a Bare-Minimum usage example:
Running Programmatically ¶
You can access and run WebGear_RTC VideoStreamer Server programmatically in your python script in just a few lines of code, as follows:
For accessing WebGear_RTC on different Client Devices on the network, use "0.0.0.0" as host value instead of "localhost" on Host Machine. More information can be found here âž¶
We are using frame_size_reduction attribute for frame size reduction (in percentage) to be streamed with its options dictionary parameter to cope with performance-throttling in this example.
which can be accessed on any browser on your machine at http://localhost:8000/.
Running from Terminal ¶
You can also access and run WebGear_RTC Server directly from the terminal commandline. The following command will run a WebGear_RTC VideoStreamer server at http://localhost:8000/:
Make sure your PYTHON_PATH is set to python 3.7+ versions only.
If you're using --options/-op flag, then kindly wrap your dictionary value in single '' quotes.
python3 -m vidgear.gears.asyncio --mode webrtc --source test.avi --logging --options '{"frame_size_reduction": 50, "frame_jpeg_quality": 80, "frame_jpeg_optimize": True, "frame_jpeg_progressive": False}'
which can also be accessed on any browser on the network at http://localhost:8000/.
Advanced Usage from Terminal
You can run python3 -m vidgear.gears.asyncio -h help command to see all the advanced settings, as follows:
usage: python -m vidgear.gears.asyncio [-h] [-m MODE] [-s SOURCE] [-a API] [-S] [-b BACKEND]
[-cs COLORSPACE] [-cn CAMERA_NUM] [-r RESOLUTION] [-f FRAMERATE]
[-yt] [-sd SOURCE_DEMUXER] [-ff FRAME_FORMAT] [-cf CUSTOM_FFMPEG]
[-td TIME_DELAY] [-ip IPADDRESS] [-pt PORT] [-l] [-op OPTIONS]
Runs WebGear/WebGear_RTC Video Server through terminal.
options:
-h, --help show this help message and exit
-m {mjpeg,webrtc}, --mode {mjpeg,webrtc}
Whether to use "MJPEG" or "WebRTC" mode for streaming.
-a {camgear,pigear,ffgear}, --api {camgear,pigear,ffgear}
Selects the capture backend for VideoGear. Choices: camgear, pigear, ffgear. Default: camgear.
-ep, --enablePiCamera
[DEPRECATED] Use `--api pigear` instead. Sets the flag to access PiGear API.
-S, --stabilize Enables real-time video stabilization.
-s SOURCE, --source SOURCE
Path to input source (device index, filepath, URL, or glob pattern).
-yt, --stream_mode Enables YouTube/yt_dlp Stream Mode in CamGear/FFGear API.
-b BACKEND, --backend BACKEND
Sets the backend of the video source in CamGear API (e.g. cv2.CAP_DSHOW).
-sd SOURCE_DEMUXER, --source_demuxer SOURCE_DEMUXER
[FFGear only] FFmpeg demuxer for the source (e.g. "v4l2", "dshow"). Default: auto-detect.
-ff FRAME_FORMAT, --frame_format FRAME_FORMAT
[FFGear only] Pixel format for decoded frames (e.g. "bgr24", "gray"). Default: bgr24.
-cf CUSTOM_FFMPEG, --custom_ffmpeg CUSTOM_FFMPEG
[FFGear only] Path to a custom FFmpeg executable. Default: use PATH.
-cn CAMERA_NUM, --camera_num CAMERA_NUM
[PiGear only] Sets the camera module index.
-r RESOLUTION, --resolution RESOLUTION
[PiGear only] Sets the resolution (width,height) for the camera module.
-f FRAMERATE, --framerate FRAMERATE
[PiGear only] Sets the framerate for the camera module.
-cs COLORSPACE, --colorspace COLORSPACE
Sets the colorspace of the output video stream.
-td TIME_DELAY, --time_delay TIME_DELAY
Sets the time delay (in seconds) before start reading the frames.
-ip IPADDRESS, --ipaddress IPADDRESS
Uvicorn binds the socket to this ipaddress.
-pt PORT, --port PORT
Uvicorn binds the socket to this port.
-l, --logging Enables/disables error logging, essential for debugging.
-op OPTIONS, --options OPTIONS
Sets the parameters supported by APIs (whichever being accessed) to the input videostream. Wrap your dict value in
single or double quotes.