我正在使用 Python 寻找 PyOpenAL 的一些声音需求(显然)。文档很少(由一个演示脚本组成,未经修改就无法工作),但据我所知,有两层。OpenAL 调用的直接包装和轻量级的“pythonic”包装器——我关心的是后者。具体来说,如何正确清理?如果我们举一个小例子:
import time
import pyopenal
pyopenal.init(None)
l = pyopenal.Listener(22050)
b = pyopenal.WaveBuffer("somefile.wav")
s = pyopenal.Source()
s.buffer = b
s.looping = False
s.play()
while s.get_state() == pyopenal.AL_PLAYING:
time.sleep(1)
pyopenal.quit()
实际上,一条消息按照“一个源未删除,一个缓冲区未删除”的行打印到终端上。但我假设我们不能对这些对象使用本机 OpenAL 调用,那么我该如何正确清理呢?
编辑:
我最终放弃了 pyopenal 并在 OpenAL 和 alure 上编写了一个小的 ctypes 包装器(pyopenal 公开了直接的 OpenAL 函数,但我一直得到 SIGFPE)。仍然好奇我应该在这里做什么。