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

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

我已经安装了play

sudo apt-get install sox libsox-fmt-mp3

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

play Desktop/SONGS/01\ -\ Oh\ Baby\ Girl.mp3

因为我正在学习 shell,所以我希望可以做这样的事情:

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

几秒后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

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

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

运行正常。但目前我无法使用我的终端。

我该如何使用来解决我的问题&

答案1

由于想要输出其状态,因此后台运行play失败,例如&play

In:12.7% 00:00:27.31 [00:03:07.52] Out:1.20M [!=====|=====!] Hd:0.0 Clip:0  

但如果在后台运行则不能。因此它会一直等待,直到中止。

要解决这个问题,只需使用play( -qquiet) 开关即可。这将成功将其置于后台,并play在歌曲结束时终止。

(睡觉 10 ;玩耍-q桌面/歌曲/01\ -\ Oh\ Baby\ Girl.mp3 ) &

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

答案2

有一种更好的方法可以从命令行在“后台”运行程序。

sudo apt-get install tmux

它是 Linux 上最漂亮的命令行程序之一。它允许您拥有类似于“浏览器中的选项卡”的功能,并在它们之间无缝切换,而不会中断正在运行的程序。但它不是终端程序本身的选项卡。而是在您启动的特定 shell 中。

安装后输入以下命令启动

tmux 

在终端中。

使用 ctrl-A c 创建新的“选项卡” 使用 ctrl-A n 切换到下一个选项卡

这里如果你觉得手册页很难理解,这是一个更详尽的教程

答案3

这对我与 mplayer 一起使用有效

nohup mplayer  SomeSong.mp4 > /dev/null 2>&1 &

答案4

我用

cvlc --play-and-exit "$filename" &>/dev/null &

vlc 非常普遍。

相关内容