LINUX.ORG.RU

SlowmoVideo для создания slow-motion видео

 ,


7

3

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

То есть, допустим, можно превратить видео из 24fps в 60fps. Качество результата зависит от исходного материала, а также типа движения камеры в видео. Есть возможность редактировать огрехи в ручном режиме.

SlowmoVideo использует ffmpeg для чтения и записи видеофайлов и связку из GPU-KLT+FLOW+OpenCV для расчета визуального потока, так что это не просто создание видео, которое будет проигрываться со скоростью 0,01. Вы можете плавно замедлять и ускорять кадры, добавив к ним, по желанию, размытости.

Возможности SlowmoVideo:

  • Вы можете обрабатывать видео в любом формате, который поддерживается ffmpeg. Также вы можете загрузить последовательность изображений.
  • SlowmoVideo работает не с постоянными коэффициентами замедления — для работы используются кривые, которые позволяют произвольно устанавливать ускорение/замедление.
  • В видео можно добавить неограниченное количество slow-motion эффектов.

>>> SlowmoVideo на GitHub

>>> Подробности

Зачем нужно было для этого делать целую отдельную программу, вместо того, чтобы добавить эти возможности в существующие?

Dmitry_Sokolowsky ★★★★★ ()
Ответ на: комментарий от Dmitry_Sokolowsky

Слишком мощная и «крутая» фича для существующих (я так понимаю, ffmpeg имеется в виду). С остальными «фильтрами» не идёт ни в какое сравнение. Хотя было бы здорово. С другой стороны, если тут используются кривые, для них уже нужен отдельный интерфейс, так что в ffmpeg не особо и выйдет.

Ну и вообще юниксвей. Программа делает ровно одну вещь, но делает её хорошо.

Работает неплохо, кстати.

Psych218 ★★★★★ ()

SlowmoVideo для создания slow-motion видео

Внезапно!

theNamelessOne ★★★★★ ()

Qt4 as C++ programming framework

Отлично! Можно юзать!

anonymous ()

Смотреть в realtime 24->60 fps можно?

KRoN73 ★★★★★ ()
Ответ на: комментарий от Psych218

Под виндой это делается одним directx фильтром, после чего интерполированное видео смотрится в любом привычном плеере в реалтайме. Вполне себе unixway.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Вопрос на сколько качественно. В этом деле не все йогурты одинаково полезны. Повышение FPS наиболее простым и очевидным способом даёт не самый халяльный результат, а тут алгоритм явно не самый простой и очевидный.

MrClon ★★★★★ ()

А как у него со скоростью? Оно real-time, случайно, не умеет?

hobbit ★★★★★ ()
Ответ на: комментарий от val-amart

Могу предположить что для повышения FPS в фильмах до максимального FPS монитора. Это нужно что-бы все фильмы выглядели как дешёвые ситкомы, популярная фича.

MrClon ★★★★★ ()
Ответ на: комментарий от hobbit

Судя по скорости рендеренга 720p на i5 проце — нет, даже близко нет.

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

Это нужно что-бы все фильмы выглядели как дешёвые ситкомы

Два чая, братунь, как можно смотреть эту интерполированную вату совершенно не представляю.

A1 ()
Ответ на: комментарий от KRoN73

Да всем срать как там делается в твоей винде.

anonymous ()
Ответ на: комментарий от MrClon

Вопрос на сколько качественно.

Вопрос, конечно.

Повышение FPS наиболее простым и очевидным способом

Это каким же? Дублированием кадров? Это не интерполяция. А с нормальной интерполяцией требуется разделение картинки на подвижные объекты, и тут простых и очевидных способов нет :)

А практическая польза реальна. Мне даже на всякие FullHD пофиг, хватает 720p. Но вот дёргающийся на 24—30 fps экран уже несколько лет не переношу, включение интерполяции 60fps на десктопе или 100..120fps на телевизоре — это как глоток чистого воздуха. Глаза просто отдыхают.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Это каким же? Дублированием кадров? Это не интерполяция

Есть промежуточный вариант — достраивать недостающие кадры смешением соседних. Этот способ часто используется при небольшом изменении FPS (например с 23.98 до 25).

MrClon ★★★★★ ()

А вообще нужно бы затестить плагины для ffmpeg, vapoursynth + MVTools. На их основе SVP и работает

energetix_user ()

Видел эту штуку года три-четыре назад. Тогда она могла работать только на картах NVidia. Это уже починили?

mironov_ivan ★★★★★ ()
Ответ на: комментарий от energetix_user

Here're the news for those who interested in Linux & MacOS versions.
Linux test builds are available now for our beta testers (including «Co-Authors» from Indiegogo), public version will be released as far as it'll be stable enough. But keep in mind that we're targeting Ubuntu 14.04 or later now (both 32-bit and 64-bit versions will be available but 64-bit one is preferable).
Mac test builds will come out in a few weeks or even earlier ;)

EvilFox ()
Ответ на: комментарий от Dmitry_Sokolowsky

Dmitry_Sokolowsky> Зачем нужно было для этого делать целую отдельную программу, вместо того, чтобы добавить эти возможности в существующие?

UNIX-Way, традиции, холодная голова. Да и ради одной задачи ставить целого монстра, интерфейс которого может быть не по нраву - это идиотизм.

Quasar ★★★★★ ()
Последнее исправление: Quasar (всего исправлений: 1)
Ответ на: комментарий от KRoN73

KRoN73> Дублированием кадров? Это не интерполяция.

Вполне себе интерполяция по определению. Только дубовый алгоритм. В сабже же наверняка что-то посложнее.

Quasar ★★★★★ ()
Ответ на: комментарий от Quasar

В сабже с компенсацией движения. Краткая история вопроса такова:

  • вопрос о частоте кадров для создания иллюзии при помощи сменяющихся картинок не имеет однозначного решения из-за особенностей зрения;
  • когда целлулоид был дорогой, всем хватало 640 килобайт 12 кадров/с;
  • потом, когда сцеллулоид стал недорогим, стали снимать говно вместо кино на 24 кадра/с, что является оптимальным соотношением свойств зрения и стоимости плёнки, плюс в процессе экспонирования каждого кадра создаётся размывание движения, примерно соответствующее таковому для зрения человека, что визуальной иллюзии способсбтвует, но...
  • зрителей раздражало мелькание при смене кадров (перемещении плёнки), а конструктора кинопроектора раздражала необходимость старт-стопного режима работы лентопротяжного механизма, тогда придумали в процессе кинокопирования дублировать кадры и создать ещё один костыль компромисс — снизить время смены кадра и сделать движение плёнки более равномерным;
  • второй казус случился на заре становления телевидения, проблема была в том, как передать изображение посредством одного электрического сигнала; очередным костылём очевидным решением стала идея развёртки, т.е. передачи при помощи характеристик одного электрического сигнала информации о яркости всех точек растра последовательно, но не фартануло: кадр киноплёнки хранит информацию о всех фазах движения за время экспонирования — каждый кусочек одного и того же кадра об одних и тех же фазах движения, а с развёрткой всё не так — она происходит одновременно с фиксацией фаз движения и каждый элемент растра хранит информацию о несколько отличном периоде экспонирования, т.о. за время прохождения развёртки первый элемент растра, и его последний элемент различаются по фазе движения почти на время развёртки кадра и движущиеся объекты серьёзно искажают свою форму при воспроизведении; тут снова пришлось искать компромисс и таки его [костыль, да] нашли — придумали разворачивать чересстрочно: сначала все нечётные строки, а затем всё чётные — вместо картинки получили лютый кал конструктор, где геометрия быстро движущихся объектов искажалась не очень сильно, изображение отличного ковра статичных объектов передавалась довольно чётко, а изображение футбольного мяча быстро движущейся точки передавалось не очень точно, но из-за быстрого перемещения, отсутствие узоров могли рассмотреть не только лишь все;
  • частоты кадровой развёртки полей для телевидения выбрали в разных регионах планеты в соответствии с частотами питающей сети, по одной из версий, чтобы отстраиваться от помех (частотный план в радиотехнике действительно решает, если что); в империи добра была частота 60 Гц (с костыльным множителем 1000/1001, для синхронизации); в отсталых странах частоту установили ровно 50 Гц;
  • третий казус случился, когда появились видеоигры компьютеры; пользователи маркетологи решили построить свой иллюзион с гуем и мультимедией; разумеется, частоты развёртки были у всех свои собственные и разнообразные, способы развёртки поначалу тоже, но потом всё-таки устаканилась построчная, ну, чтобы вызывать острый диссонанс у любителей телевизора и порнухи домашнего видео, ага.

Кроме того, существует ряд особенностей для этого самого кино и видео:

  • прокручивание 12-кадровой плёнки на двойной скорости придаёт движениям людей и прочих животных комичность;
  • для исследования быстрых процессов на производстве и в прочих целях требуется снимать гораздо быстрее, чем показывать — иначе ничего не разглядишь;
  • в арсенале кинематографа есть йоба-эффект художественный приём со смакуемым движением, если снимать быстрее, чем показывать.

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

anonymous ()
Ответ на: комментарий от anonymous

И тут снова нас выручили костыли:

  • показывать между рекламой по телевизору кино — пожалуйте телекино — из 24 кадров/с можно сделать 25, прокрутив их и звук чуть быстрее, а для 30000/1001 кадров/с проделать более изощрённую процедуру 3:2 pulldown, когда следует замедлить 24 кадра/с до 24000/1001, затем разбить каждый кадр на чётные и нечётные строки, получив из четырёх кадров восемь полей, удвоить некоторые из них по закону чередования, после чего смешать но не взбалтывать и получить месиво, чтобы пипл хавал;
  • показать на телевизоре врага — пожалуйте — выбросим или продублируем поля так, чтобы движения выглядели совершенно противоестественными;
  • показать порно видео на мониторе — извольте подавление чересстрочности — в зависимости от вычислительных ресурсов можно показать гребёнку, поля смешать, или интерполировать с удвоением частоты или без, с маской или без и прочими свистелками, заменяющими нормальное изображение;
  • показать на мониторе кино — не вопрос — давайте разворачивать в видеобуфер растр асинхронно, что успело, то и развернётся, и не важно, что одновременно в результате очередной смены буферов на экране будет часть изображения одного и часть изображения другого кадра, а если пользователю это не нравится, дадим ему возможность синхронной развёртки — и пусть наслаждается слегка неравномерным движением из-за дополнительной задержки в смене кадров.

Но тут случилась революция гідності костылестроения: вычислительных мощностей стало хватать на анализ и предсказание движения в наборе сменяющихся картинок. Появилась возможность построить аналитическую модель сферического коня в вакууме постепенного изменения изображения от кадра к кадру, а, следовательно, можно получить двигающиеся картинки с изображением, отдалённо напоминающим оригинальное, имеющие произвольною частоту смены кадров. Теперь каждый хозяин мощной вычислительной машины мог в домашних условиях спародировать киношный йоба-эффект замедленного движения или заставить машину воспроизводить движущиеся картинки с частотой развёртки монитора, потратив при этом какие-то несколько сотен ватт электричества, добываемого из невосполнимых источников энергии. Ляпота, да и только.

Такие дела.

anonymous ()
Ответ на: комментарий от MrClon

Есть промежуточный вариант — достраивать недостающие кадры смешением соседних

Выглядит просто чудовищно.

при небольшом изменении FPS (например с 23.98 до 25).

Такие «небольшие» изменения приводят к тому, что изображение постоянно подёргивается.

KRoN73 ★★★★★ ()

А есть демо ролик, в котором показан исходник и слоумо на его основе?

andreyu ★★★★★ ()
Ответ на: комментарий от mironov_ivan

Видел эту штуку года три-четыре назад. Тогда она могла работать только на картах NVidia. Это уже починили?

В новости написано:

GPU-KLT+FLOW+OpenCV

Про cuda ни слова.

andreyu ★★★★★ ()
Ответ на: комментарий от KRoN73

Такие «небольшие» изменения приводят к тому, что изображение постоянно подёргивается

Подёргивания как-раз бываю при тупом копировании кадров. Это действительно взрывает мозг. Если недостающие кадры генерятся смешением соседних то результат получается вполне смотрибельным, только на стопкадрах (особенно на смене сцен) отчётливо видна кака.

Но, повторюсь, всё это не имеет ВООБЩЕ НИКАКОГО ОТНОШЕНИЯ К САБЖУ. Хочешь поговорить об увеличении FPS в фильмах — создай тему в толксах или в мультимедии.

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

Но, повторюсь, всё это не имеет ВООБЩЕ НИКАКОГО ОТНОШЕНИЯ К САБЖУ

Больше капса!

Хочешь поговорить об увеличении FPS в фильмах — создай тему в толксах или в мультимедии.

А смысл? Были уже не раз многостраничные темы с холиворами на тему интерполяции. Так что выделенную тему заводить смысла нет. И, наоборот, сабж решает ту же самую задачу интерполяции, которую решают при подъёме FPS в фильмах. Совершенно та же самая задача. Можешь сделать slowmo и прокрутить его с нормальной скоростью, но с бОльшим числом кадров. Получишь плавное воспроизведение средсвами slowmo. Можешь взять средство уплавнения, получить интерполяцие недостающие кадры и воспроизвести с «медленным» fps. Получишь slowmo средствами уплавнения. Одна и та же задача.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Совершенно та же самая задача

Ну да, а какой-нибудь DaVinci Resolve (задроченная программа для цветокоррекции, ну и с некоторых пор для монтажа) решает ту-же задачу что фильтр «сепия» в любом граф редакторе. Та-же задача, изменить цветовой баланс видео.

Ну да, принцип тот-же самый. Но этот принципиальный алгоритм (интерполяция недостающих кадров) можно использовать для сильно разных целей. Те подходы которые хороши для одной цели могут не годиться для другой. Я вообще сомневаюсь что эту программу можно использовать для того что нужно тебе, и я почти полностью уверен что использовать её для этого не стоит.

MrClon ★★★★★ ()
Ответ на: комментарий от andreyu

Про cuda ни слова.

Если не ошибаюсь, то там изначально и не cuda была, а nvidia cg.

mironov_ivan ★★★★★ ()
Ответ на: комментарий от mironov_ivan

Да, судя по исходникам, cg оттуда таки выпилили и сделали на glsl. Значит должно везде работать.

mironov_ivan ★★★★★ ()
Ответ на: комментарий от MrClon

Та-же задача, изменить цветовой баланс видео.

Не та же. Это разные задачи из одной категории.

А в нашем случае — одна задача, служащая разным целям.

Я вообще сомневаюсь что эту программу можно использовать для того что нужно тебе

Делаем slowmo и запускаем с той же скоростью. И получим интерполированное видео.

Берём интерполированное видео и запускаем с обычным fps. Получаем slowmo.

KRoN73 ★★★★★ ()
Ответ на: комментарий от KRoN73

Это при условии что сабж может выдавать адекватный результат на любом исходнике, в чём я сомневаюсь.
Конечно выдавать приемлемый результат на любом исходнике это необходимое свойство любой программы предназначенной для создания «эффекта мыльной оперы», вот только эта программа для этого не предназначена.

Сейчас рендерю кусок из «Рокенрольщика» Гая Ричи, два с половиной часа рендерю, DVD-Rip, минутный кусок, готово 30%. Пытаюсь получить эффект мыльной оперы. Судя по предварительным данным результат не понравится не только хейтерам этого эффекта, но и вообще всем.

MrClon ★★★★★ ()
Ответ на: комментарий от MrClon

А вот фиг мне, засегволтилась програмулина. Хотя осталось 2500 отрендереных кадров, можно собрать их в видео.

MrClon ★★★★★ ()
Ответ на: комментарий от Quasar

KRoN73> Дублированием кадров

Почему ты так дебильно цитируешь,когда есть штатное цитирование?

anonymous ()

можно превратить видео из 24fps в 60fps. Качество результата зависит от исходного материала, а также типа движения камеры в видео.

Про интерполяцию слышал, когла речь шла о дорогих сканерах. А теперь вот видео. Интерполяция, как ни крути, это есть угадывание. Скажите, насколько может при интерполяции исказится лицо человека. Какие-то тесты были, когда сравнивали снимки оригинального изображения сделанного в высоком качестве, и снимок того же изображения полученного в низком разрешении, а потом интерполированного.

Есть возможность редактировать огрехи в ручном режиме.

Если речь идёт об интерполяции, то неодобряю! Человек сам никогда не сможет угадать, где нужен пискель, а где ненужен.

anonymous ()
Ответ на: комментарий от anonymous

Какие-то тесты были, когда сравнивали снимки оригинального изображения >сделанного в высоком качестве, и снимок того же изображения полученного >в низком разрешении, а потом интерполированного.

Один кадр и набор из нескольких соседних кадров думаю не одно и то же.

Gibson1980 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.