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 demsegment
muxerdie Dauer der einzelnen Segmente:
-segment_times 0,30,60,80