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_framebez 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 autopowoduje, że cropdetectwykres 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 1jest 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 selecti 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 -iopcją, ponieważ są opcją wyjściową. Nie wiem, skąd dokładnie otrzymałeś polecenie, ale PICT_TYPE_Inie istnieje - tak powinno być I.
W scalefiltrze można wymienić 73lub włączyć 41filtr automatycznie obliczający szerokość lub wysokość, aby zachować proporcje: takie jak scale=73:-1lub 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 ffmpegzezwala 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