7

arecordを使用してPythonでストリームを記録および変換しようとしています。

シェルでは、これは多かれ少なかれ次のようなコマンドです。

arecord -B 5000 -f dat | lame -m j -q 5 -V 2 - test.mp3 &

Pythonでは、subprocess.Popenでこれを試しました:

reccmd = ["arecord", "-B", "5000", "-f", "dat"]
mp3cmd = ["lame", "-m", "j", "-q", "5", "-V", "2", "-", "test.mp3"]
p = subprocess.Popen(reccmd, stdout=subprocess.PIPE)
p2 = subprocess.Popen(mp3cmd, stdin=p.stdout)
p2.communicate()

しかし、コードに「&」または同様のものを含めて、録音を停止できるようにする方法がわかりません

killall arecord指図

4

1 に答える 1

9

サブプロセスの実行中にメインの Python プロセスをブロックしたくない場合は、単純に を呼び出さないでくださいp2.communicate()subprocess.Popen()ブロックしない呼び出し。

于 2012-04-07T21:07:52.337 に答える