通过Linux命令行播放mp3或wav文件
我想做一个由Ubuntu(没有图形界面)盒子支持的报警系统,通过命令行播放各种公告和报警音轨(.mp3或.wav)。我也可能会用另一个插座监听器来包装它。(例如:Ruby Sinatra)
我有什么办法吗?
在Linux中播放WAV文件的最标准的方法是使用aplay
命令,它是ALSA
系统的一部分。(维基百科) (aplay man page)
(在Fedora和Ubuntu/Mint中都是alsa-utils
软件包的一部分)
这不需要任何额外的软件包,如sox或mplayer或vlc,只需要基本的ALSA,这是现在任何系统的一部分。
安装vlc
的方法是:
sudo apt-get install vlc vlc-plugin-pulse mozilla-plugin-vlc
确保你已经打开了所有的存储库。同时在安装前运行下面的程序:
sudo apt-get update
VLC有一个由cvlc
调用的命令行操作方法。接下来的部分就是写一个.sh
来调用这个命令。我不擅长写bash脚本。最终的结果会是这样的:
cvlc xyz.mp3
cvlc --play-and-exit done.mp3
mplayer是另一个可以在命令行中播放任何音频/视频格式的播放器。
在这里为大家补充一个答案(问题是2011年的老问题,我现在是2019年的),因为我发现了另一种方法:
ffmpeg安装在我的ubuntu 19.04
所以:
$ 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
享受
对于简单的bash脚本,mplayer可能有点太重,输出的内容也太啰嗦了。在ubuntu上预装了一个内置的选项是canberra-gtk-play
:
canberra-gtk-play --file=/usr/share/sounds/gnome/default/alerts/drip.ogg
注意:它使用的是alerts音量,你必须通过--file=
才能播放路径中的文件。 0/gst-launch-0.10
另一种方法是使用gstreamer命令行工具,这在大多数现代linux盒子上都有:
canberra-gtk-play --id="desktop-login"
canberra-gtk-play --id="message"
要压制所有的输出,将其重定向到/usr/share/sounds
:
gst-launch-1.0 playbin uri=file:///usr/share/sounds/ubuntu/stereo/message.ogg
/dev/null
和gst-launch-1.0
都可能存在于你的系统中。