FFMPEG для интерполяции кадров аля Twixtor

FFMPEG для интерполяции кадров аля Twixtor

Может ли кто-нибудь из экспертов FFMPEG сказать мне, может ли FFMPEG делать сложную интерполяцию кадров, похожую на плагин Twixtor в After Effects? Если да, то какие настройки можно попробовать? Я пытаюсь создать сверхзамедленное видео высокой четкости из источника 60 кадров в секунду. То есть преобразовать в 120 кадров в секунду и интерполировать кадры.

решение1

FFmpeg не может этого сделать.

Былонекоторые обсужденияо реализации такой функции говорили пару лет назад, но до сих пор ничего похожего на интерполяцию кадров в проекте не реализовали.

Конечно, вы можете использовать аналогичный бесплатный инструмент, напримерзамедленная съемкаВидеокоторый также размещенна GitHubесли вы хотите взглянуть на источник.

решение2

В библиотеке libavfilter есть фильтр, который называетсяминтерполировать, который доступен с ноября 2016 года. Согласно описанию установщика, его цель:

«Преобразовать видео в указанную частоту кадров, используя интерполяцию движения».

Пример использования:

ffmpeg -i input.60fps.hevc -filter "minterpolate='fps=120'" output.120fps.hevc

Я не знаю, какие настройки использовать, чтобы достичь наилучшего результата. По моему опыту, настройки по умолчанию обеспечивают приемлемое качество самой интерполяции движения. Но иногда появляются некоторые очень заметные визуальные артефакты. Мне не удалось найти комбинацию настроек, которая бы полностью их устранила.

Фильтр в данный момент очень медленный. Он может выводить около 2 кадров интерполированного движения видео 1080p в секунду на современном высокопроизводительном процессоре x86. Я заметил, что интерполяция использует только один поток процессора, что, вероятно, является основной причиной такой низкой скорости.

Чтобы ускорить фильтрацию на многоядерном процессоре, может быть целесообразно разделить входное видео на несколько фрагментов одинаковой длины и применить интерполяцию движения ко всем ним параллельно.

решение3

Месяцы после обновления:

ffmpeg -i input.mp4 -movflags +faststart -filter_complex "[0:v]minterpolate='fps=60:mi_mode=mci:me_mode=bidir:mc_mode=obmc:me=ds:vsbmc=1'" -preset сверхбыстрый вывод.mp4

Оригинальный пост:

Я могу добиться таких эффектов (хотя и не идеально), с помощью tblendфильтр

ffmpeg -i источник.mp4 -фильтр:v таблица -r 120 результат.mp4

Связанный контент