如何通过 SSH 播放 HTTP 音乐流?

Ank*_*nko 29 streaming ssh mplayer music http

我知道我可以做mplayer <stream>,以打开播放本地计算机上的流。但是,我在防火墙后面。

相反,我想在远程机器打开流,但仍然在台机器上播放。远程连接是SSH的用途,但同时在远程连接上打开播放流。ssh "mplayer <stream>"

SSH 的-x标志启用 X11 显示转发。我需要那个吗?

Ank*_*nko 34

可以使用wgetoverssh打开一个HTTP连接并输出流数据,然后mplayer在本地机器上播放。

ssh <user>@<host> "wget <stream> -O -" | mplayer -cache 512 -
Run Code Online (Sandbox Code Playgroud)

微妙之处:

  • wget's -O(大写字母 oh)选项设置其输出文件;-(破折号)暗示stdout

  • mplayer-cache选项会导致缓冲输入的可配置数量,以补偿网络抖动。该-(DASH)选项,则读取stdin

例如,尝试流式传输SceneSat Radiohttp://r1.scenesat.com:8000/scenesat

  • 我什至不知道这是什么类型的音乐,但因为我在管它,它太棒了!谢谢。 (6认同)

Ign*_*ams 19

您可以使用ssh's-L标志创建从系统到远程的隧道:

ssh -L <localport>:<streamhost>:<streamport> <user>@<remote>
Run Code Online (Sandbox Code Playgroud)

然后,您可以mplayer像其他方式一样连接到隧道的末端:

mplayer localhost:<localport>
Run Code Online (Sandbox Code Playgroud)

  • 或者您可以使用 `-http-header-fields` 来强制使用 `Host` 标头。 (3认同)

小智 8

您可以设置SOCKS 代理

ssh -D localhost:8080 user@remotehost
mplayer http_proxy://localhost:8080/http://stream
Run Code Online (Sandbox Code Playgroud)

您也可以使用 tell 任何其他应用程序(例如您的 Web 浏览器)来使用此代理。

  • http_proxy 功能实际上也适用于 SOCKS 代理吗?该功能在我的手册页中没有记录,网络上的各种站点更喜欢 `tsocks` 方法。 (2认同)

Art*_*ldt 6

sshfs是处理此类案例的绝佳工具。它隐藏了许多防火墙并允许您使用您选择的任何播放器(尽管 mplayer 仍然是一个不错的选择)。

sudo apt-get install sshfs # your favorite packager here
sshfs me@mydomain.org:/home/arthur/Music ~/Music
Run Code Online (Sandbox Code Playgroud)

我还运行Subsonic监听端口 4040 localhost,然后使用ssh-tunnel home

ssh -L 4040:localhost:4040 me@mydomain.com
Run Code Online (Sandbox Code Playgroud)

然后我可以在浏览器中打开 Subsonic http://localhost:4040