MP3- oder WAV-Datei über die Linux-Befehlszeile abspielen

79

Ich möchte ein Alarmsystem mit einer Ubuntu-Box (keine grafische Oberfläche) erstellen, die verschiedene Ansage- und Alarm-Audiospuren (.mp3 oder .wav) über die Befehlszeile wiedergibt.

Zum Beispiel:

$ root> audioplay ./hello.wav

Das Audio sollte von der PC-Audio-Buchse kommen. Ich könnte es auch mit einem anderen Socket-Listener verpacken. (zB Ruby Sinatra)

Irgendwelche Ideen, wie ich das machen kann?

c2h2
quelle
1
Nur für den Fall, dass Sie nach Beispieldateien suchen: /usr/share/soundsist ein guter Ort, um nach ihnen zu suchen.
Martin Thoma

Antworten:

48

mpg123 ist ein Befehlszeilenprogramm, mit dem MP3-Dateien abgespielt werden können. Du kannst es in Ubuntu installieren mit:

sudo apt-get install mpg123
Pavium
quelle
7
Dies spielt keine WAV-Dateien ab.
Cerin
71

Der playBefehl aus dem soxPaket spielt jedes Dateiformat ab, das soxmit dem Standard-Audiogerät unterstützt wird, z

$ play something.mp3
$ play something.wav

Möglicherweise müssen Sie zusätzliche Pakete installieren, um Unterstützung für alle Formate zu erhalten. Unter Ubuntu 11.04 ist die MP3-Unterstützung beispielsweise erst nach der Installation verfügbar libsox-fmt-mp3.


quelle
1
es werden auch ogg-dateien (und wahrscheinlich auch andere) unterstützt.
Lepe
1
In Ubuntu Xenial gibt es ein libsox-fmt-allPaket zum Installieren aller Formate.
Eugene Gr. Philippov
60

Die Standardmethode zum Abspielen einer WAV-Datei unter Linux ist die Verwendung des aplayBefehls, der Teil des ALSASystems ist.

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

aplay a.wav

Links: (Wikipedia) (aplay man page)

(Sowohl in Fedora als auch in Ubuntu / Mint ist es Teil des alsa-utilsPakets)

Dies erfordert keine zusätzlichen Pakete für Ihre Linux-Installation wie SoX oder Mplayer oder VLC, sondern nur die grundlegende ALSA, die heutzutage Bestandteil eines jeden Systems ist.

Maxime
quelle
5
Danke für den Tipp! Ich habe diesen Alias ​​zu meiner Shell-Konfiguration hinzugefügt: alias beep = "aplay --quiet /usr/share/sounds/pop.wav". Auf diese Weise kann ich eine Benachrichtigung erhalten, wenn lange laufende Befehle beendet sind. Zum Beispiel: kompiliere && führe && Piepton aus
Jesse Hallett
1
Ja, Jesse! Ich mache genau das gleiche mit dem Kompilieren (lange Dateikonvertierungen usw.). Ich benutze Sounds von hier: "Opilki Sounds" (sie stehen unter der Creatve Commons Lizenz) Verzeih mir diese kleine Werbung, ich bin in keiner Weise mit dem Projekt verbunden :)
Maxim
Ganz einfach und überall bereits installiert. +1
Pitto
4
Denken Sie daran, dass Sie mit kein MP3 abspielen könnenaplay . Sie werden nur statisch.
Starbeamrainbowlabs
@starbeamrainbowlabs, ich habe nur über WAV-Dateien geschrieben!
Maxim
22

Installieren Sie vlcmithilfe von:

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

Stellen Sie sicher, dass alle Repositorys geöffnet sind. Führen Sie vor der Installation auch Folgendes aus:

sudo apt-get update

VLC verfügt über eine Befehlszeilen-Operationsmethode, die von aufgerufen wird cvlc. Der nächste Teil wäre das Schreiben eines .shBefehls, der den Befehl aufruft. Ich kann keine Bash-Skripte schreiben. Das Endergebnis wäre so etwas wie:

cvlc xyz.mp3
cvlc --play-and-exit done.mp3 
prometheuspk
quelle
1
CVLC zu langsam, um hochzufahren? und müssen von einem Nicht-Root-Benutzer ausgeführt werden?
c2h2
1
cvlc --play-and-exit done.mp3wenn du es nicht strg-c willst.
Michael Cole
cvlc --play-and-exit --no-loop done.mp3. Ich brauche die extra Option --no-loop, damit die Sounddatei nicht immer wieder wiederholt wird. (vlc 2.2.2, xubuntu 16.04.4)
loved.by.Jesus
Beachten Sie, dass vlc normalerweise von qt5 und X abhängig ist, während mpg123 nur von alsa-lib abhängt.
2.
8

Sie können Ihre Sounddaten einfach an das PC-Lautsprechergerät leiten:

cat rawsound | /dev/pcsp
troelskn
quelle
1
Ich bezweifle sehr, dass das mit MP3-Dateien funktionieren wird.
2
Es wird natürlich nicht mit MP3-codiertem Sound funktionieren, aber es wird mit Raw-WAV-Daten
funktionieren
3
Ich habe das Gerät / dev / pcsp nicht. Was kann ich noch probieren?
Trusktr
Ich erhalte "cat: rawsound: Datei oder Verzeichnis nicht gefunden"
Timo
8

Unter Ubuntu 16.04 muss nichts installiert werden. Sie können einen Sound abspielen, indem Sie paplay [audio]mit dem PulseAudio-Soundserver:

paplay mysound.mp3
mxdsp
quelle
7

mplayer ist ein weiterer Player, der so ziemlich jedes Audio- / Videoformat über die Befehlszeile abspielen kann. Um es in Ubuntu zu installieren, führen Sie einfach diesen Befehl aus:

sudo apt-get install mplayer

Sie können die Datei dann mit folgender Syntax abspielen:

mplayer [path to file]

Viel Glück!

Ali Parsai
quelle
0

canberra-gtk-play

Für einfache Bash-Skripte ist mplayer wahrscheinlich etwas zu umfangreich und zu ausführlich in Bezug auf die Ausgabe. Eine eingebaute Option ist canberra-gtk-playauf Ubuntu vorinstalliert:

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

Hinweis: Es wird die Lautstärke der Warnungen verwendet, und Sie müssen übergeben --file=, um eine Datei von einem Pfad abzuspielen.

Es kann auch ein Sound nach ID abgespielt werden, der den Dateinamen ohne Erweiterung der Mediendateien darstellt /usr/share/sounds(anscheinend funktioniert dies nur für Sounds, die als Teil eines Soundthemas registriert sind):

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

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

gst-launch-1.0 / gst-launch-0.10

Eine andere Option ist die Verwendung der gstreamer- Kommandozeilen-Tools, die auf den meisten modernen Linux-Boxen verfügbar sind:

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

Um alle Ausgaben zu unterdrücken, leiten Sie sie weiter an /dev/null:

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

Beides gst-launch-1.0und gst-launch-0.10möglicherweise auf Ihrem System vorhanden.

ccpizza
quelle
0

Hinzufügen einer Antwort für Leute, die hier vorbeigehen werden (Frage ist 2011 alt, meine jetzt ist 2019), weil ich einen anderen Weg gefunden habe:

ffmpeg ist auf meinem Ubuntu 19.04 installiert

Damit:

$ 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

genieße 🤙

Gromish
quelle