audio - Python extract wav from video file -


संबंधित:

मेरा प्रश्न है कि मैं कैसे वीडियो फ़ाइल से wav ऑडियो ट्रैक निकाल सकता हूँ, video.avi कहें? मैं कई लेख पढ़ता हूं और हर जगह लोगों को सुझाव देता हूं कि (पायथन से) ffmpeg एक उपप्रक्रिया के रूप में (क्योंकि कोई विश्वसनीय अजगर बाइंडिंग नहीं है - केवल एकमात्र आशा थी PyFFmpeg लेकिन मैं पाया यह अब unmaintened है)। मुझे नहीं पता कि यह सही समाधान है और मैं अच्छे के लिए देख रहा हूं।
मैंने जीस्ट्रिमर को देखा और मुझे अच्छा लगा, लेकिन मेरी जरूरतों को पूरा करने में असमर्थ - एकमात्र तरीका है जो इसे कमांड लाइन से पूरा करने के लिए मिला I

<पूर्व> gst-launch-0.10 playbin2 uri = फ़ाइल: // `pwd` / EX.mp4 ऑडियो-सिंक = 'पहचान एकल खंड = सच! ऑडियोकॉनवर! ऑडियो / एक्स-कच्चे- int, एंडियननेस = (इंट) 1234, हस्ताक्षर किए = (बूलियन) सही, चौड़ाई = (इंट) 16, गहराई = (इंट) 16, रेट = (इंट) 16000, चैनल = (इंट) 1! Wavenc! Filesink location = foo.wav '

लेकिन यह कुशल नहीं है क्योंकि मुझे वीडियो चलाने के दौरान उम्र की प्रतीक्षा करने की आवश्यकता है और साथ ही wav फाइल को लिखना

ffmpeg बहुत बेहतर है:

  avconv -i foo.mp4 -ab 160k -ac 1 -ar 16000 -vn ffaudio.wav < / Code> 

लेकिन मैं इसे अजगर से लॉन्च करने में असमर्थ हूं (कमांड लाइन सबप्रोसेस के रूप में नहीं) क्या आप मुझे पाइथन से ffmpeg को एक कमांड लाइन उपयोगिता के रूप में लॉन्च करने के पेशेवर और विपक्ष को सूचित कर सकते हैं? (मेरा अर्थ है अजगर मल्टीप्रोसेसिंग मॉड्यूल या कुछ इसी तरह का)।

और दूसरा प्रश्न।

क्या आसान तरीका है कटौती लंबे समय तक wav फ़ाइल टुकड़ों में इतना है कि मैं किसी भी शब्द को तोड़ नहीं है? वाक्यों / शब्दों में विराम के दौरान शुरू और अंत के साथ 10-20 सेकंड लंबाई के टुकड़े का मतलब है?

मुझे पता है कि उन्हें मनमानी टुकड़ों पर कैसे तोड़ना है:

  आयात करें लहर जीत = लहर। Open ('ffaudio.wav', 'rb') wout = wave.open ('Ffsegment.wav', 'wb') t0, t1 = 2418, 2421 # 2413, 2422 सेकंड s0, s1 = int (t0 * win.getframerate ()), int (t1 * win.getframerate () के बीच कट ऑडियो ) Win.readframes (s0) # डिस्कार्ड फ़्रेम = win.readframes (s1-s0) wout.setparams (win.getparams ()) wout.writeframes (फ्रेम) win.close () wout.close ()  <  python 

यह ffmpeg के साथ python उपप्रक्रिया और एक कारण है कि लोग इस समाधान को एक अच्छा समाधान के रूप में इंगित कर रहे हैं।

यह एक दिए गए वीडियो फ़ाइल से ऑडियो निकालने का बुनियादी आदेश है:

Ffmpeg -i test.mp4 -ab 160k -ac 2 -ar 44100 -vn audio.wav

पायथन कोड बस यह कमांड लपेट रहा है:

  आयात सबप्रोसेक्शन कमांड = "एफएफएमपीईजी -i सी: / टेस्ट। एमपी 4-बी 160के -एसी 2-एआर 44100-वीएन ऑयू Dio.wav "subprocess.call (command, shell = true)  

आपको यह सुनिश्चित करना है कि ffmpeg एक ज्ञात कार्य है, इसलिए आपके सिस्टम वातावरण चर में, पथ के नीचे, पथ Ffmpeg.exe सूचीबद्ध होना चाहिए, या आप अपने अजगर कोड में exe के पूर्ण पथ का उपयोग कर सकते हैं।


Comments