Execution de fichier audio avec motioneye sur raspberry pi3

Résolu/Fermé
Damdam - 14 nov. 2019 à 23:51
 Damdam - 8 déc. 2019 à 19:38
Bonsoir,

j’ai récemment installé motioneye sur mon raspberry pi3, je souhaiterai lancer un fichier mp3 lors de la détection de mouvement.Or après de nombreuse recherche et essai je ne réussi pas à entendre le fichier audio.
J’ai fait plusieurs script notamment en python et sh je vois bien que le script s’exécute (je crée un fichier dans le script puis je lance le fichier mp3). Le fichier se crée correctement mais je ne sais pas se qu’il se passe pour le fichier audio.En console le script s’exécute correctement et le son est audible sans aucun souci.

Quelqu’un pour une idée ?

17 réponses

mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 2 déc. 2019 à 10:13
Bonjour,

Les erreurs lirc ne sont pas grave (c'est pour gérer des télécommandes infra rouges, on peut les ignorer). Je ne vois pas d'erreur. Est-ce que si tu lances cette commande
mplayer
depuis un terminal et avec ce fichier son, tu as du son ? Vérifie notamment le volume, si les enceintes sont allumées etc.

Et vérifie que
pi
est dans le groupe
audio
:

grep audio /etc/group


Bonne chance
1
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
17 nov. 2019 à 19:07
Bonjour,

Le message n'est pas très clair à ce stade.

Un fichier mp3 ne s'exécute pas puisque c'est un fichier de données. On peut imaginer exécuter un lecteur mp3 (e.g.
mplayer
) et passer en paramètre le chemin du fichier mp3. Je ne sais pas comment marche
motioneye
, mais dans le doute, j'aurais tendance à passer le chemin absolu du fichier mp3 (e.g. /home/toto/musique.mp3).

Ensuite ce serait peut-être intéressant de nous indiquer :
  • le contenu du script et de voir ce qu'il retourne quand tu l'exécutes dans un terminal
  • comment tu configures
    motioneye
    pour déclencher ton script. Là aussi, passer le chemin absolu vers le script est sans doute une bonne idée...
  • quel utilisateur lance
    motioneye
    . En outre, est-ce que cet utilisateur a des droits suffisants pour exécuter le script et accéder au fichier mp3 ?


Bonne chance
0
chtroomfboy Messages postés 5 Date d'inscription mardi 22 avril 2014 Statut Membre Dernière intervention 26 novembre 2019
17 nov. 2019 à 19:37
Bonsoir,

voici le script python que j'ai déjà testé sans succès.


je l'ai déja passé en exécutable via la commande chmod. Lorsque je l’exécute en console le fichier tmp.txt est créé avec "test" écrit dedans et la fichier mp3 est joué sur l'enceinte branché en jack sur mon raspberry pi.
Concernant motioneye je l’exécute avec sudo systemctl start motioneye.
Pour lancer le script j'ai déja testé avec python /home/xx/lecture.py ou sudo python /home/xx/lecture.py ou directement /home/xx/lecture.py.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
19 nov. 2019 à 11:02
Bonjour,

Tu aurais pu copier coller le script python plutôt que faire une capture d'écran et utiliser les balises de codes (c'est plus lisible).

Est-ce que le fichier temporaire est créé si l'appel est déclenché par
motioneye
? Essaye le temps de tester de placer le mp3 et ton script dans /tmp en corrigeant les différents chemins en conséquences. Cela permettra de voir si c'est un problème de droit.

Essaye d'exécuter le script avec la commande
python3 /tmp/lecture.py
. En particulier la ligne shebang est généralement la première ligne du fichier. C'est peut-être la cause de ton problème (le script est alors potentiellement vu comme un script shell et plante car il est écrit en python).

Bonne chance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chtroomfboy Messages postés 5 Date d'inscription mardi 22 avril 2014 Statut Membre Dernière intervention 26 novembre 2019
19 nov. 2019 à 23:57
Bonsoir
Alors oui le fichier tmp est bien créé mais j'ai déjà essayé avec celui-ci aussi:
  #!/bin/sh
mplayer /home/pi/son/0267.mp3


ça fonctionne bien dans la console et dans le fichier /tmp/
0
chtroomfboy Messages postés 5 Date d'inscription mardi 22 avril 2014 Statut Membre Dernière intervention 26 novembre 2019
19 nov. 2019 à 23:58
mais pas dans motioneye
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
21 nov. 2019 à 10:08
Ok essayons de voir si tu arrives déjà depuis motioneye a lancer une commande shell. Supposons qu'au lieu d'appeler ton script shell, tu lances :

touch /tmp/toto


Est-ce que le fichier toto est bien recrée quand un mouvement est détecté (compare la date avec la commande qui suit, ou supprime ce fichier entre chaque mouvement) ?

ls -l /tmp/toto


Bonne chance
0
Bonsoir,

oui , le fichier toto est bien créé.
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
25 nov. 2019 à 13:46
Ok et avec ce script est ce que toto et tata sont bien créés? Copie un fichier son (il doit y en avoir au besoin dans
/usr/share/sounds
) dans
/tmp
. Un fichier wav minimisera les éventuels problèmes de greffons.

cp /usr/share/sounds/alsa/Front_Center.wav /tmp


Ensuite modifie ton script :

#!/bin/sh
touch /tmp/toto
mplayer /home/damdam/Front_Center.wav
touch /tmp/tata


(en adaptant le chemin vers le son à jouer).

Est-ce que les fichiers
/tmp/toto
et
/tmp/tata
sont bien (re)créés ? As-tu du son ?

a+
Marco
0
Salut,

j'ai lancé d'abord dans la console la commande:
bash /home/pi/son/son.sh

Là !! Nickel les fichiers toto et tata son bien créés et le ficher .wav est bien joué.

Dans motioneye les fichiers sont correctement créés mais je n'entend pas le fichier audio.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
26 nov. 2019 à 08:06
Salut,

Je ne connais pas du tout
motioneye
(même si j'ai déjà utilisé
motion
par le passé
) et à tout hasard regarde si un utilisateur du même nom a été créé, et si oui, s'il fait parti du groupe
audio


0
chtroomfboy Messages postés 5 Date d'inscription mardi 22 avril 2014 Statut Membre Dernière intervention 26 novembre 2019
26 nov. 2019 à 08:54
Bonjour zipe,

Peut tu m'indiquer la marche a suivre pour vérifier tous celà stp.

Merci et bonne journée.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
26 nov. 2019 à 09:36
Avec la commande
cat /etc/group
tu auras la liste de tous les groupes avec les identifiants en rapport…
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
26 nov. 2019 à 10:47
Et
cat /etc/passwd
pour les identifiants…
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 26 nov. 2019 à 11:12
En complément à ce que dit zipe31 : vérifie qui instancie le script shell (est-ce root, ton utilisateur, un utilisateur associé à motioneye).

Tu peux corriger le script que je t'ai donné comme suit pour savoir :

#!/bin/bash
echo $(whoami) /tmp/toto
mplayer /home/damdam/Front_Center.wav


Regarde ensuite dans
/tmp/toto
le nom de l'utilisateur. Regarde s'il est dans le groupe audio avec la commande
grep audio /etc/group
.

Exemple : Ici, les utilisateurs
pulse
et
mando
font partie du groupe
audio
. Note que les logins sont séparés d'une virgule.

(mando@silk) (~) $ grep audio /etc/group
audio:x:29:pulse,mando


Dans ton cas, si le nom d'utilisateur qui apparaît dans
/tmp/toto
n'est pas dans le groupe
audio
, corrige ce fichier pour l'y ajouter.

pkexec gedit /etc/group &


Sauve quitte et redémarre pour être sûr que les changements soient bien pris en compte.

Assure-toi aussi que quand tu invoques ton script (mettons
/home/damdam/script.sh
), ses résultats sont redirigés dans un fichier dans lequel tu pourras retrouver les éventuelles erreurs :

/home/damdam/script.sh 1>/tmp/script.log 2>/tmp/script.log


... puis reporte-nous le contenu de
/tmp/script.log
.

Bonne chance
0
Bonsoir,

L'utilisateur est "root".
J'ai modifié le fichier groupe, sauvegardé puis fais un reboot du raspi .
J'ai vérifié avec
grep audio /etc/group
audio:x:29:pi,pulse,root

sans résultat.

J'ai testé dans la console avec
sudo bash

pour exécuter mon script et j'ai obtenu le même contenu que dans le fichier .log ci-dessous.

Voici le résultat du fichier .log.
==========================================================================
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 48000 Hz, 1 ch, s16le, 768.0 kbit/100.00% (ratio: 96000->96000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
[AO_ALSA] alsa-lib: pcm_hw.c:1602:(snd_pcm_hw_open) open '/dev/snd/pcmC0D0p' failed (-2): No such file or directory
[AO_ALSA] alsa-lib: pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
[AO_ALSA] Playback open error: No such file or directory
Failed to initialize audio driver 'alsa'
[AO SDL] Samplerate: 48000Hz Channels: Mono Format s16le
[AO SDL] using aalib audio driver.
[AO SDL] Unable to open audio: No available audio device
Failed to initialize audio driver 'sdl:aalib'
Could not open/initialize audio device -> no sound.
Audio: no sound
Video: no video


Exiting... (End of file)
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
28 nov. 2019 à 13:50
Bonjour,

Je pense que la certains de tes problèmes sont liés au fait que tu travailles en root (mais pas uniquement).
  • D'une part, ça ne sert à rien d'ajouter root dans un groupe. Il a déjà tous les droits.
  • D'autre part, on évite autant que possible d'être root, pour rendre le système plus sûr. Ici on parle d'une application utilisateur qui n'a aucune raison d'être lancée en root.


J'espère au passage que tu n'es pas identifié en tant que root lorsque tu lances ta session graphique, mais bien avec un vrai profil utilisateur.

Le fait que pulse (qui s'occupe du son) plante à l'initialisation explique pourquoi tu n'as pas de son. Pas de connexion à pulse, pas de son. Comme le montre la commande
ls -l /dev/snd
, l'utilisateur qui joue du son (donc celui qui lance mplayer, donc celui qui lance ton script, donc celui qui a lancé motioneye, donc a priori ton profil utilisateur) doit appartenir au groupe
audio
. Il faut aussi que pulse soit "câblé" sur un device qui existe (or ce ne semble pas être le cas).

Donc en résumé :
  • réinstalle
    pulseaudio
    et regarde si ton problème n'est pas lié à une mauvaise configuration en cherchant ton message d'erreur sur google (voir par exemple cette discussion)
  • lance
    motioneye
    avec ton profil utilisateur,
  • assure-toi qu'il est dans le groupe
    audio
    ,
  • puis reteste.


Bonne chance
0
Bonsoir,

J'ai fait une réinstallation de pulseaudio sans résultat.

Je ne comprend justement pas pourquoi en utilisateur "pi" ça fonctionne bien et pas en superutilisateur "root".
j'ai essayé de lancer motioneye en "pi" mais l'exécution du script se fait toujours en "root".

On avance , en tout cas
0
Voilà le fichier .log quand le script est exécuté en "pi"

MPlayer 1.3.0 (Debian), built with gcc-6.2.1 (C) 2000-2016 MPlayer Team
mplayer: could not open config files /home/pi/.lircrc and /etc/lirc/lircrc
mplayer: No such file or directory
Failed to read LIRC config file ~/.lircrc.

Playing /tmp/Front_Center.wav.
libavformat version 57.56.101 (external)
Mismatching header version 57.56.100
Audio only file format detected.
Load subtitles in /tmp/
==========================================================================
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 48000 Hz, 1 ch, s16le, 768.0 kbit/100.00% (ratio: 96000->96000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] 48000Hz 1ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 0.0 (unknown) of 1.0 (01.0) ??,?% ^[[J^MA: 0.1 (00.0) of 1.0 (01.0) ??,?$


Exiting... (End of file)
0
Bonjour,

lorsque j’exécute mon script en pi le son fonctionne. C'est pour ça que je ne comprend pas pourquoi en utilisateur "pi" ça fonctionne bien et pas en superutilisateur "root".
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
2 déc. 2019 à 12:10
On peut voir la sortie de
ls -lh /chemin/ton_script
?
0
pi@raspberrypi:~ $ ls -lh /home/pi/son/son.sh
-rwxr-xr-x 1 root root 147 nov. 26 22:59 /home/pi/son/son.sh
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
3 déc. 2019 à 07:31
Pourquoi il appartient à "root" ton fichier ?
Quand tu dis que tu le lances en tant qu'utilisateur "pi", tu dois utiliser
sudo
, non ?

Change son utilisateur pour "pi" (
sudo chown pi:pi /home/pi/son/son.sh
)
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 3 déc. 2019 à 09:18
Bonjour

@zipe31

Vus les droits associés à son fichier, il peut appartenir à root tout en étant lancé par un utilisateur vu que celui-ci aura les droits en lecture et exécution. Pas besoin de
sudo
, et ici il n'y aucune bonne raison de l'utiliser.

@DamDam

Lorsque j’exécute mon script en pi le son fonctionne. C'est pour ça que je ne comprend pas pourquoi en utilisateur "pi" ça fonctionne bien et pas en superutilisateur "root".

Il ne faut pas lancer ce script en root ni avec
sudo
. Et il faut que ta session graphique soit ouverte avec ton utilisateur
pi
. Il ne faut jamais lancer une session graphique en root. Si c'est ce que tu as fait, c'est ce qui peut expliquer ton problème de son.

Bonne chance
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024
3 déc. 2019 à 09:33
@zipe31
Vus les droits associés à son fichier, il peut appartenir à root tout en étant lancé par un utilisateur vu que celui-ci aura les droits en lecture et exécution. Pas besoin de
sudo
, et ici il n'y aucune bonne raison de l'utiliser.
Effectivement. Merci.

Par contre mplayer est une application graphique et c'est sûrement cela qui fiche le bazar, non ?
Il faudrait essayer avec une application "cli" comme
aplay
:
aplay /home/pi/son/0267.mp3
0
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
4 déc. 2019 à 15:45
Hello zipe31, non non
mplayer
marche en mode texte. Mais il existe effectivement des interfaces graphiques (comme
smplayer
).
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024
4 déc. 2019 à 15:53
Salut,

Arf, effectivement, je ne sais pas pourquoi j'étais persuadé que mplayer était le pendant linuxien de Windows Media Player ;-\

Quelle triple buse fais-je ;-)
0
bonsoir,

j'ai eu un souci avec ma webcam elle ne fonctionne plus du tout.je devrait bientôt recevoir la nouvelle.
je ferais le test a son arrivée.

merci encore pour votre aide.
0
Bonsoir

J'ai bien reçu ma nouvelle webcam.
Après une réinstallation de mon raspi le script avec aplayer fonctionne correctement lors de la détection de mouvement.
Je ne sais pas trop d’où venait le bug sachant que je n'ai pas encore installé mplayer.

merci pour votre soutien.
Ce sujet peut être mis en résolu.
0