Szybkie narzędzie do generowania miniaturowych galerii wideo dla wiersza poleceń

15

Używam gframecatchera do generowania miniaturowych galerii wideo, tj. Coś takiego:

wprowadź opis zdjęcia tutaj

Jest to jednak narzędzie GUI i chcę utworzyć rekurencyjnie galerię dla każdego wideo w strukturze katalogów, dlatego szukam do tego szybkiego narzędzia wiersza poleceń.

student
źródło

Odpowiedzi:

28

Wyciągnij zrzuty obrazu (mają one 100 pikseli wysokości i zachowaj proporcje), szybkość ( -r) wynosi sekundę (daje to jedną klatkę co ~ 5 minut), to także dodaje znacznik czasu do obrazu wyjściowego.

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

Następnie użyj ImageMagickdo zbudowania obrazu galerii:

montage -title "Movie Name\nSubtitle" -geometry +4+4 capture*.png output.png
utopiabound
źródło
7
Możesz użyć ułamków jako stawki ( -r). Ułatwia to i dokładniej określa czas. 5 min = 300 sekund ffmpeg -i MOVIE.mp4 -r 1/300 -vf scale=-1:120 -vcodec png capture-%02d.png.
DutGRIFF
avconvdziała w ten sam sposób, na wypadek, gdybyś nie był ffmpegdostępny (niektóre wersje Ubuntu).
Ken Sharp
2
Działa to, ale wymaga instalacji hydraulicznej w całym pliku wideo. superuser.com/questions/538112/... podaje kilka przykładów, które próbują znaleźć sensowne miniatury, a także uniknąć konieczności siedzenia i przetwarzania całego filmu, aby uzyskać kilka klatek.
Skrylar,
To nie dodaje znacznika czasu do obrazu.
felwithe
Jak zrobiłbyś to wsadowo dla kilku filmów w katalogu?
Paul Jones,
13

Lubię używać łatwego w użyciu skryptu bash w wierszu poleceń UNC o nazwie VCS - Video Contact Sheet. Ich oficjalna strona: http://p.outlyer.net/vcs/

Jest o wiele łatwiejszy w użyciu, nawet łatwiejszy niż GUI

'' Jest to skrypt bash przeznaczony do tworzenia stykówek wideo (podglądów), czyli miniatur lub podglądów filmów. Skrypt może wykorzystywać dowolne wideo obsługiwane przez mplayer i ffmpeg. '' Musisz mieć jeden ffmpeglub mplayerzainstalowany w systemie.

Stosowanie:

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

Jak działa polecenie

Edytuj wejściową nazwę pliku na nazwę pliku wideo!

  • -U0(brak nazwy w stopce - w przeciwnym razie wyświetla nazwę hosta - zwróć uwagę, że to zero, a nie litera O)

  • -i 1m(ustawia czas przechwytywania w minutach - w tym przypadku jest to każda minuta - możesz również użyć -nzamiast tego, która ustawia liczbę przechwytywania, na przykład -n 21, utworzy 21 obrazów, ale nie używaj obu)

  • -c ustawia liczbę kolumn (tutaj są 3 kolumny)

  • -H 200 -a 300/200 (ustawia rozmiar i proporcje, więc plik nie jest zbyt duży - wygląda na to, że musisz zrobić oba te elementy)

  • -o filename.jpg(użyj .jpgjako domyślnej, ponieważ .pngjest za duża - i zmień nazwę pliku na wybraną przez siebie!)

Kod Falasi
źródło
7

Ten wydaje się pasować do rachunku , jest darmowy i open source, a nawet działa na systemie Windows :)

Ma nawet zaawansowane funkcje, takie jak zamiast ślepego wybierania dowolnej klatki w danym przedziale, może wybrać te, które są wystarczająco blisko, ale nie wyglądają na zbyt rozmyte, więc zamiast tego:

zrzut ekranu

Możesz przekazać mu parametr ( -D6), aby:

lepszy zrzut ekranu

Poza tym naprawdę nie lubię żadnych ramek, więc obrazy mogą być nieco większe.

Camilo Martin
źródło
7

Istnieje rozwiązanie z forum ffmpeg.

Aby wykonać wiele zrzutów ekranu i umieścić je w jednym pliku obrazu (tworzenie kafelków), możesz użyć filtru kafelków wideo FFmpeg, takiego jak to:

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

To zajmie 10 sekund filmu, wybierze co 1000 klatek, przeskaluje do 320 x 240 pikseli i utworzy kafelki 2x3 na obrazie wyjściowym out.png.

Oryginalny post tutaj - http://ffmpeg.gusari.org/viewtopic.php?f=25&t=597

Maxim Kruglov
źródło
Ponadto ffmpeg wydaje się obsługiwać „crop” z tą samą składnią.
kilka pomysłów
4

W ten sposób przetwarzam prosty formularz kontaktowy za pomocą AWS EC2 z mojego komputera Mac.

Krok 1: Utwórz wystąpienie EC2 w Amazon Web Services

Użyłem:

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

Krok # 2: Skonfiguruj instancję

Wszystko to jest uruchamiane z mojego Maca dla wygody, ale możesz także uruchomić tylko polecenia „sudu su ...” z wiersza poleceń EC2.

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"

Zamiana 11.22.33.44 na IP EC2.

Krok # 3: Przetwórz wideo

Wyślij wideo:

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

Przetwarzaj go na arkusz kontaktowy:

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"

Zmień / Users / mdouma na lokalny katalog główny Zmień „, 1” na inny numer, np. „, 7”, jeśli chcesz tylko co 7 klatkę. Zmień 111 na dowolny rozmiar

Skopiuj go z powrotem na mój komputer 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
jakieś pomysły
źródło
To świetna wskazówka. Zauważ jednak, że sudo sujest to bezcelowe.
Ken Sharp
2
Dlaczego wysyłasz to do ec2? Dlaczego po prostu nie uruchomisz go na komputerze Mac lokalnie? pliki wideo mogą mieć rozmiar GB ...
sprawdziłem
4

To narzędzie pomogło mi (2019-02) - i jest utrzymywane. Wiele opcji - siatka, jakość, czcionki, kolory, obramowanie, interwał, ...

https://github.com/amietn/vcsi

Twórz arkusze kontaktowe wideo. Styk wideo jest obrazem złożonym z miniatur przechwytywania wideo ułożonych na siatce.

Potrzebujesz tylko ffmpeg i python.

hrvoj3e
źródło
To bardzo dobrze - dziękuję!
Ashley
1

Pakiet „imagemagick” zawiera narzędzia do takich rzeczy.

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

Istnieją biblioteki API używające imagemajick dla wielu języków .

Złotowłosa
źródło
Jakie byłoby odpowiednie polecenie?
student
convertjest prawdopodobnie najbardziej ogólny. Spójrz na sekcję zatytułowaną Ogólne tworzenie miniatur na pierwszej stronie, do której linkuję.
złotowłosa
1

Totem - domyślny odtwarzacz wideo dla 14.04 i niektórych wcześniejszych wersji Ubuntu - ma opcję menu z prostymi opcjami (w menu Edycja, „Utwórz galerię zrzutów ekranu ...”). Istnieje również odpowiednik wiersza polecenia (ish) o nazwie „totem-video-thumbnailer”, który ma stronę podręcznika, która mówi, jak go używać; Napisałem prosty skrypt bash, który wykorzystywał dane wyjściowe polecenia find (uważając, aby nie rozdzielać plików ze spacjami w nazwach) w celu automatycznego wygenerowania galerii zrzutów ekranu miniaturek (lub arkusza styków, jak również wspomniano powyżej) dla plików powyżej określonego rozmiar w katalogu, który jeszcze go nie miał.

Mógłbym przesłać go do mojego github pod ~ jgbreezer, jeśli ktoś chciałby go znaleźć. Chociaż rozwiązania wykorzystujące ffmpeg i inne rzeczy mogą być bardziej elastyczne i niezawodne; Wydaje mi się, że dostaję komunikaty o błędach od polecenia totem dotyczące nie znalezienia pewnych ramek, ale wydaje się, że i tak działa przez większość czasu.

Breezer
źródło
0

Chciałem tego samego, a googling skończył na ffmpeg i imagemagick. NIE „szybkie” IMHO. Następnie znalazłem skrypt bash o nazwie SlickSlice (ostatnia aktualizacja 2008, ale działał doskonale od wczoraj). Zainstalowałem go i dostosowałem do własnych upodobań, używając pliku konfiguracyjnego i samego skryptu. Nawiasem mówiąc, skrypt używa ImageMagick i MPlayera.

Zrobiłem szczegółowy poradnik i dostosowanie po udanym użyciu. Po pomyślnym zainstalowaniu możesz wygenerować miniaturę osi czasu wideo za pomocą tak prostego polecenia:
slickslice -x "InputFile.mp4"(domyślnie 4 kolumny x 15 wierszy) lub
slickslice -x "InputFile.mp4" -S 6x10(dla 6 kolumn x 10 wierszy).

Wyprowadza jako SLICKSLICED_InputFile.mp4.jpegi dostosowałem go do InputFile.mp4-screen.jpegedycji, edytując sam skrypt bash.

Saidul Hassan
źródło