首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ALSA播放单声道文件,但返回通道计数不可用

ALSA播放单声道文件,但返回通道计数不可用
EN

Unix & Linux用户
提问于 2020-10-21 01:46:44
回答 2查看 6.6K关注 0票数 2

我有一个test.wav文件,我想通过使用ALSA的扬声器播放。我还在系统上安装了sox。所有声卡都安装正确。aplay -Larecord -L返回正确的值。

然而,我不能播放这个test.wav

代码语言:javascript
复制
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通道。

代码语言:javascript
复制
$ Encoding: Signed PCM
  Channels: 1 @ 16-bit
  Samplerate: 48000Hz

我真的不知道原因是什么。任何帮助都是非常感谢的!提前谢谢你们!

编辑:

  1. 当我把打印在终端上的消息打印出来时,我的错误是,当我使用SoX时,确实是1@16位。
  2. .asoundrc
代码语言:javascript
复制
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是从其他地方导入的,我就不能播放它。
EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-10-21 16:02:56

通过将用户pi的配置更改为使用hw设备,您已经禁用了所有自动示例格式转换。

若要仅设置卡号,请使用:

代码语言:javascript
复制
defaults.pcm.card 0
defaults.ctl.card 0

要对所有用户进行更改,请将其放入/etc/asound.conf中。

票数 1
EN

Unix & Linux用户

发布于 2020-10-21 23:31:16

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

sudo nano /root/.asoundrc

代码语言:javascript
复制
pcm.!default {
 type hw
 card 0
}
ctl.!default {
 type hw
 card 0
}

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

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

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/615584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档