สตรีมเพลงผ่านเครือข่ายไปยังคอมพิวเตอร์หลายเครื่องได้อย่างไร


78

ผล

ฉันต้องการที่จะสามารถเดินจากห้องหนึ่งไปอีกห้องหนึ่งและได้ยินเสียงเพลงเดียวกันกำลังเล่น อย่างที่คุณทำถ้าคุณฟังวิทยุในทุกห้อง

ฉันต้องการเอฟเฟกต์นั้น แต่ฉันต้องการฟังเพลงของตัวเองสามารถทำได้หรือไม่

วัสดุ

  • แล็ปท็อป Ubuntu
  • คอมพิวเตอร์ Mac

ทางเลือกแรก

  • ฉันได้พบและตั้งค่าซอฟต์แวร์ตามคำตอบนี้
  • ซอฟต์แวร์ทั้งหมดในคอมพิวเตอร์และเซิร์ฟเวอร์ตั้งค่าฉันควรทำต่อไปอย่างไร http://www.pulseaudio.org/wiki/FirstSteps

คำตอบ:


48

ใช่ด้วยpulseaudioสามารถทำได้อย่างง่ายดาย คุณจะต้องติดตั้งและเรียกใช้paprefs ติดตั้ง paprefsที่ทำให้อุปกรณ์เสียงของคุณพร้อมใช้งานผ่านเครือข่าย

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่

การตั้งค่าเหล่านี้อนุญาตให้ทั้งแหล่งเสียงและอ่างล้างมือถูกเผยแพร่ผ่านเครือข่ายโดยเฉพาะอย่างยิ่งกับเซิร์ฟเวอร์ pulseaudio อื่น

ในกรณีที่คุณมีการตั้งค่าเซิร์ฟเวอร์โดยไม่มีตัวจัดการเดสก์ท็อปคุณจะต้องติดตั้งระบบเสียงก่อน (ดูคำถามนี้ ) จากนั้นคุณสามารถแก้ไข/etc/pulse/default.paบรรทัดเหล่านี้ในส่วนการเข้าถึงเครือข่าย :

load-module module-esound-protocol-tcp
load-module module-native-protocol-tcp
load-module module-zeroconf-publish

หากคุณต้องการใช้ผู้ส่งRTP ไม่ใส่เครื่องหมายข้อคิดเห็นบรรทัดเหล่านี้ในส่วนโมดูลผู้ส่ง RTP :

load-module module-null-sink sink_name=rtp format=s16be channels=2 rate=44100 description="RTP Multicast Sink"
load-module module-rtp-send source=rtp.monitor

เซิร์ฟเวอร์ pulseaudio ต้องเริ่มเป็น daemon ด้วยpulseaudio -Dในกรณีที่ยังไม่ทำงาน สำหรับการปรับการตั้งค่าคุณภาพเสียงในการ/etc/pulse/daemon.confปรับอาจปรับให้เข้ากับความต้องการส่วนบุคคล

วิธีอื่นในการสตรีมเสียงในเครือข่ายของคุณคือการติดตั้ง Icecast Server (ดูคำถามนี้ )


14
ในกรณีที่ลูกค้าหัวขาด (เช่น Pi กับลำโพงในตู้ครัวของฉัน) มันจะมีประโยชน์ที่จะรู้วิธีการตั้งค่านี้อย่างสมบูรณ์ผ่านไฟล์ config และ / หรือคำสั่งเชลล์
ราฟาเอล

คำแนะนำนี้เป็นเรื่องทั่วไปพอที่จะติดตามบน Ubuntu CLI wiki.archlinux.org/index.php/PulseAudio/ …
goetzc

11

ตัวเลือกที่ดีที่สุดของคุณเรียกว่า Music Player Daemon (mpd)

https://secure.wikimedia.org/wikipedia/en/wiki/Music_Player_Daemon

มันเป็นแอปพลิเคชันเซิร์ฟเวอร์ลูกค้า คุณจัดเก็บเพลงของคุณบนเซิร์ฟเวอร์จากนั้นเชื่อมต่อกับลูกค้าของคุณ (ผู้คนจำนวนมากสามารถทำได้พร้อมกัน) และควบคุมเซิร์ฟเวอร์

มันมีอยู่ในอูบุนตูแล้ว, เพียงแค่ฉลาด - ติดตั้ง mpd

และยังมีบางส่วนเอกสารที่ดี: https://wiki.archlinux.org/index.php/Mpd

MPD สามารถสตรีมเพลงได้ดังนั้นคุณสามารถมีไคลเอนต์จำนวนมาก (หรือลำโพงถ้าคุณต้องการโทรหาพวกเขา) เพื่อเล่นเพลง

แต่อย่าคาดหวังคุณภาพที่ดีจริงๆ การสตรีมมิ่งเสียงเสียหายไม่ดี (ไม่ว่าคุณจะใช้ mpd หรือ pulseaudio) เป็นความคิดที่ดีกว่ามากในการเชื่อมต่อลำโพงจริงกับเซิร์ฟเวอร์และใช้แล็ปท็อปเพื่อควบคุมเท่านั้น


2
บ้านของฉันใหญ่เกินไปที่จะใช้สายนั่นคือเหตุผลที่ฉันต้องการส่งเสียง
Alvar

คุณสามารถสตรีมได้ไม่ต้องกังวลเรื่องคุณภาพมันไม่สำคัญมากนักเนื่องจากการเชื่อมต่อไร้สายของคุณแข็งแรงพอ
Rahul Prasad

การสตรีมจะเสียคุณภาพเสียงได้อย่างไร WiFi เป็นสื่อการถ่ายโอนแบบดิจิทัล MPD ทำการบีบอัดแบบไม่สูญเสียหรือไม่? ฉันไม่คิดว่าจำเป็นสำหรับเครือข่าย WiFi ในปัจจุบัน
nvd

ว้าวคำตอบเก่า ๆ ฉันจำไม่ได้อีกแล้วเพราะฉันไม่ได้ใช้ MPD ตั้งแต่เวลานั้น
loxs

11

ฉันไม่ต้องทำอะไรผิดปกติ ฉันมีเน็ตบุ๊กคู่พร้อมด้วย PulseAudio และไม่มีชื่อฮาร์ดแวร์จาก intel ฉันจะตั้งค่าอะไรแบบนี้ได้บ้าง

เรียกใช้ paprefs ทั้งบนเซิร์ฟเวอร์และไคลเอนต์ของคุณ บนเซิร์ฟเวอร์ตรวจสอบให้แน่ใจว่าคุณเปิดใช้งานการตั้งค่ามัลติคาสต์และตรวจสอบบิตเซิร์ฟเวอร์ ชอบมาก ป้อนคำอธิบายรูปภาพที่นี่

และบิตมัลติคาสต์ ป้อนคำอธิบายรูปภาพที่นี่

บนไคลเอ็นต์ให้เปิดใช้งานบิตเกี่ยวกับการค้นหาอุปกรณ์ที่เปิดใช้งานเครือข่าย ป้อนคำอธิบายรูปภาพที่นี่ และตั้งค่าอุปกรณ์ส่งออกของคุณเป็นอุปกรณ์เครือข่ายเสมือนผ่าน pavucontrol ป้อนคำอธิบายรูปภาพที่นี่

วิโอล่าคุณควรมีเวทย์มนตร์ในตอนนี้


1
ยกเว้นว่าสิ่งนี้ไม่เกี่ยวข้องกับ RTP
kirelagin

ขอบคุณสำหรับบทเรียนที่ยอดเยี่ยมนี้ ฉันตรวจสอบกล่องทั้งหมดยกเว้นว่าฉันไม่สามารถ "ตั้งค่าอุปกรณ์ส่งออกของฉันไปยังอุปกรณ์เครือข่ายเสมือนผ่าน pavucontrol" ตามที่ฉันเข้าใจแล้วสิ่งนี้ทำได้ผ่านทางบิตซึ่งในภาพหน้าจอของคุณมีการเขียน "Internal Audio Analog Stereo บน charmes @ nano" แต่ในระบบของฉันไม่มีปุ่มดังกล่าวเลย ผมทำอะไรผิดหรือเปล่า?
user69748

ฉันไม่ได้ตรวจสอบคำแนะนำเหล่านี้ตั้งแต่ปี 2011 ดังนั้นจึงเป็นไปได้ว่าการตั้งค่า Pulse audio daemon เปลี่ยนไปทั้งหมด
lazyPower

สิ่งที่ฉันมีตอนนี้ (หลังจากรีบูตเครื่อง) เป็นช่องแยกที่เรียกว่า "pulseaudio" ซึ่งดูเหมือนว่าจะถูกส่งไปยังลูกค้าของฉัน อย่างไรก็ตามไม่มีเสียงไหลผ่าน และช่อง Rhythmbox ของฉันยังไม่มีการกล่าวถึง "user @ client"
user69748

1

ด้วยโซลูชันนี้คุณสามารถสตรีมเสียงระบบของคุณได้ทุกที่ที่คุณต้องการ ..
กุญแจที่นี่คือความสามารถในการย้อนกลับของ ALSA ดังนั้นก่อนอื่นคุณต้องเปิดใช้งานอุปกรณ์ลูปแบ็คใน ALSA ซึ่งจะปรากฏใน PulseAudio Volume Control เป็นอุปกรณ์อินพุต (และอุปกรณ์ส่งออกเช่นกัน)

sudo modprobe snd_aloop

อุปกรณ์นี้สามารถเพิ่มลงในเซิร์ฟเวอร์ mpd ได้:

mpc add alsa://hw:1,1

โดยที่ hw: 1,1 เป็นอุปกรณ์อินพุตลูปแบ็คสามารถแสดงรายการได้ด้วยคำสั่ง aplay -l

จากนั้นคุณต้องกำหนดค่าปลั๊กอินเอาต์พุต httpสำหรับ mpd ตัวอย่างต่อไปนี้จะดูเหมือน/etc/mpd.conf

 audio_output {
    type            "httpd"
    name            "My HTTP Stream"
    encoder         "vorbis"          # optional, vorbis or lame
    port            "8000"
    bind_to_address "192.168.1.38"               # optional, IPv4 or IPv6
    quality         "5.0"                   # do not define if bitrate is d$
#   bitrate         "128"                   # do not define if quality is d$
    format          "44100:16:1"
    max_clients     "0"                     # optional 0=no limit
 }  

อย่างนั้นแหละ. เลือกอุปกรณ์ looback สำหรับแหล่งกำเนิดเสียงของคุณในแท็บ Volume Control Playback
สุดท้ายคุณสามารถใช้ VLC หรือสตรีมมิ่งเรนเดอร์อื่น ๆ ที่จุดปลายทางโดยใช้ที่อยู่ httpd url: http://192.168.1.38:8000
คำตอบนี้มีให้ที่นี่ด้วย


0

ฉันไม่แน่ใจว่าบางสิ่งเช่นนี้สามารถเกิดขึ้นได้กับ DLNA / UPnP หรือไม่เพราะฉันไม่คุ้นเคยกับตัวเอง แต่ใช้การเชื่อมโยงที่นี่เพื่อช่วย:

แม้ว่าผลการค้นหาอย่างรวดเร็วจะแนะนำว่าไม่สามารถซิงค์ ...


2
ไม่แนะนำ DLNA เนื่องจากไม่สามารถซิงโครไนซ์เล่นได้
Sparhawk

0

ไม่มีวิธีแก้ปัญหาที่ดี (ยัง) มีAVBแต่การรองรับ 802.11 นั้น จำกัด อยู่ที่การซิงโครไนซ์เวลา


-2

หากคุณต้องการสตรีมไปยังโทรศัพท์ Android คุณสามารถใช้ Foobar2000 บนเซิร์ฟเวอร์และBubbleUPnP (เพย์แวร์) บนไคลเอนต์

  1. รับไวน์
  2. ได้รับ foobar_v1.2.5.exe
  3. $ wine foobar2000_v1.2.5.exe
  4. ถัดไปถัดไปถัดไป ... :)
  5. รับfoo_upnp
  6. แยกในโฟลเดอร์คอมโพเนนต์ของ foobar2000 (ซึ่งอาจมีอยู่~/.wine/drive_c/Program Files/)
  7. เปิดตัว foobar2000
  8. ไปที่ Library → Configure → Playback → Output → Device และเลือก "Null output"
  9. ตรวจสอบให้แน่ใจufwว่าไม่ได้บล็อกการรับส่งข้อมูลที่เกี่ยวข้อง
  10. ใน BubbleUPnP:
    1. ไปที่อุปกรณ์→ไลบรารีและเลือกเซิร์ฟเวอร์ foobar2000
    2. ใน "Library" เลือก "Playback Stream Capture"

วิธีการมีข้อได้เปรียบที่ว่าถ้าคุณหยุดชั่วคราวบน Android มันจะสะสมบัฟเฟอร์ (เนื่องจากเซิร์ฟเวอร์ยังคงส่ง)

ทดสอบบน Ubuntu (รุ่นไวน์1.5.28-0ubuntu1~ppa1) และ Windows

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