Як відтворити музичний потік HTTP через SSH?


29

Я знаю , що я можу робити , mplayer <stream>щоб відкрити і грати потік на локальному комп'ютері. Однак я за брандмауером.

Натомість я хотів би відкрити потік на віддаленій машині , але все-таки відтворити його на цьому . Для віддалених з'єднань - це те, що призначено для SSH , але при цьому відбувається ssh "mplayer <stream>"відкриття та відтворення потоку на пульті.

-xПрапор SSH дозволяє пересилати дисплей X11. Мені це потрібно?

Відповіді:


19

Ви можете використовувати прапор ssh'', -Lщоб створити тунель від вашої системи до віддаленого:

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

Потім ви можете підключитися до кінця тунелю, mplayerяк інакше:

mplayer localhost:<localport>

1
Зауважте, що це не буде працювати, якщо сервер HTTP використовує віртуальні домени (або іншими словами, потрібне відповідне доменне ім’я, надіслане клієнтом як заголовка HTTP). Щоб вирішити цю проблему, ви можете, наприклад, тимчасово додати у свій hostsфайл правило, яке дозволить mplayerдумати, що цільовий домен розміщується на локальній машині.
liori

3
Або ви можете використовувати -http-header-fieldsдля примушування Hostзаголовка.
Ігнасіо Васкес-Абрамс

@ IgnacioVazquez-Abrams Ви не проти уточнити, де? У мене немає такого варіанту man ssh.
Вільям

@LiamWilliam: Це mplayerваріант.
Ігнасіо Васкес-Абрамс

34

Ви можете використовувати wgetбільш , sshщоб відкрити підключення даних HTTP і потік виводу, а потім mplayerна локальному комп'ютері , щоб відтворити його.

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

Тонкощі:

  • wget's -O(велика літера о) встановлює вихідний файл; -(тире) передбачає stdout.

  • mplayer«S -cacheопція змушує конфігурується кількість введення дл буферизації, компенсуючи мережі джиттера. Параметр -(тире) змушує його читати з stdin.

Спробуйте, наприклад, потокове радіо SceneSat .http://r1.scenesat.com:8000/scenesat


6
Я навіть не знаю, що це за музика, але тому, що я перекладаю її, це приголомшливо! Спасибі.
SaultDon

1
Зауважте, що в запитанні не згадується жоден конкретний протокол, по якому передається музика. Є й інші протоколи, над якими можна передавати музику, наприклад, RTP та MMS. Обидва можуть грати mplayer, але не завантажуватись wget.
liori

@liori Добре. Це явно не є загальним рішенням.
Анко

8

Ви можете встановити проксі-сервер SOCKS :

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

Ви можете використовувати програму Tell будь-яку іншу програму, наприклад ваш веб-браузер, і використовувати цей проксі.


2
Чи реально функція http_proxy працює і з проксі-серверами SOCKS? Ця функція недокументована на моїй сторінці man, а різні веб-сайти в Інтернеті віддають перевагу tsocksпідходу.
liori

1
@liori: Так, це працює разом із tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u. Дякую за пораду Без цоколів (він же тільки з http_proxy://…) це не вийшло.
Ерік

6

sshfsє прекрасним інструментом для таких випадків. Він приховує багато брандмауера і дозволяє використовувати будь-який гравець, який ви обрали (хоча mplayer все ще приємний вибір).

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

Я також запускаю Subsonic прослуховування порту 4040 localhostі потім ssh-tunnel home with

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

Потім я можу відкрити Subsonic у браузері за адресою http://localhost:4040.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.