我正在使用Python和PyQT4绑定编写一个应用程序,它应该是多平台的。 我使用的Python版本是3.3。 我无法在MS WindowsXP下构建pysox(Python的SoX绑定),尽管我已经设法: - 使用VC ++ 10.0 Express从源代码编译Sox 14.4.1。 - 编译Cython来编译pysox。 现在它无法构建,说没有找到strings.h(如果我将libsox.lib中的SoX源代码放入相应的pysox目录中),那么 - 找不到其他内容,等等。 简而言之,它无法编译,因为它继续要求特定于Linux的标头,我现在不需要它,因为我在Windows下。
问题是,是否可以在Windows AT ALL下编译pysox?或者我宁愿在Linux下编译它然后将编译的库导入Windows,因为Python是多平台的?
答案 0 :(得分:1)
每个读这篇文章的人都会把头撞到墙上:
不要打扰。
我不是说这是不可能的,但是当它不容易时,只需做一个更容易的解决方案。
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
。