Làm cách nào để phát luồng nhạc HTTP qua SSH?


29

Tôi biết tôi chỉ có thể làm mplayer <stream>để mởphát một luồng trên máy cục bộ. Tuy nhiên, tôi đứng sau một bức tường lửa.

Thay vào đó, tôi muốn mở luồng trên một máy từ xa , nhưng vẫn phát nó trên máy này . Kết nối từ xa là những gì SSH dành cho, nhưng thực hiện ssh "mplayer <stream>"cả mở phát luồng trên điều khiển từ xa.

-xCờ của SSH cho phép chuyển tiếp hiển thị X11. Tôi có cần điều đó không?

Câu trả lời:


19

Bạn có thể sử dụng ssh's -Lcờ để tạo ra một đường hầm từ hệ thống của bạn với một điều khiển từ xa:

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

Sau đó, bạn có thể kết nối với cuối đường hầm bằng mplayercách khác:

mplayer localhost:<localport>

1
Lưu ý rằng điều này sẽ không hoạt động nếu máy chủ HTTP đang sử dụng các miền ảo (hay nói cách khác, yêu cầu một tên miền thích hợp được gửi bởi máy khách dưới dạng tiêu đề HTTP). Để giải quyết vấn đề này, ví dụ, bạn có thể tạm thời thêm một quy tắc vào hoststệp của mình để mplayernghĩ rằng miền đích được lưu trữ tại máy cục bộ.
liori

3
Hoặc bạn có thể sử dụng -http-header-fieldsđể buộc một Hosttiêu đề.
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams bạn có phiền làm rõ ở đâu không? Tôi không có một lựa chọn như vậy trong man ssh.
William

@LiamWilliam: Đó là một mplayerlựa chọn.
Ignacio Vazquez-Abrams

34

Bạn có thể sử dụng wgettrên sshđể mở một kết nối HTTP và output stream dữ liệu, sau đó mplayertrên máy tính cục bộ để chơi nó.

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

Sự tinh tế:

  • wget's -O(vốn thư oh) tùy chọn đặt tập tin đầu ra của nó; -(dấu gạch ngang) ngụ ý stdout.

  • mplayer's -cachelựa chọn gây ra một số lượng cấu hình của đầu vào để được đệm, bồi thường cho jitter mạng. Các -(dash) tùy chọn làm cho nó đọc từ stdin.

Ví dụ, hãy thử phát trực tuyến RadioSat Radio .http://r1.scenesat.com:8000/scenesat


6
Tôi thậm chí không biết đây là loại nhạc gì, nhưng vì tôi đang hát nó, nó thật tuyệt! Cảm ơn.
SaultDon

1
Lưu ý rằng câu hỏi không đề cập đến bất kỳ giao thức cụ thể nào về âm nhạc được truyền phát. Có các giao thức khác mà âm nhạc có thể được phát trực tuyến, ví dụ RTP và MMS. Cả hai có thể được chơi bằng cách mplayer, nhưng không được tải về bằng wget.
liori

@liori Điểm tốt. Đây rõ ràng không phải là một giải pháp chung.
Anko

8

Bạn có thể thiết lập proxy SOCKS :

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

Bạn có thể sử dụng nói với bất kỳ ứng dụng nào khác, chẳng hạn như trình duyệt web của bạn, để sử dụng proxy này.


2
Tính năng http_proxy có thực sự hoạt động với proxy SOCKS không? Tính năng này không có giấy tờ trong trang người đàn ông của tôi và các trang web khác nhau trên web thích tsockscách tiếp cận này.
liori

1
@liori: Vâng, cái này hoạt động cùng với tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u. Cảm ơn lời khuyên của bạn. Không có tsocks (hay chỉ với http_proxy://…) nó không hoạt động.
erik

6

sshfslà một công cụ tuyệt vời cho các trường hợp như thế này. Nó ẩn nhiều tường lửa và cho phép bạn sử dụng bất kỳ trình phát nào bạn chọn (mặc dù mplayer vẫn là một lựa chọn tốt).

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

Tôi cũng chạy Subsonic nghe cổng 4040 localhostvà sau đó ssh-tunnel về nhà với

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

Sau đó tôi có thể mở Subsonic trong trình duyệt tại http://localhost:4040.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.