Статия
Извличане на видео кадри за миниатюри и контактни листа
Видеото е последователност от неподвижни изображения. Изваждането на едно от тях ви дава миниатюра, корица или контактен лист. Резултатът е по-остър и по-предсказуем, когато разбирате как видео кодекът съхранява кадрите и кои моменти си заслужава да уловите.
Кадри и честота на кадрите
Видео файлът е последователност от неподвижни изображения, показвани достатъчно бързо, за да се създаде илюзия за движение. Броят на показваните изображения в секунда е честотата на кадрите, изразена в fps. Честите стойности са 24 fps за кино, 25 fps за PAL излъчване, 30 fps за уеб видео и 60 fps за игрови записи. При 24 fps, двучасов филм съдържа около 172 800 отделни кадъра. Всеки кадър съответства на един момент от времето; извличането на един замразява този момент като самостоятелно изображение. Честотата на кадрите също определя колко кадъра получавате в секунда от записа при масово извличане: при 30 fps, изваждането на всеки кадър от една минута видео дава 1800 изображения, което е много повече от необходимото. Извличането с по-ниска честота на кадрите или на всеки N-ти кадър с инструменти, които го поддържат, е практически начин за намаляване на този обем, като все пак се покрива пълната продължителност.

Ключови кадри срещу интерполирани кадри
Модерните видео кодеци не съхраняват всеки кадър като пълно изображение. Те използват три вида кадри, за да спестят място. I-frame, известен и като ключов кадър, е пълно, самостоятелно изображение. P-frame съхранява само пикселите, променени от последния I-frame или P-frame. B-frame съхранява промените спрямо предишен кадър и бъдещ кадър, изисквайки кадри от двете страни, за да се реконструира. Тъй като P-frame или B-frame не е пълен сам по себе си, декодирането на един изисква заобикалящите референтни кадри. Ако тези референтни кадри съдържат размазване от движение или преход, реконструираното изображение наследява това размазване. I-frame, за разлика, се декодира независимо. Той е винаги остър, защото не заимства нищо от съседите. При извличане на кадър за миниатюра, попадането на I-frame дава най-чистия възможен резултат. Повечето кодеци поставят I-frame-и при прерязвания на сцени, които са естествено остри начални точки.
Избор на правилния момент
Дори добре декодиран I-frame може да направи лоша миниатюра, ако уловеният момент е неблагоприятен. Няколко фактора намаляват качеството на миниатюрата. Размазване от движение се появява, когато камерата или темата се движат бързо по време на излагане на кадъра; получения размаз прави кадъра мек, дори декодирането да е чисто. Преходни кадри, уловени в средата на dissolve или fade, съдържат две наслоени изображения и рядко работят като самостоятелни снимки. Подекспонирани или преекспонирани кадри, чести в началото на сцена, преди автоматичната експозиция да се установи, губят детайли в сенките или ярките светлини. Най-добрите миниатюрни кадри идват от моменти на ясно действие или израз, добро осветление и стабилна камера. Превъртането на видеото с плейър, показващ точни времеви печати, ви позволява да идентифицирате тези моменти, преди да ги извлечете. Кадър, изглеждащ добре на пауза в плейър, обикновено ще изглежда добре и като самостоятелен износ.

Износ: резолюция, формат и всеки N-ти кадър
Когато извличате кадър, изнесеното изображение трябва да съответства на нативната резолюция на видеото. Увеличаването въвежда артефакти от интерполация; намаляването изхвърля пиксели, от които може да имате нужда. Видео с 1080p произвежда изображения с 1920x1080 пиксела, а 4K видео произвежда 3840x2160. За формат, PNG запазва всеки пиксел точно и е правилният избор, когато се нуждаете от максимална острота за редактиране или допълнително мащабиране. JPEG е по-малък и подходящ за преглед или споделяне, но въвежда артефакти от компресиране около остри ръбове. Ако изграждате контактен лист, мрежа от малки представителни кадри, покриващи пълната продължителност, извличането с фиксирана честота на кадрите, вместо изваждането на всеки кадър, е стандартният подход: заявка за 1 кадър в секунда от източник с 30 fps ви дава едно изображение на секунда от записа, а по-висока честота като 5 или 10 fps дава по-плътен набор за подробен преглед. Точната честота зависи от това колко детайли ви трябват срещу колко изображения искате да обработите.
Правете го локално с video-extract-frames
Инструментът video-extract-frames на Sunasty декодира видеото ви изцяло вътре в браузъра с помощта на FFmpeg, компилиран до WebAssembly. Пускате файл, избирате честота на кадрите от 1 до 30 кадъра в секунда, избирате PNG или JPEG и инструментът декодира кадри с тази честота в паметта на браузъра ви и предлага резултатите като отделни изтегляния, ограничени до 300 кадъра на изпълнение. Видео файлът ви никога не напуска устройството ви. Нито един байт не се изпраща до сървър в нито един момент на процеса. Това е важно за записи, съдържащи лично или чувствително съдържание: семеен запис, интервю или необработен материал преди редактиране. Браузърът зарежда видеото в виртуална файлова система в RAM, изпълнява декодирането на FFmpeg и ви връща изображенията. Компромисът е, че декодирането се извършва в софтуер на процесора ви, а не от специализиран хардуер, така че дълго видео с висока резолюция ще отнеме повече време от нативно приложение. За извличане на шепа кадри или производство на контактен лист от кратък клип, скоростта е практична.
Инструменти от тази статия
- Извличане на кадри от видеоИзвличайте неподвижни кадри от видео като PNG или JPG изображения директно в браузъра си. Без качване.
- Изрязване на видеоИзрежете видео до начален/краен времеви диапазон директно в браузъра си. Бързо копиране на поток или прецизно повторно кодиране. Без качване.
- Видео към GIFКонвертирайте видеоклип в анимиран GIF директно в браузъра си. Без качване.
Често задавани въпроси
Защо извлеченият кадър изглежда размазан?
Най-честата причина е попадане на P-frame или B-frame по време на момент на движение. Тези кадри съхраняват разлики, а не пълни изображения, и размазването от движение в изходния запис се пренася в декодирането. Опитайте се да извлечете най-близкия I-frame, съответстващ на прерязване на сцена или периодичен ключов кадър, за по-остър резултат.
Трябва ли да изнасям кадри като PNG или JPEG?
PNG, ако планирате да редактирате кадъра, да го увеличите или да го използвате в контекст, в който артефактите от компресиране ще бъдат видими. JPEG, ако имате нужда от по-малък файл за бързо споделяне или преглед и леко намаляване на качеството е приемливо. За миниатюри, показвани при фиксиран малък размер, JPEG при разумна настройка за качество обикновено е достатъчен.
Как да направя контактен лист от видео?
Изберете достатъчно ниска честота на кадрите, за да получите управляем брой снимки, вместо единичен времеви печат. За двуминутен клип 1 кадър в секунда ви дава около 120 кадъра, което е достатъчно плътно, за да изберете добра мрежа от тях; изходът е ограничен до 300 кадъра на изпълнение във всеки случай. Днес няма по-груба честота от 1 fps, така че за по-рядка мрежа извлечете при 1 fps и запазете само кадрите, които искате за крайната мрежа.