🐛📝 Refactor documentation for improved clarity and consistency

- Updated various FAQ sections across multiple documents to enhance readability and provide clearer answers.
- Changed instances of ` ` to ` ` for better formatting in Markdown files.
- Renamed example sections to include "Bonus" for better categorization.
- Added links to relevant sections and usage examples for better navigation.
- Ensured consistent formatting and structure throughout the documentation.
This commit is contained in:
abhiTronix
2025-11-10 10:45:12 +05:30
committed by Abhishek Thakur
parent e0d919a8da
commit bcb7d44224
39 changed files with 223 additions and 223 deletions
@@ -28,7 +28,7 @@ limitations under the License.
Bidirectional Mode enables seamless support for Bidirectional data transmission between Client/Consumer and Sender/Publisher along with video-frames through its synchronous messaging patterns such as `zmq.PAIR` (ZMQ Pair Pattern) & `zmq.REQ/zmq.REP` (ZMQ Request/Reply Pattern).
In Bidirectional Mode, we utilizes the NetGear API's [`message`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.send) parameter of `send()` method for sending data from Server-to-Client, and [`return_data`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.recv) parameter of `recv()` method to return data back from Client-to-Server all while transferring frames in real-time.
In Bidirectional Mode, we utilizes the NetGear API's [`message`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.send) parameter of `send()` method for sending data from Server-to-Client, and [`return_data`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.recv) parameter of `recv()` method to return data back from Client-to-Server all while transferring frames in real-time.
This mode can be easily activated in NetGear through `bidirectional_mode` attribute of its [`options`](../../params/#options) dictionary parameter during initialization.
@@ -72,9 +72,9 @@ This mode can be easily activated in NetGear through `bidirectional_mode` attrib
To send data bidirectionally, NetGear API provides two exclusive parameters for its methods:
* [`message`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.send): It enables user to send data to Client, directly through `send()` method at Server's end.
* [`message`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.send): It enables user to send data to Client, directly through `send()` method at Server's end.
* [`return_data`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.recv): It enables user to send data back to Server, directly through `recv()` method at Client's end.
* [`return_data`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.recv): It enables user to send data back to Server, directly through `recv()` method at Client's end.
 
@@ -612,7 +612,7 @@ client.close()
[^1]:
!!! warning "Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **ONLY SUPPORTED** at Client's end with its [`return_data`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.recv) parameter."
!!! warning "Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **ONLY SUPPORTED** at Client's end with its [`return_data`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.recv) parameter."
 
+2 -2
View File
@@ -800,7 +800,7 @@ client.close()
!!! warning "Important Information"
* Bidirectional data transfer **ONLY** works with pattern `1` _(i.e. Request/Reply `zmq.REQ/zmq.REP`)_, and **NOT** with pattern `2` _(i.e. Publish/Subscribe `zmq.PUB/zmq.SUB`)_
* Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **NOT SUPPORTED** at Server's end with its [`message`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.send) parameter.
* Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **NOT SUPPORTED** at Server's end with its [`message`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.send) parameter.
* Bidirectional Mode may lead to additional **LATENCY** depending upon the size of data being transfer bidirectionally. User discretion is advised!
??? new "New in v0.2.5"
@@ -1145,4 +1145,4 @@ client.close()
[^1]:
!!! warning "Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **NOT SUPPORTED** at Server's end with its [`message`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.send) parameter."
!!! warning "Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **NOT SUPPORTED** at Server's end with its [`message`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.send) parameter."
+2 -2
View File
@@ -814,7 +814,7 @@ Finally, Open the terminal on another Server System _(this time a Raspberry Pi w
!!! warning "Important Information"
* Bidirectional data transfer **ONLY** works with pattern `1` _(i.e. Request/Reply `zmq.REQ/zmq.REP`)_, and **NOT** with pattern `2` _(i.e. Publish/Subscribe `zmq.PUB/zmq.SUB`)_
* Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **NOT SUPPORTED** at Server(s) with their [`message`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.send) parameter.
* Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **NOT SUPPORTED** at Server(s) with their [`message`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.send) parameter.
* Bidirectional Mode may lead to additional **LATENCY** depending upon the size of data being transfer bidirectionally. User discretion is advised!
??? new "New in v0.2.5"
@@ -1152,4 +1152,4 @@ Finally, Open the terminal on another Server System _(this time a Raspberry Pi w
[^1]:
!!! warning "Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **NOT SUPPORTED** at Server(s) with their [`message`](../../../../bonus/reference/netgear/#vidgear.gears.netgear.NetGear.send) parameter."
!!! warning "Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) data-type is **NOT SUPPORTED** at Server(s) with their [`message`](../../../../bonus/reference/netgear/#vidgear.gears.NetGear.send) parameter."
@@ -31,7 +31,7 @@ limitations under the License.
Bidirectional Mode enables seamless support for Bidirectional data transmission between Client and Sender along with video-frames through its synchronous messaging patterns such as `zmq.PAIR` (ZMQ Pair Pattern) & `zmq.REQ/zmq.REP` (ZMQ Request/Reply Pattern) in NetGear_Async API.
In Bidirectional Mode, we utilizes the NetGear_Async API's [`transceive_data`](../../../../bonus/reference/netgear_async/#vidgear.gears.asyncio.netgear_async.NetGear_Async.transceive_data) method for transmitting data _(at Client's end)_ and receiving data _(in Server's end)_ all while transferring frames in real-time.
In Bidirectional Mode, we utilizes the NetGear_Async API's [`transceive_data`](../../../../bonus/reference/netgear_async/#vidgear.gears.asyncio.NetGear_Async.transceive_data) method for transmitting data _(at Client's end)_ and receiving data _(in Server's end)_ all while transferring frames in real-time.
This mode can be easily activated in NetGear_Async through `bidirectional_mode` attribute of its [`options`](../../params/#options) dictionary parameter during initialization.
@@ -61,7 +61,7 @@ To send data bidirectionally, NetGear_Async API provides following exclusive met
!!! alert "`transceive_data` only works when Bidirectional Mode is enabled."
* [`transceive_data`](../../../../bonus/reference/NetGear_Async/#vidgear.gears.asyncio.netgear_async.NetGear_Async.transceive_data): It's a bidirectional mode exclusive method to transmit data _(in Receive mode)_ and receive data _(in Send mode)_, all while transferring frames in real-time.
* [`transceive_data`](../../../../bonus/reference/NetGear_Async/#vidgear.gears.asyncio.NetGear_Async.transceive_data): It's a bidirectional mode exclusive method to transmit data _(in Receive mode)_ and receive data _(in Send mode)_, all while transferring frames in real-time.
* `data`: In `transceive_data` method, this parameter enables user to inputs data _(of **ANY**[^1] datatype)_ for sending back to Server at Client's end.
@@ -690,7 +690,7 @@ if __name__ == "__main__":
[^1]:
!!! warning "Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) datatype is **ONLY SUPPORTED** at Client's end with [`transceive_data`](../../../../bonus/reference/NetGear_Async/#vidgear.gears.asyncio.netgear_async.NetGear_Async.transceive_data) method using its `data` parameter. Whereas Server end can only send [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) datatype as frame but not as data."
!!! warning "Additional data of [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) datatype is **ONLY SUPPORTED** at Client's end with [`transceive_data`](../../../../bonus/reference/NetGear_Async/#vidgear.gears.asyncio.NetGear_Async.transceive_data) method using its `data` parameter. Whereas Server end can only send [numpy.ndarray](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) datatype as frame but not as data."
 
+2 -2
View File
@@ -74,9 +74,9 @@ StreamGear primarily operates in following independent modes for transcoding:
???+ alert "Real-time Frames Mode itself is NOT Live-Streaming :material-video-wireless-outline:"
To enable live-streaming in Real-time Frames Mode, use the exclusive [`-livestream`](../params/#a-exclusive-parameters) attribute of the `stream_params` dictionary parameter in the StreamGear API. Checkout [this usage example ➶](../rtfm/usage/#bare-minimum-usage-with-live-streaming) for more information.
- [**Single-Source Mode :material-file-video-outline:**](../ssm/overview) : In this mode, StreamGear **transcodes entire video file** _(as opposed to frame-by-frame)_ into a sequence of multiple smaller chunks/segments for streaming. This mode works exceptionally well when you're transcoding long-duration lossless videos(with audio) for streaming that required no interruptions. But on the downside, the provided source cannot be flexibly manipulated or transformed before sending onto FFmpeg Pipeline for processing.
- [**Single-Source Mode :material-file-video-outline:**](../ssm/#overview) : In this mode, StreamGear **transcodes entire video file** _(as opposed to frame-by-frame)_ into a sequence of multiple smaller chunks/segments for streaming. This mode works exceptionally well when you're transcoding long-duration lossless videos(with audio) for streaming that required no interruptions. But on the downside, the provided source cannot be flexibly manipulated or transformed before sending onto FFmpeg Pipeline for processing.
- [**Real-time Frames Mode :material-camera-burst:**](../rtfm/overview) : In this mode, StreamGear directly **transcodes frame-by-frame** _(as opposed to a entire video file)_, into a sequence of multiple smaller chunks/segments for streaming. This mode works exceptionally well when you desire to flexibility manipulate or transform [`numpy.ndarray`](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) frames in real-time before sending them onto FFmpeg Pipeline for processing. But on the downside, audio has to added manually _(as separate source)_ for streams.
- [**Real-time Frames Mode :material-camera-burst:**](../rtfm/#overview) : In this mode, StreamGear directly **transcodes frame-by-frame** _(as opposed to a entire video file)_, into a sequence of multiple smaller chunks/segments for streaming. This mode works exceptionally well when you desire to flexibility manipulate or transform [`numpy.ndarray`](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) frames in real-time before sending them onto FFmpeg Pipeline for processing. But on the downside, audio has to added manually _(as separate source)_ for streams.
 
+5 -5
View File
@@ -210,7 +210,7 @@ StreamGear API provides some exclusive internal parameters to easily generate St
 
* **`-video_source`** _(string)_: This attribute takes a valid video path as input and activates [**Single-Source Mode**](../ssm/overview), for transcoding it into multiple smaller chunks/segments for streaming after successful validation. Its value can be one of the following:
* **`-video_source`** _(string)_: This attribute takes a valid video path as input and activates [**Single-Source Mode**](../ssm/#overview), for transcoding it into multiple smaller chunks/segments for streaming after successful validation. Its value can be one of the following:
* **Video Filename**: Valid path to a video file as follows:
@@ -270,9 +270,9 @@ StreamGear API provides some exclusive internal parameters to easily generate St
 
* **`-livestream`** _(bool)_: ***(optional)*** specifies whether to enable **Low-latency Live-Streaming :material-video-wireless-outline:** in [**Real-time Frames Mode**](../rtfm/overview) only, where chunks will contain information for new frames only and forget previous ones, or not. The default value is `False`. It can be used as follows:
* **`-livestream`** _(bool)_: ***(optional)*** specifies whether to enable **Low-latency Live-Streaming :material-video-wireless-outline:** in [**Real-time Frames Mode**](../rtfm/#overview) only, where chunks will contain information for new frames only and forget previous ones, or not. The default value is `False`. It can be used as follows:
!!! warning "The `-livestream` optional parameter is **NOT** supported in [Single-Source mode](../ssm/overview)."
!!! warning "The `-livestream` optional parameter is **NOT** supported in [Single-Source mode](../ssm/#overview)."
```python
stream_params = {"-livestream": True} # enable live-streaming
@@ -384,9 +384,9 @@ All encoders and decoders compiled with the FFmpeg in use are supported by the S
???+ tip "Faster Transcoding with Stream Copy in Single Source Mode"
For faster transcoding of input video, utilize Stream copy (`-vcodec copy`) as the input video encoder in the [**Single-Source Mode**](../ssm/overview) for creating HLS/DASH chunks of the primary stream efficiently. However, consider the following points:
For faster transcoding of input video, utilize Stream copy (`-vcodec copy`) as the input video encoder in the [**Single-Source Mode**](../ssm/#overview) for creating HLS/DASH chunks of the primary stream efficiently. However, consider the following points:
- :warning: Stream copy is **NOT** compatible with [**Real-time Frames Mode**](../rtfm/overview), as this mode necessitates re-encoding of incoming frames. Therefore, the `-vcodec copy` parameter will be ignored.
- :warning: Stream copy is **NOT** compatible with [**Real-time Frames Mode**](../rtfm/#overview), as this mode necessitates re-encoding of incoming frames. Therefore, the `-vcodec copy` parameter will be ignored.
- :warning: Stream copying **NOT** compatible with Custom Streams ([`-streams`](#a-exclusive-parameters)), which also require re-encoding for each additional stream. Consequently, the `-vcodec copy` parameter will be ignored.
- When using the audio stream from the input video, the Audio Stream copy (`-acodec copy`) encoder will be automatically applied.
+11 -11
View File
@@ -29,13 +29,13 @@ limitations under the License.
## Overview
When no valid input is received on [`-video_source`](../../params/#a-exclusive-parameters) attribute of [`stream_params`](../../params/#supported-parameters) dictionary parameter, StreamGear API activates this mode where it directly transcodes real-time [`numpy.ndarray`](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) video-frames _(as opposed to a entire video file)_ into a sequence of multiple smaller chunks/segments for adaptive streaming.
When no valid input is received on [`-video_source`](../params/#a-exclusive-parameters) attribute of [`stream_params`](../params/#supported-parameters) dictionary parameter, StreamGear API activates this mode where it directly transcodes real-time [`numpy.ndarray`](https://numpy.org/doc/1.18/reference/generated/numpy.ndarray.html#numpy-ndarray) video-frames _(as opposed to a entire video file)_ into a sequence of multiple smaller chunks/segments for adaptive streaming.
This mode works exceptionally well when you desire to flexibility manipulate or transform video-frames in real-time before sending them onto FFmpeg Pipeline for processing. But on the downside, StreamGear **DOES NOT** automatically maps video-source's audio to generated streams with this mode. You need to manually assign separate audio-source through [`-audio`](../../params/#a-exclusive-parameters) attribute of `stream_params` dictionary parameter.
This mode works exceptionally well when you desire to flexibility manipulate or transform video-frames in real-time before sending them onto FFmpeg Pipeline for processing. But on the downside, StreamGear **DOES NOT** automatically maps video-source's audio to generated streams with this mode. You need to manually assign separate audio-source through [`-audio`](../params/#a-exclusive-parameters) attribute of `stream_params` dictionary parameter.
SteamGear supports both [**MPEG-DASH**](https://www.encoding.com/mpeg-dash/) _(Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1)_ and [**Apple HLS**](https://developer.apple.com/documentation/http_live_streaming) _(HTTP Live Streaming)_ with this mode.
For this mode, StreamGear API provides exclusive [`stream()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.stream) method for directly trancoding video-frames into streamable chunks.
For this mode, StreamGear API provides exclusive [`stream()`](../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.stream) method for directly trancoding video-frames into streamable chunks.
 
@@ -45,16 +45,16 @@ For this mode, StreamGear API provides exclusive [`stream()`](../../../../bonus/
!!! alert "Real-time Frames Mode itself is NOT Live-Streaming :material-video-wireless-outline:"
To enable live-streaming in Real-time Frames Mode, use the exclusive [`-livestream`](../params/#a-exclusive-parameters) attribute of the `stream_params` dictionary parameter in the StreamGear API. Checkout [this usage example ➶](../usage/#bare-minimum-usage-with-live-streaming) for more information.
To enable live-streaming in Real-time Frames Mode, use the exclusive [`-livestream`](params/#a-exclusive-parameters) attribute of the `stream_params` dictionary parameter in the StreamGear API. Checkout [this usage example ➶](usage/#bare-minimum-usage-with-live-streaming) for more information.
!!! danger "Please Remember :material-police-badge-outline:"
* Using [`transcode_source()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.transcode_source) function instead of [`stream()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.stream) in Real-time Frames Mode will immediately result in **`RuntimeError`**!
* Using [`transcode_source()`](../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.transcode_source) function instead of [`stream()`](../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.stream) in Real-time Frames Mode will immediately result in **`RuntimeError`**!
* **NEVER** assign anything to [`-video_source`](../../params/#a-exclusive-parameters) attribute of [`stream_params`](../../params/#supported-parameters) dictionary parameter, otherwise [Single-Source Mode](../#a-single-source-mode) get activated, and as a result, using [`stream()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.stream) function will throw **`RuntimeError`**!
* **NEVER** assign anything to [`-video_source`](../params/#a-exclusive-parameters) attribute of [`stream_params`](../params/#supported-parameters) dictionary parameter, otherwise [Single-Source Mode](../ssm/#streamgear-api-single-source-mode) get activated, and as a result, using [`stream()`](../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.stream) function will throw **`RuntimeError`**!
* Input framerate defaults to `25.0` fps if [`-input_framerate`](../../params/#a-exclusive-parameters) attribute value not defined.
* Input framerate defaults to `25.0` fps if [`-input_framerate`](../params/#a-exclusive-parameters) attribute value not defined.
 
@@ -62,7 +62,7 @@ For this mode, StreamGear API provides exclusive [`stream()`](../../../../bonus/
## Usage Examples
<div>
<a href="../usage/">See here 🚀</a>
<a href="usage/">See here 🚀</a>
</div>
!!! example "After going through StreamGear Usage Examples, Checkout more of its advanced configurations [here ➶](../../../help/streamgear_ex/)"
@@ -71,20 +71,20 @@ For this mode, StreamGear API provides exclusive [`stream()`](../../../../bonus/
## Parameters
<div>
<a href="../../params/">See here 🚀</a>
<a href="../params/">See here 🚀</a>
</div>
## References
<div>
<a href="../../../../bonus/reference/streamgear/">See here 🚀</a>
<a href="../../../bonus/reference/streamgear/">See here 🚀</a>
</div>
## FAQs
<div>
<a href="../../../../help/streamgear_faqs/">See here 🚀</a>
<a href="../../../help/streamgear_faqs/">See here 🚀</a>
</div>
&thinsp;
+2 -2
View File
@@ -35,8 +35,8 @@ limitations under the License.
??? danger "DEPRECATION NOTICES for `v0.3.3` and above"
- [ ] The `terminate()` method in StreamGear is now deprecated and will be removed in a future release. Developers should use the new [`close()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.close) method instead, as it offers a more descriptive name, similar to the WriteGear API, for safely terminating StreamGear processes.
- [ ] The `rgb_mode` parameter in [`stream()`](../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.stream) method, which earlier used to support RGB frames in Real-time Frames Mode is now deprecated, and will be removed in a future version. Only BGR format frames will be supported going forward. Please update your code to handle BGR format frames.
- [ ] The `terminate()` method in StreamGear is now deprecated and will be removed in a future release. Developers should use the new [`close()`](../../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.close) method instead, as it offers a more descriptive name, similar to the WriteGear API, for safely terminating StreamGear processes.
- [ ] The `rgb_mode` parameter in [`stream()`](../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.stream) method, which earlier used to support RGB frames in Real-time Frames Mode is now deprecated, and will be removed in a future version. Only BGR format frames will be supported going forward. Please update your code to handle BGR format frames.
!!! example "After going through following Usage Examples, Checkout more of its advanced configurations [here ➶](../../../help/streamgear_ex/)"
+8 -8
View File
@@ -34,9 +34,9 @@ This mode works exceptionally well when you're transcoding long-duration lossles
SteamGear supports both [**MPEG-DASH**](https://www.encoding.com/mpeg-dash/) _(Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1)_ and [**Apple HLS**](https://developer.apple.com/documentation/http_live_streaming) _(HTTP Live Streaming)_ with this mode.
For this mode, StreamGear API provides exclusive [`transcode_source()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.transcode_source) method to easily process audio-video files into streamable chunks.
For this mode, StreamGear API provides exclusive [`transcode_source()`](../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.transcode_source) method to easily process audio-video files into streamable chunks.
This mode can be easily activated by assigning suitable video path as input to [`-video_source`](../../params/#a-exclusive-parameters) attribute of [`stream_params`](../../params/#stream_params) dictionary parameter, during StreamGear initialization.
This mode can be easily activated by assigning suitable video path as input to [`-video_source`](../params/#a-exclusive-parameters) attribute of [`stream_params`](../params/#stream_params) dictionary parameter, during StreamGear initialization.
&emsp;
@@ -47,15 +47,15 @@ This mode can be easily activated by assigning suitable video path as input to [
!!! danger "Please Remember :material-police-badge-outline:"
* Using [`stream()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.stream) function instead of [`transcode_source()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.transcode_source) in Single-Source Mode will instantly result in **`RuntimeError`**!
* Any invalid value to the [`-video_source`](../../params/#a-exclusive-parameters) attribute will result in **`AssertionError`**!
* Using [`stream()`](../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.stream) function instead of [`transcode_source()`](../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.transcode_source) in Single-Source Mode will instantly result in **`RuntimeError`**!
* Any invalid value to the [`-video_source`](../params/#a-exclusive-parameters) attribute will result in **`AssertionError`**!
&thinsp;
## Usage Examples
<div>
<a href="../usage/">See here 🚀</a>
<a href="usage/">See here 🚀</a>
</div>
!!! example "After going through StreamGear Usage Examples, Checkout more of its advanced configurations [here ➶](../../../help/streamgear_ex/)"
@@ -64,20 +64,20 @@ This mode can be easily activated by assigning suitable video path as input to [
## Parameters
<div>
<a href="../../params/">See here 🚀</a>
<a href="../params/">See here 🚀</a>
</div>
## References
<div>
<a href="../../../../bonus/reference/streamgear/">See here 🚀</a>
<a href="../../../bonus/reference/streamgear/">See here 🚀</a>
</div>
## FAQs
<div>
<a href="../../../../help/streamgear_faqs/">See here 🚀</a>
<a href="../../../help/streamgear_faqs/">See here 🚀</a>
</div>
+2 -2
View File
@@ -29,7 +29,7 @@ limitations under the License.
??? danger "DEPRECATION NOTICES for `v0.3.3` and above"
- [ ] The `terminate()` method in StreamGear is now deprecated and will be removed in a future release. Developers should use the new [`close()`](../../../../bonus/reference/streamgear/#vidgear.gears.streamgear.StreamGear.close) method instead, as it offers a more descriptive name, similar to the WriteGear API, for safely terminating StreamGear processes.
- [ ] The `terminate()` method in StreamGear is now deprecated and will be removed in a future release. Developers should use the new [`close()`](../../../../bonus/reference/streamgear/#vidgear.gears.StreamGear.close) method instead, as it offers a more descriptive name, similar to the WriteGear API, for safely terminating StreamGear processes.
- [ ] The [`-livestream`](../../params/#a-exclusive-parameters) optional parameter is NOT supported in this Single-Source Mode.
??? tip "Faster Transcoding of Primary Stream with Stream Copy in Single Source Mode"
@@ -39,7 +39,7 @@ limitations under the License.
- :warning: Stream copying **NOT** compatible with Custom Streams ([`-streams`](../../params/#a-exclusive-parameters)), which require re-encoding for each additional stream. Therefore, the `-vcodec copy` parameter will be ignored.
- When using the audio stream from the input video, the Audio Stream copy (`-acodec copy`) encoder will be automatically applied.
!!! example "After going through following Usage Examples, Checkout more of its advanced configurations [here ➶](../../../help/streamgear_ex/)"
!!! example "After going through following Usage Examples, Checkout more of its advanced configurations [here ➶](../../../../help/streamgear_ex/)"
&thinsp;
@@ -20,7 +20,7 @@ limitations under the License.
# Custom FFmpeg Commands in WriteGear API
WriteGear API now provides the **[`execute_ffmpeg_cmd`](../../../../../bonus/reference/writegear/#vidgear.gears.writegear.WriteGear.execute_ffmpeg_cmd) Method** in [Compression Mode](../../) that enables the user to pass any custom FFmpeg CLI _(Command Line Interface)_ commands as input to its internal FFmpeg Pipeline by formating it as a list.
WriteGear API now provides the **[`execute_ffmpeg_cmd`](../../../../../bonus/reference/writegear/#vidgear.gears.WriteGear.execute_ffmpeg_cmd) Method** in [Compression Mode](../../) that enables the user to pass any custom FFmpeg CLI _(Command Line Interface)_ commands as input to its internal FFmpeg Pipeline by formating it as a list.
This opens endless possibilities of exploiting every FFmpeg params within WriteGear without relying on a third-party API to do the same and while doing that it robustly handles all errors/warnings quietly.
@@ -57,7 +57,7 @@ This opens endless possibilities of exploiting every FFmpeg params within WriteG
## Methods
### **[`execute_ffmpeg_cmd`](../../../../../bonus/reference/writegear/#vidgear.gears.writegear.WriteGear.execute_ffmpeg_cmd)**
### **[`execute_ffmpeg_cmd`](../../../../../bonus/reference/writegear/#vidgear.gears.WriteGear.execute_ffmpeg_cmd)**
This method allows the users to pass the custom FFmpeg terminal commands as a _**formatted list**_ directly to WriteGear API's FFmpeg pipeline for processing/execution. Its usage is as follows:
+10 -10
View File
@@ -27,9 +27,9 @@ limitations under the License.
## Overview
When [`compression_mode`](../params/#compression_mode) parameter is enabled (.i.e `compression_mode = True`), WriteGear API provides a complete, flexible & robust wrapper around [**FFmpeg**](https://ffmpeg.org/) to encode lossless & compressed multimedia files.
When [`compression_mode`](params/#compression_mode) parameter is enabled (.i.e `compression_mode = True`), WriteGear API provides a complete, flexible & robust wrapper around [**FFmpeg**](https://ffmpeg.org/) to encode lossless & compressed multimedia files.
This mode can process real-time video frames into a lossless compressed format with any suitable setting video/audio properties such as _bitrate, codec, framerate, resolution, subtitles, and much more_ in just a few easy lines of code. It can also perform complex tasks such as [Live-Streaming](../usage/#using-compression-mode-for-live-streaming) _(such as for Twitch)_, multiplexing video with audio in real-time (see this [usage example](../usage/#using-compression-mode-with-live-audio-input)) while handling all errors robustly.
This mode can process real-time video frames into a lossless compressed format with any suitable setting video/audio properties such as _bitrate, codec, framerate, resolution, subtitles, and much more_ in just a few easy lines of code. It can also perform complex tasks such as [Live-Streaming](usage/#using-compression-mode-for-live-streaming) _(such as for Twitch)_, multiplexing video with audio in real-time (see this [usage example](usage/#using-compression-mode-with-live-audio-input)) while handling all errors robustly.
&nbsp;
@@ -37,14 +37,14 @@ This mode can process real-time video frames into a lossless compressed format w
!!! danger "Important Information"
* WriteGear **MUST** requires FFmpeg executables for its Compression capabilities. Follow these dedicated [Installation Instructions ➶](../advanced/ffmpeg_install/) for its installation.
* WriteGear **MUST** requires FFmpeg executables for its Compression capabilities. Follow these dedicated [Installation Instructions ➶](advanced/ffmpeg_install/) for its installation.
* In case WriteGear API fails to detect valid FFmpeg executables on your system _(even if Compression Mode is enabled)_, it automatically fallbacks to [Non-Compression Mode](../../non_compression/).
* In case WriteGear API fails to detect valid FFmpeg executables on your system _(even if Compression Mode is enabled)_, it automatically fallbacks to [Non-Compression Mode](../non_compression/).
* It is advised to enable logging([`logging = True`](../params/#logging)) to see the FFmpeg command that is being executed in WriteGear's pipeline. This helps you debug any issues/errors easily and make suitable adjustments accordingly.
* It is advised to enable logging([`logging = True`](params/#logging)) to see the FFmpeg command that is being executed in WriteGear's pipeline. This helps you debug any issues/errors easily and make suitable adjustments accordingly.
!!! tip "You can speed up the execution time by disabling logging (.i.e [`logging = False`](../params/#logging)) for production use, and by tweaking FFmpeg parameters in [`output_params`](../params/#output_params) values. Look into [FFmpeg docs ➶](https://ffmpeg.org/documentation.html) for such hacks."
!!! tip "You can speed up the execution time by disabling logging (.i.e [`logging = False`](params/#logging)) for production use, and by tweaking FFmpeg parameters in [`output_params`](params/#output_params) values. Look into [FFmpeg docs ➶](https://ffmpeg.org/documentation.html) for such hacks."
&nbsp;
@@ -52,11 +52,11 @@ This mode can process real-time video frames into a lossless compressed format w
## Custom FFmpeg Commands in WriteGear API
WriteGear API now provides the **[`execute_ffmpeg_cmd`](../../../../bonus/reference/writegear/#vidgear.gears.writegear.WriteGear.execute_ffmpeg_cmd) Function** in Compression Mode, that enables the user to pass any custom CLI commands as an input to its internal FFmpeg Pipeline by formating it as a list.
WriteGear API now provides the **[`execute_ffmpeg_cmd`](../../../bonus/reference/writegear/#vidgear.gears.WriteGear.execute_ffmpeg_cmd) Function** in Compression Mode, that enables the user to pass any custom CLI commands as an input to its internal FFmpeg Pipeline by formating it as a list.
This function opens endless possibilities of exploiting any FFmpeg supported parameter within WriteGear, without relying on a third-party library/API to do the same, and while doing that it robustly handles all errors/warnings quietly.
!!! tip "A complete guide on `execute_ffmpeg_cmd` Function can be found [here ➶](../advanced/cciw/)"
!!! tip "A complete guide on `execute_ffmpeg_cmd` Function can be found [here ➶](advanced/cciw/)"
&nbsp;
@@ -64,7 +64,7 @@ This function opens endless possibilities of exploiting any FFmpeg supported par
## Usage Examples
<div>
<a href="../usage/">See here 🚀</a>
<a href="usage/">See here 🚀</a>
</div>
!!! examples "After going through WriteGear Usage Examples, Checkout more bonus examples [here ➶](../../../help/writegear_ex/)"
@@ -73,7 +73,7 @@ This function opens endless possibilities of exploiting any FFmpeg supported par
## Parameters
<div>
<a href="../params/">See here 🚀</a>
<a href="params/">See here 🚀</a>
</div>
&thinsp;
+4 -4
View File
@@ -38,7 +38,7 @@ limitations under the License.
* Always use `writer.close()` at the very end of the main code. **NEVER USE IT INBETWEEN CODE** to avoid undesired behavior.
!!! example "After going through WriteGear Usage Examples, Checkout more bonus examples [here ➶](../../../help/writegear_ex/)"
!!! example "After going through WriteGear Usage Examples, Checkout more bonus examples [here ➶](../../../../help/writegear_ex/)"
&thinsp;
@@ -96,7 +96,7 @@ writer.close()
## Using Compression Mode in RGB Mode
In Compression Mode, WriteGear API contains [`rgb_mode`](../../../../bonus/reference/writegear/#vidgear.gears.writegear.WriteGear.write) boolean parameter for RGB Mode, which when enabled _(i.e. `rgb_mode=True`)_, specifies that incoming frames are of RGB format _(instead of default BGR format)_. This mode makes WriteGear directly compatible with libraries that only supports RGB format.
In Compression Mode, WriteGear API contains [`rgb_mode`](../../../../bonus/reference/writegear/#vidgear.gears.WriteGear.write) boolean parameter for RGB Mode, which when enabled _(i.e. `rgb_mode=True`)_, specifies that incoming frames are of RGB format _(instead of default BGR format)_. This mode makes WriteGear directly compatible with libraries that only supports RGB format.
The complete usage example is as follows:
@@ -225,9 +225,9 @@ In Compression Mode, WriteGear also allows URL strings _(as output)_ for live st
In this example, we will stream live camera frames directly to Twitch :fontawesome-brands-twitch::
!!! tip "For streaming with traditional protocols such as :material-video-wireless: RTSP/RTP, Checkout this [WriteGear's Bonus Examples ➶](../../../../help/writegear_ex/#using-writegears-compression-mode-for-rtsprtp-live-streaming)."
!!! tip "For streaming with traditional protocols such as :material-video-wireless: RTSP/RTP, Checkout this [WriteGear's Bonus Examples ➶](../../../../../help/writegear_ex/#using-writegears-compression-mode-for-rtsprtp-live-streaming)."
!!! example ":fontawesome-brands-youtube: YouTube-Live Streaming example code also available in [WriteGear's Bonus Examples ➶](../../../../help/writegear_ex/#using-writegears-compression-mode-for-youtube-live-streaming)"
!!! example ":fontawesome-brands-youtube: YouTube-Live Streaming example code also available in [WriteGear's Bonus Examples ➶](../../../../../help/writegear_ex/#using-writegears-compression-mode-for-youtube-live-streaming)"
!!! warning "This example assume you already have a [**Twitch Account**](https://www.twitch.tv/) for publishing video."
@@ -28,9 +28,9 @@ limitations under the License.
## Overview
When [`compression_mode`](../params/#compression_mode) parameter is disabled (.i.e `compression_mode = False`), WriteGear API uses basic OpenCV's inbuilt [**VideoWriter API**](https://docs.opencv.org/master/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5) tools for encoding multimedia files but without compression.
When [`compression_mode`](params/#compression_mode) parameter is disabled (.i.e `compression_mode = False`), WriteGear API uses basic OpenCV's inbuilt [**VideoWriter API**](https://docs.opencv.org/master/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5) tools for encoding multimedia files but without compression.
This mode provides flexible access to [**OpenCV's VideoWriter API**](https://docs.opencv.org/master/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5),and also supports various parameters available within this API, but lacks the ability to control output quality, compression, and other important features like _lossless video compression, audio encoding, etc._ which are only available in [Compression Mode](../../compression/). Thereby, the resultant output video-file size will be many times larger as compared to Compression Mode.
This mode provides flexible access to [**OpenCV's VideoWriter API**](https://docs.opencv.org/master/dd/d9e/classcv_1_1VideoWriter.html#ad59c61d8881ba2b2da22cff5487465b5),and also supports various parameters available within this API, but lacks the ability to control output quality, compression, and other important features like _lossless video compression, audio encoding, etc._ which are only available in [Compression Mode](../compression/). Thereby, the resultant output video-file size will be many times larger as compared to Compression Mode.
&nbsp;
@@ -48,7 +48,7 @@ This mode provides flexible access to [**OpenCV's VideoWriter API**](https://doc
## Usage Examples
<div>
<a href="../usage/">See here 🚀</a>
<a href="usage/">See here 🚀</a>
</div>
!!! example "After going through WriteGear Usage Examples, Checkout more bonus examples [here ➶](../../../help/writegear_ex/)"
@@ -56,7 +56,7 @@ This mode provides flexible access to [**OpenCV's VideoWriter API**](https://doc
## Parameters
<div>
<a href="../params/">See here 🚀</a>
<a href="params/">See here 🚀</a>
</div>
&thinsp;
@@ -30,7 +30,7 @@ limitations under the License.
* Always use `writer.close()` at the very end of the main code. **NEVER USE IT INBETWEEN CODE** to avoid undesired behavior.
!!! example "After going through WriteGear Usage Examples, Checkout more bonus examples [here ➶](../../../help/writegear_ex/)"
!!! example "After going through WriteGear Usage Examples, Checkout more bonus examples [here ➶](../../../../help/writegear_ex/)"
&thinsp;
+5 -5
View File
@@ -18,9 +18,9 @@ limitations under the License.
===============================================
-->
# CamGear Examples
# CamGear Bonus Examples
&nbsp;
&thinsp;
## Synchronizing Two Sources in CamGear
@@ -79,7 +79,7 @@ stream1.stop()
stream2.stop()
```
&nbsp;
&thinsp;
## Using variable `yt_dlp` parameters in CamGear
@@ -131,7 +131,7 @@ stream.stop()
```
&nbsp;
&thinsp;
## Using CamGear for capturing RTSP/RTMP URLs
@@ -240,4 +240,4 @@ if __name__ == "__main__":
stream.stop()
```
&nbsp;
&thinsp;
+12 -12
View File
@@ -26,26 +26,26 @@ limitations under the License.
**Answer:** CamGear supports a diverse range of video streams which can handle/control video stream almost any IP/USB Cameras, multimedia video file format (upto 4k tested), any network stream URL such as http(s), rtp, rtsp, rtmp, mms, etc. In addition to this, it also supports live Gstreamer's RAW pipelines and YouTube video/livestreams URLs. _For more info. see [CamGear doc ➶](../../gears/camgear/)._
&nbsp;
&thinsp;
## I'm only familiar with OpenCV, how to get started with CamGear API?
**Answer:** **Answer:** First, refer to the [Switching from OpenCV](../../switch_from_cv/#switching-the-videocapture-apis) guide, then go through [CamGear documentation ➶](../../gears/camgear/). If you still have doubts, ask us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## How to change OpenCV source backend in CamGear API?
**Answer:** See [its Parameters ➶](../../gears/camgear/params/). Its, `backend`(int) parameter sets the backend of the source. Its value can be for e.g. `backend = cv2.CAP_DSHOW` in case of Direct Show.
&nbsp;
&thinsp;
## How to get framerate of the source in CamGear API?
**Answer:** CamGear's `framerate` global variable can be used to retrieve framerate of the input video stream. See [this example ➶](../../gears/writegear/compression/usage/#using-compression-mode-with-controlled-framerate).
&nbsp;
&thinsp;
## How to compile OpenCV with GStreamer support?
@@ -65,7 +65,7 @@ limitations under the License.
- [x] **Compile manually:** **Follow [this tutorial ➶](https://medium.com/testinium-tech/how-to-install-opencv-with-java-and-gstreamer-support-on-macos-c3c7b28d2864)**
&nbsp;
&thinsp;
## How to change quality and parameters of YouTube Streams with CamGear?
@@ -73,41 +73,41 @@ limitations under the License.
**Answer:** CamGear provides exclusive attributes `STREAM_RESOLUTION` _(for specifying stream resolution)_ & `STREAM_PARAMS` _(for specifying underlying API(e.g. `yt_dlp`) parameters)_ with its [`options`](../../gears/camgear/params/#options) dictionary parameter. See [this Bonus Example ➶](../camgear_ex/#using-variable-yt_dlp-parameters-in-camgear).
&nbsp;
&thinsp;
## How to open RTSP network streams with CamGear?
**Answer:** You can open any local network stream _(such as RTSP)_ just by providing its URL directly to CamGear's [`source`](../../gears/camgear/params/#source) parameter. See [this Bonus Example ➶](../camgear_ex/#using-camgear-for-capturing-rtsprtmp-urls).
&nbsp;
&thinsp;
## How to set Camera Settings with CamGear?
**Answer:** See [this usage example ➶](../../gears/camgear/usage/#using-camgear-with-variable-camera-properties).
&nbsp;
&thinsp;
## Can I play 4K/8k video with CamGear API?
**Answer:** Yes, you can if your System Hardware supports it.
&nbsp;
&thinsp;
## How to synchronize between two cameras?
**Answer:** See [this Bonus Example ➶](../camgear_ex/#synchronizing-two-sources-in-camgear).
&nbsp;
&thinsp;
## Can I use GPU to decode the video source?
**Answer:** See [this issue comment ➶](https://github.com/abhiTronix/vidgear/issues/69#issuecomment-551112764).
&nbsp;
&thinsp;
## Why CamGear is throwing warning that Threaded Queue Mode is disabled?
**Answer:** That's a normal behavior. Please read about [Threaded Queue Mode ➶](../../bonus/TQM/)
&nbsp;
&thinsp;
+12 -12
View File
@@ -36,25 +36,25 @@ Once done, visit [Switching from OpenCV ➶](../../switch_from_cv/) to easily re
!!! tip "If you run into any trouble or have any questions, then refer our [**Help**](../get_help) section."
&nbsp;
&thinsp;
## "VidGear is using Multi-threading, but Python is notorious for its poor performance in multithreading?"
**Answer:** Refer vidgear's [Threaded-Queue-Mode ➶](../../bonus/TQM/)
&nbsp;
&thinsp;
## ModuleNotFoundError: No module named 'vidgear.gears'. 'vidgear' is not a package?
**Answer:** This error means you either have a file named `vidgear.py` in your python path or you've named your python script `vidgear.py`. Replace `vidgear` name with anything else to fix this error.
&nbsp;
&thinsp;
## How to containerize VidGear with Docker?
**Answer:** Checkout this guide that addresses the unique challenges of containerizing VidGear applications, particularly around building OpenCV with proper GStreamer and FFmpeg support. Learn the patterns and pitfalls before you start: [**Containerizing VidGear with Docker ➶**](../bonus/docker_example.md)
&nbsp;
&thinsp;
## How to log to a file in VidGear?
@@ -104,46 +104,46 @@ Once done, visit [Switching from OpenCV ➶](../../switch_from_cv/) to easily re
unset VIDGEAR_LOGFILE
```
&nbsp;
&thinsp;
## Can I perform Deep Learning task with VidGear?
**Answer:** VidGear is a powerful Video Processing library _(similar to OpenCV, FFmpeg, etc.)_ that can read, write, process, send & receive a sequence of video-frames in an optimized manner. But for Deep Learning or Machine Learning tasks, you have to use a third-party library. That being said, all VidGear's APIs can be used with any third-party Library(such as PyTorch, Tensorflow, etc.) that can leverage the overall performance if you're processing video/audio streams/frames in your application with Deep Learning tasks. Also, it eases the workflow since you have to write way fewer lines of code to read/store/process output videos.
&nbsp;
&thinsp;
## Can I ask my question directly without raising an issue?
**Answer:** Yes, please join our [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## How to contribute to VidGear development?
**Answer:** See our [Contribution Guidelines ➶](../../contribution/PR/)
&nbsp;
&thinsp;
## What OSes are supported by VidGear?
**Answer:** See [Supported Systems ➶](../../installation/#supported-systems)
&nbsp;
&thinsp;
## What Python versions are supported by VidGear?
**Answer:** See [Supported Python legacies ➶](../../installation/#supported-python-legacies)
&nbsp;
&thinsp;
## Can I include VidGear in my project commercially or not?
**Answer:** Yes, you can, *but strictly under the Terms and Conditions given in [VidGear License ➶](https://github.com/abhiTronix/vidgear/blob/master/LICENSE)*
&nbsp;
&thinsp;
## "I Love using VidGear for my projects", How can I support it?
**Answer:** See [Helping VidGear ➶](../../help/#helping-vidgear)
&nbsp;
&thinsp;
+1 -1
View File
@@ -77,7 +77,7 @@ You can checkout the **Bonus Examples** - a curated list of all Bonus experiment
> Have you come up with some new ideas or looking for the fastest way troubleshoot your problems
**Join and chat on our Gitter Community channel:** [![Glitter chat](https://img.shields.io/badge/Chat&nbsp;on-Gitter-yellow.svg?style=flat-square&logo=gitter)](https://gitter.im/vidgear/community)
**Join and chat on our Gitter Community channel:** [![Glitter chat](https://img.shields.io/badge/Chat&thinsp;on-Gitter-yellow.svg?style=flat-square&logo=gitter)](https://gitter.im/vidgear/community)
There you can ask quick questions, swiftly troubleshoot your problems, help others, share ideas & information, etc.
+3 -3
View File
@@ -18,9 +18,9 @@ limitations under the License.
===============================================
-->
# NetGear_Async Examples
# NetGear_Async Bonus Examples
&thinsp;
&thinsp;
## Using NetGear_Async with WebGear
@@ -166,4 +166,4 @@ if __name__ == "__main__":
server.close()
```
&nbsp;
&thinsp;
+7 -7
View File
@@ -26,7 +26,7 @@ limitations under the License.
**Answer:** NetGear_Async is an asyncio videoframe messaging framework, built on [`zmq.asyncio`](https://pyzmq.readthedocs.io/en/latest/api/zmq.asyncio.html), and powered by high-performance asyncio event loop called [**`uvloop`**](https://github.com/MagicStack/uvloop) to achieve unmatchable high-speed and lag-free video streaming over the network with minimal resource constraints. Basically, this API is able to transfer thousands of frames in just a few seconds without causing any significant load on your system. _For more info. see [NetGear_Async doc ➶](../../gears/netgear_async/)_
&nbsp;
&thinsp;
## How to get started with NetGear_Async API?
@@ -34,13 +34,13 @@ limitations under the License.
See [NetGear_Async doc ➶](../../gears/netgear_async/). Still in doubt, then ask us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## "NetGear_Async is throwing `ModuleNotFoundError` on importing", Why?
**Answer:** This error means, VidGear is installed **WITHOUT asyncio package support** on your machine. For this support, see [Requirements ➶](../../gears/netgear_async/usage/#requirement).
&nbsp;
&thinsp;
## What is the key difference between NetGear_Async and NetGear APIs?
@@ -52,22 +52,22 @@ See [NetGear_Async doc ➶](../../gears/netgear_async/). Still in doubt, then as
**Key Difference:** NetGear_Async is highly memory efficient, but has less features as compared to NetGear API which is marginally faster too.
&nbsp;
&thinsp;
## Can I use Multi-Server, Bi-Directional like modes in NetGear_Async?
**Answer:** No, NetGear_Async does NOT provide support for any NetGear's [Exclusive modes](../../gears/netgear/#exclusive-modes) yet.
&nbsp;
&thinsp;
## How to use NetGear_Async with custom Server Source from OpenCV?
**Answer:** See [this usage example ➶](../../gears/netgear_async/usage/#using-netgear_async-with-a-custom-sourceopencv).
&nbsp;
&thinsp;
## Why NetGear_Async is running slow?
**Answer:** Checkout tips suggested in [this answer ➶](../netgear_faqs/#why-netgear-is-slow)
&nbsp;
&thinsp;
+4 -4
View File
@@ -18,9 +18,9 @@ limitations under the License.
===============================================
-->
# NetGear Examples
# NetGear Bonus Examples
&thinsp;
&thinsp;
## Using NetGear with WebGear
@@ -173,7 +173,7 @@ stream.stop()
server.close()
```
&nbsp;
&thinsp;
## Using NetGear with WebGear_RTC
@@ -371,4 +371,4 @@ stream.stop()
server.close()
```
&nbsp;
&thinsp;
+12 -12
View File
@@ -26,13 +26,13 @@ limitations under the License.
**Answer:** NetGear is exclusively designed to transfer video frames & data synchronously (Pair & Request/Reply) as well as asynchronously (Publish/Subscribe) between various interconnecting systems over the network in real-time. _For more info. see [NetGear doc ➶](../../gears/netgear/)_
&nbsp;
&thinsp;
## How to get started with NetGear API?
**Answer:** First, refer to the [Switching from OpenCV](../../switch_from_cv/#switching-the-videocapture-apis) guide, then go through [NetGear documentation ➶](../../gears/netgear/). If you still have doubts, ask us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## What Exclusive Modes are compatible with each other in NetGear API?
@@ -47,7 +47,7 @@ Here's the compatibility chart for NetGear's [Exclusive Modes](../../gears/netge
| **Bidirectional** | Yes | Yes | Yes | - | Yes |
| **SSH Tunneling** | No _(throws error)_ | No _(throws error)_ | Yes | Yes | - |
&nbsp;
&thinsp;
## Why NetGear is running slow?
@@ -74,7 +74,7 @@ Here's the compatibility chart for NetGear's [Exclusive Modes](../../gears/netge
* Finally, if nothing works then, **checkout [**NetGear_Async API ➶**](../../gears/netgear_async/)**
&nbsp;
&thinsp;
## How to find local IP-address on different OS platforms?
@@ -92,48 +92,48 @@ Here's the compatibility chart for NetGear's [Exclusive Modes](../../gears/netge
- [x] **Follow [this tutorial ➶](https://www.avast.com/c-how-to-find-ip-address)**
&nbsp;
&thinsp;
## How to send data along with frames in Multi-Servers and Multi-Clients Modes?
**Answer:** See [Multi-Servers usage example ➶](../../gears/netgear/advanced/multi_server/#using-multi-servers-mode-with-custom-data-transfer) and [Multi-Clients usage example ➶](../../gears/netgear/advanced/multi_client/#using-multi-clients-mode-with-custom-data-transfer)
&nbsp;
&thinsp;
## How to use enable Encryption and Authentication in NetGear API?
**Answer:** See its [Secure Mode doc ➶](../../gears/netgear/advanced/secure_mode/).
&nbsp;
&thinsp;
## How to send custom data along with frames bidirectionally in NetGear API?
**Answer:** See its [Bidirectional Mode doc ➶](../../gears/netgear/advanced/bidirectional_mode/).
&nbsp;
&thinsp;
## How to access NetGear API outside network or remotely?
**Answer:** See its [SSH Tunneling Mode doc ➶](../../gears/netgear/advanced/ssh_tunnel/).
&nbsp;
&thinsp;
## Are there any side-effect of sending data with frames?
**Answer:** Yes, it may lead to additional **LATENCY** depending upon the size/amount of the data being transferred. User discretion is advised.
&nbsp;
&thinsp;
## Why NetGear API not working correctly?
**Answer:** First, carefully go through [NetGear doc ➶](../../gears/netgear/) that contains detailed information. Also, checkout [PyZmq Docs ➶](https://pyzmq.readthedocs.io/en/latest/) for its various settings/parameters. If still it doesn't work for you, then let us know on [Gitter ➶](https://gitter.im/vidgear/community)
&nbsp;
&thinsp;
## How to solve `zmq.error.ZMQError` errors?
**Answer:** For those used to the idea that a "server" provides their address to a client, then you should *recheck your preconceptions*! Please read the [Netgear instructions](https://abhitronix.github.io/vidgear/latest/gears/netgear/usage/#using-netgear-with-variable-parameters) carefully, and you will note that it is the client device that defines the IP that is provided to the server config. If you get this the wrong way (using the server IP on the client), then you will get a `zmq.error.ZMQError` error. Make sure it is the **client's IP** shared across the two systems.
&nbsp;
&thinsp;
+4 -4
View File
@@ -18,9 +18,9 @@ limitations under the License.
===============================================
-->
# PiGear Examples
# PiGear Bonus Examples
&thinsp;
&thinsp;
## Changing Output Pixel Format in PiGear API with Picamera2 Backend
@@ -149,7 +149,7 @@ limitations under the License.
stream.stop()
```
&nbsp;
&thinsp;
## Dynamically Adjusting Raspberry Pi Camera Parameters at Runtime in PiGear API
@@ -468,4 +468,4 @@ limitations under the License.
stream.stop()
```
&nbsp;
&thinsp;
+9 -9
View File
@@ -26,55 +26,55 @@ limitations under the License.
**Answer:** PiGear is a specialized API similar to the [CamGear API](../../gears/camgear/) but optimized for **Raspberry Pi Boards**, offering comprehensive **support for camera modules** _(e.g., OmniVision OV5647, Sony IMX219)_, along with **limited compatibility for USB cameras**. _For more info. see [PiGear doc ➶](../../gears/pigear/)_
&nbsp;
&thinsp;
## I'm only familiar with OpenCV, how to get started with PiGear API?
**Answer:** First, refer to the [Switching from OpenCV](../../switch_from_cv/#switching-the-videocapture-apis) guide, then go through [PiGear documentation](../../gears/pigear/). If you still have doubts, ask us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## Why my camera module is not detected by PiGear?
**Answer:** Make sure to [complete Raspberry Pi Camera Hardware-specific settings](https://www.raspberrypi.com/documentation/accessories/camera.html#installing-a-raspberry-pi-camera) prior using PiGear API. Also, recheck/change your Camera Module's ribbon-cable and Camera Module itself, if it damaged or got broken somehow.
&nbsp;
&thinsp;
## How to select camera index on Pi Compute IO board with two Cameras attached?
**Answer:** Refer [this Bonus Example ➶](../../help/pigear_ex/#accessing-multiple-camera-through-its-index-in-pigear-api)
&nbsp;
&thinsp;
## Why PiGear is throwing `SystemError`?
**Answer:** This means your Raspberry Pi CSI ribbon-cable is not connected properly to your Camera Module, or damaged, or even both.
&nbsp;
&thinsp;
## How to assign various configurational settings for Camera Module with PiGear?
**Answer:** See [this usage example ➶](../../gears/pigear/usage/#using-pigear-with-variable-camera-properties)
&nbsp;
&thinsp;
## "Video output is too dark with PiGear", Why?
**Answer:** The camera configuration settings might be incorrect. Check [this usage example ➶](../../gears/pigear/usage/#using-pigear-with-variable-camera-properties) and try tinkering parameters like `sensor_mode`, `shutter_speed`, and `exposure_mode`. Additionally, if your `framerate` parameter value is too high, try lowering it.
&nbsp;
&thinsp;
## How to dynamically adjust Raspberry Pi Camera Parameters at runtime with PiGear?
**Answer:** See [this Bonus Example ➶](../../help/pigear_ex/#dynamically-adjusting-raspberry-pi-camera-parameters-at-runtime-in-pigear-api)
&nbsp;
&thinsp;
## Is it possible to change output frames Pixel Format in PiGear API?
**Answer:** Yes it is possible with Picamera2 Backend. See [this Bonus Example ➶](../../help/pigear_ex/#changing-output-pixel-format-in-pigear-api-with-picamera2-backend)
&nbsp;
&thinsp;
+4 -4
View File
@@ -18,9 +18,9 @@ limitations under the License.
===============================================
-->
# ScreenGear Examples
# ScreenGear Bonus Examples
&thinsp;
&thinsp;
## Using ScreenGear with NetGear and WriteGear
@@ -145,7 +145,7 @@ stream.stop()
server.close()
```
&nbsp;
&thinsp;
## Using ScreenGear with WebGear_RTC
@@ -261,4 +261,4 @@ The complete usage example is as follows:
web.shutdown()
```
&nbsp;
&thinsp;
+6 -6
View File
@@ -26,31 +26,31 @@ limitations under the License.
**Answer:** ScreenGear is designed exclusively for targeting rapid Screencasting Capabilities, which means it can grab frames from your monitor in real-time, either by defining an area on the computer screen or full-screen, at the expense of inconsiderable latency. ScreenGear also seamlessly support frame capturing from multiple monitors as well as supports multiple backends. _For more info. see [ScreenGear doc ➶](../../gears/screengear/)_
&nbsp;
&thinsp;
## I'm only familiar with OpenCV, how to get started with ScreenGear API?
**Answer:** First, refer to the [Switching from OpenCV](../../switch_from_cv/#switching-the-videocapture-apis) guide, then go through [ScreenGear documentation](../../gears/screengear/). If you still have doubts, ask us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## ScreenGear is Slow?
**Answer:** This maybe due to selected [`backend`](../../gears/screengear/params/#backend) for ScreenGear API is not compatible with your machine. See [this usage example to change backend ➶](../../gears/screengear/usage/#using-screengear-with-variable-backend). Try different backends, and select which works the best for your machine.
&nbsp;
&thinsp;
## How to define area on screen to record with ScreenGear?
**Answer:** See [this usage example ➶](../../gears/screengear/usage/#using-screengear-with-variable-screen-dimensions)
&nbsp;
&thinsp;
## How to record video from all connected screens?
**Answer:** With `mss` backend, see ScreenGear's [`monitor`](../../gears/screengear/params/#monitor) parameter that sets the index of the monitor to grab a frame from. If its value is `-1`, it will record from all monitors. _More information can be found [here ➶](https://python-mss.readthedocs.io/examples.html#a-screen-shot-to-grab-them-all)_
&nbsp;
&thinsp;
## I'm getting "AttributeError: 'DXCamera' object has no attribute 'is_capturing'" Error?
@@ -75,4 +75,4 @@ limitations under the License.
And finally press **Save** button.
&nbsp;
&thinsp;
+4 -4
View File
@@ -18,9 +18,9 @@ limitations under the License.
===============================================
-->
# Stabilizer Class Examples
# Stabilizer Class Bonus Examples
&thinsp;
&thinsp;
## Saving Stabilizer Class output with Live Audio Input
@@ -234,7 +234,7 @@ writer.close()
1. :warning: Always keep this line above `-i` parameter!
&nbsp;
&thinsp;
## Saving Stabilizer Class output with File Audio Input
@@ -311,4 +311,4 @@ stream.release()
writer.close()
```
&nbsp;
&thinsp;
+5 -5
View File
@@ -26,28 +26,28 @@ limitations under the License.
**Answer:** Stabilizer Class is an auxiliary class that enables Video Stabilization for vidgear with minimalistic latency, and at the expense of little to no additional computational requirements. _For more info. see [Stabilizer Class doc ➶](../../gears/stabilizer/)_
&nbsp;
&thinsp;
## How much latency you would typically expect with Stabilizer Class?
**Answer:** The stabilizer will be Slower for High-Quality videos-frames. Try reducing frames size _(Use [`reducer()`](../../bonus/reference/helper/#vidgear.gears.helper.reducer--reducer) method)_ before feeding them for reducing latency. Also, see [`smoothing_radius`](../../gears/stabilizer/params/#smoothing_radius) parameter of Stabilizer class that handles the quality of stabilization at the expense of latency and sudden panning. The larger its value, the less will be panning, more will be latency, and vice-versa.
&nbsp;
&thinsp;
## How to remove black borders in output video after stabilizing it?
**Answer:** See [`crop_n_zoom`](../../gears/stabilizer/params/#crop_n_zoom) parameter of Stabilizer class, that enables the feature, where it crops and zooms frames(to original size) to reduce the black borders from stabilization being too noticeable _(similar to the feature available in Adobe AfterEffects)_. It works in conjunction with the [`border_size`](../../gears/stabilizer/params/#border_size) parameter, i.e. when this parameter is enabled border_size will be used for cropping border instead of making them. Its default value is `False`.
&nbsp;
&thinsp;
## Can I use Stabilizer directly with OpenCV?
**Answer:** Yes, see [this usage example ➶](../../gears/stabilizer/usage/#bare-minimum-usage-with-opencv).
&nbsp;
&thinsp;
## Why stabilization is not working properly for my video?
**Answer:** The Stabilizer may not perform well against High-frequency jitter in video. But,you can check if increasing [`smoothing_radius`](../../gears/stabilizer/params/#smoothing_radius) parameter value helps but it will add latency too.
&nbsp;
&thinsp;
+2 -2
View File
@@ -18,9 +18,9 @@ limitations under the License.
===============================================
-->
# StreamGear Examples
# StreamGear Bonus Examples
&thinsp;
&thinsp;
## StreamGear Live-Streaming Usage with PiGear
+1 -1
View File
@@ -73,7 +73,7 @@ limitations under the License.
## How to use StreamGear API with real-time frames?
**Answer:** See [Real-time Frames Mode ➶](../../gears/streamgear/rtfm/overview)
**Answer:** See [Real-time Frames Mode ➶](../../gears/streamgear/rtfm/#overview)
&thinsp;
+4 -4
View File
@@ -18,7 +18,7 @@ limitations under the License.
===============================================
-->
# VideoGear Examples
# VideoGear Bonus Examples
&thinsp;
@@ -106,7 +106,7 @@ if __name__ == "__main__":
main(sys.argv)
```
&nbsp;
&thinsp;
## Using VideoGear for capturing RTSP/RTMP URLs
@@ -217,7 +217,7 @@ if __name__ == "__main__":
stream.stop()
```
&nbsp;
&thinsp;
## Using VideoGear for Real-time Stabilization with Audio Encoding
@@ -280,4 +280,4 @@ stream_stab.stop()
writer.close()
```
&nbsp;
&thinsp;
+5 -5
View File
@@ -26,28 +26,28 @@ limitations under the License.
**Answer:** VideoGear provides a special internal wrapper around VidGear's exclusive [**Video Stabilizer**](../../gears/stabilizer/) class. It also act as a Common API, that provided an internal access to both [CamGear](../../gears/camgear/) and [PiGear](../../gears/pigear/) APIs and their parameters, with a special [`enablePiCamera`](../../gears/videogear/params/#enablepicamera) boolean flag. _For more info. see [VideoGear doc ➶](../../gears/videogear/)_
&nbsp;
&thinsp;
## What's the need of VideoGear API?
**Answer:** VideoGear is basically ideal when you need to switch to different video sources without changing your code much. Also, it enables easy stabilization for various video-streams _(real-time or not)_ with minimum efforts and using way fewer lines of code. It also serve as backend for other powerful APIs, such [WebGear](../../gears/webgear/) and [NetGear_Async](../../gears/netgear_async/).
&nbsp;
&thinsp;
## Which APIs are accessible with VideoGear API?
**Answer:** VideoGear provided an internal access to both [CamGear](../../gears/camgear/) and [PiGear](../../gears/pigear/) APIs and their parameters, also it contains wrapper around [**Video Stabilizer**](../../gears/stabilizer/) class.
&nbsp;
&thinsp;
## Can we access WriteGear API or NetGear API too with VideoGear?
**Answer:** No, only selected VideoCapture APIs _(anwsered above)_ are accessible.
&nbsp;
&thinsp;
## Does using VideoGear instead of CamGear API directly, affects performance?
**Answer:** No, there's no difference, as VideoGear just a high-level wrapper around CamGear API and without any modifications in-between.
&nbsp;
&thinsp;
+4 -4
View File
@@ -18,7 +18,7 @@ limitations under the License.
===============================================
-->
# WebGear Examples
# WebGear Bonus Examples
&thinsp;
@@ -112,7 +112,7 @@ Here's a bare-minimum example of using WebGear API with the Raspberry Pi camera
web.shutdown()
```
&nbsp;
&thinsp;
## Using WebGear with real-time Video Stabilization enabled
@@ -141,7 +141,7 @@ uvicorn.run(web(), host="localhost", port=8000)
web.shutdown()
```
&nbsp;
&thinsp;
## Display Two Sources Simultaneously in WebGear
@@ -281,4 +281,4 @@ web.shutdown()
!!! success "On successfully running this code, the output stream will be displayed at address http://localhost:8000/ in Browser."
&nbsp;
&thinsp;
+12 -12
View File
@@ -26,25 +26,25 @@ limitations under the License.
**Answer:** WebGear is a powerful [ASGI](https://asgi.readthedocs.io/en/latest/) Video-Broadcaster API ideal for transmitting [Motion-JPEG](https://en.wikipedia.org/wiki/Motion_JPEG)-frames from a single source to multiple recipients via the browser. _For more info. see [WebGear doc ➶](../../gears/webgear/)_
&nbsp;
&thinsp;
## How to get started with WebGear API?
**Answer:** First, refer to the [Switching from OpenCV](../../switch_from_cv/#switching-the-videocapture-apis) guide, then go through [WebGear documentation](../../gears/webgear/). If you still have doubts, ask us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## "WebGear is throwing `ModuleNotFoundError` on importing", Why?
**Answer:** This error means, VidGear is installed **WITHOUT asyncio package support** on your machine. For this support, see [Requirements ➶](../../gears/webgear/usage/#requirements).
&nbsp;
&thinsp;
## Can WebGear always need Active Internet Connection?
**Answer:** No, it just need internet only once during its [Auto-Generation Process ➶](../../gears/webgear/#auto-generation-process) to download default data-files and it takes few seconds. You can also download files manually from [**Github Server**](https://github.com/abhiTronix/vidgear-vitals), otherwise you can also add [your own custom files](../../gears/webgear/advanced/#rules-for-altering-webgear-files-and-folders). _For more information see [Data-Files Auto-Generation WorkFlow ➶](../../gears/webgear/#data-files-auto-generation-workflow-for-webgear)_
&nbsp;
&thinsp;
## Is it possible to stream on a different device on the network with WebGear?
@@ -52,46 +52,46 @@ limitations under the License.
For accessing WebGear on different Client Devices on the network, use `"0.0.0.0"` as host value instead of `"localhost"` on Host Machine. Then type the IP-address of source machine followed by the defined `port` value in your desired Client Device's browser (for e.g. http://192.27.0.101:8000) to access the stream.
&nbsp;
&thinsp;
## Can I manually place default files for WebGear?
**Answer:** Yes, you can either download default files from [Github Server](https://github.com/abhiTronix/webgear_data), and manually place at [default location](../../gears/webgear/#default-location), OR, you can yourself create the require three critical files _(i.e `index.html`, `404.html` & `500.html`)_ inside `templates` folder at the [default location](../../gears/webgear/#default-location), thereby you don't need any internet connection at all. _For more information see [Data-Files Auto-Generation WorkFlow ➶](../../gears/webgear/#data-files-auto-generation-workflow)_
&nbsp;
&thinsp;
## How to send OpenCV frames directly to Webgear Server?
**Answer:** See [this usage example ➶](../../gears/webgear/advanced/#using-webgear-with-a-custom-sourceopencv).
&nbsp;
&thinsp;
## How can I add my custom WebPage to WebGear?
**Answer:** See [this usage example ➶](../../gears/webgear/advanced/#using-webgear-with-custom-webpage-routes).
&nbsp;
&thinsp;
## How can to add CORS headers to WebGear?
**Answer:** See [this usage example ➶](../../gears/webgear/advanced/#using-webgear-with-middlewares).
&nbsp;
&thinsp;
## Can I change the default location?
**Answer:** Yes, you can use WebGear's [`custom_data_location`](../../gears/webgear/params/#webgear-specific-attributes) attribute of `option` parameter in WebGear API, to change [default location](../../gears/webgear/#default-location) to somewhere else.
&nbsp;
&thinsp;
## Can I delete/rename the WebGear default data?
**Answer:** Yes, but you've to follow [these rules ➶](../../gears/webgear/advanced/#rules-for-altering-webgear-files-and-folders)
&nbsp;
&thinsp;
## What Web browser are supported by WebGear API?
**Answer:** All modern browser with Javascript support are supported by WebGear. If not, then discuss with us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
+5 -5
View File
@@ -18,9 +18,9 @@ limitations under the License.
===============================================
-->
# WebGear_RTC_RTC Examples
# WebGear_RTC Bonus Examples
&thinsp;
&thinsp;
## Using WebGear_RTC with RaspberryPi Camera Module
@@ -106,7 +106,7 @@ Here's a bare-minimum example of using WebGear_RTC API with the Raspberry Pi cam
web.shutdown()
```
&nbsp;
&thinsp;
## Using WebGear_RTC with real-time Video Stabilization enabled
@@ -132,7 +132,7 @@ uvicorn.run(web(), host="localhost", port=8000)
web.shutdown()
```
&nbsp;
&thinsp;
## Display Two Sources Simultaneously in WebGear_RTC
@@ -257,4 +257,4 @@ web.shutdown()
!!! success "On successfully running this code, the output stream will be displayed at address http://localhost:8000/ in Browser."
&nbsp;
&thinsp;
+13 -13
View File
@@ -26,31 +26,31 @@ limitations under the License.
**Answer:** WebGear_RTC utilizes [WebRTC](https://webrtc.org/) technology under the hood, which makes it suitable for building powerful video-streaming solutions for all modern browsers as well as native clients available on all major platforms. _For more info. see [WebGear_RTC doc ➶](../../gears/webgear_rtc/)_
&nbsp;
&thinsp;
## How to get started with WebGear_RTC API?
**Answer:** First, refer to the [Switching from OpenCV](../../switch_from_cv/#switching-the-videocapture-apis) guide, then go through [WebGear_RTC documentation](../../gears/webgear_rtc/). If you still have doubts, ask us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## How WebGear_RTC is different to WebGear API, which should I choose?
**Answer:** WebGear_RTC is similar to [WeGear API](../../gears/webgear/) in many aspects but utilizes [WebRTC](https://webrtc.org/) technology under the hood instead of Motion JPEG. You can choose any API according to your application, but the quality would be better on WebGear API, on-the-other-hand latency would be better on WebGear_RTC API. Also, WebRTC protocol accepts a wide range of devices, whereas WebGear is limited only to modern browsers.
&nbsp;
&thinsp;
## "WebGear_RTC is throwing `ModuleNotFoundError` on importing", Why?
**Answer:** This error means, VidGear is installed **WITHOUT asyncio package support** on your machine. For this support, see [Requirements ➶](../../gears/webgear_rtc/usage/#requirements).
&nbsp;
&thinsp;
## Can WebGear_RTC always need Active Internet Connection?
**Answer:** No, it just need internet only once during its [Auto-Generation Process ➶](../../gears/webgear_rtc/#auto-generation-process) to download default data-files and it takes few seconds. You can also download files manually from [**Github Server**](https://github.com/abhiTronix/vidgear-vitals), otherwise you can also add [your own custom files](../../gears/webgear_rtc/advanced/#rules-for-altering-webgear_rtc-files-and-folders). _For more information see [Data-Files Auto-Generation WorkFlow ➶](../../gears/webgear_rtc/#data-files-auto-generation-workflow-for-webgear_rtc)_
&nbsp;
&thinsp;
## Is it possible to stream on a different device on the network with WebGear_RTC?
@@ -58,47 +58,47 @@ limitations under the License.
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. Then type the IP-address of source machine followed by the defined `port` value in your desired Client Device's browser (for e.g. http://192.27.0.101:8000) to access the stream.
&nbsp;
&thinsp;
## Can I manually place default files for WebGear_RTC?
**Answer:** Yes, you can either download default files from [Github Server](https://github.com/abhiTronix/webgear_data), and manually place at [default location](../../gears/webgear_rtc/#default-location), OR, you can yourself create the require three critical files _(i.e `index.html`, `404.html` & `500.html`)_ inside `templates` folder at the [default location](../../gears/webgear_rtc/#default-location), thereby you don't need any internet connection at all. _For more information see [Data-Files Auto-Generation WorkFlow ➶](../../gears/webgear_rtc/#data-files-auto-generation-workflow)_
&nbsp;
&thinsp;
## How to stream Webgear_RTC Server output to multiple clients?
**Answer:** See [this usage example ➶](../../gears/webgear_rtc/advanced/#using-webgear_rtc-as-real-time-broadcaster).
&nbsp;
&thinsp;
## How to send OpenCV frames directly to Webgear_RTC Server?
**Answer:** See [this usage example ➶](../../gears/webgear_rtc/advanced/#using-webgear_rtc-with-a-custom-sourceopencv).
&nbsp;
&thinsp;
## How can I add my custom WebPage to WebGear_RTC?
**Answer:** See [this usage example ➶](../../gears/webgear_rtc/advanced/#using-webgear_rtc-with-custom-webpage-routes).
&nbsp;
&thinsp;
## How can to add CORS headers to WebGear_RTC?
**Answer:** See [this usage example ➶](../../gears/webgear_rtc/advanced/#using-webgear_rtc-with-middlewares).
&nbsp;
&thinsp;
## Can I change the default location?
**Answer:** Yes, you can use WebGear_RTC's [`custom_data_location`](../../gears/webgear_rtc/params/#webgear_rtc-specific-attributes) attribute of `option` parameter in WebGear_RTC API, to change [default location](../../gears/webgear_rtc/#default-location) to somewhere else.
&nbsp;
&thinsp;
## Can I delete/rename the WebGear_RTC default data?
**Answer:** Yes, but you've to follow [these rules ➶](../../gears/webgear_rtc/advanced/#rules-for-altering-webgear_rtc-files-and-folders)
&nbsp;
&thinsp;
+8 -8
View File
@@ -21,7 +21,7 @@ limitations under the License.
# WriteGear Examples
&nbsp;
&thinsp;
## Using WriteGear's Compression Mode for RTSP/RTP Live-Streaming
@@ -78,7 +78,7 @@ stream.stop()
writer.close()
```
&nbsp;
&thinsp;
## Using WriteGear's Compression Mode for YouTube-Live Streaming
@@ -209,7 +209,7 @@ In Compression Mode, you can also use WriteGear for Youtube-Livestreaming. The e
writer.close()
```
&nbsp;
&thinsp;
## Using WriteGear's Compression Mode with v4l2loopback Virtual Cameras
@@ -313,7 +313,7 @@ writer.close()
!!! success "The data sent to the v4l2loopback device `/dev/video0` in this example with WriteGear API, can then be read by any v4l2-capable application _(such as OpenCV, VLC, ffplay etc.)_"
&nbsp;
&thinsp;
## Using WriteGear's Compression Mode for creating MP4 segments
@@ -382,7 +382,7 @@ stream.stop()
writer.close()
```
&nbsp;
&thinsp;
## Using WriteGear's Compression Mode to add external audio file input to video frames
@@ -446,7 +446,7 @@ writer.close()
```
&nbsp;
&thinsp;
## Using WriteGear's Compression Mode for generating Timely Accurate Video
@@ -543,7 +543,7 @@ In this example we are capturing video from desktop screen in a Timely Accurate
```
&nbsp;
&thinsp;
## Using WriteGear with ROS(Robot Operating System)
@@ -626,4 +626,4 @@ if __name__ == "__main__":
main(sys.argv)
```
&nbsp;
&thinsp;
+19 -19
View File
@@ -27,25 +27,25 @@ limitations under the License.
**Answer:** WriteGear handles various powerful Writer Tools that provide us the freedom to do almost anything imagine with multimedia files. _For more info. see [WriteGear doc ➶](../../gears/writegear/introduction/)_
&nbsp;
&thinsp;
## I'm only familiar with OpenCV, how to get started with WriteGear API?
**Answer:** **Answer:** First, refer to the [Switching from OpenCV](../../switch_from_cv/#switching-the-videocapture-apis) guide, then go through [WriteGear documentation](../../gears/writegear/). If you still have doubts, ask us on [Gitter ➶](https://gitter.im/vidgear/community) Community channel.
&nbsp;
&thinsp;
## Why WriteGear is throwing `ValueError`?
**Answer:** WriteGear will exit with `ValueError` if you feed frames of different dimensions or channels.
&nbsp;
&thinsp;
## How to install and configure FFmpeg correctly for WriteGear on my machine?
**Answer:** Follow these [Installation Instructions ➶](../../gears/writegear/compression/advanced/ffmpeg_install/) for its installation.
&nbsp;
&thinsp;
## Can I use WriteGear directly with OpenCV?
@@ -54,91 +54,91 @@ limitations under the License.
* For Compression Mode: See [this usage example ➶](../../gears/writegear/compression/usage/#using-compression-mode-with-opencv).
* For Non-Compression Mode: See [this usage example ➶](../../gears/writegear/non_compression/usage/#using-non-compression-mode-with-opencv)
&nbsp;
&thinsp;
## What FFmpeg's encoders and parameters are supported by WriteGear in compression mode?
**Answer:** See [Supported Parameters ➶](../../gears/writegear/compression/params/#supported-parameters) and [Supported encoders ➶](../../gears/writegear/compression/params/#supported-encoders)
&nbsp;
&thinsp;
## What OpenCV's FOURCC and parameters are supported by WriteGear in non-compression mode?
**Answer:** See [Supported Parameters ➶](../../gears/writegear/non_compression/params/#supported-parameters) and [Supported FOURCC ➶](../../gears/writegear/non_compression/params/#supported-fourcc-codecs).
&nbsp;
&thinsp;
## Why this FOURCC is not working for me?
**Answer:** Remember not all the FOURCC and Video extensions are compatible and supported by OpenCV VideoWriter Class. Youll need to try different combinations of FourCC and file extensions. Furthermore, OpenCV does not return any helpful error messages regarding this problem, so its pretty much based on _trial and error_.
&nbsp;
&thinsp;
## Can I pass my custom FFmpeg commands directly in WriteGear API?
**Answer:** Yes, See [Custom FFmpeg Commands in WriteGear API ➶](../../gears/writegear/compression/advanced/cciw/).
&nbsp;
&thinsp;
## How to use specific Hardware Encoder in WriteGear?
**Answer:** See [this usage example ➶](../../gears/writegear/compression/usage/#using-compression-mode-with-hardware-encoders)
&nbsp;
&thinsp;
## How to add live audio to WriteGear?
**Answer:** See [this doc ➶](../../gears/writegear/compression/usage/#using-compression-mode-with-live-audio-input)
&nbsp;
&thinsp;
## How to separate and merge audio from/to video?
**Answer:** See [these usage examples ➶](../../gears/writegear/compression/advanced/cciw/#usage-examples)
&nbsp;
&thinsp;
## Can I live stream to Twitch with WriteGear API?
**Answer:** Yes, See [this usage example ➶](../../gears/writegear/compression/usage/#using-compression-mode-for-live-streaming)
&nbsp;
&thinsp;
## Is YouTube-Live Streaming possible with WriteGear?
**Answer:** Yes, See [this Bonus Example ➶](../writegear_ex/#using-writegears-compression-mode-for-youtube-live-streaming).
&nbsp;
&thinsp;
## How to Live-Streaming using RTSP/RTP protocol with WriteGear?
**Answer:** See [this Bonus Example ➶](../writegear_ex/#using-writegears-compression-mode-for-rtsprtp-live-streaming).
&nbsp;
&thinsp;
## How to create MP4 segments from a video stream with WriteGear?
**Answer:** See [this Bonus Example ➶](../writegear_ex/#using-writegears-compression-mode-creating-mp4-segments-from-a-video-stream).
&nbsp;
&thinsp;
## How add external audio file input to video frames?
**Answer:** See [this Bonus Example ➶](../writegear_ex/#using-writegears-compression-mode-to-add-external-audio-file-input-to-video-frames).
&nbsp;
&thinsp;
## Why this FFmpeg parameter is not working for me in compression mode?
**Answer:** If some FFmpeg parameter doesn't work for you, then [tell us on Gitter ➶](https://gitter.im/vidgear/community), and if that doesn't help, then finally [report an issue ➶](../../contribution/issue/)
&nbsp;
&thinsp;
## Why WriteGear is switching to Non-compression Mode, even if it is not enable?
**Answer:** In case WriteGear API fails to detect valid FFmpeg executables on your system _(even if Compression Mode is enabled)_, it will automatically fallback to Non-Compression Mode. Follow [Installation Instructions ➶](../../gears/writegear/compression/advanced/ffmpeg_install/) for FFmpeg installation.
&nbsp;
&thinsp;