2015-11-17 1 views
0

J'utilise livestreamer pour enregistrer en direct périodique cams vidéo de youtube comme suitLivestreamer - enregistrement d'horaire avec Debian Linux variantes distros

livestreamer <youtube-live-url> best -o out_file.mp4 

Un enregistrement doit être fait tous les 20 heures-22 heures chaque jeudi.

Je ne peux pas toujours être à l'ordinateur à ces moments.

Je pensais utiliser crontab-e pour commencer l'enregistrement avec la commande ci-dessus à l'heure donnée, 20h00 jeudi, ce qui est assez facile.

Le flux doit être arrêté avec CTRL + C à 22 heures le même jour. La suppression du processus ne fonctionnera pas car le flux ne sera pas écrit dans le fichier. Le flux en direct doit être fermé avec CTRL + C. Le problème est que je ne sais pas comment affecter un PID au processus initial, puis envoyer CTRL + C au même processus, tout cela à partir de crontab, pour fermer le flux et écrire le fichier.

N'importe qui des idées. Peut-être Crontab est, ou n'est pas, le meilleur moyen de persister ce problème.

Une recette de travail spécifique, pour effectuer cet enregistrement, si quelqu'un en a un, pls.

Répondre

1

Jetez un oeil à timeout. Il vous permet d'exécuter une commande et de la terminer avec un signal d'arrêt spécifique après un certain temps.

Vous pouvez utiliser ceci dans votre commande cron pour arrêter livestreamer avec ctrl-c (SIGINT) après 2 heures.

Vous devez utiliser des chemins d'accès complets pour timeout et livestreamer dans vos commandes cron. Vous pouvez trouver ces avec qui:

$ which timeout 
/usr/bin/timeout 

$ which livestreamer 
/usr/local/bin/livestreamer 

Pour enregistrer un segment de deux heures de votre commande Cron serait:

/usr/bin/timeout -s SIGINT 2h /usr/local/bin/livestreamer <url> /path/to/out.mp4 
+0

salut @ Z0n3r Pour un court test je '12 23 * * * timeout -s SIGINT 1m livestreamer https://www.youtube.com/watch?v=y60wDzZt8yg 240p -o live8.mp4'. Ça ne marche pas. Je pense que parce que crontab relâche le processus une fois qu'il est lancé et qu'il ne peut pas identifier le bon processus pour le fermer avec SIGINT. Des idées? (ps à partir du terminal, en dehors crontab, 'timeout -s SIGINT 1m livestreamer https://www.youtube.com/watch?v=y60wDzZt8yg 240p -o live8.mp4' fonctionne tout simplement génial) – Kes

+0

@Kes essayer d'ajouter des chemins complets pour timeout et livestreamer dans votre commande cron. Utilisez 'which timeout' et 'which livestreamer' pour les vérifier et changez votre commande cron pour par exemple:/usr/bin/timeout -s SIGINT 1m/usr/local/bin/livestreamer https://www.youtube.com/watch ? v = y60wDzZt8yg 240p -o live8.mp4 –

+0

Merci. Ça a bien marché! :) – Kes