0

我正在使用 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)。仍然好奇我应该在这里做什么。

4

1 回答 1

1
#relese reference to l b and s
del l
del b
del s 
#now the WaveBuffer and Source should be destroyed, so we could:
pyopenal.quit()

退出之前可能会析构 pyopenal 调用quit(),因此您不需要自己调用它。

于 2009-08-17T11:05:42.880 回答