Files
youtube_personal/ETAPE17_12_YTDLP_NATIVE_RELAY.md

2.4 KiB

Étape 17.12 - Relais local piloté par le downloader natif yt-dlp

Ce que le log 17.11 a prouvé

La résolution n'est plus le problème :

[HD-WINDOWS] vidéo relayée confirmée: 1920x1080

Les deux URLs sont bien MWEB et portent bien un PO Token :

videoClient=MWEB videoPOT=true
audioClient=MWEB audioPOT=true

Mais le HttpClient Dart reçoit encore des 403 :

  • audio : dès l'offset 0, même avec un Range réduit à ~1,18 Mo ;
  • vidéo : après environ 31 Mo, puis systématiquement au même offset.

Cela invalide l'hypothèse "chunk trop gros" comme cause principale.

Différence importante avec yt-dlp

Le downloader HTTP officiel de yt-dlp ne se limite pas à ajouter les mêmes headers. Il utilise son propre stack réseau et sa propre logique de reprise Range.

L'étape 17.12 arrête donc d'essayer de reproduire ce transport en Dart.

Nouvelle architecture

libmpv
  |
  | HTTP Range
  v
127.0.0.1
  |
  | lance yt-dlp --load-info-json -o -
  v
yt-dlp HttpFD
  |
  | URL MWEB + PO Token + headers + Range
  v
googlevideo

Pour chaque connexion /video ou /audio, le relais crée temporairement un info-json local contenant :

  • l'URL signée déjà extraite ;
  • les headers exacts ;
  • le Range demandé par mpv ;
  • le http_chunk_size yt-dlp ;
  • la taille totale.

Puis il demande au yt-dlp.exe déjà installé de télécharger cette plage vers stdout. Le relais retransmet stdout directement à libmpv.

Ainsi Google n'est plus contacté par le HttpClient Dart. Le transport googlevideo est effectué par le même moteur yt-dlp qui a réussi le test manuel.

Seek

Lors d'un seek, mpv ferme/ouvre une nouvelle requête Range. Le relais lance un nouveau process yt-dlp à l'offset demandé. Le process précédent est stoppé lorsque sa connexion n'est plus utile.

Installation

Aucune dépendance ou script supplémentaire.

Extraire ce ZIP à la racine puis :

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

Tester 1080p + son.

Logs attendus

[HD-WINDOWS][17.12] yt-dlp -> relais yt-dlp natif -> libmpv
[HD-RELAY][17.12] actif sur 127.0.0.1:...
[HD-RELAY][17.12] video: yt-dlp démarre Range=...
[HD-RELAY][17.12] audio: yt-dlp démarre Range=...

Succès :

[HD-RELAY][17.12] video: yt-dlp OK ...
[HD-RELAY][17.12] audio: yt-dlp OK ...
[HD-WINDOWS] lecture confirmée: 1920x1080