Videodateien mit FFmpeg zusammenfügen

05.03.2016 20:41

Früher war das ganz leicht, zwei Filmestücke miteinander zu verbinden. Mit etwas transparentem Klebeband konnten das Ende und der Anfang einfach zusammengeklebt werden. Wie wird das heutzutage gemacht?

Grundsätzlich muss zwischen zwei Vorgehensweisen unterschieden werden. Haben alle Videodateien das selbe Format, können die Teile einfach aneinander gehängt werden. Dies ist üblicherweise in wenigen Sekunden erledigt. Sind die Formate allerdings unterschiedlich, muss alles neu enkodiert werden, was rechenintesiv ist und dementsprechend viel Zeit in Anspruch nehmen kann.

Zu beachten gilt es auch, dass ein Video aus Bild und Ton besteht. Somit muss auch die Audiospur aus den Einzelteilen das selbe Format haben oder sonst auf eine gemeinsame Basis enkodiert werden. In den meisten Fällen ist dies der Fall.

Mit FFmpeg gibt es ein Hilfsmittel, welches all diese Fälle behandeln kann und für viele Plattformen verfügbar ist.

Gehen wir von zwei Videodateien aus, welche zusammengefügt werden sollen. Beide Dateien haben genau das selbe Format.

ffmpeg -i "concat:teil1.avi|teil2.avi" -vcodec copy -acodec copy ausgabe.avi

Der Parameter -i steht für “input” und definiert somit alle Quellen. Weiter definieren die Parameter -vcodec und -acodec, das Video- und Audioformat für die Ausgabe. In diesem Fall, sollen diese von der Eingabe kopiert werden.

Soll die Audiospur neu enkodiert werden, wird copy durch mp3 oder einen anderen Codec ersetzt. Sind die Formate unterschiedlich, können damit diese auf einen Nenner gebracht werden.

Haben die Videospuren ein unterschiedliches Format, die Auflösung ist nicht gleich oder es gibt andere Unterschiede, wird die Aufgabe einiges komplexer. Mittels Filter könnte das Ziel erreicht werden, jedoch ist es um einiges einfacher erst alle Videos zu konvertieren.

FFmpeg ist ein sehr mächtiges und vielseitiges Tool, um Videos zu manipulieren. Weitere Anwendungszwecke wären das Konvertieren oder dem Hinzufügen von Wasserzeichen.