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

Mic*_*cka 7 c++ audio alsa capture

我正在尝试使用ALSA库在SoC上实现音频捕获.我已经预编译libasound.so.2.0.0了一个asoundlib.h与其他标题一起.

我现在有

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);
Run Code Online (Sandbox Code Playgroud)

返回snd_strerror(returnCode)No such file or directory

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

我怎样才能找出错误/缺失的内容?

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

更新:

我发现了如何通过以下方式扫描设备:以编程方式在Linux上查找可用的声卡

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-sound-devices.从驱动程序目录中键入./snddevices.现在应该有一个/ dev/snd子目录(测试它是否在那里.如果你不熟悉甚至"ls"命令,请考虑先阅读其他HOWTO.你应该有一些基本的Linux知识来安装这些驱动程序.)现在你已经准备好插入驱动程序,所以请转到下一段."

我记得我运行了一个随SoC alsa版本提供的snddevices脚本,但我不确定它是否成功或是否只是没有显示错误.但链接说我之后必须安装驱动程序?不幸的是我明天才能测试.

更新:

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

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
Run Code Online (Sandbox Code Playgroud)

在其他人返回的地方cat controlC0 cat pcmC0D0ccat pcmC0D1c返回cat: read error: File descriptor in bad statecat: can't open 'pcmC0D2c': No such device

虽然cat /proc/asound/cards给了

 0 [VPL_AUDIO      ]: VPL AUDIO - VPL Audio TW2866 Driver
                      VPL Audio Codec Driver, TW2866.
 1 [Mozart_SSM2603 ]: I2S - I2S driver
                      I2S driver
Run Code Online (Sandbox Code Playgroud)

这是一些更多的信息.由于我没有任何音频经验,我不知道它们是重要的还是帮助...

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
Run Code Online (Sandbox Code Playgroud)

Mic*_*cka 3

我有不同版本的snddevices脚本。我必须在正确的目录中使用正确的脚本才能开始snd_pcm_open工作。我必须将脚本复制到 SoC 的驱动程序目录中。

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

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