Python ошибка при воспроизведении музыки c с Pyglet: UserWarning: исключение: чтение нарушения доступа 0x00000014 - PullRequest
1 голос
/ 27 апреля 2020

Я пробовал несколько итераций этого кода, используя методы, графики и другие. Мне удалось преодолеть «ошибку записи нарушения доступа», но «ошибка чтения нарушения доступа» все еще присутствует независимо от того, что я пытаюсь. Вот код:

import pyglet

window = pyglet.window.Window()
window.set_caption('First Pyglet Experiment')

player = pyglet.media.Player()
player.queue(pyglet.resource.media('test song.mp3'))
player.loop = True

@window.event
def on_close():
    player.delete()

player.play()  
pyglet.app.run()  

После того, как первое взаимодействие с моей песней выполнено, оно снова и снова вызывает эту ошибку:

D:\_Programming_\Python\venv\lib\site-packages\pyglet\media\codecs\wmf.py:771: UserWarning: exception: access violation reading 0x00000014
  warnings.warn(e)

Буду признателен за любой совет. Заранее спасибо.

1 Ответ

1 голос
/ 27 апреля 2020

Итак, все решилось само собой, когда я использовал .wav вместо .mp3. Кажется, что Pyglet поддерживает mp3, но имеет какую-то внутреннюю проблему с ним. Это также может быть просто неправильно экспортированный файл.

Вам по-прежнему нужна эта часть:

@window.event
def on_close():
    player.delete()

это обеспечило правильное закрытие файла, если окно было внезапно закрыто. Ошибка «нарушение прав доступа» все еще присутствует без нее.

По какой-то причине эта ошибка отсутствует в этой простой версии:

import pyglet

window = pyglet.window.Window()
window.set_caption('First Pyglet Experiment')

music = pyglet.resource.media('background.wav')
music.play()

pyglet.app.run()

Но вызывает проблемы в моем более сложном приложении. Возможно, Player () необходимо безопасно отключить.

...