Alsa
ALSA aplay 單聲道文件但返回通道數不可用
我有一個
test.wav
文件,我想使用 ALSA 通過揚聲器播放。我還在系統上安裝了 sox。所有音效卡都安裝正確。aplay -L
並arecord -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
我真的不知道可能是什麼原因。任何幫助表示讚賞!提前謝謝你們!
編輯:
- 當我手動輸入終端列印的消息時我的錯誤,當我使用 SoX 時確實是 1@16 位。
.asoundrc
pcm.!default { type hw card 0 } ctl.!default { type hw card 0 }
- 當我使用 時
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。