Odpowiedzi:
Możesz użyć mplayer(z pakietu mplayer, domyślnie nie instalowany):
mplayer -vo jpeg -ss 00:00:26 -frames 1 sample-video.mp4
Spowoduje to utworzenie pliku, 00000001.jpgwięc musisz zmienić jego nazwę. O ile wiem, nie ma sposobu na określenie nazwy pliku.
-vo jpegoznacza, że chcesz wyjściowy plik JPEG, -ss 00:00:26szuka określonej pozycji, -frames 1oznacza przetworzenie jednej klatki, a następnie wyjście.
-vo png:z=9z ustawieniem -z określającym poziom kompresji. Dla plików JPEG można również dodać w ustawieniach jakości: -vo jpeg:quality=100. Ale twoja odpowiedź jest świetna, bo już jest :)
Możesz użyć ffmpeg
ffmpeg -loglevel quiet -ss 26 -i sample-video.mp4 -t 1 -f image2 anyfilename.jpeg
Możesz także bawić się z opcjami, takimi jak kontrola jakości wyjścia JPEG -q:v <linear integer 1-10>lub rozdzielczość -s 480x300.
Więcej pomysłów tutaj
Metoda VLC
cvlc sample-video.mp4 --start-time=26 --run-time=1 --rate=1 --video-filter=scene --vout=dummy --aout=dummy --scene-ratio=24 --scene-prefix=sample-image --scene-replace vlc://quit
cvlc - ponieważ jego linia poleceń i nie chcemy otwierać żadnych okien. oznacza to również, że możemy go uruchomić bez X11.
--start-time = 26 - jest dokładną pozycją migawki w sekundach
sample-image.pngbieżącym zrzutem ekranu. Jeśli pominiesz to, VLC rozpocznie numerowanie zrzutów ekranuPełna dokumentacja tutaj
ffmpegwydaje się, że obsługuje nazwy plików wyjściowych.