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

Недавно я получил внешнюю звуковую карту / ЦАП (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 с 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 в настройках звука?

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

8
задан 13 May 2013 в 01:19

6 ответов

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

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

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

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

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

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

0
ответ дан 13 May 2013 в 01:19

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

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

pcm.!default {
    type linear
    slave.pcm pulse
}
0
ответ дан 13 May 2013 в 01:19

Просто быстрый обходной путь, который я обнаружил, используя 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, которое использует, например, импульсный аудиовыход, и он должен работать.

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

0
ответ дан 13 May 2013 в 01:19

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

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

  • Выполненный

    $ aplay-l

и найдите, что аналог является картой 0

  • Выполненный

    $ pacmd список

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

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

"output:analog-stereo+input:analog-stereo" мое имя профиля, поэтому добавьте

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

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

  • перезапуск pulseaudio
3
ответ дан 13 May 2013 в 01:19

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

Из ArchWiki

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

load-module module-alsa-sink device=hw:0,0
0
ответ дан 13 May 2013 в 01:19

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

  • module-udev-detect
  • module-Detection
  • [ 119]

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

0
ответ дан 13 May 2013 в 01:19

Другие вопросы по тегам:

Похожие вопросы: