1

マルチプラットフォームである必要があるPyQT4バインディングを備えたPythonを使用してアプリケーションを作成しています。私が使用している Python のバージョンは 3.3 です。MS WindowsXP で pysox (Python 用の SoX バインディング) をビルドできませんでしたが、段階的に次のことができました: - VC++ 10.0 Express を使用して、ソースから Sox 14.4.1 をコンパイルします。- Cython をコンパイルして pysox をコンパイルします。現在、strings.h が見つからない (pysox の対応するディレクトリに libsox.lib と一緒に SoX ソースを配置した場合) と言って、ビルドに失敗します。 Linux 固有のヘッダーを引き続き要求するため、コンパイルします。これは、Windows を使用しているため、今は必要ありません。

問題は、Windows AT ALL で pysox をコンパイルすることは可能ですか? または、Python はマルチプラットフォームであるため、Linux でコンパイルしてから、コンパイルしたライブラリを Windows にインポートする必要がありますか?

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 に答える