1 votes

comment utiliser le temps mort dans mplayer ?

J'essaie d'enregistrer de l'audio à l'aide de mplayer à partir d'un flux http en direct. La sauvegarde de l'audio est réussie. S'il n'y a pas de flux en direct, il ne se termine pas automatiquement. Existe-t-il un moyen de définir un délai d'attente s'il n'y a pas de flux en direct ?

code : mplayer -i url -t 00:00:10 -acodec libmp3lame -ab 24 -ar 8000 audio.mp3

Merci d'avance.

0voto

isobretatel Points 618

J'ai résolu le problème en utilisant Attendez-vous à . Vous lancez la lecture en continu avec ./play.sh :

while [ '1' == '1' ]; 
do
  expect try_stream.exp $1 
  sleep 3
done

Et ceci utilise try_stream.exp :

set timeout 4
spawn mplayer -nocache $argv
expect {
  "Starting playback" { 
    interact
  }
  timeout { 
    send \003;
    exit 1
  }
}

En gros, il essaie de lire le flux, et s'il n'y parvient pas dans les 3 secondes, il abandonne (.exp script) et réessaie (.sh script). Cela fonctionne tant que vous avez des problèmes comme un serveur très occupé. Malheureusement je ne sais pas comment gérer le cas où mplayer se bloque une fois qu'il a commencé à jouer, il n'y a pas de chaîne de sortie pour qu'Expect puisse détecter dans un tel cas.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X