Artykuł
Wyodrębnianie klatek wideo dla miniatur i arkuszy kontaktowych
Wideo to sekwencja nieruchomych obrazów. Wyciągnięcie jednego z nich daje miniaturę, okładkę lub arkusz kontaktowy. Wynik jest ostrzejszy i bardziej przewidywalny, gdy rozumiesz, jak koder wideo przechowuje swoje klatki i które momenty warto uchwycić.
Klatki i częstotliwość klatek
Plik wideo to sekwencja nieruchomych obrazów wyświetlanych wystarczająco szybko, aby stworzyć złudzenie ruchu. Liczba obrazów wyświetlanych na sekundę to częstotliwość klatek, wyrażona w fps. Typowe wartości to 24 fps dla kina, 25 fps dla transmisji PAL, 30 fps dla wideo internetowego i 60 fps dla nagrań z gier. Przy 24 fps dwugodzinny film zawiera około 172 800 indywidualnych klatek. Każda klatka odpowiada pojedynczemu momentowi w czasie; wyodrębnienie jednej zamraża ten moment jako samodzielny obraz. Częstotliwość klatek określa również, ile klatek otrzymujesz na sekundę nagrania podczas wyodrębniania partii: przy 30 fps wyciągnięcie każdej klatki z minuty wideo daje 1800 obrazów, co często jest znacznie więcej niż potrzeba. Wyodrębnianie przy niższej częstotliwości klatek, albo co N-tej klatki w narzędziach, które to obsługują, to praktyczny sposób na zmniejszenie tej liczby przy jednoczesnym pokryciu pełnego czasu trwania.

Klatki kluczowe kontra klatki interpolowane
Nowoczesne kodeki wideo nie przechowują każdej klatki jako kompletnego obrazu. Używają trzech typów klatek, aby zaoszczędzić miejsce. I-frame, nazywana też klatką kluczową, to kompletny, samodzielny obraz. P-frame przechowuje tylko piksele, które zmieniły się od ostatniego I-frame lub P-frame. B-frame przechowuje zmiany względem zarówno poprzedniej, jak i przyszłej klatki, wymagając klatek po obu stronach do rekonstrukcji. Ponieważ P-frame lub B-frame jest niekompletny sam w sobie, jego dekodowanie wymaga otaczających klatek referencyjnych. Jeśli te klatki referencyjne zawierają rozmycie ruchu lub przejście, zrekonstruowany obraz dziedziczy to rozmycie. I-frame natomiast jest dekodowany niezależnie. Jest zawsze ostry, ponieważ nie zapożycza niczego od sąsiadów. Przy wyodrębnianiu klatki do użycia jako miniatura, trafienie na I-frame daje najczystszy możliwy wynik. Większość kodeków umieszcza I-frames przy cięciach scen, które są naturalnie ostrymi punktami startowymi.
Wybór odpowiedniego momentu
Nawet dobrze zdekodowany I-frame może być słabą miniaturą, jeśli uchwycony moment jest nieatrakcyjny. Kilka czynników obniża jakość miniatury. Rozmycie ruchu pojawia się, gdy kamera lub obiekt szybko się porusza podczas ekspozycji klatki; wynikające z tego rozmazanie sprawia, że klatka wygląda miękko, nawet jeśli dekodowanie było czyste. Klatki przejściowe uchwycone w połowie rozpuszczenia lub zanikania zawierają dwa nakładające się obrazy i rzadko sprawdzają się jako samodzielne zdjęcia. Niedoświetlone lub prześwietlone klatki, powszechne na początku sceny przed ustabilizowaniem się automatycznej ekspozycji, tracą szczegóły w cieniach lub światłach. Najlepsze klatki miniatur pochodzą z momentów wyraźnej akcji lub wyrazu, dobrego oświetlenia i stabilnej kamery. Przewijanie przez wideo w odtwarzaczu pokazującym dokładne znaczniki czasu pozwala zidentyfikować te momenty przed ich wyodrębnieniem. Klatka, która wygląda dobrze zatrzymana w odtwarzaczu, będzie generalnie wyglądać dobrze jako eksport statyczny.

Eksport: rozdzielczość, format i co N-ta klatka
Przy wyodrębnianiu klatki, eksportowany obraz powinien odpowiadać natywnej rozdzielczości wideo. Skalowanie w górę wprowadza artefakty interpolacji; skalowanie w dół odrzuca piksele, które możesz chcieć zachować. Wideo 1080p tworzy obrazy 1920x1080 pikseli, a wideo 4K tworzy 3840x2160. Dla formatu, PNG zachowuje każdy piksel dokładnie i jest właściwym wyborem, gdy potrzebujesz maksymalnej ostrości do edycji lub dalszego skalowania. JPEG jest mniejszy i odpowiedni do podglądu lub udostępniania, ale wprowadza artefakty kompresji wokół ostrych krawędzi. Jeśli budujesz arkusz kontaktowy, siatkę małych reprezentatywnych klatek obejmujących pełny czas trwania, wyodrębnianie przy stałej częstotliwości klatek, zamiast pobierania każdej klatki, to standardowe podejście: żądanie 1 klatki na sekundę ze źródła 30 fps daje jeden obraz na sekundę nagrania, a wyższa częstotliwość, np. 5 lub 10 fps, daje gęstszy zestaw do dokładniejszej inspekcji. Dokładna częstotliwość zależy od tego, ile szczegółów potrzebujesz versus ile obrazów chcesz obsłużyć.
Lokalnie z video-extract-frames
Narzędzie video-extract-frames na Sunasty dekoduje wideo w całości w przeglądarce przy użyciu FFmpeg skompilowanego do WebAssembly. Upuszczasz plik, wybierasz częstotliwość klatek od 1 do 30 klatek na sekundę, wybierasz PNG lub JPEG, a narzędzie dekoduje klatki przy tej częstotliwości w pamięci przeglądarki i oferuje wyniki jako osobne pobrania, ograniczone do 300 klatek na jedno uruchomienie. Twój plik wideo nigdy nie opuszcza urządzenia. W żadnym momencie procesu żadne bajty nie są wysyłane na serwer. Ma to znaczenie dla nagrań zawierających osobistą lub wrażliwą treść: nagranie rodzinne, wywiad lub surowy materiał przed edycją. Przeglądarka ładuje wideo do wirtualnego systemu plików w RAM, uruchamia dekodowanie FFmpeg i przekazuje obrazy z powrotem do Ciebie. Kompromisem jest to, że dekodowanie odbywa się programowo na Twoim CPU, a nie przez dedykowany sprzęt, więc długie wideo o wysokiej rozdzielczości zajmie więcej czasu niż natywna aplikacja. Do wyodrębniania kilku klatek lub tworzenia arkusza kontaktowego z krótkiego klipu, szybkość jest praktyczna.
Narzędzia w tym artykule
- Wyodrębnij klatki wideoWyodrębnij nieruchome klatki z wideo jako obrazy PNG lub JPG bezpośrednio w przeglądarce. Bez przesyłania.
- Przytnij wideoPrzytnij wideo do zakresu czasu start/koniec bezpośrednio w przeglądarce. Szybkie kopiowanie strumienia lub precyzyjne ponowne kodowanie. Bez przesyłania.
- Wideo do GIFKonwertuj klip wideo na animowany GIF bezpośrednio w przeglądarce. Bez przesyłania.
Najczęściej zadawane pytania
Dlaczego wyodrębniona klatka wygląda rozmazanie?
Najczęstszą przyczyną jest trafienie na P-frame lub B-frame podczas momentu ruchu. Te klatki przechowują różnice zamiast kompletnych obrazów, a rozmycie ruchu w źródłowym materiale przechodzi do dekodowania. Spróbuj wyodrębnić najbliższy I-frame, który odpowiada cięciu sceny lub periodycznej klatce kluczowej, aby uzyskać ostrzejszy wynik.
Czy powinienem eksportować klatki jako PNG czy JPEG?
PNG, jeśli planujesz edytować klatkę, skalować ją w górę lub używać w kontekście, gdzie artefakty kompresji byłyby widoczne. JPEG, jeśli potrzebujesz mniejszego pliku do szybkiego udostępniania lub podglądu i nieznaczna obniżka jakości jest akceptowalna. W przypadku miniatur wyświetlanych w stałym małym rozmiarze, JPEG przy rozsądnym ustawieniu jakości jest zazwyczaj odpowiedni.
Jak stworzyć arkusz kontaktowy z wideo?
Wybierz częstotliwość klatek na tyle niską, by dać rozsądną liczbę klatek, zamiast pojedynczego znacznika czasu. Dla dwuminutowego klipu 1 klatka na sekundę daje około 120 klatek, co jest wystarczająco gęste, by wybrać dobrą siatkę; wynik i tak jest ograniczony do 300 klatek na jedno uruchomienie. Obecnie nie ma niższej częstotliwości niż 1 fps, więc dla rzadszego arkusza wyodrębnij przy 1 fps i zachowaj tylko klatki potrzebne do końcowej siatki.