1

我正在使用 Python 和 PyQT4 绑定编写一个应用程序,它应该是多平台的。我使用的 Python 版本是 3.3。我无法在 MS WindowsXP 下构建 pysox(用于 Python 的 SoX 绑定),尽管我已经逐步设法: - 使用 VC++ 10.0 Express 从源代码编译 Sox 14.4.1。- 编译 Cython 以编译 pysox。现在它无法构建,说找不到 strings.h(如果我将 SoX 源与 libsox.lib 一起放入 pysox 的相应目录中),然后 - 找不到其他东西,等等。简而言之,它无法编译,因为它继续要求 Linux 特定的头文件,我现在不需要,因为我在 Windows 下。

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

4

1 回答 1

4

致所有读到这篇文章并把头撞到墙上的人: 不要打扰。 我并不是说这不可能,但是当它不容易时,只需做一个更简单的解决方案。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特定参数。

于 2016-04-20T06:35:55.400 回答