Wrap ffmpeg zum Extrahieren von Audio aus Video in einer Python-Funktion

Wrap ffmpeg zum Extrahieren von Audio aus Video in einer Python-Funktion

Ich möchte ffmpeg in eine Python-Funktion einbinden, um Audio aus Videos zu extrahieren. Ich kann Audio erfolgreich über die Befehlszeile aus MP4-Videos extrahieren.

ffmpeg -i sourcevideo.mp4 -vn -acodec copy audiotrack.m4a

Aber die folgende Funktion wirft einen seltsamen Fehler aus und ich kann keine Lösung finden:

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())

Fehler:

[NULL @ 0x657480] Requested output format 'm4a' is not a suitable output format
pipe:: Invalid argument

Was mache ich falsch?

Antwort1

Habe die Lösung gefunden. MP4 kann nicht in eine Pipe schreiben und kann daher nicht streamen. Um streamen zu können, muss es in der Lage sein, zum Anfang der Datei zurückzukehren, um den Ausgabeheader zu schreiben, wenn es fertig ist.

Ich habe eine Lösung gefunden, um das Problem zu beheben. Fügen Sie einfach die Option -movflags frag_keyframe+empty_moov hinzu.

verwandte Informationen