Próbowałem wyodrębnić klatki kluczowe zwideo za pomocą ffmpeg 0.11.1. Jak dotąd wszystkie polecenia, które wypróbowałem, nie wyodrębniają klatek kluczowych, ale zwracają wszystkie klatki, tj. 25 klatek na sekundę * całkowita liczba klatek na wyjściu. Próbowałem ustawić keyint_min jako 25, aby upewnić się, że istnieje amximum 1 klatki kluczowej na sekundę.
ffmpeg -vf select="eq(pict_type,PICT_TYPE_I)" -g 250 -keyint_min 25 -i C:test.mp4 -vsync 2 -f image2 C:testTempthumbnails-%02d.jpeg
Ale nadal wszystkie ramki są zwracane.
Następnie próbowałem oddzielić klatki kluczowe o 20 sekund.
ffmpeg -i C:test.mp4 -vf select="eq(pict_type,I)*(isnan(prev_selected_t)+gte(t-prev_selected_t,20))" -vsync 0 -f image2 C:testTemp%09d.jpg
Znowu ten sam wynik, wszystkie ramki są zwracane.
Co powinienem zrobić?
Odpowiedzi:
9 dla odpowiedzi № 1W pierwszym poleceniu używasz filtru jako opcji wejściowej. Nie wiem, jak to zinterpretuje ffmpeg.
Spróbuj tego:
ffmpeg -i C:test.mp4 -vf select="eq(pict_type,I)",setpts="N/(25*TB)" C:testTemp%09d.jpg
Zmiana 25
do liczby klatek Twojego źródła: 30000/1001 dla wideo NTSC, 24000/1001 dla filmu NTSC, 25 dla PAL, itp.
Kontroluj jakość wyjściową za pomocą -q:v
lub -qscale:v
opcja (po prostu wywołana -qscale
w starym ffmpeg). Zakres dla mpeg * to 1-31, gdzie 31 to najgorsza jakość.
Następnym razem pamiętaj, że pytania dotyczące użycia ffmpeg należy zadawać na stronie superuser.com, ponieważ stackoverflow jest przeznaczony do programowania.