Hello,
I'm developing a game using Pyglet that plays Mp3 files so it uses AVBin.dll.
Some users are using Win7 and Vista with DEP enabled, so they receive errors like:
Traceback (most recent call last):
File "Engine001.py", line 243, in <module>
File "pygletmedia__init__.pyc", line 1386, in load
File "pygletmediaavbin.pyc", line 247, in __init__
WindowsError: exception: access violation writing 0x6E6BBA88
or
Traceback (most recent call last):
File "Engine001.py", line 243, in <module>
File "pyglet\media\__init__.pyc", line 1386, in load
File "pyglet\media\riff.pyc", line 202, in __init__
pyglet.media.riff.WAVEFormatException: AVbin is required to decode compressed media
I know this has been reported several times and the solution is disable or configure DEP. In fact, if they disable DEP (or configure for Windows programs and services only) the game runs correctly.
Unfortunately it seems that it is very hard to ask users to disable or configure DEP just to play my game :(
So I'm using the attached code as a workaround.
Do you think that there is a better way? Would you recommend me a different audio library?
I just want to loop mp3/ogg files and play wav files for player's actions.
Thank you
JF
CODE:
import pyglet
try:
import pyglet.media.avbin
have_avbin = True
except:
have_avbin = False
#print have_avbin
#For MP3s:
if have_avbin:
mp3 = pyglet.resource.media("media\pyweek.mp3")
else:
mp3 = mp3play.load("media/pyweek.mp3")
#For Wav's
if have_avbin:
wavJump = pyglet.resource.media("sounds/salto.wav",streaming=False)
wavJump.play()
else:
winsound.PlaySound("media/salto.wav",winsound.SND_ASYNC)
window = pyglet.window.Window(200,40)
label = pyglet.text.Label("AVBin Test: %s" % have_avbin)
@window.event
def on_draw():
window.clear()
label.draw()
pyglet.app.run()