ALSA aplay 单声道文件但返回通道数不可用

ALSA aplay 单声道文件但返回通道数不可用

我有一个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如果是从其他地方导入的,我就无法播放。

答案1

通过更改用户pi使用hw设备的配置,您已禁用所有自动样本格式转换。

要仅设置卡号,请使用:

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

要为所有用户更改此设置,请将其放入/etc/asound.conf.

答案2

我能够通过执行以下操作解决我的 sudo 权限问题:

sudo nano /root/.asoundrc

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

然后我.asoundrc在主目录和asound.conf.现在我可以在 wav 文件上使用aplayarecord而无需指定选项。

解决方案来自alsa-项目网站

相关内容