我已经使用 ALSA(snd_pcm_open、snd_pcm_readi 等)编写了一个应用程序。该应用程序在我的机器上本地运行完美。但是,当我 SSH 到另一台机器并通过 SSH 连接运行它时,对 snd_pcm_open 的所有调用都会失败,并显示“设备不存在”或类似消息。远程机器和我的本地机器一样有声卡。
这里可能是什么问题?
谢谢!
编辑:如果我使用远程计算机上的控制台运行应用程序(走到计算机,登录,运行应用程序),应用程序运行良好。
问题可能出在/dev/snd/*
访问权限上。确保用户在音频组中。就我而言,我必须这样做adduser $USER audio
,断开连接然后重新连接。
只是为了检查一下:远程机器上的声卡驱动程序是否加载并正常工作?检查/proc/asound/cards
并查看该卡是否已列出。
只是为了确认......您已经在远程机器上安装了应用程序,并且远程机器还有其他工作方式等?必须设置远程机器,这样如果您要从控制台登录并运行应用程序,它就可以工作
如果是这种情况,请检查您的环境变量,因为有时它们可能会略有不同。
找到了原因。事实证明/dev/audio
,用户拥有的所有设备/dev/snd/
都在远程计算机上登录,并且其他人无法读取/写入。对于我申请的测试chmod 777 /dev/audio /dev/snd/*
,它开始工作。
任何人都知道如何对远程计算机的音频设备应用更慷慨的权限(重启后会持续)?