Intereting Posts
Как fakeroot не является нарушением безопасности в Linux? Оперативная загрузка Debian завершается с ошибкой в ​​оболочке initramfs, говоря «невозможно перечислить USB-устройство» NAT Внешний IP-адрес на локальном сервере с использованием iptables Как настроить файл инициализации .emacs? Как предотвратить запись в CIFS от остановки в течение нескольких минут подряд? Как найти и опорожнить некоторые каталоги как понять таблицу маршрутизации на клиенте OpenVPN Экспортировать содержимое демон экрана в файл Отсутствуют параметры административной панели Webmin. Как предотвратить включение DPMS при открытии полноэкранного окна? Как указать всех пользователей, имеющих доступ к каталогу? Почему логи samba с пользователем «nobody» всегда появляются? Почему устройства, подключенные к моему интерфейсу wlan0, не обмениваются данными с устройствами eth0? Используйте sed и sed самостоятельно, чтобы выполнить подстановку в строке, начинающейся с определенной строки, только если! отправка справочной страницы MacOS в редактор

Управление фоновым процессом

Я ищу способ начать воспроизведение аудиофайла (mp3, m4a) в качестве фоновой задачи из оболочки, а затем иметь возможность делать такие вещи, как пауза / перемотка вперед, позже.

Это возможно либо с использованием встроенных параметров командной строки:

$ play audio.mp3 & $ play --pause 

Или через идентификатор процесса игрока?

 $ play audio.mp3 & echo $! > pid $ control_process $(cat pid) --signal pause 

(Примеры только для иллюстрации.)

Универсального решения не существует, но есть как минимум 2 игрока, которые могут это сделать.

Первый – это mplayer вместе с named pipes .

Сначала создайте /tmp/mplayer.fifo именованный канал:

 $ mkfifo /tmp/mplayer.fifo 

Запустите mplayer и укажите его /tmp/mplayer.fifo :

 $ mplayer -novideo -idle -slave -input file=/tmp/mplayer.fifo file.mp3 /dev/null 2>&1 & 

Теперь вы можете приостановить и возобновить воспроизведение, написав в /tmp/mplayer.fifo :

 $ echo pause > /tmp/mplayer.fifo 

Последующая pause возобновит воспроизведение:

 $ echo pause > /tmp/mplayer.fifo 

Вы также можете делать другие вещи, например, перемотка вперед:

 $ echo seek +60" > /tmp/mplayer.fifo 

или перемотка воспроизведения:

 $ echo "seek -60" > /tmp/mplayer.fifo 

Второй – это mocp . Начать воспроизведение:

 $ mocp -S; mocp -p file.mp3 

Пауза / возобновление воспроизведения:

 $ mocp --toggle-pause 

Если в качестве опции используется VLC player, вы можете управлять запущенным процессом VLC либо через удаленные приложения (GUI), либо через CLI, используя вызовы dbus.

Например – при условии, что установлен qdbus – переключить воспроизведение / паузу на воспроизводимой в данный момент музыке:

 $ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause 

или перейти к следующему fragmentу в списке воспроизведения:

 $ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next 

Посмотреть все доступные команды:

 $ qdbus org.mpris.MediaPlayer2.vlc /org/mpris/MediaPlayer2 

Смотрите также эту тему https://stackoverflow.com/questions/14256193/linux-control-a-running-vlc-process-through-command-line

Возможно, вы захотите заглянуть в MPD , так как он может делать практически все, что вы хотите (дистанционное управление, добавлять новые треки и т. Д.). Вместо того, чтобы запускаться как фоновый процесс в вашей оболочке, он запускается как системная служба, что означает, что его можно легко использовать для нескольких сеансов и входов в систему. Он даже имеет возможность удаленного управления из другой системы (он широко используется для сетевых устройств типа «музыкальный автомат»).

Есть также несколько хороших внешних интерфейсов, включая те, которые вы можете использовать с консоли.

Реализация этого элемента управления обычно выполняется в самой программе, но очень распространенным способом реализации такого рода интерфейса является именованный канал . Пока он находится на одном хосте, и вы не открываете сокеты для управления сетью. Вы можете создать собственную программу для использования именованного канала и выполнения необходимых команд, завершения процесса и т. Д. Если вы хотите увидеть именованный канал в действии, я бы предложил установить проигрыватель CLI для Pandora ; пианобар Он использует его для принятия команд, как в вашем примере.