2012-04-07 21 views
7

के साथ पॉपअप Icord का उपयोग कर पाइथन के साथ एक स्ट्रीम रिकॉर्ड और कनवर्ट करने का प्रयास कर रहा हूं।पृष्ठभूमि प्रक्रिया subprocess.Pipeen पाइप

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

पायथन में मैं 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 कमांड

के साथ रिकॉर्डिंग को रोकने में सक्षम होने के लिए कोड में समान कुछ

उत्तर

9

यदि आप उपप्रोसेसेस को निष्पादित करते समय मुख्य पायथन प्रक्रिया को अवरुद्ध नहीं करना चाहते हैं, तो बस p2.communicate() पर कॉल न करें। subprocess.Popen() पर कॉल अवरुद्ध न करें।

+1

बहुत बहुत धन्यवाद। बर्बाद घंटे एक रास्ता खोजने की कोशिश कर रहे हैं और कभी-कभी जवाब सिर्फ इतना आसान है –

संबंधित मुद्दे