Segmentieren von Videos in X-Sekunden-Teile mit ffmpeg

Segmentieren von Videos in X-Sekunden-Teile mit ffmpeg

Ich habe ein Video mit einer Länge von einer Minute und 35 Sekunden. Ich kann es in mehrere 30-Sekunden-Segmente aufteilen (ich kenne andere Möglichkeiten, ein Video aufzuteilen, habe mich aber aus einem bestimmten Grund dafür entschieden). Dadurch entstehen jedoch 3 Videos mit einer Länge von 30 Sekunden und ein Video mit einer Länge von 5 Sekunden. Was wäre die beste Möglichkeit, ein übrig gebliebenes Video mit einer Länge von weniger als 15 Sekunden zu entfernen und an Segmente anzufügen?

in Segmente aufteilen

ffmpeg -i test.mp4 -codec:v copy -codec:a copy -segment_time 30 test-%03d.mp4

Dauer

ffprobe -i test.mp4 -show_format -v quiet | grep '.=.'

Antwort1

ffmpeg allein kann das nicht. Sie müssen die Dauer der einzelnen Segmente selbst ermitteln, da es keine Möglichkeit gibt, eine Mindestdauer anzugeben.

Dazu müsste man vermutlich zweimal über die gesamte Länge des Videos iterieren. Im ersten Durchgang ermittelt man die Länge der einzelnen Segmente. Wenn man feststellt, dass das letzte Segment kürzer als beispielsweise 15 Sekunden ist, muss man einfach die Länge des vorletzten Segments anpassen. Mit Skriptsprachen ist das ganz einfach möglich.

Sobald Sie das haben, müssen Sie demsegmentmuxerdie Dauer der einzelnen Segmente:

-segment_times 0,30,60,80

verwandte Informationen