Мне удалось настроить shairport и mplayer для моей домашней машины Ubuntu. Он работает хорошо, если я запускаю их из командной строки. Shairport выводит в файл fifo, поэтому его детали, вероятно, не связаны с вопросом.
И mplayer запускается как:
/bin/bash -c 'while true; do mplayer -rawaudio samplesize=2:channels=1:rate=88200 -demuxer rawaudio /home/kb/workspace/shairport/music; sleep 1; done'
Теперь я хотел поместить свои команды в службы systemd, так что мне не нужно запускать их вручную каждый раз при загрузке. Хорошо работает для shairport. Для mplayer я сделал эту службу:
➜ ~ cat /etc/systemd/system/mplayer-shairport.service
[Unit]
Description=Mplayer-Shairport
[Service]
ExecStart=/bin/bash -c 'while true; do mplayer -rawaudio samplesize=2:channels=1:rate=88200 -demuxer rawaudio /home/kb/workspace/shairport/music; sleep 1; done'
[Install]
WantedBy=multi-user.target
В результате я получаю сообщение о том, что при запуске mplayer из командной строки он выводит звук через мою USB-карту в динамики. Но когда я запускаю его из службы systemd, он выводится во встроенный динамик ПК. В чем причина этого сбоя автоматического обнаружения?
Дополнительная информация
В случае, если это полезно:
➜ ~ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC221 Analog [ALC221 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: USB [AudioBox USB], device 0: USB Audio [USB Audio]
Subdevices: 0/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
Subdevices: 1/1
Subdevice #0: subdevice #0