참조 : https://blogs.gnome.org/ignatenko/2015/07/31/how-to-set-up-network-audio-server-based-on-pulseaudio-and-auto-discovered-via-avahi/

참조 : https://manurevah.com/blah/en/p/PulseAudio-Sound-over-the-network

다 해보니 다른건 필요 없고 1, 2, 6, 8 만 하면 될것 같다.

나는 인터넷 뒤져서 삽질 하느라 이것저것 다 해봄. 다른건 필요 없어보이지만 그래도 기록으로 남김.

 

일단 5번까지는 서버에다 하면 됨.
난 우분투 데탑에 함.

1. 필요한것 설치
$ sudo apt install pulseaudio pulseaudio-module-zeroconf avahi

2. pulseaudio system.pa 설정에 두줄 추가
$ sudo vi /etc/pulse/system.pa
맨아래다가 
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/60 auth-anonymous=1
load-module module-zeroconf-publish
두줄 추가

default.pa 에 했는데 여기다 쓰면 volume 에 연결이 안된다고 ... 행 걸림.

3. 이거는 하라고 해서 했는데 아마 안해도 동작 했을것 같다.
$ vi /etc/systemd/user/pulseaudio.service
아래 내용 쓰고 저장
[Unit]
After=sound.target network.target avahi-daemon.service
Requires=sound.target
Wants=avahi-daemon.service
Description=PulseAudio Sound System

[Service]
Type=dbus
BusName=org.pulseaudio.Server
BusName=org.PulseAudio1
ExecStart=/usr/bin/pulseaudio -vv
ExecStop=/usr/bin/pulseaudio --kill
Restart=always

[Install]
WantedBy=default.target

4. audio group 에 추가. 무슨 오디오 그룹에 권한을 넣어야 한다고 하는데....
$ useradd -m -G audio media -s /bin/bash

5. selinux 때문에 권한 추가하는건데 이건 따라해봤는데 마지막에서 안됨
$ vi pulseaudio_user.te
내용은 아래것 쓰고

module pulseaudio_user 1.0;
 
require {
        type proc_net_t;
        type avahi_t;
        type pulseaudio_t;
        class dbus send_msg;
        class file read;
}
 
#============= avahi_t ==============
allow avahi_t pulseaudio_t:dbus send_msg;
 
#============= pulseaudio_t ==============
allow pulseaudio_t avahi_t:dbus send_msg;
allow pulseaudio_t proc_net_t:file read;

여기까지 쓰고 저장


$ checkmodule -M -m -o pulseaudio_user.mod pulseaudio_user.te
$ semodule_package -o pulseaudio_user.pp -m pulseaudio_user.mod
$ semodule -i pulseaudio_user.pp   <<= 나는 여기서 안됨.



해보니까 1, 2번만 하면 될것 같고

중요한건 다음.

6. 서버랑 클라에 둘다 이걸 깔아줌.
난 클라를 라즈베리파이 b+ 로 사용함.

$ sudo apt-get install paprefs

7. 클라(나의 경우 라즈베리파이) /etc/pulse/default.pa 에다가

아래내용을 추가하고 저장
load-module module-tunnel-sink-new server=<서버ip> sink_name=Remote channels=2 rate=44100
load-module module-tunnel-sink-new server=192.168.0.43 sink_name=Remote channels=2 rate=44100

그런데 나같은경우 7번도 안해도 된다.

8. 이게 중요
Alt+F2 눌러서 paprefs 실행하고 

서버랑 클라에
Network Access 에
Make discoverable PulseAudio network sound devices available locally 체크하고

클라에
Network Server 에 
Enable network access to local sound device
 Allow other machines on the LAN to discover local sound devices
 Don't require authentication 

체크해준다.
하다가 잘 안되면 이것저것 다 체크해본다. 
난 그냥 서버랑 클라에 다 체크해버림.

이렇게하고 둘다 리붓하면 라즈베리가 서버에 붙을때 우분투 데탑 볼륨 조절기에 나옴

 

잘 되면 우분투 데탑에서 플레이 걸고 출력을 라즈베리파이로 지정하면 라즈베리파이에서 소리가 출력됨.

약간 apple에 airplay랑 비슷하다.

해봤는데 좀 끊김. wired 로 했는데 끊기다니. 뭔가 좀 문제가 있어보임.

멀티룸 구성하려면 그냥 gstreamer 로 하는게 좋을것 같음.

Posted by Real_G

댓글을 달아 주세요