Bagaimana cara memutar aliran musik HTTP melalui SSH?

29

Saya tahu saya bisa melakukannya mplayer <stream>untuk membuka dan memainkan streaming di mesin lokal. Namun, saya berada di belakang firewall.

Sebagai gantinya, saya ingin membuka aliran pada mesin jarak jauh , tetapi tetap memainkannya pada yang satu ini . Koneksi jarak jauh adalah untuk apa SSH , tetapi melakukan ssh "mplayer <stream>"keduanya membuka dan memainkan aliran pada remote.

-xBendera SSH memungkinkan penerusan tampilan X11. Apakah saya membutuhkannya?

Anko
sumber

Jawaban:

19

Anda dapat menggunakan ssh's -Lbendera untuk membuat terowongan dari sistem anda ke remote:

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

Anda kemudian dapat terhubung ke ujung terowongan dengan mplayerseperti yang Anda inginkan:

mplayer localhost:<localport>
Ignacio Vazquez-Abrams
sumber
1
Perhatikan bahwa ini tidak akan berfungsi jika server HTTP menggunakan domain virtual (atau dengan kata lain, membutuhkan nama domain yang tepat yang dikirim oleh klien sebagai header HTTP). Untuk mengatasi masalah ini, misalnya Anda dapat menambahkan aturan sementara untuk hostsfile Anda yang akan mplayerberpikir bahwa domain target di-host di mesin lokal.
liori
3
Atau Anda bisa menggunakan -http-header-fieldsuntuk memaksa Hostheader.
Ignacio Vazquez-Abrams
@ IgnacioVazquez-Abrams Anda keberatan menjelaskan di mana? Saya tidak memiliki opsi seperti itu di man ssh.
William
@LiamWilliam: Ini mplayerpilihan.
Ignacio Vazquez-Abrams
34

Anda dapat menggunakan wgetlebih sshuntuk membuka koneksi HTTP dan output stream data, maka mplayerpada mesin lokal untuk memainkannya.

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

Kehalusan:

  • wget's -O(huruf oh) pilihan set file output-nya; -(dash) menyiratkan stdout.

  • mplayer's -cachepilihan menyebabkan sejumlah dikonfigurasi input harus buffered, kompensasi untuk jitter jaringan. Opsi -(tanda hubung) membuatnya dibaca dari stdin.

Coba streaming Radio SceneSat , misalnya.http://r1.scenesat.com:8000/scenesat

Anko
sumber
6
Saya bahkan tidak tahu jenis musik apa ini, tetapi karena saya menyiarkannya, itu luar biasa! Terima kasih.
SaultDon
1
Perhatikan bahwa pertanyaan itu tidak menyebutkan protokol khusus yang mengalirkan musik. Ada protokol lain di mana musik dapat dialirkan, misalnya RTP dan MMS. Keduanya dapat dimainkan oleh mplayer, tetapi tidak diunduh oleh wget.
liori
@liori Poin bagus. Ini jelas bukan solusi umum.
Anko
8

Anda dapat mengatur proxy SOCKS :

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

Anda dapat menggunakan kirim aplikasi lain, seperti browser web Anda, untuk menggunakan proxy ini juga.

ssch
sumber
2
Apakah fitur http_proxy juga berfungsi dengan proksi SOCKS? Fitur ini tidak berdokumen di halaman manual saya, dan berbagai situs di web lebih suka tsockspendekatan itu.
liori
1
@liori: Ya, ini bekerja sama dengan tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3u. Terima kasih atas saran Anda. Tanpa tsocks (alias hanya dengan http_proxy://…) itu tidak berfungsi.
erik
6

sshfsadalah alat yang luar biasa untuk kasus-kasus seperti ini. Ini menyembunyikan banyak firewall dan memungkinkan Anda untuk menggunakan pemain apa pun yang Anda pilih (meskipun mplayer masih merupakan pilihan yang bagus).

sudo apt-get install sshfs # your favorite packager here
sshfs [email protected]:/home/arthur/Music ~/Music

Saya juga menjalankan Subsonic mendengarkan port 4040 localhostdan kemudian ssh-tunnel pulang

ssh -L 4040:localhost:4040 [email protected]

Saya kemudian dapat membuka Subsonic di browser di http://localhost:4040.

Arthur Ulfeldt
sumber