7

我正在尝试使用 arecord 使用 python 记录和转换流。

在 shell 中,这是一个或多或少类似的命令:

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 回答