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
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, żecropdetect
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 h264illegal short term buffer state detected
.Przykład użycia filtrów
select
iscale
: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, alePICT_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 jakscale=73:-1
lubscale=-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.źródło
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ć:
== --------------------------------------------
„-I” Parametry z góry
źródło