reproduzir arquivo mp3 assim que o download for feito

1

Como você combina esses dois comandos diferentes em um script:

$ wget http://mymusic.store.com/musicfoo.mp3
#file gets saved as musicfoo.mp3
$ mplayer musicfoo.mp3

wget tenta salvar o arquivo em disco com o nome / extensão padrão do arquivo (como na internet) ... no meu caso arquivo mp3 ... o mplayer usa esse arquivo como argumento para reproduzi-lo.

Alguma ideia de como posso combinar isso com um script?

    
por deostroll 22.11.2013 / 19:59

4 respostas

2

Reproduzir arquivo diretamente

Você não precisa nem baixar esses arquivos antes de reproduzi-los com mplayer . Na página mplayer man:

trecho

  mplayer [options] [file|URL|playlist|-]

Então, o mplayer pode reproduzir URLs diretamente.

Exemplo

$ mplayer http://mymusic.store.com/musicfoo.mp3

Desempenho

Você provavelmente precisará ajustar os valores do cache para obter mplayer para reproduzir seu conteúdo sem problemas. Existem algumas opções para mplayer que permitem isso.

excerto da página de manual do mplayer

-cache <kBytes>
    This option specifies how much memory (in kBytes) to use 
     when precaching a file or URL. Especially useful on slow media.

-cache-min <percentage>
   Playback  will  start when the cache has been filled up to 
   <percentage> of the total.

Portanto, talvez algo assim, você jogue com esses valores para obter reproduções suaves para sua situação.

$ mplayer -cache 8000 -cache-min 30 http://mymusic.store.com/musicfoo.mp3

Faça o download e reproduza

Outro método discutido em algumas das outras respostas é usar wget para baixar e depois reproduzir o arquivo. O problema inerente a essa abordagem é fazer com que o nome do arquivo seja reproduzido, após o download do arquivo.

curl canalizado para o mplayer

Com essa abordagem, existem duas técnicas nela. A primeira é usar wget ou curl para iniciar o download e enviar os dados para mplayer .

Exemplo

$ wget http://mymusic.store.com/musicfoo.mp3 -O - | mplayer -

Você também pode armazenar em cache o download aqui como antes:

$ wget http://mymusic.store.com/musicfoo.mp3 -O - | mplayer -cache 8192 -

enrolar 1º, depois mplayer

O outro método é baixar o arquivo e depois reproduzi-lo. Você poderia usar uma função de Bash para envolvê-la, pois agora ela se torna um processo de 2 etapas em que o arquivo é completamente baixado primeiro e depois reproduzido posteriormente.

Exemplo

$ function smplayer() { wget $@ && mplayer $(basename $@); }

Então, para fazer um download e reproduzir, você executaria a função da seguinte forma:

$ smplayer http://mymusic.store.com/musicfoo.mp3
    
por 23.11.2013 / 02:19
0

Tente:

wget http://mymusic.store.com/musicfoo.mp3 && mplayer musicfoo.mp3

O && significa "uma vez que o comando do lado esquerdo tenha concluído com sucesso ". Isso pressupõe que o comando do lado esquerdo não bifurque ou use valores de status de saída não padrão. Eu duvido que o wget faça o segundo, e contanto que você não use a opção -b , também não deve fazer o primeiro.

    
por 22.11.2013 / 20:18
0

Tente isto:

mkdir /tmp/download_$$
cd /tmp/download_$$
wget http://mymusic.store.com/musicfoo.mp3
mplayer *
    
por 22.11.2013 / 22:19
0

Eu tenho uma solução:

fpath=$(basename "$1")
wget $1
mplayer $fpath

O problema acima é que wget irá atribuir um nome de arquivo para o arquivo baixado (anexando um .1 ao seu final) se o nome do arquivo já existir. Portanto, o valor de fpath não é o arquivo correto, por assim dizer.

    
por 23.11.2013 / 07:24