Hacker News new | ask | show | jobs
by d3vr 977 days ago
Seems like there's a bit of confusion about what the add-on does exactly. It doesn't automatically redirect all YouTube pages you open.

This however gives you the choice to open the pages you want in an alternative frontend.

My use case is basically I browse the YT homepage and Shift+click the videos I want to watch. Or if someone shares a link to a video, I access that page and Alt+J to redirect to the alternative frontend.

1 comments

Thanks for explaining, but what is an alternative frontend in this case?
I've also just updated the README to make it more obvious what the extension does.

The default alternative frontend I have configured is https://piped.video , but you can use any different instance / service if it supports the same YouTube url scheme ({domain}/watch?v=...).

This is configurable in the add-on's options page, you can also access it by clicking on the add-on's icon

Thanks, I've looked at the docs of newpipe and invidious and neither make it straight forward to understand how they work. Both focus on "this is more private than watching on youtube"

It sounds like there is some kind of instance/server which my client/with a cleaner frontend will talk to.

But how does that work and why can youtube not detect it and block it?

If you open up the browser's Web Developer Tools on the Youtube page and go to the Network tab, you can see all the requests and responses going between the webpage (client) and the servers. The Youtube video segments are downloaded from the googlevideo.com host. These alternative clients basically go directly to the googlevideo.com to download the video segments to play them back.

Google uses DASH as the manifest file for streaming video. Each video has a corresponding DASH file. You can download the DASH manifest XML file from the Youtube page for the video. Then extract video segment URLs from the file. Those typically go to the googlevideo.com host. Google uses WebM as video container and VP9 for video encoding for the video segment, which most browsers support.

Most streaming players (alternative players) use the MSE API (Media Source Extensions) to feed the downloaded video segment data to the <video> tag to play the video. Most browsers support MSE these days.

I wasn't sure myself either, so I looked it up.

- Piped [1] uses NewPipeExtractor [2] (which is also used by NewPipe) to parse YouTube responses. I assume this is somewhat similar to what yt-dlp [3] does ?

- Invidious states in their FAQ [4]: "By default, the video stream is fetched directly from Google's servers (googlevideo.com)".

[1]: https://github.com/TeamPiped/Piped

[2]: https://github.com/TeamNewPipe/NewPipeExtractor

[3]: https://github.com/yt-dlp/yt-dlp

[4]: https://docs.invidious.io/faq/#q-what-data-is-shared-with-yo...

https://en.wikipedia.org/wiki/Invidious

This describes how it works at least tiny bit:

>Invidious does not use the official YouTube API, but scrapes the website for video and metadata such as likes and views.[10]