我有snddevices
脚本的不同版本。我必须在正确的目录中使用正确的脚本才能使snd_pcm_open
工作。我必须将脚本复制到SoC的驱动程序目录。
我正在尝试使用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);
返回snd_strerror(returnCode)
的No such file or directory
这是否表明捕获设备未正确安装(例如,驱动程序或其他工具?)
我如何找出问题/遗漏之处?
我可以列出是否安装了任何alsa可访问的声音设备吗?
UPDATE:
我发现了如何通过以下方式扫描设备: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
上我仍然失败。是否表明声音设备未正确安装?
UPDATE ::
我在http://www.tldp.org/HOWTO/Alsa-sound-4.html上找到了更多信息
“ 4.6准备设备驱动程序目录中有一个脚本这将在/ dev目录中安装ALSA-sound-devices。类型驱动程序目录中的./snddevices。应该有一个/ dev / snd现在子目录(测试是否存在)。如果您不熟悉即使是“ ls”命令,也请考虑阅读其他HOWTO的第一篇。您应该具有一些基本的Linux知识来安装这些驱动程序。现在您准备插入驱动程序,所以请转到下一个段落。“
我记得我已经运行了SoC alsa版本随附的snddevices脚本,但是我不确定它是否成功或是否只显示错误。但是该链接说我以后必须安装驱动程序吗?不幸的是我明天不能测试。
UPDATE:
来自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
[其中cat controlC0
cat pcmC0D0c
和cat pcmC0D1c
返回cat: read error: File descriptor in bad state
,而其他返回[cat: 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
这里有更多信息。由于我对音频没有任何经验,所以我不知道它们是否重要或对您有帮助...
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
您的问题是alsa-lib
软件包未正确安装(看起来好像没有用于您的硬件的软件包。)>
要找出所需的文件,请获取alsa-lib
源程序包,对其进行编译,然后使用以下方法将其安装到临时目录中:>
make install DESTDIR=/tmp/test
然后查看
/tmp/test/
;如果未使用正确的交叉编译器,则无法使用已编译的库文件本身(libasound.so*
),但其他文件是适用于任何体系结构的文本文件。
我有snddevices
脚本的不同版本。我必须在正确的目录中使用正确的脚本才能使snd_pcm_open
工作。我必须将脚本复制到SoC的驱动程序目录。
我将.conf
文件复制到与参考实现相同的目录中。
如果没有捕获设备在运行,则似乎存在错误的文件描述符错误消息。到目前为止,捕获仍然无法进行。
我有snddevices
脚本的不同版本。我必须在正确的目录中使用正确的脚本才能使snd_pcm_open
工作。我必须将脚本复制到SoC的驱动程序目录。