오디오를 재생하는 Raspberry 3의 Raspbian OS 11 lite에서 실행되는 서비스가 있습니다.
[Unit]
Description=My script to monitor the shutdown button
After=multi-user.target
[Service]
ExecStart=/usr/bin/python /home/pi/Radio/Radio/main.py
User=root
Group=root
[Install]
WantedBy=multi-user.target
서비스가 실행 중이며 사용자의 입력을 읽어 사용자와 상호 작용합니다. 하지만 음악을 재생하려고 하면 항상 다음과 같은 오류가 발생합니다.
Oct 10 18:22:57 raspberrypiradio python[4180]: [755aa250] main audio output error: Audio output failed
Oct 10 18:22:57 raspberrypiradio python[4180]: [755aa250] main audio output error: The audio device "default" could not be used:
Oct 10 18:22:57 raspberrypiradio python[4180]: Connection refused.
Oct 10 18:22:57 raspberrypiradio python[4180]: [755aa250] main audio output error: module not functional
Oct 10 18:22:57 raspberrypiradio python[4180]: [7312c1f0] main decoder error: failed to create audio output
Oct 10 18:24:00 raspberrypiradio python[4180]: [75591ca8] vlcpulse audio output error: PulseAudio server connection failure: Access denied
Oct 10 18:24:01 raspberrypiradio python[4180]: [75588cb0] vlcpulse audio output error: PulseAudio server connection failure: Access denied
Oct 10 18:24:01 raspberrypiradio python[4180]: [73d01830] http stream error: cannot resolve stream.rockantenne.de: System error
Oct 10 18:24:01 raspberrypiradio python[4180]: [73d01830] access stream error: HTTP connection failure
Oct 10 18:24:01 raspberrypiradio python[4180]: [73d01830] http stream error: cannot connect to stream.rockantenne.de:80
터미널을 통해 직접 파일을 재생하면 main.py
모든 것이 잘 작동합니다. 파이썬 파일을 통해 소리를 재생하고 있습니다가상 LC.
나는 서비스가 main.py
항상 실행되기를 원하기 때문에 서비스를 사용하고 있습니다. 특히 시스템을 다시 시작한 후에는 더욱 그렇습니다.
답변1
서비스 태그 아래의 서비스 파일에 추가해 보세요.
Environment=XDG_RUNTIME_DIR=/run/user/1000
물론 현재 사용자에 맞게 디렉터리를 변경해야 합니다. 당신은 실행할 수 있습니다
printenv | grep -i 'xdg_runtime_dir'
서비스 파일에 복사되는 내용을 결정합니다.
이렇게 하면 vlcpulse 서버 연결 거부 결함이 해결되지만 DNS 오류가 있어 원격 스트림을 확인할 수 없는 것 같습니다. 이는 해결하려면 더 많은 정보가 필요한 다른 문제입니다.
답변2
내가 발견한 문제는 사용자 정의 서비스(예: alsa)보다 먼저 서비스가 실행되기 시작한다는 것입니다. 이는 내 서비스가 alsa를 사용하려고 시도하지만 아직 사용할 수 없음을 의미합니다. 이 문서에 설명된 대로 /profiles.d/의 시작 스크립트를 사용하여 이 문제를 해결했습니다.로그인 시 실행되는 쉘 스크립트는 어떻게 작성하나요?