Como reproduzo um fluxo de músicas HTTP por SSH?


29

Eu sei que posso fazer apenas mplayer <stream>para abrir e reproduzir um fluxo na máquina local. No entanto, estou atrás de um firewall.

Em vez disso, eu gostaria de abrir o fluxo em uma máquina remota , mas ainda reproduzi- la nesta . As conexões remotas são para que serve o SSH , mas fazer as ssh "mplayer <stream>"duas coisas abre e reproduz o fluxo no controle remoto.

O -xsinalizador do SSH permite o encaminhamento de exibição do X11. Eu preciso disso?

Respostas:


19

Você pode usar ssho -Lsinalizador para criar um túnel do seu sistema para um controle remoto:

ssh -L <localport>:<streamhost>:<streamport> <user>@<remote>

Em seguida, você pode conectar-se ao seu final do túnel mplayercomo faria com:

mplayer localhost:<localport>

1
Observe que isso não funcionará se o servidor HTTP estiver usando domínios virtuais (ou seja, exigir um nome de domínio apropriado enviado pelo cliente como um cabeçalho HTTP). Para resolver esse problema, você pode, por exemplo, adicionar temporariamente ao seu hostsarquivo uma regra que fará mplayerpensar que o domínio de destino está hospedado na máquina local.
Liori 13/11/2013

3
Ou você pode usar -http-header-fieldspara forçar um Hostcabeçalho.
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams, você se importa em esclarecer onde? Eu não faço essa opção man ssh.
William

@LiamWilliam: É uma mplayeropção.
Ignacio Vazquez-Abrams

34

Você pode usar wgetover sshpara abrir uma conexão HTTP e enviar dados de fluxo e, mplayerem seguida, na máquina local para reproduzi-los.

ssh <user>@<host> "wget <stream> -O -" | mplayer -cache 512 -

As sutilezas:

  • wgetA opção 's -O(letra maiúscula oh) define seu arquivo de saída; -(traço) implica stdout.

  • mplayerA -cacheopção de faz com que uma quantidade configurável de entrada seja armazenada em buffer, compensando a instabilidade da rede. A -opção (traço) faz com que seja lida stdin.

Tente transmitir o SceneSat Radio , por exemplo.http://r1.scenesat.com:8000/scenesat


6
Eu nem sei que tipo de música é essa, mas porque eu estou cantando, é incrível! Obrigado.
SaultDon

1
Observe que a pergunta não menciona nenhum protocolo específico sobre o qual a música é transmitida. Existem outros protocolos sobre os quais a música pode ser transmitida, por exemplo, RTP e MMS. Ambos podem ser reproduzidos mplayer, mas não baixados por wget.
Liori 13/11/2013

@liori Bom ponto. Isso claramente não é uma solução geral.
Anko13

8

Você pode configurar um proxy SOCKS :

ssh -D localhost:8080 user@remotehost
mplayer http_proxy://localhost:8080/http://stream

Você pode usar o tell qualquer outro aplicativo, como o navegador da web, para usar esse proxy também.


2
O recurso http_proxy também funciona com proxies do SOCKS? O recurso não está documentado na minha página de manual e vários sites na Web preferem a tsocksabordagem.
Liori 13/11/2013

1
@iorior: Sim, isso funciona em conjunto com tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u. Obrigado pelo seu conselho. Sem tsocks (também conhecido como http_proxy://…) não funcionou.
Erik

6

sshfsé uma ferramenta maravilhosa para casos como este. Ele esconde muitos firewalls e permite que você use qualquer jogador que escolher (embora o mplayer ainda seja uma boa escolha).

sudo apt-get install sshfs # your favorite packager here
sshfs me@mydomain.org:/home/arthur/Music ~/Music

Eu também executar Subsonic escuta a porta 4040 em localhoste, em seguida, sshcasa --tunnel com

ssh -L 4040:localhost:4040 me@mydomain.com

Posso abrir o Subsônico no navegador em http://localhost:4040.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.