Недавно я получил внешнюю звуковую карту / ЦАП (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.
во время запуска.
Итак, вот введение, вот мои актуальные вопросы :
Еще немного (надеюсь, полезно) отладочной информации: [ 1131]
aplay -L
aplay -l
pacmd list-sinks
Ответы на два вопроса:
Вы можете выбрать устройство по умолчанию в PulseAudio с графическим интерфейсом, таким как регулятор громкости GNOME, pavucontrol или из командной строки, используя pacmd set-default-sink
.
По умолчанию PulseAudio открывает устройства на частоте 44,1 кГц или 48 кГц, в зависимости от того, что приводит к меньшему усилию повторной дискретизации (поэтому звук с частотой 96 кГц обычно приводит к открытию устройства на 48 кГц. Также по умолчанию мы открываем устройства для S16LE.
Теперь у вас есть два варианта. Если вы просто хотите воспроизвести несколько файлов в их собственном формате, paplay --passthrough <file>
должны выполнить эту работу за вас. Вы даже можете указать, какое устройство использовать.
/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
.
Формат образца, используемый в интерфейсе между приложениями и PulseAudio, не всегда напрямую связан с форматом образца, который PulseAudio использует для доступа к аппаратному устройству.
S24_3LE
не является одним из поддерживаемых форматов приложений PulseAudio (как показано в выходных данных aplay
). Чтобы разрешить приложениям с такими необычными форматами работать с PulseAudio, добавьте плагин, который выполняет автоматическое преобразование формата, если это необходимо для устройства PCM по умолчанию в вашем .asoundrc
:
pcm.!default {
type linear
slave.pcm pulse
}
Просто быстрый обходной путь, который я обнаружил, используя 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, которое использует, например, импульсный аудиовыход, и он должен работать.
С уважением, Анди
После того, как обновление 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 и сохраняют
Вот правильный ответ на этот вопрос:
Из ArchWiki
Определите устройство ALSA hw, которое вы хотите использовать. Затем добавьте это в файл default.pa. (Измените 0,0 в соответствии с вашим устройством.)
load-module module-alsa-sink device=hw:0,0
Добавление load-module module-alsa-source device=hw:1,0
к /etc/pulse/default.pa
является правильным подходом. Тем не менее, следующие модули должны быть выгружены, чтобы избежать конфликтов устройств (вы получили ошибку initialization failed
):
Внимательно посмотрите на свои /etc/pulse/default.pa
и удалите строки, содержащие эти модули. Кроме того, в этом случае устройства не могут быть автоматически обнаружены, поэтому вы хотите загрузить module-alsa-sink
, чтобы также указать приемник вручную.