繁体   English   中英

使用 Pyglet 播放音乐时出现 Python 错误:UserWarning:异常:访问冲突读取 0x00000014

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM