Устройства PulseAudio, похоже, вызывают сбой ALSA при загрузке с системным D, но не при прямом вызове после загрузки.

Вопрос или проблема

Я использую PI Bookworm 32 бита

Статическое имя хоста: MBMCAM4
Имя иконки: компьютер
ID машины: 1d1c25fe35934cf08b2c7892eb34e3f9
ID загрузки: b653854274274fe8850a1c79ebc5264c
Операционная система: Raspbian GNU/Linux 12 (bookworm)
Ядро: Linux 6.6.31+rpt-rpi-v7
Архитектура: arm

Я запускаю простую программу, чтобы она запускалась при загрузке и записывала аудио и видео. Я использую приложения RPICAM.

Если я подожду после загрузки и вызову основную точку входа программы (startmulticam4.py), всё работает отлично. Однако, если я позволю SystemD обрабатывать загрузку, я получаю следующую ошибку до запуска основной программы:

Мой файл юнита приведен ниже:

[Unit]
Description=Multicam4
After=sound.target
[Service]
WorkingDirectory=/home/dbbarron/video
Type=idle
User=dbbabcde
ExecStart=/bin/python3 /home/dbbarron/startmulticam4.py
Restart=Always
RestartSec=10
[Install]

WantedBy=sound.target

13 октября 10:02:23 MBMCAM4 python3[772]: ERROR: *** libav: не удается открыть входное устройство pulse по умолчанию ***

Я попробовал несколько вещей, основанных на комментариях на этом форуме, но ничего не дает значительного эффекта. Мысли?

Ответ или решение

Ваша проблема с загрузкой PulseAudio и ALSA при использовании systemd на Raspbian Bookworm 32-bit имеет несколько возможных причин и решений. Давайте детально рассмотрим эти аспекты.

Контекст Проблемы

Вы используете Raspberry Pi с установленной операционной системой Raspbian GNU/Linux 12 (Bookworm), и ваша цель — автоматически запускать программу для записи аудио и видео с использованием RPICAM. При этом, когда вы позволяете systemd управлять загрузкой, возникает ошибка: ERROR: *** libav: cannot open pulse input device default ***. Однако, если вы запускаете скрипт после загрузки вручную, он работает без каких-либо неполадок.

Возможные Причины

  1. Порядок Загрузки PulseAudio и ALSA: Ваша настройка systemd говорит, что служба Multicam4 должна запускаться после sound.target. Однако PulseAudio может еще не инициализироваться к моменту, когда ваш сервис попытается получить доступ к аудио. В результате, библиотека libav не может найти PulseAudio, что приводит к ошибке.

  2. Пользовательские Права: Возможно, что ваша служба запускается с недостаточными правами для доступа к PulseAudio. При ручном запуске ваша текущая сессия может обладать необходимыми правами, тогда как служба systemd может вести себя иначе.

  3. Настройки PulseAudio: PulseAudio может быть настроен на запуск только в сессии X или для пользователя, что также может вызвать проблемы с доступом к устройствам.

Рекомендации по Решению

  1. Измените Порядок Загрузки: Попробуйте изменить зависимость в вашем unit-файле, добавив After=pulseaudio.service, чтобы убедиться, что PulseAudio загружается перед вашей службой. Ваш unit-файл может выглядеть следующим образом:

    [Unit]
    Description=Multicam4
    After=sound.target pulseaudio.service
    
    [Service]
    WorkingDirectory=/home/dbbarron/video
    Type=idle
    User=dbbabcde
    ExecStart=/bin/python3 /home/dbbarron/startmulticam4.py
    Restart=Always
    RestartSec=10
    
    [Install]
    WantedBy=sound.target
  2. Проверьте Права На Доступ к Устройствам: Убедитесь, что пользователь dbbabcde имеет доступ к устройствам PulseAudio. Вы можете попробовать запустить ваш скрипт с помощью sudo, чтобы проверить, не связана ли проблема с правами доступа.

  3. Настройте Параметры PulseAudio: Убедитесь, что PulseAudio правильно инициализируется в окружении systemd. Вы можете попробовать добавить в конфигурацию PulseAudio дополнительные параметры, такие как default-server, чтобы указать, где найти PulseAudio сервер.

  4. Логи и Дебаггинг: Проверьте логи systemd с помощью команды journalctl -xe и найдите диагностическую информацию, которая может помочь выяснить, что происходит в момент запуска вашей службы. Это может дать дополнительные указания на проблему.

  5. Зависимость На Уровне Сессии: Попробуйте реализовать вашу программу так, чтобы она не зависела от PulseAudio, если это возможно, либо рассмотреть использование ALSA без PulseAudio, чтобы избежать конфликтов, связанных с их совместным использованием.

Заключение

Ваша проблема с ошибкой libav: cannot open pulse input device default может быть вызвана рядом факторов, включая порядок загрузки служб и права доступа. Применив вышеописанные рекомендации, вы сможете устранить возникшие проблемы и обеспечить корректный запуск вашей программы записи аудио и видео. Если вопрос не будет решен, рассмотрите возможность консультации с сообществом или профессионалами, занимающимися технической поддержкой для получения дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...