# É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 : ```text [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 ```text 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:/video +----> http://127.0.0.1:/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. ```powershell cd "D:\07-Logiciels\23-youtube_personal" flutter clean flutter run -d windows ``` Tester 1080p d'abord. ## Logs attendus ```text [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 : ```text [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 : ```text [HD-RELAY] /video échec: googlevideo HTTP 403 ... ```