Quantcast
Channel: Python extract wav from video file - Stack Overflow
Viewing all articles
Browse latest Browse all 6

Python extract wav from video file

$
0
0

Related:

How to extract audio from a video file using python?

Extract audio from video as wav

How to rip the audio from a video?

My question is how could I extract wav audio track from video file, say video.avi? I read many articles and everywhere people suggest to use (from Python) ffmpeg as a subprocess (because there are no reliable python bindings to ffmpeg - the only hope was PyFFmpeg but i found it is unmaintaned now). I don't know if it is right solution and i am looking for good one.
I looked to gstreamer and found it nice but unable to satisfy my needs -- the only way I found to accomplish this from command line looks like

 gst-launch-0.10 playbin2 uri=file://`pwd`/ex.mp4  audio-sink='identity single-segment=true ! audioconvert ! audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)16000, channels=(int)1 ! wavenc !  filesink location=foo.wav’

But it is not efficient because i need to wait ages while playing video and simultaneously writing to wav file.

ffmpeg is much better:

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

But i am unable to launch it from python (not as a command line subprocess). Could you please point me out pros and cons of launching ffmpeg from python as a command line utility ? (I mean using python multiprocessing module or something similar).

And second question.

What is simple way to cut long wav file into pieces so that i don't break any words ? i mean pieces of 10-20 sec length with start and end during the pause in sentences/words ?

i know how to break them on arbitrary pieces:

import wavewin= wave.open('ffaudio.wav', 'rb')wout= wave.open('ffsegment.wav', 'wb')t0, t1= 2418, 2421 # cut audio between 2413, 2422 secondss0, s1= int(t0*win.getframerate()), int(t1*win.getframerate())win.readframes(s0) # discardframes= win.readframes(s1-s0)wout.setparams(win.getparams())wout.writeframes(frames)win.close()wout.close()

Viewing all articles
Browse latest Browse all 6

Latest Images

Trending Articles



Latest Images