我正在使用带有PyQT4绑定的Python编写应用程序,它应该是多平台的。
我使用的Python版本是3.3。
我无法在MS WindowsXP下构建pysox(Python的SoX绑定),尽管我逐步地设法做到了:
-使用VC ++ 10.0 Express从源代码编译Sox 14.4.1。
-编译Cython以编译pysox。
现在它无法构建,说找不到strings.h(如果我将带有libsox.lib的SoX源alonside放入pysox的相应目录中),那么-找不到其他东西,等等。
简而言之,它无法编译,因为它继续询问特定于Linux的标头,因为我在Windows下,所以我现在不需要这些标头。

问题是,是否可以在Windows AT ALL下编译pysox?还是我宁愿在Linux下编译它,然后将编译的库导入Windows,因为Python是多平台的?

最佳答案

对于每个人阅读此书并将头撞在墙上的人:
不要打扰
我并不是说这是不可能的,但是当这不容易做到时,只需提出一个简单的解决方案即可。
Sox是命令行工具。已经为您编译了最新的Windows版本,因此您完全不需要pysox
这是一个Python 3示例,如何使用sox.exe,只要它与您的应用程序一起分发并且位于同一文件夹中:

    command = """sox.exe "{0}" """.format(FilePath)
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    sox = subprocess.Popen(command, startupinfo = startupinfo)


您不会看到任何弹出窗口,几乎没有延迟,如果您确实需要,可以实现回调函数。
这是可用命令的完整列表:
http://sox.sourceforge.net/sox.html

唯一的坏处是,例如,不可能将Ctrl+C命令作为子进程发送到sox.exe以停止记录。因此,我最终使用pyaudio进行记录,并使用sox.exe将具有特定参数的.wav转换为.ogg

关于python - Windows下的pysox,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17833498/

10-08 22:38