Jest to bardzo proste z ffmpeg, i może wyprowadzać jedną klatkę co N sekund bez dodatkowego skryptowania. Aby wyeksportować jako sekwencję obrazów, wystarczy użyć myimage_%04d.png
lub podobnego jako wyjścia. Bit %0xd
jest konwertowany na wypełnioną zerem liczbę całkowitą o długości x
cyfr - w podanym przeze mnie przykładzie wyjdzie jako
myimage_0000.png
,
myimage_0001.png
,
myimage_0002.png
Możesz użyć wielu formatów obrazów, png, jpeg, tga, cokolwiek (zobacz ffmpeg -formats
po pełną listę).
*Ok, więc teraz wiemy, jak wyeksportować film jako sekwencję obrazów, ale powiedzmy, że nie chcemy eksportować każdej pojedynczej klatki? *
Sztuczka polega na tym, by po prostu zmienić liczbę klatek na wyjściu na taką, jaką chcemy, używając opcji -r n
, gdzie n
to liczba klatek na sekundę. 1 klatka na sekundę to -r 1
, jedna klatka co cztery sekundy to -r 0.25
, jedna klatka co dziesięć sekund to -r 0.1
i tak dalej.
Tak więc, aby zebrać to wszystko razem, tak wyglądałoby zapisywanie jednej klatki z input.mov
co cztery sekundy do output_0000.png
, output_0001.png
itd.:
ffmpeg -i input.mov -r 0.25 output_%04d.png
Zauważ, że opcja -r 0.25
jest umieszczona po części -i input.mov
, ponieważ kontroluje ona częstotliwość odświeżania wyjścia. Gdybyś umieścił ją przed wejściem, traktowałaby plik wejściowy tak, jakby miał określoną częstotliwość odświeżania.
Zmień %xd na tyle cyfr, ile potrzebujesz, np. jeśli komenda miałaby utworzyć więcej niż 10,000 klatek zmień %04d
na %05d
. Działa to również dla plików wejściowych, które są sekwencją obrazów. Czytaj więcej tutaj .
Użytkownicy Windows : W linii poleceń użyj %
przykład: ffmpeg -i inputFile.mp4 -r 1 outputFile_%02d.png
W skryptach CMD i BAT użyj %%
przykład: ffmpeg -i inputFile.mp4 -r 1 outputFile %%02d.png
Czyli podwójne %%
w skryptach i pojedyncze %
w interaktywnej linii poleceń. Pomylenie się w obu sytuacjach spowoduje wygenerowanie błędu.