Я установил Debian 8.6 на старый ноутбук Mac (PowerBook G4) в качестве музыкального проигрывателя в гостиной. Эта машина сидит на полке и делает только одно: воспроизводить музыку с помощью mpd. Поэтому я хочу, чтобы это было хорошо. ;-)

(Этот ноутбук 2005 года выпуска: он оснащен процессором G4 с тактовой частотой 1,5 ГГц и 768 МБ ОЗУ. Много мощности для воспроизведения музыки, но не намного!)

И это в основном работает ... за исключением пары раз в час, музыка заикается на полсекунды. Я сильно подозреваю, что процесс, предоставляющий аудиоданные (mpd), не может сохранить свой выходной буфер заполненным, так что-то еще (ALSA? аппаратное обеспечение?) проигрывает этот маленький фрагмент аудио в тесном цикле, пока mpd не вернется к подаче звука.

Я также подозреваю, что проблема заключается в нехватке ресурсов процессора: что-то блокирует запуск mpd в течение большой доли секунды. Моим доказательством этого является запуск "поверх" во время воспроизведения аудио, чтобы каждую секунду делать снимок состояния системы. Когда я просматриваю эти снимки, я не вижу скачка в использовании памяти или ввода-вывода, но я вижу скачок в использовании процессора: pulseaudio снимает до 40-60% загрузки процессора. Это хорошо согласуется с моим наблюдением "большая доля секунды": если pulseaudio потребляет весь ЦП в течение 400 мс, это, вероятно, показало бы 40% использования в течение интервала 1 с, и если бы оно истощало mpd ЦП в течение 400 мс, это может объяснить заикание.

Это заставляет меня задуматься: зачем мне нужно Pulseaudio, чтобы играть музыку на этой вещи? Я хочу, чтобы этот ноутбук делал одну вещь, проигрывал музыку, и я не хочу, чтобы какой-либо другой процесс, кроме mpd, использовал аудиооборудование. Поэтому я хотел бы, чтобы mpd просто использовал ALSA напрямую, без использования pulseaudio. И я не могу понять, как.

Еще более раздражающим является то, что я даже не могу заставить утилиты ALSA (aplay) воспроизводить звук, не проходя импульса и звука! Похоже, что любой процесс, который воспроизводит аудио, заканчивается тем, что запускается pulseaudio. Кроме того, кажется, что systemd участвует в этом заговоре, поскольку на пользователя никогда не бывает более одного pulseaudio, а его родительский PID всегда равен 1 (/sbin/init, который является systemd).

Прямо сейчас я не совсем уверен, является ли это вопросом ALSA, Pulseaudio, Debian или системным вопросом. Я вполне уверен, что это не вопрос MPD, так как я даже не могу заставить играть играть без прохождения импульса.

Итак: как мне отключить pulseaudio в Debian 8.6, если это действительно источник моей проблемы с заиканием звука?

1 ответ1

1

Ах-ха! Я думаю, что я понял это. Недостаточно явно использовать правильное имя устройства ALSA и недостаточно для удаления pulseaudio. Я должен был сделать обе эти вещи. В частности:

  1. sudo apt remove pulseaudio
  2. перезагрузите компьютер, чтобы убедиться, что нет процессов
  3. запустите aplay -L и случайным образом попробуйте выглядящие многообещающе названия устройств, пока что-нибудь не сработает : оказывается, «default: CARD = Audio» - это правильное имя устройства для использования. Это работает как с aplay, так и с mpd.

Соответствующий фрагмент /etc/mpd.conf:

audio_output {
  type      "alsa"
  name      "ALSA default"
  device    "default:CARD=Audio"
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .