현재 실시간 오디오 출력 레벨 보기

현재 실시간 오디오 출력 레벨 보기

컴퓨터가 유휴 상태인지 확인한 다음 스크립트를 실행하려고 합니다.루트 사용자로x 시간 후.


마지막 사용자 입력이 발생한 이후의 시간을 측정하기 위해 xprintidle을 사용합니다. 문제는 동영상이나 음악이 재생 중일 때 xprintidle이 재설정되지 않는다는 것입니다.

그래서 현재 오디오 출력 레벨을 볼 수 있는 터미널 명령을 찾아봤습니다.

제가 테스트한 대부분의 명령은 실시간 오디오 출력 레벨이 아닌 현재 볼륨 백분율/값 설정만 표시합니다.

다음 명령을 사용하여 오디오를 출력하는 모든 애플리케이션 소스를 얻을 수 있었습니다.

pacmd list-sink-inputs | grep -c 'state: RUNNING'

그러나 루트로 실행하면 다음과 같은 오류 메시지가 나타납니다.

No PulseAudio daemon running, or not running as session daemon.

현재 라이브 오디오 출력 레벨을 확인하기 위해 어떤 명령/파일이 있는지 아는 사람이 있습니까?

아니면 그냥 확인해 보세요.아니요오디오 재생 중인가요?

답변1

pacmd환경 변수를 사용하여 XDG_RUNTIME_DIR실행 중인 PulseAudio 데몬의 경로를 찾으세요. 단, 사용자가 일치하지 않을 경우 접속이 거부됩니다. 이는 루트가 pacmd일반 사용자의 PulseAudio와 통신하기 위해 직접 실행할 수 없음을 의미합니다.

루트로 실행되는 스크립트는 올바른 사용자로 사용되고 실행될 수 있지만 여전히 적절한 권한이 있습니다 sudo( 예:pacmdXDG_RUNTIME_DIR이 답변). 스크립트는 여러 값을 알아야 합니다.

PulseAudio에 액세스할 수 있는 일반 사용자(예: pacmd list-sink-inputs직장)로 호출됩니다.

id -u
echo "$XDG_RUNTIME_DIR"

1000출력은 각각 및 입니다 /run/user/1000. 그런 다음 스크립트에서 이 값을 사용하십시오. 다음과 같이 보일 것입니다:

sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pacmd … | grep …

일반적으로 전달된 변수는 sudo VAR=value …제한됩니다( 참고자료 참조 man 8 sudo). sudo루트로 실행하면 아무것도 변경되는지 잘 모르겠습니다 . 구성 에서 이 방법으로 설정하는 것을 sudo허용하지 않으면 XDG_RUNTIME_DIR셸을 사용하세요.

sudo -u '#1000' sh -c 'XDG_RUNTIME_DIR=/run/user/1000 pacmd …' | grep …

관련 정보