Без качване, 100% локално, без акаунт

Статия

Извличане на видео кадри за миниатюри и контактни листа

Видеото е последователност от неподвижни изображения. Изваждането на едно от тях ви дава миниатюра, корица или контактен лист. Резултатът е по-остър и по-предсказуем, когато разбирате как видео кодекът съхранява кадрите и кои моменти си заслужава да уловите.

Кадри и честота на кадрите

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

Лента с времева линия, показваща 24 отделни кадъра в секунда от записа, с номера на кадъра и времевия печат, видими под всеки кадър.

Ключови кадри срещу интерполирани кадри

Модерните видео кодеци не съхраняват всеки кадър като пълно изображение. Те използват три вида кадри, за да спестят място. 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 и ви връща изображенията. Компромисът е, че декодирането се извършва в софтуер на процесора ви, а не от специализиран хардуер, така че дълго видео с висока резолюция ще отнеме повече време от нативно приложение. За извличане на шепа кадри или производство на контактен лист от кратък клип, скоростта е практична.

Инструменти от тази статия

Често задавани въпроси

Защо извлеченият кадър изглежда размазан?

Най-честата причина е попадане на P-frame или B-frame по време на момент на движение. Тези кадри съхраняват разлики, а не пълни изображения, и размазването от движение в изходния запис се пренася в декодирането. Опитайте се да извлечете най-близкия I-frame, съответстващ на прерязване на сцена или периодичен ключов кадър, за по-остър резултат.

Трябва ли да изнасям кадри като PNG или JPEG?

PNG, ако планирате да редактирате кадъра, да го увеличите или да го използвате в контекст, в който артефактите от компресиране ще бъдат видими. JPEG, ако имате нужда от по-малък файл за бързо споделяне или преглед и леко намаляване на качеството е приемливо. За миниатюри, показвани при фиксиран малък размер, JPEG при разумна настройка за качество обикновено е достатъчен.

Как да направя контактен лист от видео?

Изберете достатъчно ниска честота на кадрите, за да получите управляем брой снимки, вместо единичен времеви печат. За двуминутен клип 1 кадър в секунда ви дава около 120 кадъра, което е достатъчно плътно, за да изберете добра мрежа от тях; изходът е ограничен до 300 кадъра на изпълнение във всеки случай. Днес няма по-груба честота от 1 fps, така че за по-рядка мрежа извлечете при 1 fps и запазете само кадрите, които искате за крайната мрежа.