Alsa

ALSA aplay 單聲道文件但返回通道數不可用

  • February 21, 2022

我有一個test.wav文件,我想使用 ALSA 通過揚聲器播放。我還在系統上安裝了 sox。所有音效卡都安裝正確。aplay -Larecord -L返回正確的值。

但是我不能玩這個test.wav

aplay -c1 -r 48000 -f S16_LE test.wav
$ Playing WAVE 'test.wav': Signed 16 bit Little Endian, Rate 48000 Hz, Mono
 aplay: set_params:1345: Channels count non available

但是當我使用sox時,系統沒有問題,它顯示文件確實是16位的1通道

$ Encoding: Signed PCM
 Channels: 1 @ 16-bit
 Samplerate: 48000Hz

我真的不知道可能是什麼原因。任何幫助表示讚賞!提前謝謝你們!

編輯:

  1. 當我手動輸入終端列印的消息時我的錯誤,當我使用 SoX 時確實是 1@16 位。
  2. .asoundrc
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}
  1. 當我使用 時arecord,我需要指定通道數: arecord -c 2 -r 48000 -f S16_LE test.wav 否則它將返回與上面相同的錯誤。但是,test.wav如果使用arecord. test.wav奇怪的是,如果它是從其他地方進口的,我就無法播放。

通過更改使用者配置pi以使用hw設備,您已禁用所有自動樣本格式轉換。

要僅設置卡號,請使用:

defaults.pcm.card 0
defaults.ctl.card 0

要為所有使用者更改此設置,請將其放入/etc/asound.conf.

通過執行以下操作,我能夠解決我的 sudo 權限問題:

sudo nano /root/.asoundrc

pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}

然後我.asoundrc在主目錄和asound.conf. 現在我可以在 wav 文件上使用aplay和而無需指定選項。arecord

解決方案來自alsa-project web sit

引用自:https://unix.stackexchange.com/questions/615584