我正在尝试使用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
命令
答案 0 :(得分:9)
如果您不希望在执行子进程时阻止主Python进程,则只需不要调用p2.communicate()
。对subprocess.Popen()
的调用不会阻止。