pyaudio打印调试消息

时间:2012-11-19 03:57:01

标签: python win64 pyaudio

我正在使用Windows 7上的64位PyAudio版本here。当我导入pyaudio并执行pyaudio.PyAudio()时,它工作正常,但是大量的东西似乎是调试的信息打印到stderr。 Stackoverflow上有一个关于此here的问题,但它在一年多的时间内没有活动,似乎没有解决。

正如该问题的提问者在回答答案时指出的那样,重定向stderr(通过执行sys.stderr = somethingelse)并不会阻止错误消息进入stderr。即使它确实如此,我也不想重定向所有stderr只是为了处理PyAudio。

我怀疑问题是这个版本的PyAudio和/或它附带的PortAudio是用某种调试标志编译的,这会导致调试信息在C扩展名的某处打印“raw”代码,绕过Python IO流。所以我要问的是:

  1. 任何人都可以确认这种行为,并且/或者确认使用不同版本的PyAudio for Win64不会发生这种情况吗? (我没有编译PyAudio的设置。)
  2. 有没有办法解决它而不重新编译PyAudio?通过“修复它”我的意思是从PyAudio中禁止此调试输出 (不完全重定向stderr)。
  3. (如果这只是这个版本的一个问题,我可能会尝试联系已经提供这些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开头并提及其他设备(线路输入,麦克风等)。然后:

    WASAPI: initialized ok
    after paHostApiInitializers[1].
    before paHostApiInitializers[2].
    Setup called
    Enum called
    noError = 0
    Enum called
    noError = 1
    Device 1 has render alias
    Device 1 has capture alias
    

    。 。 。还有一堆关于“Enum叫”和“捕获别名”等类似的消息。然后:

    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()时所看到的。

0 个答案:

没有答案