我想设置我的硬件(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