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_sizeyt-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