[英]Python error when playing music with Pyglet: UserWarning: exception: access violation reading 0x00000014
我使用方法、时间表和其他方法对该代码进行了多次迭代。 我设法克服了“访问冲突写入错误”,但无论我尝试什么,“访问冲突读取错误”仍然存在。 这是代码:
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)
我会很感激任何建议。 提前致谢。
好的,所以当我使用.wav 而不是.mp3 时,一切都自行解决了。 pyglet 似乎支持 mp3,但存在某种内部问题。 它也可能只是一个错误导出的文件。
你仍然需要这部分:
@window.event
def on_close():
player.delete()
如果 window 突然关闭,这保证了文件的正确关闭。 没有它,“访问冲突写入”错误仍然存在。
由于某种原因,此简单版本中不存在此错误:
import pyglet
window = pyglet.window.Window()
window.set_caption('First Pyglet Experiment')
music = pyglet.resource.media('background.wav')
music.play()
pyglet.app.run()
但是会在我更复杂的应用程序中引起问题。 可能 Player() 需要安全关闭。
我是 Pyglet 的代码贡献者,我编写了导致问题的编解码器。 这是一个错误,应该在下一个 pyglet 版本(1.5.6)中修复。
我最近添加了 Windows 媒体基础支持。 它允许解码像 mp3 这样的简单格式,而无需安装像 ffmpeg 这样的第三方库(否则只支持 wav)。 在遇到此问题的另一个人的帮助下,我能够复制此错误。 我将其范围缩小到仅影响 32 位 python 用户,但这是我的错误。
它适用于 wave 的原因是因为您实际上选择了不同的解码器。 有问题的解码器应该在下一个版本中修复。 很抱歉给您带来麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.