Wie konvertiere ich mit FFmpeg eine große Videodatei in mehrere kleinere Dateien?
- Einleitung
- Grundlagen der Aufteilung von Videodateien mit FFmpeg
- FFmpeg Segmentierung mit der Option segment
- Wichtige Hinweise zur Segmentierung
- Alternative: Aufteilen anhand von Zeitstempeln (Manuelles Schneiden)
- Fazit
Einleitung
FFmpeg ist ein leistungsstarkes und vielseitiges Kommandozeilen-Tool zur Bearbeitung von Audio- und Videodateien. Wenn Sie eine große Videodatei haben, die Sie in mehrere kleinere Dateien aufteilen möchten, können Sie dies mit FFmpeg relativ einfach tun. Dies ist besonders hilfreich, wenn Sie Videos für Web-Uploads, Archivierung oder zur einfacheren Handhabung aufteilen wollen.
Grundlagen der Aufteilung von Videodateien mit FFmpeg
Das Prinzip beim Aufteilen einer großen Videodatei in mehrere kleinere basiert hauptsächlich darauf, das Video an bestimmten Zeitpunkten aufzuschneiden. Dabei gibt es zwei gängige Methoden: Entweder man teilt das Video in gleich große Teile auf oder man bestimmt konkrete Zeitabschnitte, an denen geschnitten werden soll. FFmpeg ermöglicht auch das sogenannte Segmenting, bei dem das Video automatisch in Segmente einer definierten Dauer zerlegt wird.
FFmpeg Segmentierung mit der Option segment
Eine einfache und flexible Methode zur Aufteilung ist der Einsatz des Segment-Muxers von FFmpeg. Hierbei wird das Video automatisch in mehrere Dateien zerlegt. Die wichtigsten Parameter dabei sind -f segment für das Format und -segment_time für die Länge jedes Segments in Sekunden.
Zum Beispiel, wenn Sie eine große Datei namens input.mp4 haben und diese in Dateien zu je 10 Minuten (600 Sekunden) aufteilen möchten, lautet der Befehl:
ffmpeg -i input.mp4 -c copy -map 0 -f segment -segment_time 600 output_%03d.mp4Erklärung: -i input.mp4 lädt die Eingabedatei. Mit -c copy werden Audio und Video ohne Neukodierung (Speedvorteil!) kopiert. -map 0 stellt sicher, dass alle Streams (Video, Audio, Untertitel etc.) übernommen werden. -f segment aktiviert den Segment-Modus und -segment_time 600 legt die Segmentdauer auf 600 Sekunden fest. Die Ausgabe-Dateien heißen dann output_000.mp4, output_001.mp4 und so weiter.
Wichtige Hinweise zur Segmentierung
Da die Videos beim copy-Modus nicht neu kodiert werden, erfolgt der Schnitt meist an den sogenannten Keyframes. Wenn die Segmentzeit nicht exakt an einen Keyframe fällt, kann der Schnittpunkt minimal abweichen. Dies ist meist unproblematisch, kann aber eventuell beim Übergang zu kleinen Abweichungen oder Artefakten führen. Wenn ganz genau geschnitten werden soll, müsste man neu kodieren, z. B. durch Entfernen von -c copy, was aber deutlich langsamer ist.
Ein weiterer Paramater ist -reset_timestamps 1, der die Zeitstempel in den Segmenten neu startet, was für manche Player hilfreich sein kann.
Ein erweitertes Beispiel mit neu startenden Timestamps wäre:
ffmpeg -i input.mp4 -c copy -map 0 -f segment -segment_time 600 -reset_timestamps 1 output_%03d.mp4Alternative: Aufteilen anhand von Zeitstempeln (Manuelles Schneiden)
Falls Sie gezielt zwischen bestimmten Zeiten schneiden wollen, z. B. erste Datei von 0 bis 10 Minuten, zweite von 10 bis 20 Minuten etc., können Sie die Optionen -ss (Startzeit) und -t (Dauer) verwenden:
Beispiel für die erste Datei:
ffmpeg -ss 00:00:00 -i input.mp4 -t 600 -c copy output_part1.mp4Und für die zweite Datei:
ffmpeg -ss 00:10:00 -i input.mp4 -t 600 -c copy output_part2.mp4Vorteil dieser Methode ist die präzise Kontrolle, Nachteil ist, dass Sie den Befehl für jede einzelne Teil-Datei wiederholen müssen.
Fazit
FFmpeg bietet mit dem Segment-Muxer eine elegante Möglichkeit, große Videodateien automatisch in mehrere kleinere zu teilen, ohne dass dabei das Video neu kodiert werden muss. Für präzises Schneiden oder sehr spezielle Anforderungen ist auch das manuelle Schneiden per -ss und -t möglich. In der Praxis ist die Wahl der Methode abhängig von Ihrem exakten Anwendungsfall und davon, ob Sie Neukodierung in Kauf nehmen wollen oder nicht.
