Comment “Piper” un fichier audio mp3 dans Linux?

Résolu/Fermé
guillaumegilbertsoucy Messages postés 326 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 4 juillet 2023 - Modifié le 25 avril 2022 à 16:29
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 29 mai 2022 à 17:43
Bonjour à tous !

Je souhaiterais savoir comment faire pour « piper » un fichier audio
mp3
vers une programme dans Ubuntu Linux?

J’ai passé des heures à essayer des syntaxes comme :
linphonecsh dial 701 | emergency-msg-001.mp3 
.

Sans aucun succès.

Faut t’il préciser une interface audio ? Virtuelle ? Si oui, comment ?

Merci,

Guillaume
A voir également:

3 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 25 avril 2022 à 17:12
Bonjour,

Si on corrige ta commande sans réfléchir, ce serait plutôt
linphonecsh dial 701 < emergency-msg-001.mp3
.

Pour rappel, en shell, tu as les opérateur suivants :
  • cmd1 | cmd2
    : ce qu'écrit
    cmd1
    dans la sortie standard est injecté dans ce que
    cmd2
    lit depuis l'entrée standard ;
  • cmd1 > fichier
    : ce qu'écrit
    cmd1
    sur la sortie standard est écrit à la place du contenu du fichier
    fichier
    ;
  • cmd1 >> fichier
    : ce qu'écrit
    cmd1
    sur la sortie standard est écrit à la suite du contenu du fichier
    fichier
    ;
  • cmd2 < fichier
    : le contenu du fichier
    fichier
    est injecté dans ce que
    cmd2
    lit depuis l'entrée standard. Cela équivaut plus ou moins à
    cat fichier | cmd2
    .


Mais je doute que ça marche car cela signifierait que quand tu lances
linphonecsh dial 701
tu peux copier coller dedans le contenu d'un mp3. Or d'après ce lien, ça semble plus compliqué.

Donc je te recommande de voir si tu arrives à jouer un fichier
.wav
(ce n'est pas le même format et contrairement aux MP3, il n'y a pas besoin de codecs pour pouvoir jouer le son - c'est le format son le plus basique). Cette discussion suggère qu'il existe une dans
linphonec
(pas
linphonecsh
) la commande
play
(qui prend en paramètre le chemin vers un fichier
.wav
). Mais à mon avis c'est peu probable que ça marche, car ça n'est pas documenté (voir ce lien). Il faudrait voir ce que racontes
help
dans
linphonec
.



Bonne chance
0
guillaumegilbertsoucy Messages postés 326 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 4 juillet 2023 8
25 avril 2022 à 17:17
Bonjour,

En gros, je cherche à trouver une façon à injecter de l'audio, ici un message, avec le client VoIP linphone.

Avec cette commande:
linphonecsh dial 701 | mplayer new.mp3
j'ai

MPlayer 1.4 (Debian), built with gcc-10 (C) 2000-2019 MPlayer Team
do_connect: could not connect to socket
connect: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing new.mp3.
libavformat version 58.45.100 (external)
Audio only file format detected.
Load subtitles in ./
==========================================================================
Opening audio decoder: [mpg123] MPEG 1.0/2.0/2.5 layers I, II, III
AUDIO: 8000 Hz, 2 ch, s16le, 8.0 kbit/3.12% (ratio: 1000->32000)
Selected audio codec: [mpg123] afm: mpg123 (MPEG 1.0/2.0/2.5 layers I, II, III)
==========================================================================
AO: [pulse] Init failed: Connection refused
Failed to initialize audio driver 'pulse'
AO: [alsa] 8000Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: 0.2 (00.2) of 80.0 (01:20.0) ??,?%

^C 23.2 (23.2) of 80.0 (01:20.0) 0.1%


MPlayer interrupted by signal 2 in module: play_audio
A: 23.3 (23.2) of 80.0 (01:20.0) 0.1%

Exiting... (Quit)


(J'ai interrompus la lecture)

J'ai peut-être pas la bonne syntaxe de commande. J'ai essayer la commande dans votre exemple, c'est à dire:
linphonecsh dial 701 < emergency-msg-001.mp3
mais ça ne semble pas fonctionner.

Doit-je préciser une interface audio? Je suis en "headless" et présentement à distance. Pulse ou alsa, je suis pas certain comment faire.

Merci!

Guillaume
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 25 avril 2022 à 17:54
Bonjour,

Avant de rentrer dans le technique, une question qui se pose, c'est si un outil comme celui-ci ne fait pas déjà ce que tu veux. Parviens-tu à le faire marcher ? Te suffit-il ?

Piste 1 : redirections :

Ensuite, pour revenir à ton messag, ce qui t'échappe à ce stade, c'est que ce qui circule entre deux processus si tu utilises l'une des redirections (|, >, >>, <) dont j'ai parlé. Quand tu lis un son disons avec
mplayer
, le son n'est pas écrit dans
/dev/stdout
(mais par exemple dans un device contenu dans
/dev/snd/
) et à moins de préciser à
mplayer
qu'il doit écrire dans
/dev/stdout
(ce que ne semble pas permettre son option
-ao
) tu ne pourras pas injecter du son dans
linphonecsh
(ou
linphonec
).

Et même si tu y arrivais, il faudrait que
linphonecsh
(ou
linphonec
) soit prévu pour lire un son depuis l'entrée standard, or ça n'est manifestement pas le cas. Et même si c'était possible, il faudrait que ce soit dans un format de son universel (donc
wav
est crédible) mais certainement pas un format "compliqué" comme
mp3
qui requiert un codec dédié.

Bref, c'est une piste qui ne marchera à mon avis pas vu comment sont conçus
linphonec
ou
linphonecsh
.

Piste 2 : commandes
play
,
incall-player-start
,
play-wav
:


Pour s'en assurer, il faudrait vérifier, cf mon message précédent, si la commande
play
existe et marche, et sinon me reporter ce que retourne
help
. Je pense que
help
existe (j'aimerais voir ce qu'elle retourne) mais j'ai des doutes sur
play
. Peux-tu tester ?

En effet, le code source de linphone suggère plutôt deux autres commandes. Il semble possible :
  • d'envoyer un son
    wav
    ou
    mkv
    avec
    incall-player-start <filename> [<call_id>]
    (à taper dans
    linphonec
    je suppose ?) (voir ce lien)
  • de lire un fichier wav si le démon son linphone est actif avec
    play-wav <filename>
    (voir ce lien).


Piste 3 :
mediaplayer2 
:


Si les deux premières pistes échouent, il est toujours possible de se plonger dans
mediastreamer2

(c'est la suggestion faite sur le site de linphone). Toutefois, ça ne semble pas évident, comme le montre ce site, car il faut des connaissances en C++.

Bonne chance
0
guillaumegilbertsoucy Messages postés 326 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 4 juillet 2023 8
Modifié le 29 mai 2022 à 17:42
Bonjour,

Désolé du délai.

J'ai finalement été en mesure de procéder en faisait le message audio sur FreePBX.

Sur la machine que l'alimentation de secours est branché, quand cette dernière tombe en mode batterie, ça appelle un groupe d'extension sur FreePBX et dès que quelqu'un prend l'appel, la machine avec l'alimentation de secours transfère l’appel vers une fonction qui fait jouer un message d'urgence, dans le cas nous concernant c'est au sujet d'une panne de courant général.

La même chose pourrait être faite pour le système de détection d'incendies, système anti-vol, capteurs thermique, etc.

Juste une chose, je ne suis pas en mesure de configurer NUT, l’alimentation de secours utilisée (TrippLite) semble être détectée, mais il semble y avoir un problème lors du démarrage du service NUT.

Je vais faire un autre poste sur ce forum car ce présent poste ne concerne pas l'UPS.

Merci encore pour l'aide!

Guillaume
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 29 mai 2022 à 17:43
Merci pour ton retour et d'avoir pris le temps de détailler la solution que tu as utilisée.

Bonne continuation
0