Могут ли какие-нибудь эксперты FFMPEG сказать мне, может ли FFMPEG выполнить любую сложную интерполяцию кадров, подобную плагину Twixtor в After Effects? Если да, то какие бы предложенные настройки можно было попробовать? Я пытаюсь создать ультра медленное движение HD-видео из источника 60 кадров в секунду. т.е. конвертировать в 120fps и интерполировать кадры.
3 ответа
FFmpeg не может этого сделать.
Пару лет назад были некоторые обсуждения о реализации такой функции, но до сих пор они не выпустили ничего похожего на интерполяцию кадров в проекте.
Конечно, вы можете использовать аналогичный бесплатный инструмент, такой как slowmoVideo, который также размещен на GitHub, если вы хотите взглянуть на источник.
Как предложил Mulvya в комментарии, библиотека libavfilter имеет фильтр minterpolate, который доступен с ноября 2016 года. Согласно описанию установщика, его целью является:
«Преобразовать видео в указанную частоту кадров, используя интерполяцию движения».
Пример использования:
ffmpeg -i input.60fps.hevc -filter "minterpolate='fps=120'" output.120fps.hevc
Я не знаю, какие настройки использовать для достижения наилучшего возможного результата. Исходя из моего опыта, настройки по умолчанию обеспечивают приемлемое качество самой интерполяции движения. Но есть некоторые очень заметные визуальные артефакты, которые иногда появляются. Мне не удалось найти комбинацию настроек, которая бы полностью их исключала.
Фильтр очень медленный в данный момент. Он может выводить около 2 кадров с интерполяцией движения видео 1080p в секунду на современном высокопроизводительном процессоре x86. Я заметил, что для интерполяции используется только один поток ЦП, что, вероятно, является основной причиной такой низкой скорости.
Чтобы ускорить фильтр на многоядерном процессоре, может быть целесообразно разделить входное видео на несколько кусков одинаковой длины и применить интерполяцию движения ко всем из них параллельно.
Месяцы после обновления:
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'" -установить сверхбыстрый вывод .mp4
Исходное сообщение:
Я могу добиться таких эффектов (хотя и не идеально) с помощью фильтра tblend
ffmpeg -i source.mp4 -filter:v tblend -r 120 result.mp4