Files
youtube_personal/ETAPE17_10_LOCAL_CHUNK_RELAY.md
T

2.2 KiB

Étape 17.10 - Relais HTTP local chunké pour Windows

Ce que le test yt-dlp vient de prouver

Le test direct yt-dlp -f 299 --test réussit réellement :

[info] ... Downloading 1 format(s): 299
[download] Destination: ...
[download] 100% of 10.00KiB

Donc :

  • le client mweb fonctionne ;
  • le PO Token est généré ;
  • le serveur googlevideo.com accepte le flux ;
  • l'IP et les headers sont valides ;
  • le problème restant est le transport direct libmpv -> googlevideo.

yt-dlp fournit aussi downloader_options.http_chunk_size pour YouTube (typiquement 10 MiB). La documentation yt-dlp signale que YouTube peut throttler les requêtes HTTP dont les chunks dépassent 10 MiB.

Nouvelle architecture Windows

yt-dlp
  |
  | URL vidéo/audio + PO Token + headers + http_chunk_size
  v
Relais HTTP local Dart (127.0.0.1 uniquement)
  |
  | requêtes Range vers googlevideo <= 10 MiB
  v
Googlevideo

libmpv/media_kit
  |
  +----> http://127.0.0.1:<port>/video
  +----> http://127.0.0.1:<port>/audio

libmpv ne contacte donc plus directement Google.

Le relais :

  • écoute uniquement sur 127.0.0.1 ;
  • transmet les headers exacts yt-dlp ;
  • force Accept-Encoding: identity ;
  • respecte les requêtes Range de mpv ;
  • découpe l'upstream en blocs au maximum égaux au chunk yt-dlp ;
  • permet le seek ;
  • relaie séparément vidéo et audio.

Android n'est pas modifié.

Installation

Extraire ce ZIP à la racine du projet.

Aucune nouvelle dépendance. Aucun nouveau script PowerShell.

cd "D:\07-Logiciels\23-youtube_personal"
flutter clean
flutter run -d windows

Tester 1080p d'abord.

Logs attendus

[HD-WINDOWS][17.10] yt-dlp -> relais local -> libmpv
[HD-WINDOWS][17.9] extraction mweb + PO Token provider local
[HD-WINDOWS][17.10] transport yt-dlp: ... chunk=10485760o ...
[HD-RELAY][17.10] actif sur 127.0.0.1:...
[HD-RELAY] /video GET bytes=...

Succès :

[HD-WINDOWS] vidéo relayée confirmée: 1920x1080
[HD-WINDOWS] lecture confirmée: 1920x1080 (relais local)

Si le relais reçoit un refus upstream, le log affichera directement :

[HD-RELAY] /video échec: googlevideo HTTP 403 ...