Настройка устройства ALSA по умолчанию для Pulseaudio

8

Недавно я получил внешнюю звуковую карту / ЦАП (Fiio E17) и сейчас пытаюсь правильно настроить ее в своей установке Ubuntu 12.04. При подключении через USB он сразу распознается и отображается как новое устройство в настройках звука. Воспроизведение также работает в основном нормально (за исключением некоторых незначительных проблем, связанных с громкостью, которые выходят за рамки этого вопроса).

Однако при попытке проверить воспроизведение 24 бит / 96 кГц с помощью воспроизведения такого аудиофайла mplayerя столкнулся с небольшой проблемой:

Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 96000 Hz, 2 ch, s24le, 4608.0 kbit/100.00% (ratio: 576000->576000)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
AO: [pulse] 96000Hz 2ch s16le (2 bytes per sample)

Как видно из выходных данных, даже если воспроизводимый файл содержит звук 24 бит / 96 кГц, перед воспроизведением он ресэмплируется до 16 бит. Воспроизведение того же файла aplayпоказывает причину:

Playing WAVE 'sr003-02-2496.wav' : Signed 24 bit Little Endian in 3bytes, Rate 96000 Hz, Stereo
aplay: set_params:1081: Sample format non available
Available formats:
- U8
- S16_LE
- S16_BE
- S32_LE
- S32_BE
- FLOAT_LE
- FLOAT_BE
- MU_LAW
- A_LAW

Тем не менее, /proc/asound/card1/stream0подтверждает, что оборудование поддерживает 24 бит:

FiiO FiiO USB DAC-E17 at usb-0000:00:1a.0-1.1, full speed : USB Audio

Playback:
  Status: Running
    Interface = 3
    Altset = 1
    Packet Size = 388
    Momentary freq = 44100 Hz (0x2c.199a)
  Interface 3
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 3 OUT (ADAPTIVE)
    Rates: 32000, 44100, 48000, 96000
  Interface 3
    Altset 2
    Format: S24_3LE
    Channels: 2
    Endpoint: 3 OUT (ADAPTIVE)
    Rates: 32000, 44100, 48000, 96000

В этот момент я заметил, что во вкладке «Оборудование» настроек звука я могу выбрать два разных профиля для звуковой карты: Digital Stereo (IEC958) и Analog Stereo. Переключение между этими двумя не приводит к каким-либо изменениям, насколько я могу судить.

Хотя указание устройства ALSA действительно помогает (то есть aplay -Dhw:1,0 sr003-02-2496.wavработает нормально и воспроизводит файл без повторной выборки). Но поскольку Pulseaudio показывает только одно устройство / приемник Fiio в настройках звука, я не уверен, как сказать Pulseaudio использовать устройство ALSA hw:1,0. Добавление load-module module-alsa-source device=hw:1,0к /etc/pulse/default.paрезультатам в PulseAudio ABORTING с module.c: Failed to load module "module-alsa-source" (argument: "device=hw:1,0"): initialization failed.во время запуска.

Итак, вот введение, вот мои актуальные вопросы :

  • Как определить, какое устройство ALSA фактически использует Pulseaudio, когда я выбираю Fiio E17 в настройках звука?
  • Как настроить Pulseaudio на использование устройства ALSA hw: 1,0 при выборе Fiio E17 в настройках звука?

Еще немного (надеюсь, полезно) отладочной информации:

TMNT
источник
Что такое mplayerи aplayкомандные строки?
кл.
@CL. Я бегу mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wavи aplay -Dhw:1,0 sr003-02-2496.wavиспользую правильное устройство, если это то, что вы спрашиваете.
13:30
Я спрашивал о звонках, которые не работали. И вы хотите использовать PulseAudio или нет?
кл.
@CL. Ах, извините, это просто обычные звонки без флагов, то есть aplay sr003-02-2496.wavи mplayer sr003-02-2496.wav. И да, я хотел бы использовать PulseAudio, если это возможно.
TMNT

Ответы:

8

Отвечая на два вопроса:

Вы можете выбрать устройство по умолчанию в PulseAudio с графическим интерфейсом, таким как регулятор громкости GNOME, pavucontrol или из командной строки, используя pacmd set-default-sink.

По умолчанию PulseAudio открывает устройства на частоте 44,1 кГц или 48 кГц, в зависимости от того, что приводит к меньшим усилиям по сэмплированию (поэтому звук с частотой 96 кГц обычно приводит к открытию устройства на частоте 48 кГц. Также по умолчанию мы открываем устройства для S16LE.

Теперь у вас есть два варианта. Если вы просто хотите воспроизвести несколько файлов в их родном формате, paplay --passthrough <file>следует сделать эту работу за вас. Вы даже можете указать, какое устройство использовать.

Другой вариант - использовать PA в глобальном масштабе 96/24. Вы можете изменить это в /etc/pulse/default.conf( alternate-sample-rate = 96000, default-sample-format=s24-32le). Это будет приводить к увеличению загрузки процессора, хотя. Это немного глупая ситуация, когда приходится применять глобальную конфигурацию для всех устройств. В какой-то момент мы планируем добавить конфигурацию для каждого устройства.

Обратите внимание, что после этого вы должны просто использовать серверную часть PulseAudio mplayer, а не общаться с ALSA, а затем ALSA с PulseAudio. Вы можете сделать это с помощью, mplayer -ao pulse ...и если вы хотите установить его постоянно, добавьте ao=pulseв ~/.mplayer/config.

Арун Рагхаван
источник
Большое вам спасибо за вашу помощь! pacmd set-default-sinkтолько позволяет мне установить одну из перечисленных раковин pacmd list-sinks, верно? Хотя я полагаю, что вторая часть вашего ответа в любом случае делает этот вопрос спорным;) Так что, если я правильно вас понимаю, Pulseaudio не поддерживает динамическое переключение между 24 и 16 битами? После изменения my default.conf, mplayer, похоже, все еще пересчитывает все до 16 бит, прежде чем передать его в импульсный режим ( см. Здесь ), из-за чего CL. описывает в своем ответе?
TMNT
О, и paplayмне, похоже, не нравятся мои аудиофайлы :) Воспроизведение 24-битного файла приводит к segfault Code should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting., а воспроизведение 32-битного файла даже приводит к сбою Pulseaudio .
TMNT
4

После обновления до 13.10 Pulseaudio по умолчанию настроено на HDMI, возможно потому, что через мой порт мини-дисплея к ноутбуку подключен дополнительный монитор (Lenovo T430S). Сайт archlinux предоставил приятный и короткий ответ для сброса или установки значения по умолчанию:

  • войдите и измените выход по умолчанию на аналоговый

  • Запустить

    $ aplay -l

и найдите этот аналог карты 0

  • Запустить

    список $ pacmd

и найдите строку:

active profile: <output:analog-stereo+input:analog-stereo>

«output: аналоговый-стерео + вход: аналоговый-стерео» - это имя моего профиля, поэтому добавьте

set-card-profile 0 output:analog-stereo+input:analog-stereo

в /etc/pulse/default.pa и сохраните

  • перезапустить pulseaudio
user235147
источник
2

Образец формата, используемый в интерфейсе между приложениями и PulseAudio, не всегда напрямую связан с образцом формата, который PulseAudio использует для доступа к аппаратному устройству.

S24_3LEне является одним из поддерживаемых форматов приложений PulseAudio (как показано в aplayвыходных данных). Чтобы позволить приложениям с такими необычными форматами работать с PulseAudio, добавьте плагин, который выполняет автоматическое преобразование формата, если это необходимо для устройства PCM по умолчанию в вашем .asoundrc:

pcm.!default {
    type linear
    slave.pcm pulse
}
CL.
источник
Спасибо за вашу помощь, но, боюсь, это ничего не изменило. Даже после добавления этого к моему .asoundrc, mplayerвсе еще сокращает аудио до 16 бит (т.е. вывод выглядит так же, как тот, что был опубликован в моем вопросе) и /proc/asound/card1/stream0все еще показывает, что используется неправильный altset. Если это на самом деле проблема с поддерживаемыми форматами PA, не следует ли mplayerуменьшить частоту дискретизации даже при указании устройства ALSA, поскольку оно все еще использует Pulseaudio?
февраля
Работает ли aplayсейчас? Это похоже на ошибку в mplayer.
кл.
Нет, по- aplayпрежнему не удается с тем же выходом. Теперь я заметил, что, установив default-sample-format = s24-32leв моем, .pulse/daemon.confя могу заставить PA использовать правильное устройство вывода. Тем не менее, по- mplayerпрежнему выполняется повторная выборка аудио, aplayно при попытке воспроизведения 24-битного аудиофайла происходит сбой, поэтому, думаю, это тоже не поможет.
TMNT
2

Просто быстрый обходной путь, который я обнаружил, используя Lubuntu Trusty Tahr с моим Fiio E17, подключенным через USB: я также задавался вопросом о битрейте, поэтому я нашел эти посты здесь. Но так как я слушаю музыку на довольно старом нетбуке, я не хотел устанавливать его на 96/24 по умолчанию (cpu не самый быстрый). Однако для меня сработало использование VLC и указание в экспертных настройках звука. использовать модуль ALSA для вывода, а затем использовать следующее устройство вывода: «Fiio USB DAC-E17, аппаратное устройство USB Audio Direct без каких-либо преобразований»

Таким образом, я смог вывести звук 96/24 на Fiio через USB, когда захотел (также отображается на маленьком экране Fiio) - и мне не пришлось менять что-то более фундаментальное в ОС. Такие игроки, как audacious или браузеры, все еще используют выход по умолчанию pulseaudio. Иногда VLC говорит, что устройство уже используется - тогда просто закройте любое другое программное обеспечение, такое как audacious, которое использует, например, выход pulseaudio, и оно должно работать.

С уважением, Энди

И я
источник
Смотрите также: askubuntu.com/questions/334626/…
landroni
1

Вот правильный ответ на этот вопрос:

Из ArchWiki

Определите устройство ALSA hw, которое вы хотите использовать. Затем добавьте это в ваш файл default.pa. (Измените 0,0 в соответствии с вашим устройством.)

load-module module-alsa-sink device=hw:0,0
Hydranix
источник
1

Добавление load-module module-alsa-source device=hw:1,0к /etc/pulse/default.paявляется правильным подходом. Тем не менее, следующие модули должны быть выгружены, чтобы избежать конфликтов устройств ( initialization failedошибка, которую вы получили):

  • Модуль-Udev обнаружение
  • модуля обнаружения

Внимательно осмотрите свои /etc/pulse/default.paи удалите строки, содержащие эти модули. Кроме того, в этом случае устройства не могут быть автоматически обнаружены, поэтому вы хотите загрузить, module-alsa-sinkчтобы указать приемник также вручную.

Хуан Чжан
источник
Будет ли конфликт обнаруживать воспроизведение (приемник), если только устройства захвата (источник) загружаются вручную?
Лукас