python - 树莓派 3 : Unusual behaviour with mpd, PiFi DAC+ 音频

标签 python audio raspberry-pi

我正在寻求帮助,因为我对此感到有点沮丧...... :-(

我有一个带有 PiFi DAC+ 的 headless Raspberry PI 3声卡,基本上是 HiFiBerry 的克隆。在我安装的 PI 上 mpdmpc作为客户。
在这些之上,我编写了一个 python 脚本,它调用一些 mpc 命令来控制底层 mpd 守护进程(加载播放列表、播放流......)。

现在的问题。
基于 hifiberry-dacplus 覆盖的整体音频设置效果很好,声音很好,我很好。 Mpc & mpd 工作,我可以通过 mpc 毫无缺陷地控制 mpd 的所有功能(至少是我需要的功能)......但是,如果我突然尝试运行我的 python 脚本,我就再也听不到任何声音了,即使没有具体的错误被追踪。

“可怕”的事情是,在中止脚本执行后,我不再能够播放任何声音(我尝试使用 aplay 处理几个 wav 文件),并且日志文件中再次没有出现特定错误......看起来就像有人只是“静音”了音量,但是 alsamixer将所有播放级别显示为 100%。我需要重新启动 PI 才能恢复声音。

我在通常的地方检查了线索:

  • /var/log/messages
  • /var/log/syslog
  • dmesg
  • 引导日志
  • /var/log/mpd/mpd.log

  • 我也跑aplay -vvv当音频被阻止并将输出与音频运行良好但我没有注意到任何区别的 session 进行比较时...

    我知道如果无法访问我的系统就很难诊断问题,但是如果出现问题,您有什么想法可以去哪里了解吗?

    仅供引用,这是我的aplay -l输出:
    **** List of PLAYBACK Hardware Devices ****
    card 0: sndrpihifiberry [snd_rpi_hifiberry_dacplus], device 0: HiFiBerry DAC+ HiFi pcm512x-hifi-0 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    

    谢谢!

    米歇尔

    编辑 :似乎音频板和我用来显示我正在播放的流的名称的 16x2 LCD 显示器之间存在一些不兼容。显示器是一种非常常见的显示器,基于 HD44780 芯片。

    我的代码使用了可用的 AdaFruit python 库 here要驱动它,我仍然必须弄清楚问题出在哪里:音频板,根据 HiFiberry docs通过 GPIO 2、3、18、19、20、21 连接(加上接地和 +5V 电源),所以它不应该与使用不同引脚的 LCD 造成任何冲突,但我不会打赌。

    无论如何,从 python 代码中删除 LCD 管理部分(但将显示器物理连接到 RaspBerry 引脚)显然解决了问题......

    我会不断更新这个问题,也许对其他人有用,谁知道!

    最佳答案

    好,我知道了。像往常一样,我只是在没有正确阅读代码的情况下使用 CTRL-C 和 CTRL-V 太快了……

    我没有注意到我在我的 python 代码中留下了这个语句

    lcd_backlight = 2 #GPIO pin to control lcd backlight
    

    实际上 GPIO 2(这是 Raspberry 上启用 I2C 的两个引脚之一)没有连接到 LCD,但它被音频板使用出于配置目的:这样,每当我尝试初始化 LCD 时,音频板都会以某种方式重新配置,使其“静音”。重置错误配置的唯一方法是重新启动 PI 本身。

    只需为背光控制引脚(我不需要它)保留默认的“无”值就可以了。

    关于python - 树莓派 3 : Unusual behaviour with mpd, PiFi DAC+ 音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48978654/

    相关文章:

    python - 按创建/修改日期查找文件,然后 move 到 Python 中的另一个目录

    python - 如何恢复 QTableView 中 QComboBox 委托(delegate)的索引?

    javascript - Safari 5.1.7和IE中的JavaScript Audio不起作用

    android - 如何正确暂停AudioTrack并恢复平稳播放?

    raspberry-pi - 使用运动在树莓派上进行离线网络摄像头流

    Python时间延迟

    c++ - 从 IStream 读取到缓冲区(音频)

    node.js - 无法连接到树莓派上的nodejs服务器

    c - 为什么 I2C_SMBUS_BLOCK_MAX 被限制为 32 字节?

    Python - 在不同的线程上发送带有相同附件的多封电子邮件