Skip to content
This repository was archived by the owner on Jan 2, 2026. It is now read-only.
This repository was archived by the owner on Jan 2, 2026. It is now read-only.

feat(YouTube - Spoof streaming data): Add Use TV client setting #3004

Description

@inotia00

Application

YouTube

Feature description

This is not a feature request, but a description of the feature that will be introduce in the next release.

Providing alternative clients, such as TV, Web, has been discussed so far.

Here's why these clients aren't available on ReVanced:

Note

Mobile clients such as Android VR and iOS TV have unobfuscated streaming Urls, and the server blocks bots by verifying the Authorization token.

For all non-mobile clients, streaming urls are obfuscated by n-sig or signatureCipher.

Third-party apps such as NewPipe or SmartTube support deobfuscating streaming urls since they are all written from scratch.

Android YouTube client's response does not contain a signatureCipher, so none of the internal code handles it.

That's why ReVanced can't deobfuscate streaming data when it's spoofed to clients like TV or Web, and playback fails.

In order to spoof streaming data with clients like TV or Web, a feature that handles n-sig or signatureCipher must be implemented.

Implementing this was very difficult because almost all classes and methods in YouTube are obfuscated.

It's been some time since the Spoof streaming data patch was implemented, and there has been a lot of development and discussion of open source YouTube extraction tools.

Implementing clients like TV and Web in ReVanced is no longer completely impossible.

I used my free time last week to implement TV, a client that doesn't require a PoToken, and I'm currently testing it.

Up until last week, I hadn't decided to release it because it had a fatal side effect that I couldn't fix.

Nevertheless, I changed my mind, hoping that releasing the source code would allow someone to fix it.

The TV client does not offer any improvements over the available clients - such as Android VR and iOS TV - except that it supports multi-audio tracks and stable volume.

This is a limitation that will be shared not only by the TV client but also by other clients such as Web.

Note

  1. Multi-audio tracks and stable volume are supported.

  2. More system resources are used, and the video starts about 5 to 15 seconds later.
    (Imagine if there was always 15 seconds of buffering before a 10-second Shorts started)

  3. Age-regulated or purchased videos are marked as DRM protected, which is not yet implemented, if you're interested, see larsenv/YouTube-TV-Downloader

Motivation

  1. Clients like Android VR and iOS TV have structural limitations that cannot be fixed.

  2. TV has been used as the default client for a long time in yt-dlp, the most popular open source YouTube extraction tool.

  3. TV has some critical side effects right now, but it is stable enough to be used as the default client once all the side effects are fixed.

Acknowledgements

  • This is not a feature request for YouTube.
  • This issue is not a duplicate of an existing feature request.
  • I have chosen an appropriate title.
  • All requested information has been provided properly.
  • I have written the title and contents in English.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions