2012-02-08 32 views
0

我已经使用ALSA编写了一个应用程序(snd_pcm_open,snd_pcm_readi等)。该应用程序在我的机器上本地完美工作。但是,当我通过SSH连接到另一台计算机并通过SSH连接运行时,所有对snd_pcm_open的调用都会失败,并显示“设备不存在”或类似消息。远程机器有一个声卡,就像我的本地机器一样。通过SSH的ALSA(snd_pcm_open)?

这里有什么问题?

谢谢!

编辑:如果我使用运行在远程计算机上的控制台应用程序(步行到电脑,登录,运行应用程序),应用程序运行正常。

+0

你想让音频在远程机器上播放,对吗?远程机器也使用alsa,并且配置正确? – cha0site 2012-02-08 09:27:28

+0

是的。实际上,我的应用程序会记录音频,但这应该没有什么区别,对吧?远程机器也使用ALSA,是的。如果我在远程计算机上本地运行我的应用程序(走到计算机,登录,启动我的应用程序),它就可以工作。 – joscarsson 2012-02-08 09:48:51

回答

0

找到原因。发现/dev/audio以及/dev/snd/以下的设备,其中用户拥有的所有设备都在远程计算机上登录,并且不能被其他人读/写。为了测试,我申请了chmod 777 /dev/audio /dev/snd/*并开始工作。

任何人都知道我可以申请多一点大度权限音频设备的远程计算机(这将持续重新启动后)?

1

只是为了检查是否有明显的:加载和正常工作的远程机器上的声卡驱动程序?检查/proc/asound/cards并查看以便列出该卡。

+0

是的,在远程机器上的所有设备都能正常工作。看到我的编辑原来的问题。 – joscarsson 2012-02-08 09:51:43

1

确认一下...你已经安装了远程机器上的应用程序和远程机器工作,不然aplay等?远程机器必须建立这样,如果你是从控制台登录并运行应用程序,它会工作

如果是这样,然后检查你的环境变量有时可以把它们巧妙地不同的情况。

+0

如果我在远程计算机上本地运行我的应用程序(步行到远程计算机,请登录,启动我的应用程序)。所以如果我从控制台运行,它的工作原理。如果我运行SSH,snd_pcm_open失败。应该写在这个问题上,对不起。 – joscarsson 2012-02-08 09:50:14

+0

在两种不同条件下登录时检查环境变量是否执行'env> walklogin.txt'和'env> sshlogin.txt'。然后'diff sshlogin.txt walklogin.txt',看看有什么区别 – Vorsprung 2012-02-08 11:45:00

+0

我做到了,并且存在一些差异,但是我看不到会干扰音频或音频记录的任何事情。我应该寻找什么? – joscarsson 2012-02-08 15:48:32

1

的问题可能与/dev/snd/*访问权限。 确保用户在音频组中。 在我的情况下,我不得不做adduser $USER audio,断开连接然后重新连接。