【问题标题】:how to install portaudio on pi properly如何在 pi 上正确安装 portaudio
【发布时间】:2020-03-19 05:23:51
【问题描述】:

我正在开展一个项目,该项目涉及从树莓派上的麦克风进行录音。 现在我在程序运行时收到此错误。

python3: src/hostapi/alsa/pa_linux_alsa.c:3641: PaAlsaStreamComponent_BeginPolling:断言 `ret == self->nfds' 失败的。中止

在寻找解决此问题的方法时,我发现文件 pa_linux_alsa.c 属于端口音频。请参考以下链接。

modified pa_linux_alsa.c i think

how to install port audio

download link

第一个链接是关于错误和修改的修复,仍然不知道在哪里复制,最后两个是关于安装 portaudio。显然没有更简单的方法来使用命令安装它。

我下载了它的 pa_snapshot 增强版。 但我不知道我应该把这些文件放在哪里开始配置和制作自述文件。我将 portaudio 目录复制到 home/pi (在我认为的用户中。“cd”并将其复制到那里)然后按照自述文件中的操作并重新启动系统。我没有看到程序中的错误有任何变化。我尝试将命令 whereis 与 pa_linux_alsa.c 一起使用。该命令也不会显示文件或与 portaudio 相关的任何内容。

【问题讨论】:

  • 对于任何来这里的人,这个问题不是 Raspberri Pi 独有的

标签: audio raspberry-pi alsa pyaudio portaudio


【解决方案1】:

您的第一个链接正确识别了 portaudio 中的错误,但修复不完整。我分叉了 portaudio 库并创建了一个补丁来解决这个问题。以下是删除 portaudio 包并从源代码编译补丁版本的步骤:

sudo apt-get remove libportaudio2
sudo apt-get install libasound2-dev
git clone -b alsapatch https://github.com/gglockner/portaudio
cd portaudio
./configure && make
sudo make install
sudo ldconfig
cd ..

此时,您应该有一个基于 pa_stable_v190600_20161030 标记的修补过的 portaudio 库。最后,如果您需要 Python 的 PyAudio 包,请使用 pip 安装它:sudo pip3 install pyaudio

【讨论】:

  • commit 80aafc6(即alsapatch 分支的提示)似乎不必要地删除了很多错误处理。我提交了一个更简洁的patch to the portaudio mailing list 版本,这可能更可取
  • 有谁知道上游是否已经完全解决/解决了这个问题?
  • 我现在才注意到Debian is pulling in my patch。因此,使用软件包版本 19.6.0-1.1(或更高版本)可能会在 Debian 上修复它。 ubuntu好像还没捡起来,因为我这几天都在用Arch所以没法测试
  • Looks like 它进入了下一个 Ubuntu 版本,if I'm looking properly
  • 据我所知,2020 年 12 月 18 日,对此的修复(将断言切换到至少更好的错误处理)与此拉取请求 github.com/PortAudio/portaudio/pull/344 合并
猜你喜欢
  • 2022-11-24
  • 2020-12-15
  • 2021-09-15
  • 2021-08-31
  • 2015-08-02
  • 2019-09-15
  • 2016-01-06
  • 2022-01-15
相关资源
最近更新 更多