Intereting Posts
Procmail не продолжает обработку до завершения рецепта Не могу импортировать tkinter в python2 на manjaro linux Удерживание левой стрелки запускает постоянный режим SELinux войти в Debian Как проверить, монтируется ли файловая система с помощью скрипта Сканер работает на ноутбуке, а не на рабочем столе Мультиплексные TTY-файлы с одним экземпляром экрана Как заставить tar-манипулировать работой с опцией «change directory» Части экрана, отображающие старую графику Уменьшите пространство вокруг линейных формул в LibreOffice avconv: удаление аудиопотока, синхронизация аудио и видео Как установить общий ресурс samba, чтобы гостевые пользователи могли просматривать все папки и подпапки, включая новые и старые sed пространство и пространство для удержания Деинсталляция Gdm завершается с ошибкой («ошибка перед удалением») Как выполнить команды Netscaler через удаленную машину через SSH-соединение

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

Я ищу способ начать воспроизведение аудиофайла (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 ; пианобар Он использует его для принятия команд, как в вашем примере.