我正在寻找一种方法来开始播放音频文件(mp3、m4a)作为 shell 的后台任务,然后能够在稍后执行暂停/快进等操作。
这是否可能使用内置命令行选项:
$ play audio.mp3 &
$ play --pause
还是通过玩家的进程ID?
$ play audio.mp3 & echo $! > pid
$ control_process $(cat pid) --signal pause
(示例仅供说明。)
我正在寻找一种方法来开始播放音频文件(mp3、m4a)作为 shell 的后台任务,然后能够在稍后执行暂停/快进等操作。
这是否可能使用内置命令行选项:
$ play audio.mp3 &
$ play --pause
还是通过玩家的进程ID?
$ play audio.mp3 & echo $! > pid
$ control_process $(cat pid) --signal pause
(示例仅供说明。)
如果使用 VLC 播放器是一个选项,您可以通过远程应用程序 (GUI) 或 CLI 使用 dbus 调用来控制正在运行的 VLC 进程。
例如 - 假设安装了 qdbus - 在当前播放的音乐上切换播放/暂停:
或转到播放列表中的下一个曲目:
查看所有可用命令:
另请参阅此线程https://stackoverflow.com/questions/14256193/linux-control-a-running-vlc-process-through-command-line
您可能想查看MPD,因为它几乎可以完成您想做的所有事情(远程控制、添加新曲目等)。它不是作为 shell 中的后台进程运行,而是作为系统服务运行,这意味着它可以轻松地跨多个会话和登录使用。它甚至能够允许从另一个系统进行远程控制(它广泛用于网络控制的点唱机类型的设备)。
它还有许多不错的前端,包括您可以从控制台使用的前端。
没有通用的解决方案,但至少有 2 个玩家可以做到这一点。
第一个是
mplayer
与named pipes
。首先,创建
/tmp/mplayer.fifo
命名管道:开始
mplayer
并将其指向/tmp/mplayer.fifo
:现在您可以通过写入以下内容来暂停和恢复播放
/tmp/mplayer.fifo
:随后
pause
将恢复播放:您还可以做其他事情,例如快进:
或倒带播放:
第二个是
mocp
。开始播放:暂停/恢复播放:
此控件的实现通常在程序本身内,但执行此类接口的一种非常常见的方式是命名管道。只要它在同一台主机上,并且您没有打开套接字进行网络控制。您可以创建自己的程序来使用命名管道并执行所需的命令、终止进程等。如果您想查看命名管道的运行情况,我建议您为Pandora安装 CLI 播放器;钢琴吧 它使用它来接受您的示例中的命令。