การส่งต่อเสียงเช่น X ใน SSH


27

แม้ว่าจะเป็นไปได้ที่จะใช้แอปพลิเคชั่น X จากระยะไกลโดยใช้สวิตช์ -X ใน ssh เสียงจะถูกเล่นในลำโพงของเครื่องระยะไกลเท่านั้น ตัวอย่างเช่นถ้าฉันดูภาพยนตร์ใน VLC / Totem เฉพาะวิดีโอที่มองเห็นได้และฉันไม่ได้ยินเสียง มีวิธีส่งต่อเสียงด้วยหรือไม่ [โดยไม่ต้องขุดผ่านการตั้งค่าของ Pulse-audio ฉันหมายถึง; เช่นเดียวกับวิธีที่ ssh เข้าใจการส่งต่อ X ด้วยตัวเอง]

ฉันได้ลองสิ่งนี้เฉพาะใน Ubuntu (ใน Ubuntu รุ่นต่าง ๆ ตั้งแต่ 9.10 ถึง 10.10) ถ้าเป็นเช่นนั้น

คำตอบ:


30

ครั้งแรกที่วิ่งpaprefsไปที่เครือข่ายเซิร์ฟเวอร์และตรวจสอบการเปิดใช้งานการเข้าถึงเครือข่ายอุปกรณ์เสียงในท้องถิ่น สิ่งนี้จะโหลด "module-native-protocol-tcp" ใน PulseAudio

ตอนนี้คุณสามารถเข้าถึงเซิร์ฟเวอร์ PulseAudio ได้หลายวิธี:

ส่งต่อการเชื่อมต่อ TCP ด้วยตนเองผ่าน SSH

  1. ใช้pax11publishเพื่อค้นหาพอร์ตผู้ฟัง PulseAudio ของคุณ (ปกติคือ 4713)
  2. เชื่อมต่อกับคอมพิวเตอร์เครื่องอื่นด้วยssh -R 24713:localhost:4713(พอร์ตระยะไกล '24713' ถูกเลือกโดยพลการ);
  3. คัดลอกคุกกี้การรับรองความถูกต้องของคุณ (~ / .config / pulse / cookie) ไปยังคอมพิวเตอร์เครื่องนั้น
  4. ทำงานสุดท้ายและการทดสอบด้วยexport PULSE_SERVER="tcp:localhost:24713"pactl info

ใช้การเชื่อมต่อโดยตรงอัตโนมัติกับการค้นพบ X11

เมื่อใดก็ตามที่คุณใช้ SSH เมื่อเปิดใช้งานการส่งต่อ X11 โปรแกรม PulseAudio จะใช้ X11 เพื่อค้นหาเซิร์ฟเวอร์เสียงของคุณ (ใช้pax11publishหรือxprop -root PULSE_SERVERเพื่อดูด้วยตัวคุณเอง) พวกเขาจะพยายามสร้างการเชื่อมต่อโดยตรง (ไม่ใช่ SSH, ไม่เข้ารหัส) ไปยังคอมพิวเตอร์ของคุณเพื่อการสตรีมเสียง

ใช้การเชื่อมต่อโดยตรงอัตโนมัติกับการค้นหา DNS-SD

หากคุณติดตั้ง avahi-daemon และ pulseaudio-zeroconf คุณสามารถเปิดใช้งาน "อนุญาตให้เครื่องอื่นค้นพบอุปกรณ์ภายในเครื่อง" สิ่งนี้จะโหลด "module-zeroconf-publish"

คอมพิวเตอร์เครื่องอื่นที่มีตัวเลือก "เปิดใช้งานอุปกรณ์เครือข่ายที่สามารถค้นพบได้ในท้องถิ่น" (โมดูล -zeroconf-discover) จะแสดงรายการเอาต์พุต (ซิงค์) โดยอัตโนมัติที่คอมพิวเตอร์ของคุณส่งออก พวกเขาจะใช้การเชื่อมต่อโดยตรง (ไม่ได้เข้ารหัส) สำหรับการสตรีมเสียง

วิธีนี้ยังต้องการ ~ / .config / pulse / cookie เหมือนกันทั่วทั้งโฮสต์


2
สถานที่ที่ไม่~/.pulse_cookieอยู่? บนรีโมทหรือในเครื่อง?
HSchmale

2
ทั้งสอง มันถูกสร้างขึ้นโดย pulseaudio daemon จากนั้นอ่านโดยเชื่อมต่อไคลเอนต์ (เช่นรหัสผ่าน) ดังนั้นคุณจะต้องคัดลอกจากเซิร์ฟเวอร์ไปยังไคลเอนต์ (โปรดทราบว่าตั้งแต่เปลี่ยนเส้นทางเป็น~/.config/pulse/cookieหากไม่ได้ผลให้ลองใช้วิธีอื่น)
grawity

2
โปรดทราบว่าหลังจากเปลี่ยนการตั้งค่าเป็น paprefs คุณต้องรีสตาร์ทด้วยตนเองอย่างน้อย pulseaudio ในกรณีของฉันหลังจากใช้เวลาหลายชั่วโมงเพื่อหาว่ามีอะไรผิดปกติฉันเพิ่งรีบูตและทุกอย่างก็ทำงาน :)
crazy2be

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