Używam ffmpeg do wydobywania klatek kluczowych z wideo. To jest polecenie:
ffmpeg -i test2.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90 -f image2 thumbnails-%02d.jpeg
Jak mogę pobrać indeks każdej klatki kluczowej z filmu? Na przykład dla pierwszej ramki I indeks wynosiłby 0, dla drugiej 24. Itd.
Odpowiedzi:
Jak wspomniano o @dstob, możesz użyć,
ffprobe
aby uzyskać ramki I i powiązane z nimi informacje.ffprobe
jest dostarczany z niektórymi statycznymi kompilacjami na stronie pobierania i może być również zbudowany ze źródła.Zakłada się, że korzystasz z systemu Linux / Unix:
Wyodrębnij ramki i typy ramek
grep
Polecenia filtruje linie zI
nimi, i liczy ich indeks (używając-n
opcji).cut
Polecenie wybiera pierwszą kolumnę tylko wyjście (indeks). Zauważ, że ten indeks jest oparty na 1, a nie na 0.Zmień nazwę plików wyjściowych na podstawie indeksu
Możesz właściwie potokować te indeksy do listy:
Następnie utwórz listę wszystkich miniatur:
Następnie wklej te dwa razem:
Lista zawiera teraz nazwę miniatury i indeks. Wykonaj zmianę nazwy na podstawie:
Powyższe zmieni nazwę
thumbnail-01.jpeg
nathumbnail-0.jpeg
. Zauważ, że na wskaźniku wyjściowym nie ma wypełnienia zerami. Jeśli chcesz wyzerować go do, powiedzmy, 5 cyfr, użyjprintf
:W systemie Windows zrobiłbyś dokładnie to samo,
ffprobe
ale analizowałbyś dane wyjściowe w inny sposób. Nie mam jednak pojęcia, jak przeprowadzić tam zmianę nazwy.źródło
[FRAME]
linia i linia.[/FRAME]
pict_type
-of csv
opcji dlaffprobe
. Opisujesz jednak domyślny format wyjściowy.Jeśli chcesz używać FFMPEG, jak pierwotnie stwierdzono, możesz wyświetlić listę wszystkich lub części, a także utworzyć plik jpg z następującymi elementami:
Usuń
-t 15
bez ograniczenia czasowego lub zmień na odpowiedni. Usuń-s 160x90 -f image2 thumbnail-%02d.jpeg
lub zmień, aby dopasować do usuwania miniatur.źródło