Пакет работает только правильно в IDLE или интерпретаторе, но не независимо? - PullRequest
0 голосов
/ 21 февраля 2011

Я пытался добавить звуковые сигналы в программу, над которой я работаю, используя Py-Audiere.Однако звуки воспроизводятся только тогда, когда я использую команду запуска в IDlE (или вручную помещаю ее в интерпретатор), и только в том случае, если вызовы выполняются определенным образом.Вот фрагмент кода:

import audiere

filename = 'Bell'
d = audiere.open_device()
filename += '.mp3'
bell = d.open_file(filename)
bell.repeating = True

def play_tone():
    bell.play()

play_tone()

Если я запускаю его вне IDLE, ничего не происходит.Если я запускаю его в режиме IDLE, но перенесу все в функцию и передам имя файла, ничего не произойдет.

Я очень смущен тем, что происходит с этой библиотекой, и на данный момент я неуверен, что я должен даже использовать это.Кто-нибудь знает, что происходит, или у меня есть альтернатива (я рассматривал GStreamer, но не могу выяснить их документацию)?

1 Ответ

1 голос
/ 21 февраля 2011

Я немного поэкспериментировал с audiere (никогда раньше не слышал об этой библиотеке), и похоже, что он воспроизводит звук в новом потоке на заднем плане.

В своем фрагменте кода вы говорите Одьеру, чтобы он начал играть на вашем колоколе, но вы никогда не даете ему достаточно времени, чтобы полностью его воспроизвести. Когда вы запускаете это в режиме ожидания или в интерпретаторе Python, это не имеет значения, поскольку процесс Python все еще выполняется, и поэтому звук просто воспроизводится в фоновом режиме.

На их веб-сайте есть небольшой фрагмент, который показывает, как этого можно добиться:

import time
def play_tone():
    bell.play()
    while bell.playing:
        time.sleep(0.1)

Что касается gstreamer, документация может быть немного сложной, если вы никогда не использовали ее раньше. Лучший способ научиться пользоваться им - это просто поэкспериментировать с ним. Некоторые хорошие моменты для начала - это учебное пособие , которое объясняет основы работы gstreamer. Этот фрагмент кода показывает, как воспроизводить с ним один звуковой файл. И этот irc разговор также полезен, если вы хотите прочитать его.

...