Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jak wyciągać zdjęcia z filmu - poradnik

345 views
Skip to first unread message

Tomasz Zieliński

unread,
Oct 10, 2015, 9:59:43 AM10/10/15
to

Wielu z nas zabiera w powietrze kamerę a potem publikuje kadry z filmu. Poniżej opisuję, jak uzyskać możliwie wysoką jakość takich ujęć.

Teoria (mocno uproszczona, aby było krócej): nieskompresowana klatka filmu HD to prawie 6 MB. Film nagrywany z 60 klatkami na sekundę wymagałby zapisywania zawrotnych 360 MB na sekundę filmu, z czym nie poradzą sobie nawet najszybsze dyski SSD, nie mówiąc o kartach pamięci. W użyciu są więc po pierwsze stratne formaty kompresji, po drugie filmy zapisywane są metodą w której po jednej klatce zapisanej w całości następuje kilkanaście różnicowych (delta), niosących wyłącznie informację o tych fragmentach w których coś się zmieniło. Jeśli kodujemy gotowy materiał, możemy zapobiegać utracie jakości z tym związanej, np. w zależności od dynamiki sceny zmieniać bitrate i umieszczać klatki kluczowe częściej (eksplozje, pościgi) lub rzadziej (gadające głowy). Kamera nagrywająca na żywo musi jednak zachować założony, stały bitrate, więc przy szybkich zmianach scen jakość klatek różnicowych będzie niska.

Aby pozyskać z filmu zdjęcia jak najwyższej jakości, musimy wyekstrahować z niego wyłącznie klatki kluczowe - zazwyczaj występują 2 lub 4 na sekundę.
Posłuży do tego program ffmpeg dostępny za darmo na stronie https://www.ffmpeg.org/

Składnia wywołania z linii komend może wyglądać następująco:
ffmpeg.exe -skip_frame nokey -ss 0:10:00 -t 0:02:00 -i plikwideo.MOV -vsync 2 -f image2 keyframes\framekey-%%05d.png

Znaczenie poszczególnych opcji:
-skip_frame nokey = pominięcie klatek innych, niż kluczowe
-ss 0:10:00 = rozpocznij od dziesiątej minuty, opcję można pominąć
-t 0:02:00 = przetwarzaj dwie kolejne minuty, opcję można pominąć
-i plikwideo.MOV = plik wejściowy
-vsync 2 = unikanie dublowania klatek
-f image2 keyframes\frame-%%05d.png = zapis klatek w katalogu keygrames, nazwa plików począwszy od frame-00001.png

Więcej opcji: https://www.ffmpeg.org/ffmpeg.html

Ilustracja - kadr z filmu nakręconego kamerą Mobius (tani chińczyk HD) przy szybkim ruchu głowy. Górny obrazek to ostatnia klatka różnicowa, dolny to następująca po niej klatka kluczowa. W typowym przypadku różnice są znacznie mniej widoczne.
http://postimg.org/image/v3dz4jyu7/full/ (całe ujęcie)
http://postimg.org/image/q0wn9rpjz/ (fragment z centrum)


Pozdrawiam
Tomek


Pawel Poznan

unread,
Oct 10, 2015, 10:17:19 AM10/10/15
to
W dniu 10.10.2015 o 15:59, Tomasz Zieliński pisze:
Dzięki, przetestuję bo z tym zawsze był jakiś problem...

Pozdrawiam
PawelPoznan

0lea...@gmail.com

unread,
Oct 10, 2015, 10:58:41 AM10/10/15
to
Ja używam Avidemuxa do przycinania filmów na sceny.
Przy okazji jest tam funkcja zrzutu zdjęcia i ponieważ każda klatka wychodzi w pełnej rozdzielczości to zapewne jest generowana od/albo tylko z pełną klatką (nie liczyłem ile jest dostępnych na sekundę)

Mateusz SP8EBC

unread,
Oct 10, 2015, 11:12:50 AM10/10/15
to
W dniu 10.10.2015 o 15:59, Tomasz Zieliński pisze:
>
Prościej jest odpalić materiał w VLC, ustawić interesujący nas kadr a
następnie z menu Obraz wybrać Wykonaj zrzut ekranowy
0 new messages