我正在查看pyopenal,以了解关于python的一些声音需求(显然)。文档是稀疏的(由一个演示脚本组成,它不能在未修改的情况下工作),但据我所知,有两个层。直接包装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)。仍然对我应该在这里做什么感到好奇。