$ ffmpeg -i source-file.foo -ss 0 -t 600 first-10-min.m4v
$ ffmpeg -i source-file.foo -ss 600 -t 600 second-10-min.m4v
$ ffmpeg -i source-file.foo -ss 1200 -t 600 third-10-min.m4v
...
Es wäre nicht schwer, dies in ein Skript zu packen, um es in einer Schleife zu tun.
Wenn Sie versuchen, die Anzahl der Iterationen auf der Grundlage der von einem ffprobe
Aufruf ausgegebenen Dauer zu berechnen , wird dies aus der durchschnittlichen Bitrate am Anfang des Clips und der Dateigröße des Clips geschätzt, es sei denn, Sie geben das -count_frames
Argument an, das seine Operation erheblich verlangsamt .
Eine andere Sache zu beachten ist , dass die Position der -ss
Option auf die Kommandozeile Angelegenheiten . Wo ich es jetzt habe, ist langsam aber genau. Die erste Version dieser Antwort ergab die schnelle, aber ungenaue Alternative. Der verlinkte Artikel beschreibt auch eine meist schnelle, aber dennoch genaue Alternative, die Sie mit ein wenig Aufwand bezahlen.
Abgesehen davon denke ich nicht, dass Sie wirklich genau 10 Minuten für jeden Clip schneiden möchten. Das wird Schnitte genau in die Mitte von Sätzen setzen, sogar Wörter. Ich denke, Sie sollten einen Video-Editor oder -Player verwenden, um natürliche Schnittpunkte zu finden, die nur 10 Minuten voneinander entfernt sind.
Angenommen, deine Datei hat ein Format, das YouTube direkt akzeptieren kann, dann musst du nicht neu codieren, um Segmente zu erhalten. ffmpeg
Übergeben Sie einfach die natürlichen Schnittpunkt-Offsets an , und weisen Sie sie an, die codierten A / V-Dateien mit dem Codec "copy" unberührt weiterzuleiten:
$ ffmpeg -i source.m4v -ss 0 -t 593.3 -c copy part1.m4v
$ ffmpeg -i source.m4v -ss 593.3 -t 551.64 -c copy part2.m4v
$ ffmpeg -i source.m4v -ss 1144.94 -t 581.25 -c copy part3.m4v
...
Das -c copy
Argument weist es an, alle Eingabestreams (Audio, Video und möglicherweise andere, z. B. Untertitel) unverändert in die Ausgabe zu kopieren. Für einfache A / V-Programme entspricht dies den ausführlicheren Flags -c:v copy -c:a copy
oder den Flags im alten Stil -vcodec copy -acodec copy
. Sie würden den ausführlicheren Stil verwenden, wenn Sie nur einen der Streams kopieren, aber den anderen neu codieren möchten. Vor vielen Jahren gab es beispielsweise bei QuickTime-Dateien die gängige Praxis, das Video mit H.264-Video zu komprimieren, das Audio jedoch als unkomprimiertes PCM zu belassen . Wenn Sie heute auf eine solche Datei gestoßen sind, können Sie sie so modernisieren -c:v copy -c:a aac
, dass nur der Audiostream erneut verarbeitet wird und das Video unberührt bleibt.
Der Startpunkt für jeden Befehl über dem ersten ist der Startpunkt des vorherigen Befehls plus der Dauer des vorherigen Befehls.