Недавно я получил внешнюю звуковую карту / ЦАП (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 в настройках звука?
Еще немного (надеюсь, полезно) отладочной информации:
- Выход из
aplay -L
- Выход из
aplay -l
- Выход из
pacmd list-sinks
- И, наконец, если это уместно, мой .asoundrc
источник
mplayer
иaplay
командные строки?mplayer -ao alsa:device=hw=1.0 sr003-02-2496.wav
иaplay -Dhw:1,0 sr003-02-2496.wav
использую правильное устройство, если это то, что вы спрашиваете.aplay sr003-02-2496.wav
иmplayer sr003-02-2496.wav
. И да, я хотел бы использовать PulseAudio, если это возможно.Ответы:
Отвечая на два вопроса:
Вы можете выбрать устройство по умолчанию в 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 битами? После изменения mydefault.conf
, mplayer, похоже, все еще пересчитывает все до 16 бит, прежде чем передать его в импульсный режим ( см. Здесь ), из-за чего CL. описывает в своем ответе?paplay
мне, похоже, не нравятся мои аудиофайлы :) Воспроизведение 24-битного файла приводит к segfaultCode should not be reached at pulsecore/sndfile-util.c:391, function pa_sndfile_readf_function(). Aborting.
, а воспроизведение 32-битного файла даже приводит к сбою Pulseaudio .После обновления до 13.10 Pulseaudio по умолчанию настроено на HDMI, возможно потому, что через мой порт мини-дисплея к ноутбуку подключен дополнительный монитор (Lenovo T430S). Сайт archlinux предоставил приятный и короткий ответ для сброса или установки значения по умолчанию:
войдите и измените выход по умолчанию на аналоговый
Запустить
$ aplay -l
и найдите этот аналог карты 0
Запустить
список $ pacmd
и найдите строку:
«output: аналоговый-стерео + вход: аналоговый-стерео» - это имя моего профиля, поэтому добавьте
в /etc/pulse/default.pa и сохраните
источник
Образец формата, используемый в интерфейсе между приложениями и PulseAudio, не всегда напрямую связан с образцом формата, который PulseAudio использует для доступа к аппаратному устройству.
S24_3LE
не является одним из поддерживаемых форматов приложений PulseAudio (как показано вaplay
выходных данных). Чтобы позволить приложениям с такими необычными форматами работать с PulseAudio, добавьте плагин, который выполняет автоматическое преобразование формата, если это необходимо для устройства PCM по умолчанию в вашем.asoundrc
:источник
.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-битного аудиофайла происходит сбой, поэтому, думаю, это тоже не поможет.Просто быстрый обходной путь, который я обнаружил, используя 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, и оно должно работать.
С уважением, Энди
источник
Вот правильный ответ на этот вопрос:
Из ArchWiki
Определите устройство ALSA hw, которое вы хотите использовать. Затем добавьте это в ваш файл default.pa. (Измените 0,0 в соответствии с вашим устройством.)
источник
Добавление
load-module module-alsa-source device=hw:1,0
к/etc/pulse/default.pa
является правильным подходом. Тем не менее, следующие модули должны быть выгружены, чтобы избежать конфликтов устройств (initialization failed
ошибка, которую вы получили):Внимательно осмотрите свои
/etc/pulse/default.pa
и удалите строки, содержащие эти модули. Кроме того, в этом случае устройства не могут быть автоматически обнаружены, поэтому вы хотите загрузить,module-alsa-sink
чтобы указать приемник также вручную.источник