我有一个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我真的不知道原因是什么。任何帮助都是非常感谢的!提前谢谢你们!
编辑:
.asoundrcpcm.!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是从其他地方导入的,我就不能播放它。发布于 2020-10-21 16:02:56
通过将用户pi的配置更改为使用hw设备,您已经禁用了所有自动示例格式转换。
若要仅设置卡号,请使用:
defaults.pcm.card 0
defaults.ctl.card 0要对所有用户进行更改,请将其放入/etc/asound.conf中。
发布于 2020-10-21 23:31:16
通过执行以下操作,我能够解决我的sudo权限问题:
sudo nano /root/.asoundrc
pcm.!default {
type hw
card 0
}
ctl.!default {
type hw
card 0
}然后我在主目录和.asoundrc目录中注释掉了asound.conf。现在,我可以在wav文件上使用aplay和arecord,而无需指定选项。
解决方案来自alsa-项目网站sit。
https://unix.stackexchange.com/questions/615584
复制相似问题