首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ALSA库捕获音频- snd_pcm_open =>没有这样的文件或目录

使用ALSA库捕获音频- snd_pcm_open =>没有这样的文件或目录
EN

Stack Overflow用户
提问于 2015-10-13 17:07:17
回答 2查看 8.5K关注 0票数 8

我试图使用ALSA库在SoC上实现音频捕获。我有一个预编译的libasound.so.2.0.0、一个asoundlib.h和其他标题。

现在我有了

代码语言:javascript
运行
复制
int returnCode;
snd_pcm_t *pcm_Handle;
char *pcm_device_name = "hw:0,0";

returnCode = snd_pcm_open(&pcm_Handle, pcm_device_name, SND_PCM_STREAM_CAPTURE, 0);

返回snd_strerror(returnCode) of No such file or directory

这是否表明捕获设备没有正确安装(例如,驱动程序或其他东西)?

我怎样才能找出哪里错了/少了什么?

我能否列出是否安装了任何alsa可访问的声音设备?

更新:

我了解了如何通过:Finding available sound cards on Linux programmatically扫描设备

snd_card_next找到了一个单独的cardNum : 0,但在snd_ctl_open(&cardHandle, "hw:0", 0)snd_pcm_open(&pcm_Handle, "hw:0,0", SND_PCM_STREAM_CAPTURE, 0)上,No such file or directory还是失败了。这是否表明音响设备没有正确安装?

更新::

我在http://www.tldp.org/HOWTO/Alsa-sound-4.html上找到了更多的信息

"4.6准备设备时,驱动程序目录中有一个脚本,它将安装/dev目录中的ALSA声音设备。从驱动程序目录中键入./snddevices。现在应该有一个/dev/snd子目录(测试它是否在那里。如果您不熟悉"ls“命令,请考虑先阅读其他的说明。您应该有一些基本的Linux知识来安装这些驱动程序。现在您已经准备好插入驱动程序了,所以请转到下一段。”

我记得我运行了一个与SoC alsa版本一起提供的snddevices脚本,但我不确定它是成功的还是没有显示错误。但是链接上说我以后要安装驱动程序?不幸的是,我不能在明天之前测试。

更新:

从CL。http://www.tldp.org/HOWTO/Alsa-sound-6.html我测试了以下内容:dev/snd/有以下条目:

代码语言:javascript
运行
复制
crw-rw----    1 root     audio     116,   0 Mar 11 04:44 controlC0
crw-rw----    1 root     audio     116,  24 Mar 11 04:44 pcmC0D0c
crw-rw----    1 root     audio     116,  16 Mar 11 04:44 pcmC0D0p
crw-rw----    1 root     audio     116,  25 Mar 11 04:44 pcmC0D1c
crw-rw----    1 root     audio     116,  26 Mar 11 04:44 pcmC0D2c
crw-rw----    1 root     audio     116,  27 Mar 11 04:44 pcmC0D3c
crw-rw----    1 root     audio     116,  28 Mar 11 04:44 pcmC0D4c

其中cat controlC0 cat pcmC0D0ccat pcmC0D1c返回cat: read error: File descriptor in bad state,而其他返回像cat: can't open 'pcmC0D2c': No such device

cat /proc/asound/cards

代码语言:javascript
运行
复制
 0 [VPL_AUDIO      ]: VPL AUDIO - VPL Audio TW2866 Driver
                      VPL Audio Codec Driver, TW2866.
 1 [Mozart_SSM2603 ]: I2S - I2S driver
                      I2S driver

这是一些更多的信息。因为我对音频没有任何经验,我不知道它们是重要的还是有用的.

代码语言:javascript
运行
复制
cat /proc/asound/pcm
00-00: tw2866#0 : VPL Audio TW2866 Driver : capture 1
00-01: tw2866#1 : VPL Audio TW2866 Driver : playback 1 : capture 1
01-00: I2S AIC23 PCM : I2S driver : playback 1 : capture 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-19 16:17:02

我有不同版本的snddevices脚本。我必须使用正确的脚本int和正确的目录来使snd_pcm_open工作。我不得不将脚本复制到SoC的驱动程序目录中。

我将.conf文件复制到与参考实现中相同的目录中。

如果没有运行捕获设备,则出现错误的文件描述符错误消息。到目前为止,捕获仍然不起作用。

票数 3
EN

Stack Overflow用户

发布于 2015-10-14 07:50:43

您的问题是alsa-lib包没有正确安装(而且看起来您的硬件没有包)。

要找出您需要的文件,获取alsa-lib源代码包,编译它,然后将它安装到一个临时目录中

代码语言:javascript
运行
复制
make install DESTDIR=/tmp/test

然后查看/tmp/test/;如果没有使用正确的交叉编译器,则无法使用编译后的库文件本身(libasound.so*),但其他文件是适合任何体系结构的文本文件。

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

https://stackoverflow.com/questions/33108558

复制
相关文章

相似问题

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