Как я играю музыкальный поток HTTP по SSH?

Я знаю, что могу просто сделать mplayer <stream> открыть и играть поток на локальной машине. Однако я нахожусь позади брандмауэра.

Вместо этого я хотел бы открыть поток на удаленной машине, но все еще играть его на этом. Удаленные соединения - то, что SSH для, но выполнение ssh "mplayer <stream>" оба открывают и играют поток на удаленном.

SSH's -x флаг включает передачу дисплея X11. Мне нужно это?

29
12.11.2013, 19:15
4 ответа

Можно использовать ssh -L флаг для создания туннеля от системы до удаленного:

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

Можно затем соединиться с концом туннеля с mplayer поскольку Вы были бы иначе:

mplayer localhost:<localport>
19
27.01.2020, 19:38
  • 1
    Обратите внимание, что это не будет работать, если сервер HTTP будет использовать виртуальные домены (или другими словами, требует надлежащего доменного имени, отправленного клиентом как HTTP-заголовок). Для решения этой проблемы можно, например, временно добавить правило к Вашему hosts файл, который сделает mplayer думайте, что целевой домен размещается в локальной машине. –  liori 14.11.2013, 00:47
  • 2
    Или Вы могли использовать -http-header-fields вызвать a Host заголовок. –  Ignacio Vazquez-Abrams 14.11.2013, 00:55
  • 3
    @IgnacioVazquez-Abrams Вы возражаете разъясняться где? Я выполняю не в такой опции man ssh. –  William 14.11.2013, 06:17
  • 4
    @LiamWilliam: это - a mplayer опция. –  Ignacio Vazquez-Abrams 14.11.2013, 06:32

Можно настроить прокси SOCKS:

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

Можно использовать, говорят любое другое приложение, такое как веб-браузер, для использования этого прокси также.

8
27.01.2020, 19:38
  • 1
    http_proxy функция на самом деле работает с прокси SOCKS также? Функциональность является недокументированной в моей странице справочника, и различные сайты в сети предпочитают tsocks подход. –  liori 14.11.2013, 01:05
  • 2
    @liori: Да, это сотрудничает с tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u. Спасибо за Ваш советовать. Без tsocks (иначе только с http_proxy://…) это не работало. –  erik 06.05.2016, 19:10

Можно использовать wget ssh открыть HTTP-соединение и данные потока вывода, затем mplayer на локальной машине для проигрывания его.

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

Тонкость:

  • wget -O (прописная буква, о), опция устанавливает свой выходной файл; - (тире) подразумевает stdout.

  • mplayer -cache опция заставляет настраиваемую сумму входа быть буферизованной, компенсируя джиттер сети. - (тире) опция заставляет его читать из stdin.

Попытайтесь передать Радио SceneSat потоком, например. http://r1.scenesat.com:8000/scenesat

34
27.01.2020, 19:38
  • 1
    я даже не знаю, какая музыка это, но потому что я передаю его по каналу, это является потрясающим!Спасибо. –  SaultDon 12.11.2013, 21:58
  • 2
    Обратите внимание, что вопрос не упоминает никакого конкретного протокола, по которому передается потоком музыка. Существуют другие протоколы, по которым музыка может быть передана потоком, например, RTP и MMS. Оба могут играться mplayer, но не загруженный wget. –  liori 14.11.2013, 00:44
  • 3
    @liori. Это ясно не общее решение. –  Anko 14.11.2013, 01:41

sshfs замечательный инструмент для случаев как это. Это скрывает много брандмауэров и позволяет Вам использовать безотносительно плеера, который Вы выбираете (хотя mplayer является все еще хорошим выбором).

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

Я также выполняю Дозвуковое слушание порта 4040 на localhost и затем ssh- туннелируйте домой с

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

Я могу затем открыть Subsonic в браузере в http://localhost:4040.

6
27.01.2020, 19:38

Теги

Похожие вопросы