2013-07-24 97 views
1

我正在用PyQT4綁定編寫一個應用程序,它應該是多平臺的。 我使用的Python版本是3.3。 我無法在MS WindowsXP下編譯pysox(Python的SoX綁定),儘管我一步步設法: - 使用VC++ 10.0 Express從源代碼編譯Sox 14.4.1。 - 編譯Cython來編譯pysox。 現在它無法生成,說沒有找到strings.h(如果我將SoX源代碼alonside與libsox.lib一起放入pysox的相應目錄中),那麼 - 其他未找到的東西等等。 簡而言之,它無法編譯,因爲它繼續要求特定於Linux的頭文件,我現在不需要,因爲我在Windows下。在Windows下的pysox

問題是,是否有可能在Windows AT ALL下編譯pysox?或者我寧願在Linux下編譯它,然後將編譯的庫導入Windows,因爲Python是多平臺的?

+0

既然你有一個工作的Sox,你有沒有嘗試過從pip安裝pysox? –

+0

在Windows上可以這樣做嗎?我需要Cygwin嗎? –

+0

我不知道。正如我所說的,我只是嘗試通過pip安裝pysox,看看會發生什麼。 –

回答

0

給每個人讀這個東西並把他們的頭撞到牆上: 不要打擾。 我並不是說這是不可能的,但當它不容易時,只需製作一個更簡單的解決方案即可。 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與具體參數。