如何通过命令行在后台播放歌曲?

Ant*_*t's 12 command-line music bash sox

我已经安装play

sudo apt-get install sox libsox-fmt-mp3
Run Code Online (Sandbox Code Playgroud)

我现在可以像这样播放我的音频文件:

play Desktop/SONGS/01\ -\ Oh\ Baby\ Girl.mp3
Run Code Online (Sandbox Code Playgroud)

由于我正在学习 shell,我希望我可以做这样的事情:

 (sleep 10 ; play Desktop/SONGS/01\ -\ Oh\ Baby\ Girl.mp3 ) &
Run Code Online (Sandbox Code Playgroud)

10秒钟后,我可以看到屏幕为:

 File Size: 7.38M     Bit Rate: 260k
  Encoding: MPEG audio    Info: 2012
  Channels: 2 @ 16-bit   Track: 01/09
Samplerate: 44100Hz      Album: Maalai Pozhudhin Mayakathilaey :::tunesinn.blogspot.com:::
Replaygain: off         Artist: Hemachandra, Achu
  Duration: 00:03:46.98  Title: Oh Baby Girl
Run Code Online (Sandbox Code Playgroud)

但是这首歌没有播放。但如果我这样做(没有&):

(sleep 10 ; play Desktop/SONGS/01\ -\ Oh\ Baby\ Girl.mp3 ) 
Run Code Online (Sandbox Code Playgroud)

正在按预期工作。但同时我无法使用我的终端。

我如何解决我的问题,使用&

ish*_*ish 13

Backgroundingplay&失败,因为play要输出其状态,如

In:12.7% 00:00:27.31 [00:03:07.52] Out:1.20M [!=====|=====!] Hd:0.0 Clip:0  
Run Code Online (Sandbox Code Playgroud)

但如果有背景就不能。所以它一直等待直到中止。

要解决此问题,只需play使用-q(安静)开关运行即可。这将成功地将其作为背景,并play在歌曲结束时终止。

(sleep 10 ; play -q Desktop/SONGS/01\ -\ Oh\ Baby\ Girl.mp3 ) &

您可以通过键入killall play(如果没有其他播放实例正在运行)或通过kill $!(如果您在开始播放后没有在同一终端中后台处理其他进程 - $! 为您提供最后一个后台进程的 PID )来停止它

  • 你可以通过输入 `killall play`(如果没有其他 *play* 实例正在运行)或 `kill $!`(如果你在启动 *play* 后没有在同一个终端中后台处理其他进程)来停止它—— `$!` 为您提供最后一个后台进程的 PID) (2认同)