Controlando um processo em segundo plano

2

Estou procurando uma maneira de começar a reproduzir um arquivo de áudio (mp3, m4a) como uma tarefa em segundo plano a partir de um shell e, em seguida, fazer coisas como pausar / avançar rapidamente mais tarde.

Isso é possível usando as opções de linha de comando incorporadas:

$ play audio.mp3 &
$ play --pause

Ou por meio do ID do processo do jogador?

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

(Os exemplos são apenas ilustrativos).

    
por forthrin 08.06.2018 / 09:34

4 respostas

1

Não há solução genérica, mas há pelo menos dois jogadores que poderiam faça isso.

O primeiro é mplayer junto com named pipes .

Primeiro, crie o canal com o nome /tmp/mplayer.fifo :

$ mkfifo /tmp/mplayer.fifo

Inicie o mplayer e aponte para /tmp/mplayer.fifo :

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

Agora você pode pausar e retomar a reprodução escrevendo para /tmp/mplayer.fifo :

$ echo pause > /tmp/mplayer.fifo

Subseqüente pause retomará a reprodução:

$ echo pause > /tmp/mplayer.fifo

Você também pode fazer outras coisas, por exemplo, avanço rápido:

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

ou reprodução de retrocesso:

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

O segundo é mocp . Inicie a reprodução:

$ mocp -S; mocp -p file.mp3

Pausa / retomar a reprodução:

$ mocp --toggle-pause
    
por 08.06.2018 / 22:00
2

Se o uso do VLC Player for uma opção, você poderá controlar um processo VLC em execução por meio de aplicativos remotos (GUI) ou CLI usando chamadas dbus.

Por exemplo - assumindo que o qdbus está instalado - alterne entre reproduzir / pausar a música atualmente reproduzida:

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

ou vá para a próxima parte da playlist:

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

Veja todos os comandos disponíveis:

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

Veja também este tópico link

    
por 08.06.2018 / 14:16
1

Você pode querer olhar para o MPD , já que ele pode fazer praticamente tudo que você parece querer fazer (controle remoto, adicionar novas faixas, etc). Em vez de executar como um processo de segundo plano em seu shell, ele é executado como um serviço do sistema, o que significa que ele pode ser facilmente usado em várias sessões e logins. Ele ainda tem a capacidade de permitir o controle remoto de outro sistema (é amplamente usado para dispositivos tipo jukebox controlados por rede).

Também há vários front ends agradáveis, incluindo os que você pode usar no console.

    
por 08.06.2018 / 21:28
0

A implementação desse controle normalmente estaria dentro do próprio programa, mas uma maneira muito comum de realizar esse tipo de interface é um Tubulação nomeada . Contanto que esteja no mesmo host, e você não esteja abrindo soquetes para controle de rede. Você poderia criar seu próprio programa para usar o pipe nomeado e executar os comandos necessários, matar o processo, etc. Se você quiser ver um pipe nomeado em ação, sugiro instalar o player CLI para Pandora ; pianobar . Usa-o para aceitar comandos como no seu exemplo.

    
por 08.06.2018 / 09:57