Próbuję wyodrębnić klatki kluczowe z klipu wideo. Próbowałem następujące polecenie, ale wyodrębnia wszystkie ramki.
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
Próbuję wyodrębnić klatki kluczowe z klipu wideo. Próbowałem następujące polecenie, ale wyodrębnia wszystkie ramki.
ffmpeg -vf select="eq(pict_type\,PICT_TYPE_I)" -i 2.flv -vsync 2 -s 73x41 -r 30 -f image2 thumbnails-%%02d.jpeg
Odpowiedzi:
Możesz to uprościć, używając filtra wideo -skip_frame
bez potrzeby select
:
ffmpeg -skip_frame nokey -i 2.flv -vsync 0 -r 30 -f image2 thumbnails-%02d.jpeg
-threads 1
, w porównaniu do domyślnego -threads auto
powoduje, że cropdetect
wykres filtru ( ffmpeg -threads 1 -skip_frame nokey -i input.mkv -filter:v select='not(mod(n\,20))',cropdetect -an -f null /dev/null
) jest 2x szybszy w moim systemie (od 60 do 30)!
-threads 1
jest to, że w przeciwnym razie sekwencja wyjściowych klatek kluczowych może zostać wydana poza kolejnością. Jeśli masz jakiś post-hoc sposób radzenia sobie z tym problemem, możesz zachować wielowątkowość. Wydaje się również, że nadal możliwe jest uzyskanie klatek kluczowych poza kolejnością, nawet przy użyciu -threads 1
, ale teraz w tym przypadku wszystkim takim zdarzeniom wydaje się towarzyszyć / oflagowany błąd dekodera h264 illegal short term buffer state detected
.
Przykład użycia filtrów select
i scale
:
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I),scale=73x41" \
-vsync vfr -qscale:v 2 thumbnails-%02d.jpeg
Kilka wskazówek:
Filtry nie powinny znajdować się przed -i
opcją, ponieważ są opcją wyjściową. Nie wiem, skąd dokładnie otrzymałeś polecenie, ale PICT_TYPE_I
nie istnieje - tak powinno być I
.
W scale
filtrze można wymienić 73
lub włączyć 41
filtr automatycznie obliczający szerokość lub wysokość, aby zachować proporcje: takie jak scale=73:-1
lub scale=-1:41
. Zapobiega to rozciąganiu lub zgniataniu, które może wynikać z „wymuszonego” skalowania.
Jakość wyjściową można kontrolować za pomocą -qscale:v
(lub aliasu -q:v
). Efektywny zasięg to skala liniowa od 2 do 31, a niższa wartość oznacza wyższą jakość.
To, że ffmpeg
zezwala na filtr przed wejściem mówi mi, że może być nieaktualny. Pobierz najnowszą kompilację statyczną dla swojego systemu operacyjnego lub skompiluj ją samodzielnie zgodnie z przewodnikami kompilacji, jeśli powyższe nie działa.
ffmpeg -i 2.flv -vf "select=eq(pict_type\,I)" -vsync vfr frame-%02d.png
jeśli to błędy :
Opcji vf (ustawianie filtrów wideo) nie można zastosować do adresu URL 1508.mp4 - próbujesz zastosować opcję wprowadzania do pliku wyjściowego lub odwrotnie. Przenieś tę opcję przed plik, do którego należy. Błąd podczas analizowania opcji pliku wejściowego 1508.mp4. Błąd otwierania plików wejściowych: nieprawidłowy argument
możesz to zrobić:
ffmpeg -i 263.mp4 -vf select=eq(pict_type\,PICT_TYPE_I) -vsync 2 -s 480x320 -r 24 -f image2 thumbnails-%05d.jpeg
== --------------------------------------------
„-I” Parametry z góry