Не слышен звук при воспроизведении звука в Pyglet (Raspberry Pi 4B, Raspbian) - PullRequest
1 голос
/ 20 июня 2020

Я использую последнюю версию Raspbian на Raspberry Pi с установленными Python 2.7 и 3.7. Для проекта мне нужно реализовать некоторые возможности пространственного / бинаурального воспроизведения аудиофайлов в Python и Pyglet (версия 1.5.6) (https://pypi.org/project/pyglet/, https://github.com/pyglet/pyglet) кажется самым простым вариантом с наименьшими зависимостями. Однако я не слышу вывод звука через наушники. Вот что я сделал:

  1. Установленные зависимости пиглета: 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-dev и python3-numpy)
  2. Затем я установил пиглет как согласно данным в руководстве: sudo pip3 install --upgrade pyglet. Установка прошла без ошибок.
  3. Я знаю, что по умолчанию Raspbeery Pi часто выводит звук через порт HDMI, а не через порт A / V. Итак, я перешел в raspi-config, используя sudo raspi-config, перешел в Advanced Options -> Audio. Выбрал подходящий вариант (в моем случае 1 Headphones). Я проверил, нормально ли воспроизводится звук через мои наушники, проиграв пару видео с YouTube и аудиофайлов на самом Raspberry Pi.
  4. Затем я проверил, работает ли пиглет, импортировав пиглет с import pyglet в python shell, он работал нормально, без предупреждений или ошибок.
  5. Я запустил пример программы, представленный здесь: https://github.com/pyglet/pyglet/tree/master/examples/soundspace. Для этого я загрузил репо https://github.com/pyglet/pyglet и перешел в соответствующий каталог (с помощью команды cd) и написал: sudo python3 soundspace.py. Для краткого обзора программа содержит 4 инструмента, которые можно перемещать по комнате с помощью мыши. При этом звук, который вы слышите от каждого инструмента, изменяется в зависимости от положения и ориентации этих инструментов, а также от вашего виртуального положения в мини-игре. Программа выполняется без отображения ошибок в терминале, но я не слышу звука. Когда я пытаюсь переместить объекты, программа зависает, но в терминале не отображается никаких ошибок.
  6. Поскольку меня меньше всего беспокоила сложная программа, я решил создать свою собственную простую программа, которая будет воспроизводить файл wav (полученный из самого репозитория разработчика Pyglet, прежде чем кто-либо скажет, что файл wav несовместим https://github.com/pyglet/pyglet/tree/master/examples/soundspace), ссылка из: 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, которому удалось почти хорошо работать, не нарушая мою ОС, поэтому было бы лучше, если альтернативные предложения будут немного встроены в этот пакет и не совсем другое.

1 Ответ

0 голосов
/ 20 июня 2020

https://github.com/NicklasTegner/PyAL Поскольку у меня не было времени. Я пробовал поэкспериментировать с другими библиотеками OpenAL Python, и эта работает нормально.

Edit: Фактическая проблема была не с Pyglet, а с PulseAudio, который конфликтует с ALSA. Я решил проблему, подключив внешнюю звуковую карту USB, и звук работал нормально (с HRTF и всем остальным).

...