Schnelles Tool zum Erstellen von Miniaturvideogalerien für die Befehlszeile

14

Ich benutze gframecatcher , um Thumbnail- Videogalerien zu generieren, also so etwas wie:

Bildbeschreibung hier eingeben

Dies ist jedoch ein GUI-Tool und ich möchte rekursiv eine Galerie für jedes Video in einer Verzeichnisstruktur erstellen. Ich suche daher ein schnelles Befehlszeilen-Tool, um dies zu tun.

Schüler
quelle

Antworten:

28

Ziehen Sie die Bilderfassungen heraus (diese sind 100 Pixel hoch und behalten Sie das Seitenverhältnis bei), die Rate ( -r) beträgt pro Sekunde (dies ergibt ein Bild alle ~ 5 Minuten) und fügt dem Ausgabebild einen Zeitstempel hinzu.

ffmpeg  -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png

Verwenden Sie dann ImageMagick, um Ihr Galeriebild zu erstellen:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png
utopisch
quelle
6
Sie können Brüche für die Rate ( -r) verwenden. Dies macht es einfacher und genauer, Zeiten anzugeben. 5 Minuten = 300 Sekunden ffmpeg -i MOVIE.mp4 -r 1/300 -vf scale=-1:120 -vcodec png capture-%02d.png.
DutGRIFF
avconvfunktioniert auf die gleiche Weise, falls Sie nicht ffmpegverfügbar sind (einige Ubuntu-Versionen).
Ken Sharp
1
Dies funktioniert, erfordert jedoch das Durchsuchen der gesamten Videodatei. superuser.com/questions/538112/… bietet einige Beispiele, die versuchen, aussagekräftige Thumbnails zu finden und vermeiden, das gesamte Video zu bearbeiten, um ein paar Frames zu erhalten.
Skrylar
Dadurch wird der Zeitstempel nicht zum Bild hinzugefügt.
Felwithe
Wie würdest du das im Batch für ein paar Videos in einem Verzeichnis machen?
Paul Jones
12

Ich benutze gerne ein benutzerfreundliches Unix-Kommandozeilen-Bash-Skript namens VCS - Video Contact Sheet. Ihre offizielle Seite: http://p.outlyer.net/vcs/

Es ist viel einfacher zu bedienen als eine grafische Benutzeroberfläche

'' Es handelt sich um ein Bash-Skript zum Erstellen von Videokontaktblättern (Vorschauen), auch Miniaturansichten oder Vorschauen von Videos genannt. Jedes von mplayer und ffmpeg unterstützte Video kann von diesem Skript verwendet werden. '' Sie müssen entweder ffmpegoder mplayerauf Ihrem System installiert sein.

Verwendung:

vcs input-filename -U0 -i 1m -c 3 -H 200 -a 300/200 -o save-filename.jpg

Wie der Befehl funktioniert

Bearbeite den Namen der Eingabedatei mit dem Namen deiner Videodatei!

  • -U0(kein Name in der Fußzeile - sonst wird der Hostname angezeigt - beachten Sie, dass dies Null ist und nicht der Buchstabe O)

  • -i 1m(Legt das Zeitintervall für die Aufnahme in Minuten fest - in diesem Fall jede Minute - Sie können -nstattdessen auch festlegen, wie viele Aufnahmen zum Beispiel -n 2121 Bilder erstellt werden sollen, aber verwenden Sie nicht beide)

  • -c Stellt die Anzahl der Spalten ein (hier sind es 3 Spalten)

  • -H 200 -a 300/200 (Legt die Größe und den Aspekt fest, damit die Datei nicht zu groß wird - scheinbar müssen Sie beides tun.)

  • -o filename.jpg( .jpgAls Standard verwenden, da .pngzu groß - und den Dateinamen in einen Ihrer Wahl ändern!)

Code Falasi
quelle
7

Dieser scheint genau das Richtige für Sie zu sein , er ist kostenlos und Open Source und funktioniert sogar unter Windows :)

Es hat sogar fortgeschrittene Funktionen, zum Beispiel, anstatt blind einen Frame in einem bestimmten Intervall auszuwählen, kann es diejenigen auswählen, die nah genug sind, aber nicht zu unscharf aussehen, also anstatt dies zu tun:

Bildschirmfoto

Sie können ihm einen Parameter ( -D6) übergeben, damit dies geschieht:

besserer Screenshot

Außerdem mag ich keine Grenzen, so dass die Bilder etwas größer sein können.

Camilo Martin
quelle
7

Es gibt eine Lösung aus dem ffmpeg-Forum.

Um mehrere Screenshots zu erstellen und diese in einer einzigen Bilddatei zu platzieren (Kacheln erstellen), können Sie den FFmpeg-Kachelvideofilter wie folgt verwenden:

ffmpeg -ss 00:00:10 -i movie.avi -vf 'select=not(mod(n\,1000)),scale=320:240,tile=2x3' out.png

Das wird 10 Sekunden in dem Film suchen, jedes 1000. Bild auswählen, es auf 320x240 Pixel skalieren und 2x3 Kacheln im Ausgabebild out.png erstellen.

Ursprünglicher Beitrag hier - http://ffmpeg.gusari.org/viewtopic.php?f=25&t=597

Maxim Kruglov
quelle
Außerdem scheint ffmpeg "crop" mit der gleichen Syntax zu unterstützen.
Einige Ideen
4

So verarbeite ich ein einfaches Kontaktformular mit AWS EC2 von meinem Mac aus.

Schritt 1: Erstellen Sie eine EC2-Instanz bei Amazon Web Services

Ich benutzte:

Amazon Linux AMI 2015.03.1 (HVM), SSD Volume Type - ami-0d4cfd66
t2.medium

Schritt 2: Konfigurieren Sie die Instanz

Dies alles wird aus Bequemlichkeitsgründen von meinem Mac ausgeführt, aber Sie können auch nur die Befehle "sudu su ..." über die EC2-Befehlszeile ausführen.

ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; curl -O http://ffmpeg.gusari.org/static/64bit/ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; gunzip ffmpeg.static.64bit.latest.tar.gz"
ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "sudo su root; tar -xf ffmpeg.static.64bit.latest.tar"

Ersetzen von 11.22.33.44 durch Ihre EC2-IP.

Schritt 3: Verarbeiten Sie ein Video

Video senden:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem pem' /Users/mdouma/Desktop/myVideo.mov [email protected]:/home/ec2-user/

Verarbeiten Sie es zu einem Kontaktbogen:

ssh -i "/local/path/to/key/your_ec2_key.pem" [email protected] "rm -f out.png ; ./ffmpeg -ss 00:00:00 -i myVideo.mov -vf 'select=not(mod(n\,1)),scale=113:111,crop=111:111,tile=18x36' out.png"

Change / Users / mdouma to your local root Ändere die ", 1" in eine andere Zahl, zB ", 7", wenn du nur jeden 7. Frame haben willst. Ändern Sie 111 auf die gewünschte Größe

Kopiere es zurück auf meinen Mac:

rsync -Pav -e 'ssh -i /local/path/to/key/your_ec2_key.pem'  [email protected]:/home/ec2-user/out.png  /Users/mdouma/Desktop/out.png
open /Users/mdouma/Desktop/out.png
einige Ideen
quelle
Das ist ein toller Tipp. Beachten Sie jedoch, dass dies sudo suziellos ist.
Ken Sharp
2
Warum schickst du das an ec2? Warum nicht einfach lokal auf Ihrem Mac ausführen? ... die Videodateien könnten GBs groß sein
haventchecked
4

Dieses Tool hat mir geholfen (2019-02) - und es wird gepflegt. Viele Optionen - Raster, Qualität, Schriftarten, Farben, Rahmen, Intervall, ...

https://github.com/amietn/vcsi

Erstellen Sie Videokontaktblätter. Ein Videokontaktblatt ist ein Bild, das aus auf einem Raster angeordneten Miniaturansichten von Videoaufnahmen besteht.

Du brauchst nur ffmpeg und Python.

hrvoj3e
quelle
Das ist sehr gut - danke!
Asche
1

Das 'imagemagick'-Paket enthält Hilfsprogramme für solche Dinge.

http://www.imagemagick.org/Usage/thumbnails/

Es gibt API-Bibliotheken, die imagemajick auch für eine Reihe von Sprachen verwenden .

Goldlöckchen
quelle
Was wäre der entsprechende Befehl?
Schüler
convertist wahrscheinlich die allgemeinste. Schauen Sie sich den Abschnitt mit der Überschrift "Generelle Miniaturbilderstellung" auf der ersten Seite an, auf die ich verlinkt habe.
Goldlöckchen
1

Totem - der Standard-Video-Player für 14.04 und einige frühere Versionen von Ubuntu - verfügt über eine Menüoption mit einfachen Optionen (im Menü Bearbeiten unter "Screenshot-Galerie erstellen ..."). Es gibt auch ein Kommandozeilen-Äquivalent (ish) namens "totem-video-thumbnailer", das eine Manpage enthält, die Ihnen erklärt, wie man es benutzt. Ich habe ein einfaches Bash-Skript geschrieben, das die Ausgabe des Befehls find verwendet (wobei darauf geachtet wurde, Dateien nicht mit Leerzeichen in Namen zu trennen), um automatisch eine Miniaturbild-Screenshot-Galerie (oder ein Kontaktformular, wie oben auch erwähnt) für alle Dateien über einem bestimmten Wert zu erstellen Größe in einem Verzeichnis, das noch keines hatte.

Ich könnte es auf meinen Github unter ~ jgbreezer hochladen, wenn jemand Lust hätte, danach zu suchen. Obwohl Lösungen mit ffmpeg und anderen Dingen flexibler und zuverlässiger sein können; Ich erhalte scheinbar Fehlerausgaben vom Totem-Befehl, weil bestimmte Frames nicht gefunden wurden, aber es scheint die meiste Zeit trotzdem zu funktionieren.

Breezer
quelle
0

Ich wollte dasselbe und googeln endete mit ffmpeg und imagemagick. IMHO NICHT "schnell". Dann habe ich ein Bash-Skript namens SlickSlice gefunden (zuletzt 2008 aktualisiert, hat aber seit gestern einwandfrei funktioniert). Installierte es und passte es mithilfe der Konfigurationsdatei und des Skripts an meine Bedürfnisse an. Das Skript verwendet übrigens ImageMagick und MPlayer.

Nachdem ich es erfolgreich verwendet hatte, erstellte ich eine detaillierte Anleitung und Anpassung . Nach erfolgreicher Installation können Sie eine Miniaturansicht der Video-Timeline mit dem folgenden Befehl erstellen:
slickslice -x "InputFile.mp4"(Standard 4 Spalten x 15 Zeilen) oder
slickslice -x "InputFile.mp4" -S 6x10(für 6 Spalten x 10 Zeilen).

Es wird ausgegeben als SLICKSLICED_InputFile.mp4.jpegund ich habe es angepasst, um es InputFile.mp4-screen.jpegdurch Bearbeiten des Bash-Skripts selbst zu produzieren.

Saidul Hassan
quelle