Fix streaming and cache progressive in play_and_cache example
Cette correction implémente le cache progressif et le streaming pour permettre un démarrage quasi immédiat de la lecture pendant le téléchargement. ## Changements dans FlacCacheSink (pmoaudio-ext) Avant : - Accumulait tout le FLAC en mémoire dans un buffer - Attendait la fin complète de l'encodage avant d'ajouter au cache - Ajoutait à la playlist seulement après ingestion complète Après : - Passe le flux FLAC directement à add_from_reader - add_from_reader retourne dès que le prebuffer (512 KB) est atteint - Le PK est ajouté à la playlist immédiatement après le prebuffer - L'encodage et l'écriture continuent en arrière-plan ## Changements dans play_and_cache.rs - Suppression du sleep de 2 secondes avant le démarrage de la lecture - Ajout de commentaire expliquant le mécanisme de prebuffer - La lecture démarre dès que le prebuffer est atteint (~1-2 secondes) ## Résultat La musique démarre maintenant presque immédiatement après le début du téléchargement (temps du prebuffer) au lieu d'attendre la fin du téléchargement complet du premier morceau.
This commit is contained in:
@@ -233,9 +233,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
});
|
||||
|
||||
let playback_handle = tokio::spawn(async move {
|
||||
// Attendre un peu que le premier track soit disponible
|
||||
tokio::time::sleep(tokio::time::Duration::from_secs(2)).await;
|
||||
tracing::info!("[PLAYBACK] Pipeline starting...");
|
||||
// Pas de sleep - le cache progressif permet de démarrer immédiatement
|
||||
// dès que le prebuffer (512 KB) est atteint
|
||||
tracing::info!("[PLAYBACK] Pipeline starting (will wait for prebuffer)...");
|
||||
let result = Box::new(playlist_source).run(stop_token_playback).await;
|
||||
match &result {
|
||||
Ok(()) => tracing::info!("[PLAYBACK] Pipeline completed successfully"),
|
||||
|
||||
Reference in New Issue
Block a user