95 lines
2.2 KiB
Markdown
95 lines
2.2 KiB
Markdown
# É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:<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.
|
|
|
|
```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 ...
|
|
```
|