lire des fichiers mp3 ou wav via la ligne de commande Linux

79

Je souhaite créer un système d’alarme adossé à une boîte Ubuntu (sans interface graphique), qui lit diverses pistes audio d’annonce et d’alarme (.mp3 ou .wav) via la ligne de commande.

Par exemple:

$ root> audioplay ./hello.wav

Le son doit provenir de la prise audio du PC. Je pourrais aussi l'envelopper avec un autre écouteur de socket. (par exemple, Ruby Sinatra)

Des idées comment je peux faire ceci?

C2h2
la source
1
Juste au cas où vous cherchez des fichiers d’exemple: /usr/share/soundsc’est un bon endroit pour les chercher.
Martin Thoma

Réponses:

48

mpg123 est un utilitaire de ligne de commande qui lit les fichiers mp3. Vous pouvez l'installer dans Ubuntu avec:

sudo apt-get install mpg123
pavium
la source
7
Cela ne lit pas les fichiers wav.
Cerin
71

La playcommande du soxpackage lit tout format de fichier pris en charge soxà l'aide du périphérique audio par défaut, par exemple

$ play something.mp3
$ play something.wav

Vous devrez peut-être installer des paquets supplémentaires pour pouvoir prendre en charge tous les formats. Par exemple, sur Ubuntu 11.04, la prise en charge MP3 n'est pas disponible avant l'installation libsox-fmt-mp3.


la source
1
il supporte également les fichiers ogg (et probablement d’autres).
lepe
1
Dans Ubuntu Xenial, il existe un libsox-fmt-allpaquet pour installer tous les formats.
Eugene Gr. Philippov
60

Le moyen le plus standard de lire un fichier WAV sous Linux consiste à utiliser la aplaycommande, qui fait partie du ALSAsystème.

aplay [flags] [filename [filename]] ...

aplay a.wav

Liens: (Wikipedia) (page de manuel aplay)

(À la fois dans Fedora et dans Ubuntu / Mint, cela fait partie du alsa-utilspaquet)

Cela ne nécessite aucun paquet supplémentaire pour votre installation Linux, comme sox, mplayer ou vlc, mais simplement l'ALSA de base qui fait partie de tout système de nos jours.

Maxime
la source
5
Merci pour le conseil! J'ai ajouté cet alias à la configuration de mon shell: alias beep = "aplay --quiet /usr/share/sounds/pop.wav". De cette façon, je peux recevoir une notification lorsque les commandes longues sont terminées. Par exemple: compile && run && beep
Jesse Hallett
1
Oui, Jesse! Je fais exactement la même chose avec la compilation (conversions de fichiers longs, etc.). J'utilise des sons d'ici: "Opilki sounds" (ils sont sous la licence Creatve Commons), pardonnez-moi cette petite annonce, je ne suis aucunement lié au projet :)
Maxim
Dead easy et déjà installé partout. +1
Pitto
4
Rappelez-vous que vous ne pouvez pas jouer un MP3 avec aplay. Vous aurez juste statique.
starbeamrainbowlabs
@starbeamrainbowlabs, j'ai écrit sur les fichiers WAV uniquement!
Maxim
23

Installez vlcen utilisant:

sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc

Assurez-vous que tous les référentiels sont ouverts. Exécutez également les éléments suivants avant d’installer:

sudo apt-get update

VLC a une méthode d'opération de ligne de commande appelée par cvlc. La prochaine partie serait d'écrire un .shqui appellera la commande. Je ne suis pas bon pour écrire des scripts bash. Le résultat final serait quelque chose comme:

cvlc xyz.mp3
cvlc --play-and-exit done.mp3 
Prometheuspk
la source
1
CVLC trop lent pour démarrer? et devez-vous exécuter par un utilisateur non-root?
C2h2
1
cvlc --play-and-exit done.mp3si vous ne voulez pas le ctrl-c.
Michael Cole
cvlc --play-and-exit --no-loop done.mp3. J'ai besoin de l'option supplémentaire --no-loop, pour que le fichier son ne soit pas répété encore et encore. (vlc 2.2.2, xubuntu 16.04.4)
aimé.par.Jésus
notez que vlc dépend habituellement de qt5 et de X sur certaines distributions, mais que mpg123 ne dépend que d’alsa-lib.
Récolte
8

Vous pouvez simplement diriger vos données audio vers le haut-parleur du PC:

cat rawsound | /dev/pcsp
Troelskn
la source
1
Je doute fort que cela fonctionne avec les fichiers MP3.
2
Bien sûr, cela ne fonctionnera pas avec le son encodé au format MP3, mais avec les données brutes au
format
3
Je n'ai pas le périphérique / dev / pcsp. Que puis-je essayer?
trusktr
Je reçois "chat: rawsound: Datei oder Verzeichnis nicht gefunden"
Timo le
8

Sur Ubuntu 16.04, il n’est pas nécessaire d’installer quoi que ce soit. Vous pouvez jouer un son en utilisant paplay [audio]with fait partie du serveur de son PulseAudio:

paplay mysound.mp3
mxdsp
la source
7

mplayer est un autre lecteur pouvant lire à peu près tous les formats audio / vidéo à partir de la ligne de commande. pour l'installer dans Ubuntu, exécutez cette commande:

sudo apt-get install mplayer

vous pouvez alors lire le fichier en utilisant cette syntaxe:

mplayer [path to file]

bonne chance!

Ali Parsai
la source
0

canberra-gtk-play

Pour les scripts bash simples, mplayer est probablement un peu trop lourd et trop détaillé en termes de sortie. Une option intégrée est canberra-gtk-playpréinstallée sur Ubuntu:

canberra-gtk-play --file=/usr/share/sounds/gnome/default/alerts/drip.ogg

Remarque: il utilise le volume des alertes et vous devez le transmettre --file=pour pouvoir lire un fichier à partir d’un chemin.

Il peut également jouer un son par id qui représente le nom du fichier sans l'extension des fichiers multimédias /usr/share/sounds(apparemment, cela ne fonctionne que pour les sons enregistrés dans le cadre d'un thème sonore):

canberra-gtk-play --id="desktop-login"

canberra-gtk-play --id="message"

gst-launch-1.0 / gst-launch-0.10

Une autre option consiste à utiliser les outils de ligne de commande gstreamer présents sur les boîtes de dialogue Linux les plus modernes:

gst-launch-1.0 playbin uri=file:///usr/share/sounds/ubuntu/stereo/message.ogg

Pour supprimer toute sortie, redirigez-le vers /dev/null:

gst-launch-1.0 playbin uri=file:///usr/share/sounds/ubuntu/stereo/message.ogg > /dev/null 2>&1

Les deux gst-launch-1.0et gst-launch-0.10peuvent être présents sur votre système.

ccpizza
la source
0

ajout d'une réponse pour les personnes qui passeront ici (la question date de 2011, ma date est maintenant de 2019), car j'ai trouvé un autre moyen:

ffmpeg est installé sur mon Ubuntu 19.04

Alors:

$ ffplay music.mp3 

-nodisp
hide spectrum analyzer

-nostats
hide cursor/file informations

-hide_banner
hide build informations


hide all (no output):
$ ffplay music.mp3 -nodisp -nostats -hide_banner

profiter

Gromish
la source