ฉันจะเล่นสตรีมเพลง HTTP บน SSH ได้อย่างไร


29

ฉันรู้ว่าฉันสามารถทำได้mplayer <stream>เพื่อเปิดและเล่นสตรีมบนเครื่องท้องถิ่น อย่างไรก็ตามฉันอยู่หลังไฟร์วอลล์

แต่ผมอยากจะเปิดสตรีมบนที่เครื่องระยะไกลแต่ก็ยังเล่นได้ในนี้ การเชื่อมต่อระยะไกลเป็นสิ่งที่SSHใช้ แต่การssh "mplayer <stream>"เปิดและเล่นกระแสข้อมูลบนรีโมทนั้น

การ-xตั้งค่าสถานะSSH ช่วยให้ X11 แสดงการส่งต่อ ฉันต้องการสิ่งนั้นหรือไม่

คำตอบ:


19

คุณสามารถใช้ssh's -Lธงเพื่อสร้างอุโมงค์จากระบบของคุณจะห่างไกล:

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

จากนั้นคุณสามารถเชื่อมต่อกับจุดสิ้นสุดของอุโมงค์ด้วยวิธีmplayerอื่น:

mplayer localhost:<localport>

1
โปรดทราบว่าสิ่งนี้จะไม่ทำงานหากเซิร์ฟเวอร์ HTTP ใช้โดเมนเสมือน (หรือกล่าวอีกนัยหนึ่งต้องใช้ชื่อโดเมนที่ถูกต้องซึ่งลูกค้าส่งมาเป็นส่วนหัว HTTP) ในการแก้ปัญหานี้คุณสามารถเพิ่มกฎลงในhostsไฟล์ของคุณชั่วคราวซึ่งจะทำให้mplayerคิดว่าโดเมนเป้าหมายโฮสต์อยู่ในเครื่องของคุณ
liori

3
หรือคุณสามารถใช้-http-header-fieldsบังคับHostส่วนหัว
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams คุณคิดที่จะชี้แจงที่ไหน? ฉันไม่มีตัวเลือกในman sshนั้น
วิลเลียม

@ เลียมวิลเลียม: มันเป็นmplayerตัวเลือก
Ignacio Vazquez-Abrams

34

คุณสามารถใช้ได้ wgetมากกว่าsshที่จะเปิดการเชื่อมต่อ HTTP และกระแสออกข้อมูลแล้วmplayerในเครื่องท้องถิ่นที่จะเล่นมัน

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

รายละเอียดปลีกย่อย:

  • wget's -O (ตัวพิมพ์ใหญ่ oh) ตั้งค่าไฟล์ที่ส่งออก; -(เส้นประ) stdoutหมายถึง

  • mplayer's -cacheตัวเลือกที่ทำให้เกิดจำนวนที่กำหนดของการป้อนข้อมูลที่จะได้รับบัฟเฟอร์ชดเชยกระวนกระวายใจเครือข่าย -(รีบ) stdinตัวเลือกที่จะทำให้มันอ่านจาก

ลองสตรีมมิ่งSceneSat Radioเป็นต้นhttp://r1.scenesat.com:8000/scenesat


6
ฉันไม่รู้ด้วยซ้ำว่าดนตรีประเภทนี้เป็นอย่างไร แต่เพราะฉันกำลังไพพ์มันจึงยอดเยี่ยม! ขอบคุณ
SaultDon

1
โปรดทราบว่าคำถามไม่ได้กล่าวถึงโปรโตคอลใด ๆ ที่สตรีมเพลง มีโปรโตคอลอื่นที่สามารถสตรีมเพลงได้เช่น RTP และ MMS สามารถเล่นได้ทั้งคู่mplayerแต่ไม่สามารถดาวน์โหลดwgetได้
liori

@liori จุดที่ดี ชัดเจนว่านี่ไม่ใช่วิธีแก้ปัญหาทั่วไป
Anko

8

คุณสามารถตั้งค่าพร็อกซี SOCKS :

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

คุณสามารถใช้บอกแอปพลิเคชันอื่น ๆ เช่นเว็บเบราว์เซอร์ของคุณเพื่อใช้พร็อกซีนี้ได้เช่นกัน


2
คุณลักษณะ http_proxy ทำงานร่วมกับพร็อกซี SOCKS ได้จริงหรือไม่ คุณลักษณะนี้ไม่มีเอกสารในหน้า man ของฉันและเว็บไซต์ต่าง ๆ ในเว็บต้องการtsocksวิธีการ
liori

1
@liori: tsocks mplayer -playlist http://bassdrive.com/bassdrive.m3uใช่นี้ทำงานร่วมกับ ขอบคุณสำหรับคำแนะนำของคุณ หากไม่มี tsocks (aka เท่านั้นด้วยhttp_proxy://…) มันไม่ทำงาน
erik

6

sshfsเป็นเครื่องมือที่ยอดเยี่ยมสำหรับกรณีเช่นนี้ มันซ่อนไฟร์วอลล์จำนวนมากและอนุญาตให้คุณใช้เครื่องเล่นใดก็ได้ที่คุณเลือก (แม้ว่า mplayer ยังคงเป็นตัวเลือกที่ดี)

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

ฉันยังเปิดใช้Subsonic Listen กับพอร์ต 4040 localhostและsshเปิด -tunnel home ด้วย

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

http://localhost:4040แล้วฉันสามารถเปิดเปรี้ยงปร้างในเบราว์เซอร์ที่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.