python-3.x - 在Pyglet(Raspberry Pi 4B,Raspbian)中播放音频时听不到声音

标签 python-3.x linux audio raspberry-pi pyglet

我在安装了Python 2.7和3.7的Raspberry Pi上运行最新版本的Raspbian。对于一个项目,我需要在Python中实现一些空间/双声道音频文件播放功能,而Pyglet(版本1.5.6)(https://pypi.org/project/pyglet/https://github.com/pyglet/pyglet)似乎是最简单且依赖最少的选项。但是,我无法通过耳机听到音频输出。这是我所做的:

  • 已安装的pyglet依赖项:sudo apt-get install ffmpeg libopenal1 libopenal-dev python3-pil.imagetk python3-pil python3-matplotlib python3-scipy gstreamer1.0-alsa gstreamer1.0-python3-plugin-loader(从以前的程序开始,系统还安装了cmake, python3-opencv libopencv-dev libusb-1.0-0-dev, libboost-program-options-devpython3-numpy)
  • 然后按照指南sudo pip3 install --upgrade pyglet中的说明安装pyglet。安装过程没有任何错误。
  • 我知道默认情况下,Raspbeery Pi通常会通过HDMI端口而不是A / V端口吐出音频。因此,我使用sudo raspi-config转到raspi-config,转到“高级选项”->“音频”。选择了正确的选项(在我的情况下为1 Headphones)。我通过在Raspberry Pi本身上播放几个youtube视频和音频文件来检查音频是否可以通过耳机正常播放。
  • 然后我通过在python shell中使用import pyglet导入pyglet来检查pyglet是否正常工作,它工作正常,没有任何警告或错误。
  • 我启动了此处提供的示例程序:https://github.com/pyglet/pyglet/tree/master/examples/soundspace。为此,我下载了repo https://github.com/pyglet/pyglet并移至正确的目录(通过cd命令),并写道:sudo python3 soundspace.py。为了简要概述,该程序包含4种仪器,可用鼠标将其拖动到整个房间中。这样,您从每种乐器听到的音频会根据这些乐器的位置和方向以及您在迷你游戏中的虚拟位置而变化。 程序执行时没有在终端上显示任何错误,但是我听不到任何声音。当我尝试移动对象时,程序冻结,但终端中未显示任何错误。
  • 因为我对复杂程序最不感兴趣,所以我继续创建自己的简单程序,该程序将播放wav文件(在有人说wav文件不兼容https://github.com/pyglet/pyglet/tree/master/examples/soundspace之前,它是从Pyglet开发人员存储库本身提供的),引用来源:https://pyglet.readthedocs.io/en/latest/programming_guide/media.html。这是代码段:
  • import pyglet
    pyglet.options['search_local_libs'] = True
    pyglet.options['audio'] = ('openal')
    source = pyglet.media.load('Bass.wav', streaming=False)
    source.play()
    

    根据文档,如果我没有记错的话,应该可以播放被馈送到源文件的wav文件。 该程序似乎在运行时未在终端上显示任何错误。但是我听不到该程序的任何音频输出。
  • 我还用pyglet.media.Player()弄乱了一点,但观察到的结果却是相同的:终端没有错误,但也没有音频。

  • 有关如何解决此问题的任何建议?请注意,我更喜欢使用Pyglet,因为这是唯一可以在不破坏操作系统的情况下几乎可以很好地工作的空间/双耳/位置音频Python软件包,因此,最好将替代建议与该软件包保持一定的内联,而不是完全不同。

    最佳答案

    https://github.com/NicklasTegner/PyAL因为我没时间了。我尝试了其他OpenAL Python库的尝试,并且这个库工作正常。
    编辑:实际的问题不是与Pyglet,而是与PulseAudio,与ALSA冲突。我通过连接外部USB音频卡解决了问题,并且音频工作正常(使用HRTF和所有设备)。

    关于python-3.x - 在Pyglet(Raspberry Pi 4B,Raspbian)中播放音频时听不到声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62481810/

    相关文章:

    Linux 批处理 : create multi folder by combine name with serial number

    linux - 命令在脚本中不起作用,但在 shell 中有效

    python - 如何找到python中有多少个单词?

    python - 右对齐python

    python - 对 python 负 decimal.Decimal 和正 int 进行模运算

    php - 如何重定向通过 screen -d -m 调用的 PHP 进程的 STDOUT?

    python - 如果用户输入字符串,则会出现错误

    javascript - 在另一个JavaScript函数中调用JavaScript函数

    audio - 带有位置音频SCNAudioPlayer的ARKit SceneKit ARSCNView不会停止播放

    java - 在android中从另一个音频文件中减去一个音频文件