Correlati:Python estratto wav da file video
How to extract audio from a video file using python?
Extract audio from video as wav
How to rip the audio from a video?
mia domanda è come ho potuto estrarre traccia audio WAV da file video, dire video.avi
? Ho letto molti articoli e dappertutto le persone suggeriscono di usare (da Python) ffmpeg
come sottoprocesso (perché non ci sono collegamenti Python affidabili per ffmpeg - l'unica speranza era PyFFmpeg
ma ho trovato che non è ancora intesa). Non so se sia la soluzione giusta e sto cercando uno buono.
ho cercato di gstreamer e hanno trovato bello, ma in grado di soddisfare i miei bisogni - l'unico modo che ho trovato per raggiungere questo obiettivo da riga di comando si presenta come
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’
Ma non è efficiente perché ho bisogno di aspettare dei secoli, mentre riprodurre video e contemporaneamente scrivere in un file wav.
ffmpeg
è molto meglio:
avconv -i foo.mp4 -ab 160k -ac 1 -ar 16000 -vn ffaudio.wav
Ma io sono in grado di lanciarlo in pitone (non come una linea sottoprocesso di comando). Potresti per favore indicarmi i pro e i contro del lancio di ffmpeg da python come utility da riga di comando? (Voglio dire usando il modulo python multiprocessing
o qualcosa di simile).
E seconda domanda.
Qual è il modo semplice per tagliare i file wav lunghi in modo che non si rompa alcuna parola? Voglio dire pezzi di 10-20 secondi di lunghezza con inizio e fine durante la pausa in frasi/parole?
so come rompere loro su pezzi arbitrarie:
import wave
win= wave.open('ffaudio.wav', 'rb')
wout= wave.open('ffsegment.wav', 'wb')
t0, t1= 2418, 2421 # cut audio between 2413, 2422 seconds
s0, s1= int(t0*win.getframerate()), int(t1*win.getframerate())
win.readframes(s0) # discard
frames= win.readframes(s1-s0)
wout.setparams(win.getparams())
wout.writeframes(frames)
win.close()
wout.close()
Hai detto 'ffmpeg', ma stai usando' avconv'. – LordNeckbeard
Vedere http://stackoverflow.com/questions/9477115/who-can-tell-me-the-difference-and-relation-between-ffmpeg-libav-and-avconv. Sono progetti diversi e sostituzioni l'una con l'altra. 'avconv' se fork di' ffmpeg' che è stato fatto per allontanarsi dal 'progetto FFmpeg'. – xolodec
Se lanciate ffmeg in ubuntu vedrete un messaggio come questo: 'Il programma ffmpeg è fornito solo per la compatibilità degli script e verrà rimosso in una versione futura. È stato deprecato nel progetto Libav per consentire miglioramenti della sintassi della riga di comando incompatibili nella sua sostituzione chiamata avconv. Per favore usa avconv invece. – xolodec