Создание видео с интервальной съемкой с интеграцией кадров с помощью ffmpeg

985
ybungalobill

У меня есть видео в режиме реального времени со скоростью 30 кадров в секунду, и я хочу преобразовать его в видео с интервальной скоростью 30 кадров в секунду, чтобы каждый кадр целевого видео был результатом арифметического среднего из 10 исходных кадров в линейном цветовом пространстве. Я думал об использовании framerateфильтра, но он предназначен для интерполяции кадров только при увеличении частоты кадров. Когда я уменьшаю частоту кадров, она просто отбрасывает около 9/10 кадров, что приводит к резкому движению быстро движущихся объектов вместо хорошего плавного размытия при движении.

Есть ли способ добиться этого с помощью командной строки ffmpeg?

1
Посмотрите, можете ли вы адаптировать базовый метод [здесь] (http://video.stackexchange.com/q/16552/1871). Gyan 8 лет назад 0
Я так не уверен, что именно это делает, что было бы проще написать в C с libav напрямую ... ybungalobill 8 лет назад 0
Каждый кадр в выходных данных представляет собой среднее из 4 кадров, т.е. выходной кадр 1 = среднее из входных кадров 1,2,3,4, выходной кадр 2 = среднее из входных кадров 5,6,7,8 ... Gyan 8 лет назад 0
@Mulvya это очевидно, но в каком цветовом пространстве это работает? Для хорошего размытия движения это действительно важно. Кроме того, это не выведет меня из-под влияния двух факторов. ybungalobill 8 лет назад 0
Он выполняет арифметику со значениями в декодированном виде. Если они гамма-взвешены, то есть и результат. Если вам нужен линейный пробел, вы можете заранее применить изменение формата пикселя (с увеличенной глубиной), а затем использовать [lut] (https://ffmpeg.org/ffmpeg). -all.html # lut_002c-lutrgb_002c-lutyuv) или другой соответствующий фильтр и настройте гамму. Gyan 8 лет назад 0

0 ответов на вопрос

Похожие вопросы