Zwei Fragen zur Verwendung von FFmpeg unter Debian

417
CarambaMamba

Es gibt einige Fragen zur Verwendung von FFmpeg.

  1. Ich benutze den stabilen Zweig von Debian. Ich mache separate Kappen aus einer Videodatei. Eine sehr lange Zeit. Ich möchte verstehen, wie dies optimiert werden kann. Welcher Parameter sollte eingestellt werden oder eine Gruppe von Parametern?

    Ich habe ein Video mit einer Auflösung von 1280 × 720, die Zeit zum Erstellen von Screenshots beträgt etwa 5 Minuten. Es ist zu lang. Vielleicht gibt es eine spezielle Option zur Optimierung?

  2. Ich möchte eine bestimmte Anzahl von Caps aus dem Video erhalten. Welcher Parameter ist dafür verantwortlich?

Es handelt sich um einzelne Frames aus dem Video, diese werden auch als Screenshots bezeichnet. Ffmpeg muss aus einer Videodatei eine bestimmte Anzahl von Screenshots erstellen. Zum Beispiel habe ich ein Video von 1 Stunde. Sie benötigen 15 separate Screenshots. Es kommt vor, dass in jeder vierten Minute dieses Videos einzelne Screenshots gemacht werden sollen.

0
1) wahrscheinlich schnellerer Weg hier: https://stackoverflow.com/questions/27568254/how-to-extract-1-screenshot-for-a-video-with-ffmpeg-at-a-given-time. ffmpeg -ss 01:23:45 -i eingabe -vframes 1 -q: v 2 output.jpg. Und 2) Nicht sicher, was Sie mit Caps oder Eigenschaften meinen, dann verwenden Sie ein Werkzeug namens ffprobe. Es ist im ffmpeg-Paket enthalten. Führen Sie einfach ffprobe yourfile aus. NoAngel vor 5 Jahren 0
1. Ich denke, ich habe die Frage falsch formuliert. Ich habe verschiedene Videodateien mit unterschiedlicher Dauer. Ich möchte ffmpeg zwingen, aus diesen Dateien einen bestimmten Frame zu machen, zum Beispiel 15. Ich brauche ffmpeg, um die Dauer unabhängig voneinander in Zeit zu teilen und mir diesen 15 Frame zu machen. und die Option -ss macht das schnell, aber an einem bestimmten Punkt in der Videodatei. 2.Welchen Befehl und mit welchem ​​Parameter soll ich es ausführen? CarambaMamba vor 5 Jahren 0
Aha. Sie müssen also zur angegebenen Zeit einige Frames aus einigen Dateien extrahieren. Nun, eine etwas modifizierte Befehlszeile macht es: ffmpeg -ss 00: 00: 00.00.000 -i yourfile.mp4 -vframes 60 thumb% 04d.jpg. Dies verwendet yourfile.mp4 (Sie können jede Datei in einem beliebigen Format angeben, das von ffmpeg unterstützt wird). -ss Angabe der Suchzeit, ffmpeg startet von hier aus die Reihenfolge der Bilder. Geben Sie an, wie viele Frames nach -vframes erfasst werden sollen, zum Beispiel 60. Und schließlich gibt das Ausgabemuster thumb% 04d.jpg thumb0001.jpg, thumb0002.jpg, ... aus. NoAngel vor 5 Jahren 1
Jetzt haben Sie viele Dateien und führen dann den obigen Befehl pro Datei aus. Ich glaube nicht, dass ffmpeg in diesem Modus viele Dateien gleichzeitig verarbeiten kann. NoAngel vor 5 Jahren 1
Ungültige Dauerangabe für ss: 01: 00: 00.00.000. Wir verstehen uns wahrscheinlich nicht. Ich bitte Sie um Entschuldigung. aber ich werde es wiederholen. Ich brauche ffmpeg, um alle 10 Minuten einen separaten Frame zu erstellen. Entweder machte er von Anfang an 10 Frames aus der gesamten Videodatei CarambaMamba vor 5 Jahren 0
Ups, versuchen Sie es 01: 00: 00.000 hh: MM: ss.mmm hh Stunde MM Minute ss Sekunde mmm Millisekunde. NoAngel vor 5 Jahren 1
Ich sehe, Sie sollten herausfinden, wie viele Frames pro Sekunde Ihr Video hat. Und weiter: ffmpeg -i video.mp4 -vsync 0 -vf "select = 'not (mod (n, 29))" "thumb% 04d.jpg. Dies ergibt ungefähr jedes 29. Videobild. Nun ganz einfach: Wenn Ihr Video 60 Frames pro Sekunde hat, verwenden Sie 60 * 60 * 10 = 36000 pro 10 Minuten. NoAngel vor 5 Jahren 0
bitte vergib mir, aber wir haben uns auch nicht verstanden. Wir sprechen hier von einzelnen Frames des Videos, sie werden auch als Screenshots bezeichnet, die von ffmpeg benötigt werden, um eine bestimmte Anzahl von Screenshots aus einer Videodatei zu erstellen. Ich habe zum Beispiel ein Video von 1 Stunde. Sie benötigen 15 separate Screenshots. Es kommt vor, dass in jeder vierten Minute dieses Videos einzelne Screenshots gemacht werden sollen. CarambaMamba vor 5 Jahren 1
Ich kenne eine solche Option nicht. Ich denke, dass ffmpeg aus jeder angegebenen Anzahl von Frames Screenshots aus der angegebenen Zeit machen kann. Ich kann keine Option finden, um die Anzahl der Screenshots anzugeben, sodass es automatisch alle x Minuten dauern kann. Sie müssen die Anzahl der erforderlichen Screenshots berechnen und die Aufnahmezeit selbst bestimmen. Total_frames = time * frames_per_sec. capture_interval = Gesamtanzahl der Bilder / Anzahl der Screenshots. Dann geben Sie capture_interval oben in "select = ..." an. ffmpeg ist kostenlos, daher gibt es keine One-Click-Lösung. Sie müssen es selbst tun. NoAngel vor 5 Jahren 0
Vielleicht hilft das: https://trac.ffmpeg.org/wiki/Create%20a%20thumbnail%20image%20every%20X%20seconds%20of%20the%20video Dies ist, was ffmpeg dagegen tun kann. NoAngel vor 5 Jahren 0
Bitte bearbeiten Sie Ihre Frage **, um sie zu klären. Kommentare können nicht garantiert werden. (Ich habe eine solche Bearbeitung für Sie gemacht). dirkt vor 5 Jahren 0
Das Extrahieren von Screenshots alle vier Minuten entspricht dem Konvertieren in eine sehr niedrige Bildrate (von beispielsweise 30 Bildern pro Sekunde bis zu einem Bild pro 4 Minuten). Ffmpeg kann Frameraten konvertieren, aber ich bin mir nicht sicher, wie viel Mittelwertbildung es während dieser Zeit leistet, daher müssen Sie einige Optionen ausprobieren und mit Optionen experimentieren. dirkt vor 5 Jahren 0

0 Antworten auf die Frage