Skip to content

Commit

Permalink
Released VidGear Stable v0.2.4 [#275]
Browse files Browse the repository at this point in the history
# 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.
  • Loading branch information
abhiTronix committed Dec 5, 2021
2 parents 99ffcec + de30c9f commit 9e24af6
Show file tree
Hide file tree
Showing 62 changed files with 2,315 additions and 1,845 deletions.
2 changes: 1 addition & 1 deletion .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
ko_fi: abhitronix
ko_fi: abhitronix
liberapay: abhiTronix
134 changes: 67 additions & 67 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,68 @@
---
name: Bug report
about: Create a bug-report for VidGear
labels: ':beetle: BUG'
assignees: 'abhiTronix'
---

<!--
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.
If you're in a hurry or don't feel confident, it's fine to report bugs with
less details, but this makes it less likely they'll get fixed soon.
If the important info is missing we'll add the 'Needs more information' label
or may choose to close the issue until there is enough information provided.
-->

## Description

<!-- Provide a more detailed introduction to the issue itself, and why you consider it to be a bug -->
_Kindly explain the issue here._


### Acknowledgment

<!-- By posting an issue you acknowledge the following: (Put an `x` in all the boxes that apply(important)) -->

- [ ] I have searched the [issues](https://github.com/abhiTronix/vidgear/issues) for my issue and found nothing related or helpful.
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
- [ ] I have read the [Issue Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines).


### Environment

<!-- Include as many relevant details about the environment you experienced the bug in -->
* VidGear version: <!-- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
* Branch: <!-- Select between: Master | Testing | Development | PyPi -->
* Python version: <!---Run command `python -V` -->
* PiP version: <!-- Run command `python -c "import pip; print(pip.__version__)"` -->
* Operating System and version:

### Expected Behavior
<!-- Tell us what should happen -->

### Actual Behavior
<!-- Tell us what happens instead -->
<!-- You can turn `logging=True` in parameters of the respective vidgear API for getting debug output -->

### Possible Fix
<!-- Not obligatory, but suggest a fix or reason for the bug or remove this block-->

### Steps to reproduce

<!--
How would you describe your issue to someone who doesn’t know you or your project?
Try to write a sequence of steps that anybody can repeat to see the issue.
-->

(Write your steps here:)

1.
2.
3.


### Optional
---
name: Bug report
about: Create a bug-report for VidGear
labels: ':beetle: BUG'
assignees: 'abhiTronix'
---

<!--
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.
If you're in a hurry or don't feel confident, it's fine to report bugs with
less details, but this makes it less likely they'll get fixed soon.
If the important info is missing we'll add the 'Needs more information' label
or may choose to close the issue until there is enough information provided.
-->

## Description

<!-- Provide a more detailed introduction to the issue itself, and why you consider it to be a bug -->
_Kindly explain the issue here._


### Acknowledgment

<!-- By posting an issue you acknowledge the following: (Put an `x` in all the boxes that apply(important)) -->

- [ ] I have searched the [issues](https://github.com/abhiTronix/vidgear/issues) for my issue and found nothing related or helpful.
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
- [ ] I have read the [Issue Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines).


### Environment

<!-- Include as many relevant details about the environment you experienced the bug in -->
* VidGear version: <!-- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
* Branch: <!-- Select between: Master | Testing | Development | PyPi -->
* Python version: <!---Run command `python -V` -->
* PiP version: <!-- Run command `python -c "import pip; print(pip.__version__)"` -->
* Operating System and version:

### Expected Behavior
<!-- Tell us what should happen -->

### Actual Behavior
<!-- Tell us what happens instead -->
<!-- You can turn `logging=True` in parameters of the respective vidgear API for getting debug output -->

### Possible Fix
<!-- Not obligatory, but suggest a fix or reason for the bug or remove this block-->

### Steps to reproduce

<!--
How would you describe your issue to someone who doesn’t know you or your project?
Try to write a sequence of steps that anybody can repeat to see the issue.
-->

(Write your steps here:)

1.
2.
3.


### Optional
<!-- Provide screenshots where appropriate -->
58 changes: 29 additions & 29 deletions .github/ISSUE_TEMPLATE/proposal.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
---
name: Proposal
about: Suggest an idea for improving VidGear
labels: 'PROPOSAL :envelope_with_arrow:'
---

<!--- Add a brief but descriptive title for your issue above -->

## Detailed Description

<!--- Provide a detailed description of the change or addition you are proposing -->
_Kindly explain the issue here._


### Context
<!--- Why is this change important to you? How would you use it? -->
<!--- Will this change the existing VidGear APIs? How? -->
<!--- How can it benefit other users? -->


### Your Current Environment
<!--- Include as many relevant details about the environment you worked in -->
* VidGear version: <!--- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
* Branch: <!--- Master/Testing/Development/PyPi -->
* Python version: <!---Run command `python -V` -->
* Operating System and version:


### Any Other Important Information
---
name: Proposal
about: Suggest an idea for improving VidGear
labels: 'PROPOSAL :envelope_with_arrow:'
---

<!--- Add a brief but descriptive title for your issue above -->

## Detailed Description

<!--- Provide a detailed description of the change or addition you are proposing -->
_Kindly explain the issue here._


### Context
<!--- Why is this change important to you? How would you use it? -->
<!--- Will this change the existing VidGear APIs? How? -->
<!--- How can it benefit other users? -->


### Your Current Environment
<!--- Include as many relevant details about the environment you worked in -->
* VidGear version: <!--- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
* Branch: <!--- Master/Testing/Development/PyPi -->
* Python version: <!---Run command `python -V` -->
* Operating System and version:


### Any Other Important Information
<!--- This is a example/screenshot I want to share -->
84 changes: 42 additions & 42 deletions .github/ISSUE_TEMPLATE/question.md
Original file line number Diff line number Diff line change
@@ -1,43 +1,43 @@
---
name: Question
about: Have any questions regarding VidGear?
labels: 'QUESTION :question:'
---

<!--- Add a brief but descriptive title for your issue above -->


## Question

<!--- Provide your question description here -->
_Kindly describe the issue here._


### Acknowledgment

<!--- By posting an issue you acknowledge the following: (Put an `x` in all the boxes that apply(important)) -->

- [ ] I have searched the [issues](https://github.com/abhiTronix/vidgear/issues) for my issue and found nothing related or helpful.
- [ ] I have read the [FAQs](https://abhitronix.github.io/vidgear/latest/help/get_help/#frequently-asked-questions).
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).



### Context

<!--- How has this issue affected you? What are you trying to accomplish? -->

<!--- Providing context helps us come up with a solution that is most useful in the real world -->


### Your Environment
<!--- Include as many relevant details about the environment you worked in -->
* VidGear version: <!--- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
* Branch: <!--- Select between: Master | Testing | Development | PyPi -->
* Python version: <!---Run command `python -V` -->
* PiP version: <!--- Run command `python -c "import pip; print(pip.__version__)"` -->
* Operating System and version:


### Optional
---
name: Question
about: Have any questions regarding VidGear?
labels: 'QUESTION :question:'
---

<!--- Add a brief but descriptive title for your issue above -->


## Question

<!--- Provide your question description here -->
_Kindly describe the issue here._


### Acknowledgment

<!--- By posting an issue you acknowledge the following: (Put an `x` in all the boxes that apply(important)) -->

- [ ] I have searched the [issues](https://github.com/abhiTronix/vidgear/issues) for my issue and found nothing related or helpful.
- [ ] I have read the [FAQs](https://abhitronix.github.io/vidgear/latest/help/get_help/#frequently-asked-questions).
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).



### Context

<!--- How has this issue affected you? What are you trying to accomplish? -->

<!--- Providing context helps us come up with a solution that is most useful in the real world -->


### Your Environment
<!--- Include as many relevant details about the environment you worked in -->
* VidGear version: <!--- Run command `python -c "import vidgear; print(vidgear.__version__)"` -->
* Branch: <!--- Select between: Master | Testing | Development | PyPi -->
* Python version: <!---Run command `python -V` -->
* PiP version: <!--- Run command `python -c "import pip; print(pip.__version__)"` -->
* Operating System and version:


### Optional
<!--- Provide screenshots where appropriate -->
68 changes: 34 additions & 34 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@

<!--- Provide a general summary of the issue in the Title above -->

## Description

_Kindly explain the changes you made here._



### Requirements / Checklist

<!--- By pushing this PR you acknowledge the following: Put an `x` in all the boxes that apply(important): -->

- [ ] I have read the [PR Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/PR/#submitting-pull-requestpr-guidelines).
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
- [ ] I have updated the documentation accordingly(if required).


### Related Issue
<!--- This project only accepts pull requests related to open issues -->
<!--- If suggesting a new feature or change, please discuss it in an issue first -->
<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->
<!--- Please link to the issue here: -->

### Context
<!--- Why is this change required? What problem does it solve? -->

### Types of changes
<!--- What types of changes does your code introduce? Put an `x` in the box that apply(important): -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

### Screenshots (if available):

<!--- Provide a general summary of the issue in the Title above -->

## Description

_Kindly explain the changes you made here._



### Requirements / Checklist

<!--- By pushing this PR you acknowledge the following: Put an `x` in all the boxes that apply(important): -->

- [ ] I have read the [PR Guidelines](https://abhitronix.github.io/vidgear/latest/contribution/PR/#submitting-pull-requestpr-guidelines).
- [ ] I have read the [Documentation](https://abhitronix.github.io/vidgear/latest).
- [ ] I have updated the documentation accordingly(if required).


### Related Issue
<!--- This project only accepts pull requests related to open issues -->
<!--- If suggesting a new feature or change, please discuss it in an issue first -->
<!--- If fixing a bug, there should be an issue describing it with steps to reproduce -->
<!--- Please link to the issue here: -->

### Context
<!--- Why is this change required? What problem does it solve? -->

### Types of changes
<!--- What types of changes does your code introduce? Put an `x` in the box that apply(important): -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)

### Screenshots (if available):
<!--- Provide screenshots where appropriate -->
38 changes: 19 additions & 19 deletions .github/config.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
newPRWelcomeComment: |
Thanks so much for opening your first PR here, a maintainer will get back to you shortly!
### In the meantime:
- 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.
- Submit a [issue](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines) beforehand for your Pull Request.
- Go briefly through our [PR FAQ section](https://abhitronix.github.io/vidgear/latest/contribution/PR/#frequently-asked-questions).
firstPRMergeComment: |
Congrats on merging your first pull request here! :tada: You're awesome!
![Alt Text](https://media.giphy.com/media/d2Z9QYzA2aidiWn6/giphy.gif)
newIssueWelcomeComment: |
Thanks for opening this issue, a maintainer will get back to you shortly!
### In the meantime:
- 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.
- Go comprehensively through our dedicated [FAQ & Troubleshooting section](https://abhitronix.github.io/vidgear/latest/help/get_help/#frequently-asked-questions).
- 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.
newPRWelcomeComment: |
Thanks so much for opening your first PR here, a maintainer will get back to you shortly!
### In the meantime:
- 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.
- Submit a [issue](https://abhitronix.github.io/vidgear/latest/contribution/issue/#submitting-an-issue-guidelines) beforehand for your Pull Request.
- Go briefly through our [PR FAQ section](https://abhitronix.github.io/vidgear/latest/contribution/PR/#frequently-asked-questions).
firstPRMergeComment: |
Congrats on merging your first pull request here! :tada: You're awesome!
![Alt Text](https://media.giphy.com/media/d2Z9QYzA2aidiWn6/giphy.gif)
newIssueWelcomeComment: |
Thanks for opening this issue, a maintainer will get back to you shortly!
### In the meantime:
- 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.
- Go comprehensively through our dedicated [FAQ & Troubleshooting section](https://abhitronix.github.io/vidgear/latest/help/get_help/#frequently-asked-questions).
- 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.
Loading

0 comments on commit 9e24af6

Please sign in to comment.