systemd와 명령줄의 서비스로 인해 오디오 장치가 사용 중입니다.

systemd와 명령줄의 서비스로 인해 오디오 장치가 사용 중입니다.

나에게 특정한 문제는 라즈베리 파이에서 snapclient를 사용하는 것입니다.

음성 어시스턴트와 함께 snapclient를 실행하고 있습니다. 명령줄을 사용하여 snapclient를 시작하면

sudo snapclient -h 192.168.x.xxx -s 3 --player=alsa &

그러면 내 음성 어시스턴트가 동일한 오디오 출력으로 출력할 수 있고 두 스트림을 모두 들을 수 있습니다.

systemd 시작을 사용하는 경우

sudo systemctl start snapclient.service

그러면 장치/리소스가 사용 중이므로 음성 지원 오디오가 차단됩니다.

htop을 사용하면(이 작업을 수행하는 더 좋은 방법이 있을 가능성이 높습니다) systemd를 통해 시작될 때 사용자 및 전체 인수 목록을 볼 수 있으며 명령줄에서 실행할 때 아무 소용이 없을 때 이를 정확하게 복제합니다.

누군가 이것을 systemd에서 동일하게 실행하려면 배워야 할 사항이나 rc.local을 통해 이 작업을 수행하는 것이 더 나을지 조언해 주시겠습니까? 이것을 배우는 방법에 대한 모든 권장 사항을 환영합니다.

아마도 권한 문제일 것이라고 확신하지만 다음 단계를 찾는 방법을 모르겠습니다.

답변1

ubuntu/orangepi의 서비스에서 오디오를 재생하기 위해 alsa를 사용하는 비슷한 문제가 있었습니다. "오디오 hw:0을 열 수 없습니다: 장치 또는 리소스가 사용 중입니다."

장치 구성에 "Requires=dbus.service" 및 "Environment=DISPLAY=:0"을 추가하여 이 문제를 해결할 수 있었습니다.

내 작업 단위 구성 파일은 다음과 같습니다.

[Unit]
Description=Buttons sound app
Requires=dbus.service

[Service]
ExecStart=/home/orangepi/runSoundServer.sh
User=orangepi
Environment=DISPLAY=:0

[Install]
WantedBy=multi-user.target

관련 정보