Schneiden Sie ein FFmpeg-Video basierend auf Frames und keinen Timecode

1185
mxbi

Ich möchte ein Video mit FFmpeg schneiden, das etwas ähnlich dem folgenden Code verwendet:

ffmpeg -i movie.mp4 -ss 00:00:03 -t 00:00:08 -async 1 cut.mp4 

Ich möchte jedoch in -ssund -tanstatt in Sekunden angeben . Anstelle von 3 Sekunden möchte ich beispielsweise, dass ffmpeg den Schnitt mit 90 Bildern beginnen soll. Ich möchte dies tun, weil ich Videos mit einem Skript schneiden und die Dinge nicht zu kompliziert machen möchte, indem ich die Bildnummern in Sekunden konvertieren muss, bevor sie an FFmpeg übergeben werden.

Wenn Sie einfach eine Zahl angeben, -ss 90beginnt der Schnitt bei 90 Sekunden, nicht bei 90 Bildern.

0

2 Antworten auf die Frage

3
occvtech

Ich glaube, Sie sollten dies mit dem selectFilter erreichen können. Wenn Sie jedoch einen Videofilter verwenden, können Sie keine Streaming-Kopien mehr erstellen. Stattdessen müssen Sie die Datei umcodieren, indem Sie einen Codec mit der Markierung auswählen c:v.

Um beispielsweise einen Schnitt zu erstellen, der beim 90. Frame beginnt und eine Ausgabe erzeugt, die 1000 Frames lang ist, und die Ausgabe in ein H264-Format umzucodieren, können Sie Folgendes versuchen:

ffmpeg -i [INPUT] -vf select=gte(n\,90) -vframes 1000 -c:v libx264 -f mp4 [output.mp4]

0
dstob

Es gibt keine Möglichkeit, genau das zu tun, was Sie fragen.

Sie können -frameseine gewünschte Anzahl von Frames verarbeiten, die Verwendung einer Frame-Nummer als Startposition ist jedoch nicht möglich.

Würde `-frames hier also` -t` ersetzen? mxbi vor 8 Jahren 0