Як програмно змінити головний том у PulseAudio?


1

Ви можете змінити головний том у межах терміналу себе за допомогою команди, показаної нижче.

amixer -D pulse sset Master 5%+

Однак, коли я спробував виконати наступний код у Python відображається наступна помилка.

No protocol specified
xcb_connection_has_error() returned true
ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused

amixer: Mixer attach pulse error: Connection refused

А ось код, який дає помилку вище.

os.system("amixer -D pulse sset Master 5%+")

Як вирішити цю помилку?


Помилка "не вдається підключитися" може означати: pulseaudio не запущено або існують питання дозволів. "pactl" може бути більш підходящим для контролю імпульсного звуку. Спробуйте визначити, який вихід ви намагаєтеся керувати, запустивши: "pactl list sinks". Перегляньте вихід цієї команди, щоб визначити номер раковини. Потім запустіть щось на кшталт "pactl set-sink-volue 3 + 5%" (де "3" є раковиною # на моїй машині для "Вбудованого аудіо-аналогового стерео"). Важливо відзначити: номери раковин можуть змінюватися через перезавантаження, тому варто дослідити, як виконати те ж саме з іменами раковин замість номерів раковин.
joat

Я спробував pactl також, але отримую ті ж помилки. @ Joat
Ghatak Sena

Pulseaudio працює? Ви (або ваш сценарій) запускає pactl / amixer як зареєстрований користувач (не root)? Ось про все, про що я можу придумати.
joat

Звичайно, це працює в терміналі, але моя головна проблема полягає в тому, що він не працює з кодом Python
Ghatak Sena

Це має бути питання дозволів. 'import os; os.system ("pactl set-sink-mute 3 1") працює, якщо я запускаю його в терміналі або в сценарії. Коли ви запускаєте amixer, чи потрібно вибирати звукову карту, перш ніж робити що-небудь ще?
joat

Відповіді:


0

Нарешті, я отримав рішення своєї проблеми, яка показана нижче

    import subprocess
    proc = subprocess.Popen('/usr/bin/amixer sset Master 5%', shell=True, stdout=subprocess.PIPE)
    proc.wait()
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.