我正在命令行中试验音频播放器,并注意到一些奇怪的事情:如果声音非常短,大多数播放器在播放完成后将花费一两秒的时间,然后才最终退出,并将控制权交还给终端!
ffplay
当使用音频文件启动时似乎会运行频谱图,并且建议解决这个问题是:
<hypnocat> how can i turn off the spectrogram display?
<sacarasc_> Why would you want to?
<hypnocat> i don't want an extra window to appear, or for ffplay to waste extra processing power displaying it
<hypnocat> it's distracting, annoying, and wasteful
<sacarasc_> Minimise it, and if it's wasteful, your computer is either really, really old or you're overly sensitive to waste...
<hypnocat> my computer is old
...所以我不会真正将其视为命令行播放器;但我在 Ubuntu 11.04 上尝试过这些命令gnome-terminal
:
aplay --buffer-size=10 -q /usr/share/sounds/speech-dispatcher/test.wav
canberra-gtk-play -c never -f /usr/share/sounds/speech-dispatcher/test.wav
mplayer -really-quiet /usr/share/sounds/speech-dispatcher/test.wav
pacat -p --rate 16000 --channels 1 --latency-msec=1 --process-time-msec=2 /usr/share/sounds/speech-dispatcher/test.wav
play -q /usr/share/sounds/speech-dispatcher/test.wav # with sox
声音speech-dispatcher/test.wav
本身为 0.542 秒,但这些程序在该文件播放完毕后占用终端大约一两秒(或更长时间)。为什么会发生这种情况 - 我怎样才能避免这种情况?如果这些应用程序无法实现,是否存在命令行音频播放器,它们在音频文件播放完毕后立即退出?
编辑:对于那些感兴趣的人,这就是我需要的问题#208391:问题:“xorg”包:Ubuntu:通过 PulseAudio 播放 X11 XBell 事件;我通过将播放器(在这种情况下为canberra-gtk-play
)作为进程(使用&
)启动来解决等待时间问题。但我仍然想知道为什么短文件会出现退出延迟?怎么会cvlc
按照@安东的答案,例如可以立即退出吗?
答案1
尝试这个ffplay
:
ffplay -autoexit -nodisp -loglevel panic /usr/share/sounds/speech-dispatcher/test.wav
答案2
我用:
cvlc --no-one-instance --volume 150 <soundfile>
播放短声音(< 1 秒)作为程序活动的通知。
确保--no-one-instance
此播放不会在我的“正常”vlc(如音乐)中运行的内容(例如音乐)之后安排,并且设置为具有单个实例,并为其进行额外的调用(命令行,双击),添加文件到播放列表。
答案3
SoX 在 Ubuntu 上运行(在 ubuntu Universe 存储库中),并安装在实时 Linux Mint XFCE 16 磁盘上。可以在终端中播放文件,没有新窗口或任何东西,并在使用后立即退出:
播放/这个/文件
它称自己为“SoX - Sound eXchange,音频处理的瑞士军刀”......“特别适合进行快速、简单的编辑和批处理”,并且应该能够做一堆东西,效果,组合多个输入,写入输出文件。根据更新日志,显然它从 96 年就已经存在了。
回答一个我知道的老问题,但我只是在寻找如何回答确切的问题(新邮件的声音通知脚本),并且 sox 工作得很好,甚至比 vlc/cvlc 更好(它花费了更长的时间,并且单击一下听起来有点不同在最后?)。