Почему aplay работает, когда работает pulseaudio, а в остальных случаях нет?

У меня установлена ​​Ubuntu с установленным по умолчанию pulseaudio. Когда пульсаудио работает, это работает: aplay -D hw:2,7 /usr/share/xbmc/sounds/Bursting\ Bubbles/nav.wav

Но когда демон pulseaudio не запущен, он не работает. Команда не выдает ошибку, но я не слышу звука.

hw:2,7 — это HDMI-устройство Nvidia.

Почему это? Я не могу понять это.


person Leon    schedule 24.08.2011    source источник


Ответы (3)


Прочтите эту ссылку.

В нем говорится, что alsa (aplay) по умолчанию настроен на отправку своего вывода на pulseaudio (который является вашим звуковым сервером).

Когда ваш звуковой сервер не работает, вы не сможете услышать звук, как вы заметили.

См. также раздел «Удаление PulseAudio», чтобы отключить его от alsa.

Надеюсь, это поможет.

person O.C.    schedule 25.08.2011
comment
Можно ли использовать Alsa напрямую, даже если установлен pulseaudio? - person Leon; 25.08.2011
comment
введите aplay -L, чтобы вывести список всех определенных PCM. Затем попробуйте поиграть с именем устройства aplay -D, как вы пытались в своем вопросе. Посмотрите, сможете ли вы обойти pulseaudio, направив вывод на PCM, определенный в вашей системе. Это все, о чем я могу думать. Удачи. - person O.C.; 25.08.2011

У меня была точно такая же проблема; У меня Ubuntu 11.04 Натти. У меня был отключен запуск pulseaudio (например, 10.10 - Как заменить pulseaudio на alsa? - Спросите Ubuntu или PulseAudio — ArchWiki):

$ cat /etc/pulse/client.conf | grep -ve '^#\|^$'
; default-sink =
; default-source =
; default-server =
autospawn = no
; daemon-binary = /usr/bin/pulseaudio
; extra-arguments = --log-target=syslog
; cookie-file =
; enable-shm = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB

$ pgrep pulse
$

В этом контексте я бы получил:

$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: ALC269 Analog [ALC269 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

$ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
default:CARD=Intel
    HDA Intel, ALC269 Analog
    Default Audio Device
front:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    Front speakers
...
hw:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    Direct hardware device without any conversions
plughw:CARD=Intel,DEV=0
    HDA Intel, ALC269 Analog
    Hardware device with all software conversions
...

... но, даже если бы я указал явно устройство hw0:0, которое должно воспроизводить сэмплы на устройстве напрямую через ALSA, минуя какой-либо сервер:

aplay -f cd -v -Dhw:0,0 --test-position loop_s16_stereo.wav
...
BUFPOS: avg5507/16508 min0/0 max22016/22016 (22016) (0:0/0)
BUFPOS: avg2754/19261 min0/0 max22016/22016 (22016) (0:0/0)

... и я бы увидел даже настройки устройства - И позиции буфера - и все равно нет звука? И даже alsamixer показал, что все элементы управления выставлены на максимум!

Ну я случайно сначала включил pulseaudio:

pulseaudio --start

... и после того, как завершена минутная загрузка, затем запускается System/Preferences/Sound, или здесь:

gnome-volume-control

... и я понял, что там, прямо у панели "Выходная громкость", есть галочка "Без звука" - и она была проверена! Поэтому я снял флажок, звуковой тест начал работать; закрыл gnome-volume-control, а затем снова закрыл pulseaudio:

pulseaudio --kill

Теперь я больше не могу запускать gnome-volume-control (независимо от советов в 10.10 - Как отрегулировать громкость без pulseaudio? - Спросите Ubuntu - по-видимому, более ранние версии позволяли выбирать серверную часть через раскрывающийся список «Устройство»: old.png, но не новые: new.png; поэтому без pulseaudio они всегда будут завершаться с ошибкой "Ожидание ответа звуковой системы" ).

Однако СЕЙЧАС, когда я запускаю команду aplay - она ​​ИГРАЕТ (как и должно быть)!

Этот звук, по-видимому, связан с ключом в пути /desktop/gnome/sound/ в gconf-editor (см. gnome - Как отключить громкость предупреждений из командной строки? - Спросите Ubuntu), но я не могу сказать, какой именно; Отмечу лишь, что на данный момент у меня проверяются все enable_esd, event_sounds и input_feedback_sounds - и это видимо заставляет команду aplay работать корректно, даже без pulseaudio.

Надеюсь, это кому-нибудь поможет,
Ура!

person sdaau    schedule 10.08.2013

Использование -D pulse должно помочь, например:

aplay -D pulse /usr/share/xbmc/sounds/Bursting\ Bubbles/nav.wav

Таким образом, aplay должен использовать устройство pulseaudio, которое вы сможете найти с помощью aplay -L.

person JepZ    schedule 25.05.2019