【问题标题】:ALSA (snd_pcm_open) over SSH?SSH 上的 ALSA (snd_pcm_open)?
【发布时间】:2012-02-08 09:23:23
【问题描述】:

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

这可能是什么问题?

谢谢!

编辑:如果我使用远程计算机上的控制台运行应用程序(走到计算机,登录,运行应用程序),应用程序运行良好。

【问题讨论】:

  • 您希望音频在远程机器上播放,对吗?而且远程机器也用alsa,而且配置正确?
  • 是的。实际上,我的应用程序会录制音频,但这应该没什么区别,对吧?远程机器也使用 ALSA,是的。如果我在远程机器上本地运行我的应用程序(走到计算机,登录,启动我的应用程序)它就可以工作。

标签: ssh alsa


【解决方案1】:

问题可能出在/dev/snd/* 访问权限上。 确保用户在音频组中。 就我而言,我必须这样做 adduser $USER audio,断开连接然后重新连接。

【讨论】:

    【解决方案2】:

    只是为了检查一下:远程机器上的声卡驱动程序是否加载并正常工作?检查/proc/asound/cards 并查看卡片是否已列出。

    【讨论】:

    • 是的,远程机器上一切正常。请参阅我对原始问题的编辑。
    【解决方案3】:

    只是为了确认...您已经在远程机器上安装了应用程序,并且远程机器还有其他工作方式等?必须设置远程计算机,以便如果您要从控制台登录并运行应用程序,它就可以工作

    如果是这种情况,请检查您的环境变量,因为有时它们可​​能会略有不同。

    【讨论】:

    • 如果我在远程机器上本地运行我的应用程序(走到远程计算机,登录,启动我的应用程序)它可以工作。因此,如果我从控制台运行,它可以工作。如果我通过 SSH 运行,snd_pcm_open 会失败。应该在问题中写下,对不起。
    • 在两种不同条件下登录时检查您的环境变量,请执行env > walklogin.txtenv > sshlogin.txt。然后diff sshlogin.txt walklogin.txt 看看有什么区别
    • 我这样做了,有一些差异,但我看不到任何会干扰音频或录音的东西。我应该寻找什么?
    • 如果没有明显的“声音设置”类型的变量,库和路径是您的第一站
    【解决方案4】:

    找到原因了。原来/dev/audio/dev/snd/ 下面的设备都归用户所有,在远程计算机上登录,其他人无法读取/写入。为了测试,我申请了chmod 777 /dev/audio /dev/snd/*,它开始工作了。

    任何人都知道我可以如何为远程计算机的音频设备应用更宽松的权限(重启后会持续)?

    【讨论】:

      猜你喜欢
      • 2013-10-27
      • 2017-06-20
      • 2016-01-11
      • 2019-12-23
      • 2018-02-12
      • 2018-01-08
      • 2014-10-23
      • 1970-01-01
      • 2014-03-03
      相关资源
      最近更新 更多