Files
youtube_personal/ETAPE17_19_PROGRESSIVE_PREBUFFER.md

2.3 KiB

Étape 17.19 - Vrai prébuffer HD progressif Windows

Oui : c'est désormais exactement l'architecture utilisée.

La 17.18 attendait encore les 378 Mo complets du format 299 avant de basculer. La 17.19 ne fait plus cela.

Fonctionnement

clic
 ↓
360p muxé démarre immédiatement
 ↓
yt-dlp démarre 1080p 299 + audio 251
 ↓
on surveille la taille réellement téléchargée
 ↓
dès qu'on a environ le timestamp courant + 20 s de réserve :
        BASCULE HD
 ↓
yt-dlp continue à télécharger le reste pendant la lecture

Exemple avec une reprise autour de 60 secondes :

on ne demande plus 378 Mo
on attend seulement assez d'octets pour couvrir environ 0 -> 80 s
+ une marge de sécurité

Avec le débit observé lors du test manuel, cela devrait être beaucoup plus court que le téléchargement intégral.

Pourquoi pas --download-sections

yt-dlp --download-sections passe par ffmpeg pour les plages temporelles. Pour notre lecteur, on veut au contraire conserver le fichier DASH continu qui grandit pendant la lecture et laisser mpv faire ses Range/seeks.

Correction du flash au début

La 17.18 faisait :

open HD au début
puis seek vers 94.8 s

La 17.19 utilise directement :

Media(
  hdUrl,
  start: switchPosition,
)

Donc mpv prépare le nouveau média au timestamp courant avant la première frame HD rendue.

Audio

On conserve la paire validée :

1080p60 : 299 AVC
audio : 251 Opus

L'audio étant petit, la bascule attend qu'il soit entièrement disponible afin de ne pas perdre le son.

Cache

Le cache existant est réutilisé :

%LOCALAPPDATA%\YouTubePersonal\media_cache

Si 299 + 251 sont déjà complets, la bascule peut être quasi immédiate.

Test conseillé

Après extraction :

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

Pas besoin de flutter clean.

Pour voir le comportement progressif réel, tester aussi UNE AUTRE vidéo qui n'est pas déjà en cache.

Logs attendus :

[HD-WINDOWS][17.19] lecture immédiate 360p ...
[HD-PROGRESSIVE][17.19] session prête video=STREAM audio=DOWNLOAD
[HD-WINDOWS][17.19] buffer suffisant: video=... ≈...s audio=true
[HD-WINDOWS][17.19] bascule vers HD bufferisée à ... ms
[HD-WINDOWS][17.19] HD progressive confirmée: 1920x1080 audio=251/opus