Jak odtwarzać strumień muzyczny HTTP przez SSH?


29

Wiem, że mogę to zrobić mplayer <stream>, aby otworzyć i odtworzyć strumień na komputerze lokalnym. Jestem jednak za firewallem.

Zamiast tego chciałbym otworzyć strumień na zdalnym komputerze , ale nadal odtwarzać go na tym . Połączenia zdalne są co SSH jest, ale robi ssh "mplayer <stream>"zarówno otwiera się i odtwarza strumień na pilocie.

-xFlaga SSH umożliwia przekazywanie wyświetlania X11. Czy potrzebuję tego?

Odpowiedzi:


19

Można użyć ssh„s -Lflagę, aby utworzyć tunel z systemu do zdalnego:

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

Następnie możesz połączyć się ze swoim końcem tunelu za pomocą mplayer:

mplayer localhost:<localport>

1
Pamiętaj, że to nie zadziała, jeśli serwer HTTP używa domen wirtualnych (lub innymi słowy, wymaga prawidłowej nazwy domeny wysłanej przez klienta jako nagłówek HTTP). Aby rozwiązać ten problem, możesz na przykład tymczasowo dodać do hostspliku regułę , która sprawi mplayer, że domena docelowa będzie hostowana na komputerze lokalnym.
liori

3
Lub możesz użyć -http-header-fieldsdo wymuszenia Hostnagłówka.
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams, czy możesz wyjaśnić, gdzie? Nie mam takiej opcji w man ssh.
William

@LiamWilliam: To jest mplayeropcja.
Ignacio Vazquez-Abrams

34

Możesz użyć przycisku wgetpowyżej, sshaby otworzyć połączenie HTTP i dane wyjściowe strumienia, a następnie mplayerna komputerze lokalnym, aby je odtworzyć.

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

Subtelności:

  • wget„s -O(litera oh) opcja ustawia pliku wyjściowego; -(myślnik) oznacza stdout.

  • mplayer„s -cachePowoduje on, że konfigurowalny wysokość wejścia do buforowania, kompensację drgań sieci. Opcja -(myślnik) sprawia, że ​​jest odczytywany stdin.

Spróbuj na przykład przesłać strumieniowo Radio SceneSat .http://r1.scenesat.com:8000/scenesat


6
Nie wiem nawet, co to za muzyka, ale ponieważ robię to, to jest niesamowite! Dzięki.
SaultDon,

1
Pamiętaj, że pytanie nie wspomina o żadnym konkretnym protokole, przez który przesyłana jest muzyka. Istnieją inne protokoły, za pomocą których można przesyłać strumieniowo muzykę, na przykład RTP i MMS. Oba mogą być odtwarzane przez mplayer, ale nie pobrane przez wget.
liori

@liori Dobra uwaga. To oczywiście nie jest ogólne rozwiązanie.
Anko

8

Możesz skonfigurować proxy SOCKS :

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

Możesz użyć każdej innej aplikacji, np. Przeglądarki internetowej, aby korzystała z tego serwera proxy.


2
Czy funkcja http_proxy faktycznie działa również z serwerami proxy SOCKS? Ta funkcja nie jest udokumentowana na mojej stronie man, a różne witryny w sieci preferują takie tsockspodejście.
liori

1
@liori: Tak, to działa razem z tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u. Dziękuję za Twoją radę. Bez tsocks (aka tylko z http_proxy://…) nie działało.
erik

6

sshfsto wspaniałe narzędzie do takich przypadków. Ukrywa wiele zapór ogniowych i pozwala korzystać z dowolnego gracza, który wybierzesz (chociaż mplayer jest nadal dobrym wyborem).

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

Prowadzę również Subsonic, nasłuchując na porcie 4040, localhosta następnie z sshtunelem do domu

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

Następnie mogę otworzyć Subsonic w przeglądarce pod adresem http://localhost:4040.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.