pyaudio打印调试消息

2024-10-03 11:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是Windows7上的64位PyAudio版本here。当我导入pyaudio并执行pyaudio.PyAudio()时,它工作得很好,但是大量似乎是调试的信息被打印到stderr。在Stackoverflow上有一个关于这个here的问题,但它已经有一年多没有活动了,似乎还没有解决。在

正如这个问题的提问者在对答案的答复中所指出的,重定向stderr(通过执行sys.stderr = somethingelse)并不会阻止错误消息发送到stderr。即使有,我也不想为了处理PyAudio而重定向所有stderr。在

我怀疑问题是,这个PyAudio和/或它附带的PortAudio编译时使用了某种调试标志,导致调试信息在C扩展代码中的某个地方以“原始”的形式打印出来,绕过了Python IO流。所以我要问的是:

  1. 有人能确认这种行为吗,和/或确认它不会发生在不同版本的PyAudio for Win64上吗?(我没有编译PyAudio的设置。)
  2. 有没有办法在不重新编译PyAudio的情况下修复它?所谓的“修复”,我的意思是只抑制PyAudio的调试输出(不完全重定向stderr)。在

(如果只是这个版本的问题,我可能会尝试联系提供这些64位版本的人,询问他是否有意提供调试版本,因为有可能他只是在编译时忘了关闭调试。)


编辑:以下是我收到的消息。我试着把它们压缩一点,因为它们有几百行长。我还应该注意到,这些消息看起来不像是错误消息;它们只是关于各种设备的状态消息。我首先得到:

before paHostApiInitializers[0].
after paHostApiInitializers[0].
before paHostApiInitializers[1].
WASAPI: device idx: 00
WASAPI: ---------------
WASAPI:0| name[Realtek Digital Output (Realtek High Definition Audio)]
WASAPI:0| form-factor[8]
WASAPI:0| def.SR[48000] max.CH[2] latency{hi[0.010000] lo[0.003000]}
WASAPI: device idx: 01

然后是一系列类似的消息,从WASAPI开始,提到其他设备(线路输入、麦克风等)。然后:

^{pr2}$

。还有一堆关于“Enum called”和“capture alias”等类似的消息。然后:

Interfaces found: 7
Device 1 has render alias
Device 1 has capture alias
Interface 1, Name: ATI HD Audio rear output
Creating pin 0:
No standard streaming
Creating pin 1:
Not source/sink
Filter NOT created

。以及其他设备号的一系列类似的消息块。最后:

after paHostApiInitializers[2].

这就是我在做pyaudio.PyAudio()时看到的。在


Tags: 版本消息heredevice错误stderralias重定向