Skip to content

Commit 9e24af6

Browse files
authored
Released VidGear Stable v0.2.4 [#275]
# New Features ✨ - **CamGear:** * Added a new YT_backend Internal Class with YT-DLP backend: + Implemented `YT_backend` a new CamGear's Internal YT-DLP backend class for extracting metadata from Streaming URLs. + Added support for pipeling (live) video-frames from all yt-dlp supported streaming sites: https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md#supported-sites + Implemented algorithm from scratch for auto-extracting resolution specific streamable URLs for pipelineing. + Implemented logic for auto-calculating `best` and `worst` resolutions. + Added new `ytv_metadata` global parameter to CamGear for accessing video's metadata(such as duration, title, description) on-the-go. + ⚠️ Playlists are still unsupported. - **WebGear_RTC:** * Implemented a new easy way of defining Custom Streaming Class with suitable source(such as OpenCV): + Added new `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). + This implementation supports repeated Auto-Reconnection or Auto-Refresh out-of-the-box. + This implementation is more user-friendly and easy to integrate within complex APIs. + This implementation requires at-least `read()` and `stop()` methods implemented within Custom Streaming Class, otherwise WebGear_RTC will throw ValueError. + This implementation supports all vidgear's VideoCapture APIs readily as input. - **Maintenance:** * Added new `.gitignore` for specifying intentionally untracked files to ignore + Added more files entries to `.gitignore`. * Added new `.gitattributes` to manage how Git reads line endings. + Enabled `auto` default behavior, in case people don't have `core.autocrlf` set. + Enforced LF line-endings for selective files types. + Added Binary data files that specifies they are not text, and git should not try to change them. + Added Language aware diff headers. + Added Linguist language overrides. - **Docs:** * Added bonus example to add real-time file audio encoding with VideoGear and Stabilizer class. * Added complete usage docs with new CamGear's Internal Class with YT-DLP backend. * Added instructions to extract video's metadata in CamGear. * Added donation link in page footer with bouncing heart animation through pure CSS. * Added info about critical changes in `v0.2.4` and above installation through new announcement bar. * Added related usage docs for new WebGear_RTC custom streaming class. * Added changes for upgrading mkdocs-material from `v7.x` to newer `v8.x`. * Added outdated version warning block. # Updates/Improvements ⚡️ - CamGear: * Added `is_livestream` global YT_backend parameters. * Added default options for yt-dlp for extracting info_dict(metadata) of the video as a single JSON line. * Completely removed old logic for extracting streams using pafy. * Removed all dead code related to streamlink backend. - Setup.py: * Moved all API specific dependencies to `extra_requires` under the name `"core"`. **[PR #268 by @zpapakipos]** * Added rule to replace GitHub heading links in description. * Updated `extra_require` dependencies. * Removed `streamlink` dependency. * Removed `pafy` dependency. * Removed `pyzmq` from latest_version group. * Updated SEO Keywords. - Docs: * Re-written `pip` and `source` installation docs. * Added warning for using `-disable_force_termination` flag for short duration videos. * Added `permalink_title` entry to mkdocs.yml. * Updated CamGear parameters. * Updated Admonitions with related information. * Updated Functional Block Diagram(`gears_fbd.png`) image. * Updated installation instructions. * Updated Advanced examples using WebGear_RTC's custom streaming class. * Updated code highlighting. * Updated zenodo badge. * Updated BibTex for project citation. * Replaced incorrect API parameter docs. * Updated WebGear_RTC parameters. - CI: * Updated CI tests for new WebGear_RTC custom streaming class. * Restored `test_stream_mode` CamGear test. * Updated Streaming Sites test links. * Added more tests cases. - Maintenance: * Updated spacing in logger formatting. * Renamed Asyncio Helper logger name. * Changed logging colors. * Updated logging messages. # Breaking Updates/Changes 💥 - Installation command with `pip` has been changed in `v0.2.4`: * The legacy `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. - CamGear: * Removed `streamlink` backend support from `stream_mode` in favor of more reliable CamGear's Internal YT-DLP backend class for extracting metadata from Streaming URLs. + CamGear will raise `ValueError` if streaming site URL is unsupported by yt-dlp backend. + CamGear will raise `ValueError` if `yt-dlp` isn't installed and `stream_mode` is enabled. * Removed automatic enforcing of GStreamer backend for YouTube-livestreams and made it optional. + The CamGear will not raise ValueError if GStreamer support is missing in OpenCV backends. - WebGear_RTC: * Removed support for assigning Custom Media Server Class(inherited from aiortc's VideoStreamTrack) in WebGear_RTC through its `config` global parameter. * WebGear_RTC API will now throws ValueError if `source` parameter is NoneType as well as `custom_stream` attribute is undefined. - Helper: * Removed `restore_levelnames` method. * Removed `youtube_url_validator` helper method. # Bug-fixes 🐛 - CamGear: * Fixed KeyError Bug for missing attributed in meta_data json in some streaming sites. - Helper: * Removed unused imports. - Docs: * Removed slugify from mkdocs which was causing invalid hyperlinks in docs. * Fixed GitHub hyperlinks in README.md. * Fixed hyperlink in announcement bar. * Fixed content tabs failing to work. * Fixed line-endings and usage example code. * Removed any `pafy` and `streamlink` references. * Fixed context and typos. - CI: * Fixed NameError bugs in WebGear_RTC CI test. - Maintenance: * Removed dead logger code causing Python's Built-in logging module to hide logs. * Removed unused `logging` import. * Updated code comments.
2 parents 99ffcec + de30c9f commit 9e24af6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2315
-1845
lines changed

Diff for: .github/FUNDING.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
ko_fi: abhitronix
1+
ko_fi: abhitronix
22
liberapay: abhiTronix

Diff for: .github/ISSUE_TEMPLATE/bug_report.md

+67-67
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,68 @@
1-
---
2-
name: Bug report
3-
about: Create a bug-report for VidGear
4-
labels: ':beetle: BUG'
5-
assignees: 'abhiTronix'
6-
---
7-
8-
<!--
9-
Please note that your issue will be fixed much faster if you spend about
10-
half an hour preparing it, including the exact reproduction steps and a demo.
11-
12-
If you're in a hurry or don't feel confident, it's fine to report bugs with
13-
less details, but this makes it less likely they'll get fixed soon.
14-
15-
If the important info is missing we'll add the 'Needs more information' label
16-
or may choose to close the issue until there is enough information provided.
17-
-->
18-
19-
## Description
20-
21-
<!-- Provide a more detailed introduction to the issue itself, and why you consider it to be a bug -->
22-
_Kindly explain the issue here._
23-
24-
25-
### Acknowledgment
26-
27-
<!-- By posting an issue you acknowledge the following: (Put an `x` in all the boxes that apply(important)) -->
28-
29-
- [ ] I have searched the [issues](https://github.com/abhiTronix/vidgear/issues) for my issue and found nothing related or helpful.
30-
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
31-
- [ ] I have read the [Issue Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines).
32-
33-
34-
### Environment
35-
36-
<!-- Include as many relevant details about the environment you experienced the bug in -->
37-
* VidGear version: <!-- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
38-
* Branch: <!-- Select between: Master | Testing | Development | PyPi -->
39-
* Python version: <!---Run command `python -V` -->
40-
* PiP version: <!-- Run command `python -c "import pip; print(pip.__version__)"` -->
41-
* Operating System and version:
42-
43-
### Expected Behavior
44-
<!-- Tell us what should happen -->
45-
46-
### Actual Behavior
47-
<!-- Tell us what happens instead -->
48-
<!-- You can turn `logging=True` in parameters of the respective vidgear API for getting debug output -->
49-
50-
### Possible Fix
51-
<!-- Not obligatory, but suggest a fix or reason for the bug or remove this block-->
52-
53-
### Steps to reproduce
54-
55-
<!--
56-
How would you describe your issue to someone who doesn’t know you or your project?
57-
Try to write a sequence of steps that anybody can repeat to see the issue.
58-
-->
59-
60-
(Write your steps here:)
61-
62-
1.
63-
2.
64-
3.
65-
66-
67-
### Optional
1+
---
2+
name: Bug report
3+
about: Create a bug-report for VidGear
4+
labels: ':beetle: BUG'
5+
assignees: 'abhiTronix'
6+
---
7+
8+
<!--
9+
Please note that your issue will be fixed much faster if you spend about
10+
half an hour preparing it, including the exact reproduction steps and a demo.
11+
12+
If you're in a hurry or don't feel confident, it's fine to report bugs with
13+
less details, but this makes it less likely they'll get fixed soon.
14+
15+
If the important info is missing we'll add the 'Needs more information' label
16+
or may choose to close the issue until there is enough information provided.
17+
-->
18+
19+
## Description
20+
21+
<!-- Provide a more detailed introduction to the issue itself, and why you consider it to be a bug -->
22+
_Kindly explain the issue here._
23+
24+
25+
### Acknowledgment
26+
27+
<!-- By posting an issue you acknowledge the following: (Put an `x` in all the boxes that apply(important)) -->
28+
29+
- [ ] I have searched the [issues](https://github.com/abhiTronix/vidgear/issues) for my issue and found nothing related or helpful.
30+
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
31+
- [ ] I have read the [Issue Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines).
32+
33+
34+
### Environment
35+
36+
<!-- Include as many relevant details about the environment you experienced the bug in -->
37+
* VidGear version: <!-- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
38+
* Branch: <!-- Select between: Master | Testing | Development | PyPi -->
39+
* Python version: <!---Run command `python -V` -->
40+
* PiP version: <!-- Run command `python -c "import pip; print(pip.__version__)"` -->
41+
* Operating System and version:
42+
43+
### Expected Behavior
44+
<!-- Tell us what should happen -->
45+
46+
### Actual Behavior
47+
<!-- Tell us what happens instead -->
48+
<!-- You can turn `logging=True` in parameters of the respective vidgear API for getting debug output -->
49+
50+
### Possible Fix
51+
<!-- Not obligatory, but suggest a fix or reason for the bug or remove this block-->
52+
53+
### Steps to reproduce
54+
55+
<!--
56+
How would you describe your issue to someone who doesn’t know you or your project?
57+
Try to write a sequence of steps that anybody can repeat to see the issue.
58+
-->
59+
60+
(Write your steps here:)
61+
62+
1.
63+
2.
64+
3.
65+
66+
67+
### Optional
6868
<!-- Provide screenshots where appropriate -->

Diff for: .github/ISSUE_TEMPLATE/proposal.md

+29-29
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
---
2-
name: Proposal
3-
about: Suggest an idea for improving VidGear
4-
labels: 'PROPOSAL :envelope_with_arrow:'
5-
---
6-
7-
<!--- Add a brief but descriptive title for your issue above -->
8-
9-
## Detailed Description
10-
11-
<!--- Provide a detailed description of the change or addition you are proposing -->
12-
_Kindly explain the issue here._
13-
14-
15-
### Context
16-
<!--- Why is this change important to you? How would you use it? -->
17-
<!--- Will this change the existing VidGear APIs? How? -->
18-
<!--- How can it benefit other users? -->
19-
20-
21-
### Your Current Environment
22-
<!--- Include as many relevant details about the environment you worked in -->
23-
* VidGear version: <!--- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
24-
* Branch: <!--- Master/Testing/Development/PyPi -->
25-
* Python version: <!---Run command `python -V` -->
26-
* Operating System and version:
27-
28-
29-
### Any Other Important Information
1+
---
2+
name: Proposal
3+
about: Suggest an idea for improving VidGear
4+
labels: 'PROPOSAL :envelope_with_arrow:'
5+
---
6+
7+
<!--- Add a brief but descriptive title for your issue above -->
8+
9+
## Detailed Description
10+
11+
<!--- Provide a detailed description of the change or addition you are proposing -->
12+
_Kindly explain the issue here._
13+
14+
15+
### Context
16+
<!--- Why is this change important to you? How would you use it? -->
17+
<!--- Will this change the existing VidGear APIs? How? -->
18+
<!--- How can it benefit other users? -->
19+
20+
21+
### Your Current Environment
22+
<!--- Include as many relevant details about the environment you worked in -->
23+
* VidGear version: <!--- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
24+
* Branch: <!--- Master/Testing/Development/PyPi -->
25+
* Python version: <!---Run command `python -V` -->
26+
* Operating System and version:
27+
28+
29+
### Any Other Important Information
3030
<!--- This is a example/screenshot I want to share -->

Diff for: .github/ISSUE_TEMPLATE/question.md

+42-42
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,43 @@
1-
---
2-
name: Question
3-
about: Have any questions regarding VidGear?
4-
labels: 'QUESTION :question:'
5-
---
6-
7-
<!--- Add a brief but descriptive title for your issue above -->
8-
9-
10-
## Question
11-
12-
<!--- Provide your question description here -->
13-
_Kindly describe the issue here._
14-
15-
16-
### Acknowledgment
17-
18-
<!--- By posting an issue you acknowledge the following: (Put an `x` in all the boxes that apply(important)) -->
19-
20-
- [ ] I have searched the [issues](https://github.com/abhiTronix/vidgear/issues) for my issue and found nothing related or helpful.
21-
- [ ] I have read the [FAQs](https://abhitronix.github.io/vidgear/latest/help/get_help/#frequently-asked-questions).
22-
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
23-
24-
25-
26-
### Context
27-
28-
<!--- How has this issue affected you? What are you trying to accomplish? -->
29-
30-
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
31-
32-
33-
### Your Environment
34-
<!--- Include as many relevant details about the environment you worked in -->
35-
* VidGear version: <!--- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
36-
* Branch: <!--- Select between: Master | Testing | Development | PyPi -->
37-
* Python version: <!---Run command `python -V` -->
38-
* PiP version: <!--- Run command `python -c "import pip; print(pip.__version__)"` -->
39-
* Operating System and version:
40-
41-
42-
### Optional
1+
---
2+
name: Question
3+
about: Have any questions regarding VidGear?
4+
labels: 'QUESTION :question:'
5+
---
6+
7+
<!--- Add a brief but descriptive title for your issue above -->
8+
9+
10+
## Question
11+
12+
<!--- Provide your question description here -->
13+
_Kindly describe the issue here._
14+
15+
16+
### Acknowledgment
17+
18+
<!--- By posting an issue you acknowledge the following: (Put an `x` in all the boxes that apply(important)) -->
19+
20+
- [ ] I have searched the [issues](https://github.com/abhiTronix/vidgear/issues) for my issue and found nothing related or helpful.
21+
- [ ] I have read the [FAQs](https://abhitronix.github.io/vidgear/latest/help/get_help/#frequently-asked-questions).
22+
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
23+
24+
25+
26+
### Context
27+
28+
<!--- How has this issue affected you? What are you trying to accomplish? -->
29+
30+
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
31+
32+
33+
### Your Environment
34+
<!--- Include as many relevant details about the environment you worked in -->
35+
* VidGear version: <!--- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
36+
* Branch: <!--- Select between: Master | Testing | Development | PyPi -->
37+
* Python version: <!---Run command `python -V` -->
38+
* PiP version: <!--- Run command `python -c "import pip; print(pip.__version__)"` -->
39+
* Operating System and version:
40+
41+
42+
### Optional
4343
<!--- Provide screenshots where appropriate -->

Diff for: .github/PULL_REQUEST_TEMPLATE.md

+34-34
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,35 @@
1-
2-
<!--- Provide a general summary of the issue in the Title above -->
3-
4-
## Description
5-
6-
_Kindly explain the changes you made here._
7-
8-
9-
10-
### Requirements / Checklist
11-
12-
<!--- By pushing this PR you acknowledge the following: Put an `x` in all the boxes that apply(important): -->
13-
14-
- [ ] I have read the [PR Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/PR/#submitting-pull-requestpr-guidelines).
15-
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
16-
- [ ] I have updated the documentation accordingly(if required).
17-
18-
19-
### Related Issue
20-
<!--- This project only accepts pull requests related to open issues -->
21-
<!--- If suggesting a new feature or change, please discuss it in an issue first -->
22-
<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->
23-
<!--- Please link to the issue here: -->
24-
25-
### Context
26-
<!--- Why is this change required? What problem does it solve? -->
27-
28-
### Types of changes
29-
<!--- What types of changes does your code introduce? Put an `x` in the box that apply(important): -->
30-
- [ ] Bug fix (non-breaking change which fixes an issue)
31-
- [ ] New feature (non-breaking change which adds functionality)
32-
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
33-
34-
### Screenshots (if available):
1+
2+
<!--- Provide a general summary of the issue in the Title above -->
3+
4+
## Description
5+
6+
_Kindly explain the changes you made here._
7+
8+
9+
10+
### Requirements / Checklist
11+
12+
<!--- By pushing this PR you acknowledge the following: Put an `x` in all the boxes that apply(important): -->
13+
14+
- [ ] I have read the [PR Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/PR/#submitting-pull-requestpr-guidelines).
15+
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
16+
- [ ] I have updated the documentation accordingly(if required).
17+
18+
19+
### Related Issue
20+
<!--- This project only accepts pull requests related to open issues -->
21+
<!--- If suggesting a new feature or change, please discuss it in an issue first -->
22+
<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->
23+
<!--- Please link to the issue here: -->
24+
25+
### Context
26+
<!--- Why is this change required? What problem does it solve? -->
27+
28+
### Types of changes
29+
<!--- What types of changes does your code introduce? Put an `x` in the box that apply(important): -->
30+
- [ ] Bug fix (non-breaking change which fixes an issue)
31+
- [ ] New feature (non-breaking change which adds functionality)
32+
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
33+
34+
### Screenshots (if available):
3535
<!--- Provide screenshots where appropriate -->

Diff for: .github/config.yml

+19-19
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
newPRWelcomeComment: |
2-
Thanks so much for opening your first PR here, a maintainer will get back to you shortly!
3-
4-
### In the meantime:
5-
- Read our [Pull Request(PR) Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/PR/#submitting-pull-requestpr-guidelines) for submitting a valid PR for VidGear.
6-
- Submit a [issue](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines) beforehand for your Pull Request.
7-
- Go briefly through our [PR FAQ section](https://abhitronix.github.io/vidgear/latest/contribution/PR/#frequently-asked-questions).
8-
9-
firstPRMergeComment: |
10-
Congrats on merging your first pull request here! :tada: You're awesome!
11-
![Alt Text](https://media.giphy.com/media/d2Z9QYzA2aidiWn6/giphy.gif)
12-
13-
newIssueWelcomeComment: |
14-
Thanks for opening this issue, a maintainer will get back to you shortly!
15-
16-
### In the meantime:
17-
- Read our [Issue Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines), and update your issue accordingly. Please note that your issue will be fixed much faster if you spend about half an hour preparing it, including the exact reproduction steps and a demo.
18-
- Go comprehensively through our dedicated [FAQ & Troubleshooting section](https://abhitronix.github.io/vidgear/latest/help/get_help/#frequently-asked-questions).
19-
- For any quick questions and typos, please refrain from opening an issue, as you can reach us on [Gitter](https://gitter.im/vidgear/community) community channel.
1+
newPRWelcomeComment: |
2+
Thanks so much for opening your first PR here, a maintainer will get back to you shortly!
3+
4+
### In the meantime:
5+
- Read our [Pull Request(PR) Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/PR/#submitting-pull-requestpr-guidelines) for submitting a valid PR for VidGear.
6+
- Submit a [issue](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines) beforehand for your Pull Request.
7+
- Go briefly through our [PR FAQ section](https://abhitronix.github.io/vidgear/latest/contribution/PR/#frequently-asked-questions).
8+
9+
firstPRMergeComment: |
10+
Congrats on merging your first pull request here! :tada: You're awesome!
11+
![Alt Text](https://media.giphy.com/media/d2Z9QYzA2aidiWn6/giphy.gif)
12+
13+
newIssueWelcomeComment: |
14+
Thanks for opening this issue, a maintainer will get back to you shortly!
15+
16+
### In the meantime:
17+
- Read our [Issue Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines), and update your issue accordingly. Please note that your issue will be fixed much faster if you spend about half an hour preparing it, including the exact reproduction steps and a demo.
18+
- Go comprehensively through our dedicated [FAQ & Troubleshooting section](https://abhitronix.github.io/vidgear/latest/help/get_help/#frequently-asked-questions).
19+
- For any quick questions and typos, please refrain from opening an issue, as you can reach us on [Gitter](https://gitter.im/vidgear/community) community channel.

0 commit comments

Comments
 (0)