e62d4db752
At the moment Invidious will return hardcoded data for the 'size', 'qualityLabel' and 'fps' fields for streams, when such hardcoded data is available, otherwise it just omits those fields from the response (e.g. with the AV1 formats). Those issues are especially noticable when Invidious claims that 50fps streams have 60fps and when it claims that the dimensions for a vertical video are landscape. The DASH manifests that Invidious generates already use the correct information. This pull request corrects that issue by returning the information that YouTube provides instead of hardcoded values and also fixes the long standing bug of Invidious claiming that audio streams have 30 fps. Here are two test cases: 50/25/13fps: https://youtu.be/GbXYZwUigCM (/api/v1/videos/GbXYZwUigCM) vertical video: https://youtu.be/hxQwWEOOyU8 (/api/v1/videos/hxQwWEOOyU8) Originally these problems were going to be solved by the complete refactor of stream handling in 3620, but as that pull request got closed by the stale bot over a month ago and has such a massive scope that it would require a massive amount of work to complete it, I decided to open this pull request that takes a less radical approach of just fixing bugs instead of a full on refactoring. FreeTube generates it's own DASH manifests instead of using Invidious' one, so that it can support multiple audio tracks and HDR. Unfortunately due to the missing and inaccurate information in the API responses, FreeTube has to request the DASH manifest from Invidious to extract the height, width and fps. With this pull request FreeTube could rely just on the API response, saving that extra request to the Invidious instance. It would also make it possible for FreeTube to use the vp9 streams with Invidious, which would reduce the load on the video proxies. Closes issue 4131 |
||
---|---|---|
.github | ||
assets | ||
config | ||
docker | ||
kubernetes | ||
locales | ||
mocks@11ec372f72 | ||
screenshots | ||
scripts | ||
spec | ||
src | ||
.ameba.yml | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
CHANGELOG_legacy.md | ||
CHANGELOG.md | ||
docker-compose.yml | ||
invidious.service | ||
LICENSE | ||
Makefile | ||
README.md | ||
shard.lock | ||
shard.yml | ||
TRANSLATION | ||
videojs-dependencies.yml |
Invidious
An open source alternative front-end to YouTube
Website • Instances list • FAQ • Documentation • Contribute • Donate
Chat with us:
Screenshots
Player | Preferences | Subscriptions |
---|---|---|
Features
User features
- Lightweight
- No ads
- No tracking
- No JavaScript required
- Light/Dark themes
- Customizable homepage
- Subscriptions independent from Google
- Notifications for all subscribed channels
- Audio-only mode (with background play on mobile)
- Support for Reddit comments
- Available in many languages, thanks to our translators
Data import/export
- Import subscriptions from YouTube, NewPipe and Freetube
- Import watch history from YouTube and NewPipe
- Export subscriptions to NewPipe and Freetube
- Import/Export Invidious user data
Technical features
- Embedded video support
- Developer API
- Does not use official YouTube APIs
- No Contributor License Agreement (CLA)
Quick start
Using invidious:
- Select a public instance from the list and start watching videos right now!
Hosting invidious:
Documentation
The full documentation can be accessed online at https://docs.invidious.io/
The documentation's source code is available in this repository: https://github.com/iv-org/documentation
Extensions
We highly recommend the use of Privacy Redirect, a browser extension that automatically redirects Youtube URLs to any Invidious instance and replaces embedded youtube videos on other websites with invidious.
The documentation contains a list of browser extensions that we recommended to use along with Invidious.
You can read more here: https://docs.invidious.io/applications/
Contribute
Code
- Fork it ( https://github.com/iv-org/invidious/fork ).
- Create your feature branch (
git checkout -b my-new-feature
). - Stage your files (
git add .
). - Commit your changes (
git commit -am 'Add some feature'
). - Push to the branch (
git push origin my-new-feature
). - Create a new pull request ( https://github.com/iv-org/invidious/compare ).
Translations
We use Weblate to manage Invidious translations.
You can suggest new translations and/or correction here: https://hosted.weblate.org/engage/invidious/.
Creating an account is not required, but recommended, especially if you want to contribute regularly. Weblate also allows you to log-in with major SSO providers like Github, Gitlab, BitBucket, Google, ...
Projects using Invidious
A list of projects and extensions for or utilizing Invidious can be found in the documentation: https://docs.invidious.io/applications/
Liability
We take no responsibility for the use of our tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate use of Invidious, such as illegal downloading. This tool is provided to you in the spirit of free, open software.
You may view the LICENSE in which this software is provided to you here.
- Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.