Me gustaría incluir ffmpeg en una función de Python para extraer audio de un video. Puedo extraer con éxito audio de videos mp4 en la línea de comando.
ffmpeg -i sourcevideo.mp4 -vn -acodec copy audiotrack.m4a
Pero la siguiente función arroja un error extraño y no puedo encontrar una solución:
def extractAudioTrack(self,inputFilename):
print "extract audio from of: " + inputFilename
command = [ FFMPEG_BIN,
'-i', inputFilename,
'-vn',
'-acodec', 'copy',
'-f', 'm4a',
'-'
]
pipe = sp.Popen(command, stdout = sp.PIPE)
return StringIO(pipe.proc.stdout.read())
Error:
[NULL @ 0x657480] Requested output format 'm4a' is not a suitable output format
pipe:: Invalid argument
¿Qué estoy haciendo mal?
Respuesta1
Encontré la solución. MP4 no puede escribir en una tubería y, por lo tanto, no puede transmitir. Para poder transmitir, debe poder buscar el principio del archivo para escribir el encabezado de salida cuando finalice.
Encontré una solución para solucionar este problema. Simplemente agregue la opción -movflags frag_keyframe+empty_moov.