Diga ao mplayer para continuar ouvindo o fluxo de áudio que pausa

0

Estou usando o mplayer para transmitir áudio proveniente de uma instância do MPD que está configurada para saída via HTTP:

mplayer http://<stream-URL>:<port>

O fluxo é controlado por um cliente MPD (Cantata). O fluxo é pausado sempre que o MPD atinge o final da fila de reprodução definida no cliente. Quando isso acontece, o mplayer sai imediatamente. Eu gostaria que ele continuasse em exibição e reproduzisse novos conteúdos assim que eles se tornassem disponíveis (ou seja, assim que novos itens fossem adicionados à fila de reprodução no cliente).

Eu tentei rodar o mplayer com a opção -idle , e enquanto isso faz com que o mplayer continue rodando após o fluxo parar, nenhuma saída de áudio é produzida ao iniciar a reprodução de conteúdo no cliente MPD.

Como posso fazer o mplayer ouvir o fluxo para se tornar ativo novamente e começar a reproduzir o que está recebendo do fluxo?

EDIT: O MPD está sendo executado em um servidor na minha LAN, e o Cantata e o mplayer estão em execução no meu laptop.

    
por itsjeyd 01.01.2014 / 23:23

2 respostas

1

Faz muito tempo desde que eu joguei com scripts MPD. Como a Cantata tem uma interface dBus, não deveria ser muito difícil fazer o que você quer. Isso, no entanto, leva você para a terra dos estranhos controles dbus.

Parte da resposta é que -idle não faz com que o mplayer tente se reconectar à sua fonte de streaming. Isso só impede que o mplayer saia.

Isso não quer dizer que o que você está procurando não pode ser feito. É provável que você precise de um pouco de script externo para acionar o mplayer para reconectar. Em qualquer caso, para habilitar o controle remoto do mplayer, execute o seguinte:

mkfifo /home/you/.mplayer/cmd.fifo
mplayer -idle -input file=/home/you/.mplayer/cmd.fifo

Depois disso, sempre que você executar algo semelhante ao seguinte, poderá fazer com que o mplayer se reconecte.

echo "loadfile http://yourserver.com:8000/yourstream.mp3" >> /home/you/.mplayer/cmd.fifo

Isso é o máximo que posso levar sem tocar com a interface dbus da Cantata. Um pouco de pesquisa deve revelar o que é necessário.

Nota: a execução do comando loadfile enquanto um fluxo está sendo reproduzido causa uma quebra perceptível no áudio.

Também pode ser útil notar aqui: o MPD, o mplayer e o Cantata estão todos na mesma caixa ou em sistemas separados?

Espero que isso ajude.

    
por 02.01.2014 / 01:08
0

Eu não tenho nada ouvido sobre cantata, mas quando eu uso o meu rádio de internet móvel enquanto estiver dirigindo no carro eu corri no mesmo problema para reiniciar o mplayer se a conexão for interrompida. simplesmente eu coloquei o comando mplayer em um endlesloop controlado por uma variável que é definida como false para fácil desligar, adicionando 3 segundos de pausa após abortar para não sobrecarregar alguma coisa.

runplayer=true
while $runplayer
do mplayer "http://yourserver.com:8000/yourstream.mp3" 
sleep 3
done   
    
por 02.09.2014 / 02:28