ALSA: файл asound.conf читается, но не используется с arecord - PullRequest
0 голосов
/ 04 июля 2018

Я использую ALSA для настройки микрофона, но после нескольких часов поиска в stackoverflow / alsa doc / других источниках я не понимаю, как работает arecord ...

Я пытаюсь установить запись по умолчанию

Подписано 16 бит Little Endian, Fréquence 48000 Гц, Stéréo

Эквивалентная * CLI-команда * (в моем случае):

arecord /tmp/test.wav -f dat -D sysdefault:CARD=1

Я пытаюсь сделать это с /etc/asound.conf

Я пишу это:

pcm.!default {
  type asym
  playback.pcm {
    type plug
    slave.pcm "hw:1,0"
  }
  capture.pcm "multi"
}

pcm.multi {
  type plug
  slave.pcm "multiapps"
}

pcm.multiapps {
  type dsnoop
  ipc_key 666666
  slave {
    pcm "hw:1,0"
    format "S16_LE"
    rate 48000
  }
}

ctl.!default {
  type hw
  card 1
}

Но когда я попробую простое:

arecord /tmp/test.wav или arecord /tmp/test.wav -D default

Сбой с

Capture WAVE '/tmp/test.wav': 8-битный без знака, частота 8000 Гц, моно arecord: set_params: 1299: Ce формат d'échantillonage n'est pas Доступные форматы: - S16_LE

Просто для проверки попробую с

arecord /tmp/test.wav -D multi

У меня половина успеха, он работает, но с плохой конфигурацией

Capture WAVE '/tmp/test.wav': 8-битный без знака, частота 8000 Гц, моно

Может кто-нибудь объяснить мне, что я пропустил? : |

Спасибо!

- РЕДАКТИРОВАТЬ -

Я понимаю, что /etc/asound.conf перекрывается с ~ / .asound.

Итак, я скопировал первое во второе.

Не более фатально по умолчанию, но всегда в 8k / 8bit ...

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Принят неправильный ответ:

Вам нужно , чтобы поместить format и rate записей в определение ведомого, если вас не устраивает конфигурация по умолчанию (установленная драйвером звуковой карты, я думаю) аппаратного обеспечения . (В моем случае по умолчанию используется 16-битный звук, но я хочу 24-битный, потому что микрофонные сигналы могут быть очень тихими.)

Также в приложении необходимо указать format и rate, если вы не удовлетворены настройками по умолчанию. В случае arecord по умолчанию используется стандарт телефонии 8b / 8 кГц (поэтому совсем не глупо! - хотя я предпочитаю 16b / 32 кГц).

Если вы предоставили правильные элементы ALSA, которые могут преобразовывать аппаратный формат в формат приложения, он будет преобразован автоматически (выполните arecord -v, чтобы просмотреть преобразования). Вы используете 'plug' в 'pcm.multi', так что все в порядке.

Так что вам нужно всего лишь указать формат, который вы хотите в вашем приложении. Поэтому, пожалуйста, RTFM, man aplay сделает:

arecord -D multi -c 1 -r 48000 -f S16_LE -v -t wav /tmp/test.wav

(насчет RTFM, я согласен, что было сложно выяснить, как все это работает: -)

0 голосов
/ 04 июля 2018

Размещение записей типа format и rate в определении ведомого ограничивает возможные конфигурации, которые может выбрать приложение.

Большинство приложений спрашивают устройство, какие конфигурации оно на самом деле поддерживает. Однако aplay / arecord нет; они всегда пытаются использовать заданную вами конфигурацию с параметрами (или их глупыми значениями по умолчанию).

...