เปลี่ยนเส้นทางเสียงไปยังอุปกรณ์ AirPlay อื่น


20

ฉันตั้งค่าMopidyบน Raspbian เพื่อให้ฉันสามารถใช้ Raspberry Pi เป็นตู้เพลง Spotify (และไฟล์ในเครื่อง) ฉันรู้ว่าเอาต์พุตเสียงอะนาล็อกของ Raspberry Pi นั้นยอดเยี่ยมมาก

มีวิธีการเปลี่ยนเส้นทางเสียงทั้งหมดจาก Raspberry Pi ไปยังอุปกรณ์ AirPlay (เช่น Airport Express หรือไม่)

มันจะดีถ้าฉันสามารถทำทุกอย่างจากบรรทัดคำสั่งได้ดังนั้นฉันสามารถตั้งค่าสคริปต์เพื่อสลับอุปกรณ์ต่าง ๆ ได้


นั่นเป็นคำถามที่ยอดเยี่ยม ฉันชอบออกอากาศและมันก็สมเหตุสมผลที่จะใช้กับ Pi จะขุดรอบ ๆ ตัวฉันในคำถามนั้น แต่เป็นคำถามที่ดี! +1
Piotr Kula

จากสิ่งที่ฉันเข้าใจสามารถทำได้โดยใช้ PulseAudio ฉันกำลังขุดอยู่รอบ ๆ
leolobato

ดูสิ่งที่เรากำลังพูดถึงที่นี่raspberrypi.org/phpBB3/ …
jmp909

ฉันรู้ว่านี่เป็นหัวข้อนอกเรื่องเล็กน้อย - แต่ถ้าคุณไม่ได้อยู่หลัง playbac ระยะไกลแล้ว USB DAC ตัวไหนดีล่ะ?
petr

คำตอบ:


13

คุณสามารถใช้โมดูล mpd, pulseaudio และ raop2 หากจำเป็น:

  • mpd สำหรับจัดการเพลย์ลิสต์, ห้องสมุด, ฯลฯ ( sudo apt-get install mpd)
  • pulseaudio สำหรับการจัดการเอาต์พุตเสียง: raop สำหรับ AirPlay หรืออุปกรณ์ส่งออกอื่น ๆ เช่นแจ็คอะนาล็อก, HDMI, บริการสตรีมมิ่ง http ฯลฯ ( sudo apt-get install pulseaudio)
  • โมดูล raop2 สำหรับ pulseaudioหากโมดูล raop ดั้งเดิมที่สร้างขึ้นใน pulseaudio ไม่ทำงาน

ฉันต้องสร้าง pulseaudio จากแหล่งที่มาเพื่อรับโมดูล RAOP รุ่นปรับปรุงสำหรับ pulseaudio


นี่คือสิ่งที่ฉันทำเพื่อให้มันทำงานได้ (อาจบ่นเกี่ยวกับแพ็คเกจที่หายไปเพียงแค่sudo apt-get installพวกเขา):

ติดตั้ง MPD

sudo apt-get install mpd

ติดตั้ง PulseAudio

ตัวเลือก A: คุณมีอุปกรณ์ AirPlay รุ่นเก่าหรือคุณไม่ต้องการสตรีมมิ่ง UDP

มันง่ายกว่า แต่ใช้งานได้น้อยกว่า

sudo apt-get install pulseaudio

ตัวเลือก B: คุณต้องการความเข้ากันได้ดีขึ้นและรองรับทั้งการสตรีม TCP และ UDP

จากนั้นคุณต้องใช้โมดูล raop2 สำหรับ pulseaudio ซึ่งหมายถึงการสร้าง PA จากแหล่งที่มา

ติดตั้ง git ถ้าคุณยังไม่ได้สร้าง pulseaudio (ดูคำแนะนำอย่างเป็นทางการ ):

sudo apt-get install git intltool autoconf build-essential
cd
git clone https://github.com/hfujita/pulseaudio-raop2
cd pulseaudio-raop2
./bootstrap.sh
make
sudo make install

ในการตั้งค่าของฉันฉันต้อง symlink libpulse.so.0 ด้วยตนเอง:

cd ~/pulseaudio-raop2
sudo rm /usr/lib/arm-linux-gnueabi/libpulse.so.0
sudo ln -s `cd;pwd`/pulseaudio-raop2/src/.libs/libpulse.so.0 /usr/lib/arm-linux-gnueabi/libpulse.so.0
sudo chown root.root /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chmod 744 /usr/lib/arm-linux-gnueabi/libpulse.so.0

หรือตามความต้องการของคุณ:

cd ~/pulseaudio-raop2
sudo rm /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo mv pulseaudio-raop2/src/.libs/libpulse.so.0 /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chown root.root /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2
sudo chmod 744 /usr/lib/arm-linux-gnueabi/libpulse.so.0.16.2

กำหนดค่าทุกอย่าง

การตั้งค่าเริ่มต้น MPD

ตอนนี้เราจำเป็นต้องติดตั้ง MPD:

sudo vi /etc/mpd.conf

ในไฟล์นั้นตั้งค่าต่อไปนี้:

music_directory "/path/to/your/music"
user "mpd"
bind_to_address "127.0.0.1"
bind_to_address "192.168.x.y"
bind_to_address "2a01:xzy....your IPv6 if you want"

เราจะต้องแก้ไขผลลัพธ์ แต่เราต้องการชื่อของ pulseaudio sink ก่อน

PulseAudio ซิงก์

Avahi / zeroconf เป็นสิ่งที่ดีเพราะจะเปิดใช้งานการค้นหาอุปกรณ์ AirPlay (ผ่าน zeroconf / mDNS / Bonjour):

sudo apt-get install avahi

ตอนนี้เราสามารถเริ่ม pulseaudio และลองโหลดโมดูล RAOP:

pulseaudio --start --log-target=syslog -vvvv --log-level=debug
pacmd load-module module-raop-discover
pacmd list-sinks | grep name:

นี่คือผลลัพธ์ในการตั้งค่าของฉัน:

name: <raop_output.Freebox-Player.local>
name: <raop_output.Freebox-Server.local>
name: <raop_output.Freebox-Player.local.2>
name: <raop_output.Freebox-Server.local.2>

คุณต้องแก้ไข/etc/mpd.confอีกครั้งและเพิ่มผลลัพธ์ต่อไปนี้:

audio_output {
    type            "pulse"
    name            "Freebox Player"
    sink            "raop_output.Freebox-Player.local"
    format          "44100:24:1"
}

เพิ่มหนึ่งในบล็อกเหล่านี้สำหรับทุกอุปกรณ์ AirPlay ที่คุณต้องการสตรีมเพลง

การกำหนดค่า PulseAudio

ส่วนสุดท้ายคือการตั้งค่า PA:

sudo vi /etc/pulse/client.conf

Uncomment autospawn = yesสิ่งนี้จะทำให้ pulseaudio เริ่มทำงานโดยอัตโนมัติเมื่อจำเป็น

sudo vi /etc/pulse/default.pa

เพิ่มบรรทัดต่อไปนี้ที่ด้านล่าง:

load-module module-raop-discover

สิ่งนี้จะทำให้ pulseaudio โหลดโมดูล RAOP ค้นพบเมื่อเริ่มต้น

ขั้นตอนสุดท้าย

มันควรจะทำงานตอนนี้ เริ่ม MPD (หยุดก่อนถ้าทำงาน):

sudo /etc/init.d/mpd start

รอสักครู่ใช้เวลาอย่างน้อย 10-15 วินาทีใน RasPI ของฉันก่อนที่ daemon จะสามารถทำงานได้อย่างถูกต้อง

อัปเดตคลังเพลงของคุณ (และรอจนกว่าจะเสร็จ):

sudo apt-get install mpc
mpc update

เปิดใช้งานเอาต์พุตที่จะ (ต่อไปนี้จะแสดงรายการเอาต์พุต MPD ที่กำหนดค่าและเปิดใช้งานรายการแรก):

mpc outputs
mpc enable 1

ตอนนี้ใช้ไคลเอนต์ MPD ที่คุณชื่นชอบเพื่อเล่นเพลง ฉันกำลังใช้ncmpcppcommand-line และ MPDroid บนโทรศัพท์ / แท็บเล็ต

การแก้ไขปัญหา

เริ่ม mpd ด้วย verbose, pulseaudio พร้อมระดับการบันทึกสูงสุดและบันทึกการตรวจสอบ:

mpd --verbose
pulseaudio --start --log-target=syslog --log-level=debug -vvvv
tail -f /var/log/mpd/mpd.log
tail -f /var/log/syslog

พยายามทำให้ pulseaudio ใช้งานได้ก่อน เพียงโหลด pulseaudio โหลดโมดูลค้นพบ RAOP แสดงรายการ sink ตั้งค่า sink มาตรฐานและลองเล่นบางสิ่ง:

paplay /usr/share/sounds/alsa/Front_Center.wav

เมื่อคุณใช้งาน pulseaudio แล้วให้ลองใช้ MPD กับมัน


1
นั่นคือสิ่งที่ฉันกำลังมองหา! ฉันมี mopidy ที่ทำงานบน Raspberry Pi จะลองและอัปเดตเพื่อแจ้งให้คุณทราบหากใช้งานได้!
leolobato

2

ดูเหมือนว่าpulseaudio-module-raopคือสิ่งที่คุณกำลังมองหา คู่มือนี้มีคำอธิบายโดยละเอียดเกี่ยวกับวิธีการตั้งค่าใน Ubuntu


1
โดยทั่วไปแล้วคำตอบที่ให้คำอธิบายโดยละเอียดนั้นดีกว่าลิงค์ ลิงค์สามารถย้ายหรือตาย ที่สำคัญกว่าการอธิบายเล็กน้อยเกี่ยวกับ PulseAudio โมดูล raop อาจจะเป็นความคิดที่ดี ..
ramblinjan

2

ใช้เวลาพยายามตั้งค่า Airplay ผ่าน Raop / PulseAudio บน Raspberry Pi 3 ใหม่โดยใช้ Raspbian Jessie ด้วยความสำเร็จเพียงเล็กน้อย ฉันขอแนะนำforked-daapd :

นี่เป็นเวอร์ชั่นอัปเดตดั้งเดิมของ forked-daapd 0.19, เซิร์ฟเวอร์สื่อ Linux / FreeBSD DAAP (iTunes) ที่รองรับอุปกรณ์ AirPlay, Apple Remote (และไฟล์ที่ใช้ร่วมกันได้), MPD, Spotify, mp3 สตรีมมิ่งและวิทยุอินเทอร์เน็ต

การติดตั้งนั้นตรงไปตรงมามากและฉันก็ใช้งานได้ทั้งหมดในเวลาประมาณ 10 นาที นี่คือคำแนะนำการติดตั้งตามรายละเอียดที่นี่ :

1a. If you use Jessie then add this line to /etc/apt/sources.list:
deb http://www.gyfgafguf.dk/raspbian jessie/armhf/
or
1b. If you use Wheezy then add this line to /etc/apt/sources.list:
deb http://www.gyfgafguf.dk/raspbian wheezy-backports/armhf/
2. Run sudo apt-get update and then sudo apt-get install forked-daapd
3. Edit the config file /etc/forked-daapd.conf and (re)start the server with sudo /etc/init.d/forked-daapd restart

Optional - how to add support for Spotify:
1. Add deb http://apt.mopidy.com/ stable main contrib non-free to /etc/apt/sources.list
2. Run sudo apt-get update and then sudo apt-get install libspotify-dev
3. Restart forked-daapd and enter credentials as described in the instructions.
4. Check the log to see how it is working. It should start loading your playlists.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.