Enregistrement audio programm=c3=a9 sur un raspberry
9 réponses
Geo Cherchetout
Bonjour,
J'ai enfiché une carte son USB sur un des ports de mon raspberry et créé un
script que cron exécute toutes les heures et dont le rôle est d'enregistrer
un signal audio pendant 3599 secondes :
Ça produit des fichiers d'une taille d'environ 40 MiB de la forme
17avril13h00.wav, conformes à mes espérances, mais mon problème est que le
fichier n'est effectivement créé qu'à la fin de la 3599ème seconde. Si
l'alimentation du raspberry s'interrompt avant, les données accumulées (je
ne sais où) depuis le début de l'heure en cours sont perdues.
Comment faire en sorte que le fichier soit effectivement enregistré sur la
clef USB dès le lancement de la commande, avec une taille croissant du début
à la fin ?
Merci d'avance pour vos remarques, questions et suggestions.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo Cherchetout
Le 17/04/2018 13:59, j'ai écrit :
Bonjour, J'ai enfiché une carte son USB sur un des ports de mon raspberry et créé un script que cron exécute toutes les heures et dont le rôle est d'enregistrer un signal audio pendant 3599 secondes : #!/bin/bash cd /home/pi/clef arecord -D plughw:1 -t wav -c1 -d 3599 -r 11025 $(date +%d%b%Hh%M).wav Ça produit des fichiers d'une taille d'environ 40 MiB de la forme 17avril13h00.wav, conformes à mes espérances, mais mon problème est que le fichier n'est effectivement créé qu'à la fin de la 3599ème seconde. Si l'alimentation du raspberry s'interrompt avant, les données accumulées (je ne sais où) depuis le début de l'heure en cours sont perdues. Comment faire en sorte que le fichier soit effectivement enregistré sur la clef USB dès le lancement de la commande, avec une taille croissant du début à la fin ? Merci d'avance pour vos remarques, questions et suggestions.
Tiens, c'est marrant, il a suffit que je poste cet appel à l'aide pour que le bidule s'aligne sur mon souhait : J'ai à présent sur la clef un fichier 17avril14h00.wav de taille croissant régulièrement. Je ne vois pas ce qui s'est passé depuis ce matin.
Le 17/04/2018 13:59, j'ai écrit :
Bonjour,
J'ai enfiché une carte son USB sur un des ports de mon raspberry et créé un
script que cron exécute toutes les heures et dont le rôle est d'enregistrer
un signal audio pendant 3599 secondes :
Ça produit des fichiers d'une taille d'environ 40 MiB de la forme
17avril13h00.wav, conformes à mes espérances, mais mon problème est que le
fichier n'est effectivement créé qu'à la fin de la 3599ème seconde. Si
l'alimentation du raspberry s'interrompt avant, les données accumulées (je
ne sais où) depuis le début de l'heure en cours sont perdues.
Comment faire en sorte que le fichier soit effectivement enregistré sur la
clef USB dès le lancement de la commande, avec une taille croissant du début
à la fin ?
Merci d'avance pour vos remarques, questions et suggestions.
Tiens, c'est marrant, il a suffit que je poste cet appel à l'aide pour que
le bidule s'aligne sur mon souhait : J'ai à présent sur la clef un fichier
17avril14h00.wav de taille croissant régulièrement. Je ne vois pas ce qui
s'est passé depuis ce matin.
Bonjour, J'ai enfiché une carte son USB sur un des ports de mon raspberry et créé un script que cron exécute toutes les heures et dont le rôle est d'enregistrer un signal audio pendant 3599 secondes : #!/bin/bash cd /home/pi/clef arecord -D plughw:1 -t wav -c1 -d 3599 -r 11025 $(date +%d%b%Hh%M).wav Ça produit des fichiers d'une taille d'environ 40 MiB de la forme 17avril13h00.wav, conformes à mes espérances, mais mon problème est que le fichier n'est effectivement créé qu'à la fin de la 3599ème seconde. Si l'alimentation du raspberry s'interrompt avant, les données accumulées (je ne sais où) depuis le début de l'heure en cours sont perdues. Comment faire en sorte que le fichier soit effectivement enregistré sur la clef USB dès le lancement de la commande, avec une taille croissant du début à la fin ? Merci d'avance pour vos remarques, questions et suggestions.
Tiens, c'est marrant, il a suffit que je poste cet appel à l'aide pour que le bidule s'aligne sur mon souhait : J'ai à présent sur la clef un fichier 17avril14h00.wav de taille croissant régulièrement. Je ne vois pas ce qui s'est passé depuis ce matin.
Nicolas George
Geo Cherchetout , dans le message <pb4nif$2d17$, a écrit :
cd /home/pi/clef
... || exit Sinon tu peux enregistrer dans le répertoire courant.
$(date +%d%b%Hh%M).wav
Quelle horreur ! "%Y%m%d%H%M", et tu auras un tri lexicographique qui coïncide avec l'ordre chronologique.
Geo Cherchetout , dans le message <pb4nif$2d17$1@news.gegeweb.eu>, a
écrit :
cd /home/pi/clef
... || exit
Sinon tu peux enregistrer dans le répertoire courant.
$(date +%d%b%Hh%M).wav
Quelle horreur ! "%Y%m%d%H%M", et tu auras un tri lexicographique qui
coïncide avec l'ordre chronologique.
Geo Cherchetout , dans le message <pb4nif$2d17$, a écrit :
cd /home/pi/clef
.... || exit Sinon tu peux enregistrer dans le répertoire courant.
Il me semble que c'est bien ce que je fais, non ?
$(date +%d%b%Hh%M).wav
Quelle horreur ! "%Y%m%d%H%M", et tu auras un tri lexicographique qui coïncide avec l'ordre chronologique.
Lu et approuvé en tous points, merci beaucoup. :-)
Nicolas George
Geo Cherchetout , dans le message <pb4t3r$2fqi$, a écrit :
cd /home/pi/clef
.... || exit Sinon tu peux enregistrer dans le répertoire courant.
Il me semble que c'est bien ce que je fais, non ?
Non. Tu veux manifestement enregistrer dans /home/pi/clef, mais si par hasard ce répertoire n'existe pas, le cd échoue mais le script passe à la suite, et enregistre dans le répertoire d'où il a été lancé. Avec le « || exit », si cd échoue, le script échoue tout de suite. Au fait, tu as envisagé d'utiliser la fonction de segmentation de ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc d'éviter de perdre une seconde.
Geo Cherchetout , dans le message <pb4t3r$2fqi$1@news.gegeweb.eu>, a
écrit :
cd /home/pi/clef
.... || exit
Sinon tu peux enregistrer dans le répertoire courant.
Il me semble que c'est bien ce que je fais, non ?
Non. Tu veux manifestement enregistrer dans /home/pi/clef, mais si par
hasard ce répertoire n'existe pas, le cd échoue mais le script passe à
la suite, et enregistre dans le répertoire d'où il a été lancé. Avec le
« || exit », si cd échoue, le script échoue tout de suite.
Au fait, tu as envisagé d'utiliser la fonction de segmentation de
ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc
d'éviter de perdre une seconde.
Geo Cherchetout , dans le message <pb4t3r$2fqi$, a écrit :
cd /home/pi/clef
.... || exit Sinon tu peux enregistrer dans le répertoire courant.
Il me semble que c'est bien ce que je fais, non ?
Non. Tu veux manifestement enregistrer dans /home/pi/clef, mais si par hasard ce répertoire n'existe pas, le cd échoue mais le script passe à la suite, et enregistre dans le répertoire d'où il a été lancé. Avec le « || exit », si cd échoue, le script échoue tout de suite. Au fait, tu as envisagé d'utiliser la fonction de segmentation de ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc d'éviter de perdre une seconde.
Geo Cherchetout
Le 17/04/2018 15:39, *Nicolas George* a écrit :
Geo Cherchetout , dans le message <pb4t3r$2fqi$, a écrit :
cd /home/pi/clef
.... || exit Sinon tu peux enregistrer dans le répertoire courant.
Il me semble que c'est bien ce que je fais, non ?
Non. Tu veux manifestement enregistrer dans /home/pi/clef, mais si par hasard ce répertoire n'existe pas, le cd échoue mais le script passe à la suite, et enregistre dans le répertoire d'où il a été lancé. Avec le « || exit », si cd échoue, le script échoue tout de suite.
OK, je n'ai pas prévu de démonter cette clef très souvent mais je reconnais n'avoir pas pensé à ce qu'il adviendrait alors des fichiers wav qui continueraient d'être produits si j'oubliais de commenter la commande dans ma crontab ou d'ôter le droit d'exécution à mon script. Avec ma tête de linotte un tel optimisme c'est de l'inconscience.
Au fait, tu as envisagé d'utiliser la fonction de segmentation de ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc d'éviter de perdre une seconde.
Merci aussi pour cette idée. Je reviendrai chercher de l'aide ici si je n'y arrive pas tout seul.
Le 17/04/2018 15:39, *Nicolas George* a écrit :
Geo Cherchetout , dans le message <pb4t3r$2fqi$1@news.gegeweb.eu>, a
écrit :
cd /home/pi/clef
.... || exit
Sinon tu peux enregistrer dans le répertoire courant.
Il me semble que c'est bien ce que je fais, non ?
Non. Tu veux manifestement enregistrer dans /home/pi/clef, mais si par
hasard ce répertoire n'existe pas, le cd échoue mais le script passe à
la suite, et enregistre dans le répertoire d'où il a été lancé. Avec le
« || exit », si cd échoue, le script échoue tout de suite.
OK, je n'ai pas prévu de démonter cette clef très souvent mais je reconnais
n'avoir pas pensé à ce qu'il adviendrait alors des fichiers wav qui
continueraient d'être produits si j'oubliais de commenter la commande dans
ma crontab ou d'ôter le droit d'exécution à mon script. Avec ma tête de
linotte un tel optimisme c'est de l'inconscience.
Au fait, tu as envisagé d'utiliser la fonction de segmentation de
ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc
d'éviter de perdre une seconde.
Merci aussi pour cette idée. Je reviendrai chercher de l'aide ici si je n'y
arrive pas tout seul.
Geo Cherchetout , dans le message <pb4t3r$2fqi$, a écrit :
cd /home/pi/clef
.... || exit Sinon tu peux enregistrer dans le répertoire courant.
Il me semble que c'est bien ce que je fais, non ?
Non. Tu veux manifestement enregistrer dans /home/pi/clef, mais si par hasard ce répertoire n'existe pas, le cd échoue mais le script passe à la suite, et enregistre dans le répertoire d'où il a été lancé. Avec le « || exit », si cd échoue, le script échoue tout de suite.
OK, je n'ai pas prévu de démonter cette clef très souvent mais je reconnais n'avoir pas pensé à ce qu'il adviendrait alors des fichiers wav qui continueraient d'être produits si j'oubliais de commenter la commande dans ma crontab ou d'ôter le droit d'exécution à mon script. Avec ma tête de linotte un tel optimisme c'est de l'inconscience.
Au fait, tu as envisagé d'utiliser la fonction de segmentation de ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc d'éviter de perdre une seconde.
Merci aussi pour cette idée. Je reviendrai chercher de l'aide ici si je n'y arrive pas tout seul.
Geo Cherchetout
Le 17/04/2018 15:39, *Nicolas George* a écrit :
Au fait, tu as envisagé d'utiliser la fonction de segmentation de ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc d'éviter de perdre une seconde.
Je ne trouve pas comment faire ça dans le man touffu de ffmpeg, mais ce n'est pas grave. Cron répond bien à mon besoin en me permettant notamment d'enregistrer seulement dans une plage horaire définie. D'autre part la perte de quelques secondes toutes les heures ne me gêne absolument pas. Dans une autre vie peut-être...
Le 17/04/2018 15:39, *Nicolas George* a écrit :
Au fait, tu as envisagé d'utiliser la fonction de segmentation de
ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc
d'éviter de perdre une seconde.
Je ne trouve pas comment faire ça dans le man touffu de ffmpeg, mais ce
n'est pas grave. Cron répond bien à mon besoin en me permettant notamment
d'enregistrer seulement dans une plage horaire définie. D'autre part la
perte de quelques secondes toutes les heures ne me gêne absolument pas. Dans
une autre vie peut-être...
Au fait, tu as envisagé d'utiliser la fonction de segmentation de ffmpeg ? Ça permet d'éviter de fermer et rouvrir la carte son, donc d'éviter de perdre une seconde.
Je ne trouve pas comment faire ça dans le man touffu de ffmpeg, mais ce n'est pas grave. Cron répond bien à mon besoin en me permettant notamment d'enregistrer seulement dans une plage horaire définie. D'autre part la perte de quelques secondes toutes les heures ne me gêne absolument pas. Dans une autre vie peut-être...
Nicolas George
Geo Cherchetout , dans le message <pb7ho4$993$, a écrit :
Je ne trouve pas comment faire ça dans le man touffu de ffmpeg, mais ce n'est pas grave.
Pour référence, voici un exemple de base : ffmpeg -f alsa -ar 48000 -ac 2 -i default -f segment -segment_time 10 -strftime 1 record%H%M%S.wav
Geo Cherchetout , dans le message <pb7ho4$993$1@news.gegeweb.eu>, a
écrit :
Je ne trouve pas comment faire ça dans le man touffu de ffmpeg, mais ce
n'est pas grave.
Geo Cherchetout , dans le message <pb7ho4$993$, a écrit :
Je ne trouve pas comment faire ça dans le man touffu de ffmpeg, mais ce n'est pas grave.
Pour référence, voici un exemple de base : ffmpeg -f alsa -ar 48000 -ac 2 -i default -f segment -segment_time 10 -strftime 1 record%H%M%S.wav
Geo Cherchetout
Le 18/04/2018 18:34, *Nicolas George* a écrit :
Pour référence, voici un exemple de base : ffmpeg -f alsa -ar 48000 -ac 2 -i default -f segment -segment_time 10 -strftime 1 record%H%M%S.wav
Merci, j'espère que cela sera utile à quelqu'un d'autre. Quant à moi je ne trouve même pas les chaînes de caractères segment_time et strftime dans la page de man de ffmpeg. Faut-il chercher dans les "SEE ALSO" énumérés en fin de page ? (Ma version de ffmpeg est celle qui vient avec debian stretch : 3.2.10-1~deb9u1)
Merci, j'espère que cela sera utile à quelqu'un d'autre. Quant à moi je ne
trouve même pas les chaînes de caractères segment_time et strftime dans la
page de man de ffmpeg. Faut-il chercher dans les "SEE ALSO" énumérés en fin
de page ?
(Ma version de ffmpeg est celle qui vient avec debian stretch : 3.2.10-1~deb9u1)
Pour référence, voici un exemple de base : ffmpeg -f alsa -ar 48000 -ac 2 -i default -f segment -segment_time 10 -strftime 1 record%H%M%S.wav
Merci, j'espère que cela sera utile à quelqu'un d'autre. Quant à moi je ne trouve même pas les chaînes de caractères segment_time et strftime dans la page de man de ffmpeg. Faut-il chercher dans les "SEE ALSO" énumérés en fin de page ? (Ma version de ffmpeg est celle qui vient avec debian stretch : 3.2.10-1~deb9u1)
Nicolas George
Geo Cherchetout , dans le message <pb80av$fnu$, a écrit :
Quant à moi je ne trouve même pas les chaînes de caractères segment_time et strftime dans la page de man de ffmpeg. Faut-il chercher dans les "SEE ALSO" énumérés en fin de page ?
Oui : la page de man de ffmpeg a été découpée en plusieurs parties, elle était trop grosse. Tu as ffmpeg-all pour la page entière, c'est moins pratique pour une recherche ciblée mais plus pour une recherche générale.
Geo Cherchetout , dans le message <pb80av$fnu$1@news.gegeweb.eu>, a
écrit :
Quant à moi je ne
trouve même pas les chaînes de caractères segment_time et strftime dans la
page de man de ffmpeg. Faut-il chercher dans les "SEE ALSO" énumérés en fin
de page ?
Oui : la page de man de ffmpeg a été découpée en plusieurs parties, elle
était trop grosse. Tu as ffmpeg-all pour la page entière, c'est moins
pratique pour une recherche ciblée mais plus pour une recherche
générale.
Geo Cherchetout , dans le message <pb80av$fnu$, a écrit :
Quant à moi je ne trouve même pas les chaînes de caractères segment_time et strftime dans la page de man de ffmpeg. Faut-il chercher dans les "SEE ALSO" énumérés en fin de page ?
Oui : la page de man de ffmpeg a été découpée en plusieurs parties, elle était trop grosse. Tu as ffmpeg-all pour la page entière, c'est moins pratique pour une recherche ciblée mais plus pour une recherche générale.