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?

Anko
fonte

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>
Ignacio Vazquez-Abrams
fonte
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

Anko
fonte
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.

ssch
fonte
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 [email protected]:/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 [email protected]

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

Arthur Ulfeldt
fonte