PulseAudio:如何确定硬件支持的本机采样率和位深度?

PulseAudio:如何确定硬件支持的本机采样率和位深度?

我想设置我的硬件(Intel HDA)支持的最大采样率和位深度。

如何知道数值?

我需要这些信息,因为我想避免不必要的重采样。

答案1

似乎可以通过grep以下方式查询这些信息:

grep rates /proc/asound/card0/codec\#0
grep bits /proc/asound/card0/codec\#0
# or in one-line with '-P'
grep -P 'rates|bits' /proc/asound/card0/codec\#0

请注意是\用来逃跑的#。实际文件名是codec#0.

上述命令将显示如下内容:

$ grep -P 'rates|bits' /proc/asound/card0/codec\#0
    rates [0x0]:
    bits [0x0]:
    rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
    bits [0xe]: 16 20 24
    rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
    bits [0xe]: 16 20 24
    rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
    bits [0xe]: 16 20 24
    rates [0x7f0]: 32000 44100 48000 88200 96000 176400 192000
    bits [0xe]: 16 20 24

虽然结果看起来是正确的,但实际上我不确定这是否是正确的查询方式。

答案2

根据维基百科文章,英特尔 HDA 的采样率为 6-192 kHz,采样分辨率为 8-32 位,尽管制造商可能尚未实施完整的规范,因此最好使用

pactl list sinks | grep -Ei 'name:|sample specification:'

更改配置后。

答案3

引用自Archlinux 维基

您可以通过查询 ALSA 来检查您的 DAC 支持什么:

首先获取你的DAC的卡号:

$ aplay -l
...
card 3: S2 [Schiit Hel 2], device 0: USB Audio [USB Audio]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
...

因此,在此示例中,它将是卡 3。获取所有支持的采样率和格式:

$ cat /proc/asound/cardX/streamX
...
Playback:
  ...
  Interface 1
    Altset 1
    Format: S16_LE
    Channels: 2
    Endpoint: 0x05 (5 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 16
    ...
  Interface 1
    Altset 2
    Format: S24_3LE
    Channels: 2
    Endpoint: 0x05 (5 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 24
    ...
  Interface 1
    Altset 3
    Format: S32_LE
    Channels: 2
    Endpoint: 0x05 (5 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000
    Data packet interval: 125 us
    Bits: 32
    ...
...

在这种情况下,S16_LE、S24_3LE、S32_LE 是支持的格式,44100、48000、88200、96000、176400、192000、352800、384000 是所有格式支持的采样率。

答案4

您可以使用pamcd list-sinks

pacmd list-sinks | grep -e 'name:\|Hz'
        name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
        sample spec: s16le 2ch 44100Hz

相关内容