108 lines
2.3 KiB
Markdown
108 lines
2.3 KiB
Markdown
# É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
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
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 :
|
|
|
|
```text
|
|
open HD au début
|
|
puis seek vers 94.8 s
|
|
```
|
|
|
|
La 17.19 utilise directement :
|
|
|
|
```dart
|
|
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 :
|
|
|
|
```text
|
|
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é :
|
|
|
|
```text
|
|
%LOCALAPPDATA%\YouTubePersonal\media_cache
|
|
```
|
|
|
|
Si 299 + 251 sont déjà complets, la bascule peut être quasi immédiate.
|
|
|
|
## Test conseillé
|
|
|
|
Après extraction :
|
|
|
|
```powershell
|
|
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 :
|
|
|
|
```text
|
|
[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
|
|
```
|