Beim Durchsuchen von U&L fielen mir eine ganze Reihe von Fragen auf, in denen es darum ging, wie man die Generierung von ffmpeg
Befehlszeilen wie diesen per Skript durchführt:
ffmpeg -i video.mp4 -ss 00:00:00 -t 00:10:00 -c copy 01.mp4
ffmpeg -i video.mp4 -ss 00:10:00 -t 00:10:00 -c copy 02.mp4
ffmpeg -i video.mp4 -ss 00:20:00 -t 00:10:00 -c copy 03.mp4
Bei der Suche nach Lösungen hierfür bin ich im ffmpeg
Issue Tracker auf dieses Ticket gestoßen, mit dem Titel:Teilen Sie ein Eingabevideo in mehrere Ausgabevideoblöcke auf..
Dieses Ticket hebt einen Patch hervor, mit dem Sie endlich eine Liste von Zeitpunkten angeben können, um ein Video mit einer einzigen Befehlszeile wie dieser in kleinere Abschnitte zu schneiden:
$ ffmpeg -i input.avi -f segment -segment_times 10,20,40,50,90,120,180 \
-vcodec copy output02%d.avi
Der Patch scheint in dieser Revision des Code-Repository veröffentlicht worden zu sein:
commit 2058b52cf8a4eea9bf046f72b98e89fe9b36d3e3
Author: Stefano Sabatini <[email protected]>
Date: Sat Jan 28 22:36:38 2012 +0100
lavf/segment: add -segment_times option
Address trac ticket #1504.
Ich habe diese statisch erstellte Version von heruntergeladen ffmpeg
,ffmpeg.static.64bit.2013-10-05.tar.gzvon demffmpeg-Site, aber dieser Schalter war offenbar nicht dabei.
$ ./ffmpeg --help |& grep segment
$
Hat es irgendjemand geschafft, diesen neuen Schalter zum Laufen zu bringen?
Antwort1
Liegt es daran, dass die fehlenden-map
Möglichkeit, das die Eingabeströme als Quelle für die Ausgabedatei angibt. Ich verwende ffmpeg 2.6.1 und kann das Video folgendermaßen aufteilen -segment_times
:
ffmpeg -i foo.mp4 -segment_times 10,20,30,40 -c copy -map 0 -f segment %03d.mp4
Wenn Sie eine aufwendigere Aufteilung benötigen, können Sie OpenCV verwenden, um das Originalvideo zu lesen und das gewünschte Bild in die neue Aufteilung zu schreiben. Sehen Sie sich das hier an:„Erstellen eines Videos mit OpenCV“Und„Teilen Sie ein Video entsprechend mehrerer Start- und Endbildindizes in mehrere Teile auf.“