Come si riproduce un flusso musicale HTTP su SSH?


29

So che posso fare solo mplayer <stream>per aprire e riprodurre un flusso sul computer locale. Tuttavia, sono dietro un firewall.

Invece, vorrei aprire lo stream su un computer remoto , ma riprodurlo comunque su questo . Le connessioni remote servono a SSH , ma fare ssh "mplayer <stream>"entrambe le cose si apre e riproduce il flusso sul telecomando.

Il -xflag di SSH abilita l'inoltro del display X11. Ne ho bisogno?

Risposte:


19

Puoi usare sshil -Lflag di '' per creare un tunnel dal tuo sistema a un telecomando:

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

È quindi possibile connettersi alla fine del tunnel con mplayercome altrimenti:

mplayer localhost:<localport>

1
Si noti che ciò non funzionerà se il server HTTP utilizza domini virtuali (o in altre parole, richiede un nome di dominio corretto inviato dal client come intestazione HTTP). Per risolvere questo problema, ad esempio puoi aggiungere temporaneamente una regola al tuo hostsfile che farà mplayerpensare che il dominio di destinazione sia ospitato sul computer locale.
liori,

3
Oppure potresti usare -http-header-fieldsper forzare Hostun'intestazione.
Ignacio Vazquez-Abrams,

@ IgnacioVazquez-Abrams ti dispiace chiarire dove? Non ho questa opzione in man ssh.
William,

@LiamWilliam: è mplayerun'opzione.
Ignacio Vazquez-Abrams,

34

Puoi usare wgetover sshper aprire una connessione HTTP e trasmettere i dati del flusso, quindi mplayersul computer locale per riprodurlo.

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

Le sottigliezze:

  • wgetL' -Oopzione (lettera maiuscola oh) imposta il suo file di output; -(trattino) implica stdout.

  • mplayerL ' -cacheopzione fa sì che una quantità configurabile di input venga bufferizzata, compensando il jitter di rete. L' -opzione (trattino) lo fa leggere stdin.

Prova lo streaming di SceneSat Radio , ad esempio.http://r1.scenesat.com:8000/scenesat


6
Non so nemmeno che tipo di musica sia, ma poiché lo sto suonando, è fantastico! Grazie.
SaultDon

1
Si noti che la domanda non menziona alcun protocollo particolare su cui viene trasmessa la musica. Esistono altri protocolli su cui è possibile eseguire lo streaming di musica, ad esempio RTP e MMS. Entrambi possono essere riprodotti da mplayer, ma non scaricati da wget.
liori,

@liori Ottimo punto. Questa chiaramente non è una soluzione generale.
Anko,

8

È possibile impostare un proxy SOCKS :

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

Puoi usare anche a qualsiasi altra applicazione, come il tuo browser web, per usare questo proxy.


2
La funzione http_proxy funziona anche con i proxy SOCKS? La funzione non è documentata nella mia pagina man e vari siti sul web preferiscono l' tsocksapproccio.
liori,

1
@liori: Sì, funziona insieme a tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u. Grazie per il tuo consiglio. Senza tsocks (aka solo con http_proxy://…) non ha funzionato.
Erik,

6

sshfsè uno strumento meraviglioso per casi come questo. Nasconde molti firewall e ti permette di usare qualunque giocatore tu scelga (sebbene mplayer sia ancora una buona scelta).

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

Ho anche eseguito Subsonic ascoltando la porta 4040 localhoste poi ssh-tunnel home con

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

Posso quindi aprire Subsonic nel browser all'indirizzo http://localhost:4040.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.