Замедление видео

Простейшая, на первый взгляд, операция, доступная во всех без исключения монтажных программах. Но почему настолько разные результаты? Отчего полученное видео зачастую «дергается», движение в кадре неравномерноe? Или, напротив, венцом стараний становится замыленная картинка...

Пора разобраться, а заодно и проверить на практике способности некоторых известных видеоредакторов и плагинов.

  1. Общие вопросы
  2. Программы
  3. Плагины
  4. Выводы

Общие вопросы

Предположим, что нам потребовалось изменить скорость воспроизведения фрагмента фильма. Поскольку частота кадров в фильме должна остаться неизменной, то придётся либо выкинуть часть кадров (при ускорении), либо дорисовать (при замедлении). О том, как это делается, мы поговорим. Существует несколько способов дорисовать недостающие кадры.

Во-первых, можно дублировать соседний кадр (при замедлении) или выкинуть лишние кадры пропорционально степени ускорения.


Вверху — исходное видео, замедленное в 2,5 раза. Метод дублирования повторяет кадры то два, то три раза (тем самым, создавая слегка неравномерно замедленное видео).

Этот способ самый простой, но не всегда самый качественный. При замедлении он приводит к появлению эффекта «дёрганности», или «стробоскопа» (иногда, впрочем, это может служить и художественным целям). При ускорении, если коэффициент ускорения был не целым числом, возникает довольно неприятное дёргание (предположим, мы ускоряем в 1,5 раза: тогда, выкидывая каждый третий кадр, на выходе получим кадры №1, 2, 4, 5, 7, 8 и т.д., то есть между частью кадров временной интервал вдвое больше, чем между другими, что при наличии движения очень заметно). Отсюда вывод — применять этот метод для ускорения можно только при целой кратности. Для замедления это утверждение также справедливо, хотя искажения (или дерганость изображения) менее заметны.

Во-вторых, можно смешать (наложить) соседние кадры в определённой пропорции (blend). Например, замедляя видео в три раза, мы будем иметь следующую ситуацию: кадр 1 в полученном видео равен кадру 1 в исходном, кадр 2 — образован наложением 2/3 первого исходного кадра и 1/3 второго, кадр 3 — 1/3 первого и 2/3 второго, кадр 4 — равен второму исходному и т.д.


Метод смешивания накладывает друг на друга соседние кадры в нужной пропорции (на рисунке изображена степень смешивания, а не пространственная область на кадре).

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

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


Метод интерполяции оценивает движение между кадрами и дорисовывает кадры в нужной фазе движения (на рисунке — схематичная иллюстрация фаз движения).

Успешность этого метода напрямую зависит от того, насколько качественно происходит анализ движения. В идеале видео получится очень плавным и резким, то есть, без недостатков первых двух методов. Однако, возможно появление артефактов (например, при некачественном отделении движущейся фигуры от фона она будет «утягивать» за собой прилегающую область фона); при невозможности сопоставить объекты в соседних кадрах такие алгоритмы часто переключаются в режим смешивания кадров.

Можно упомянуть и о том, что глобальное движение кадра, как целого, может быть ускорено/замедлено при помощи комбинации первого метода (дублирования) с последующей обработкой фильтрами стабилизации (например, depan или deshaker, подробнее см. в статье «Стабилизация видео»). В этом случае дёргания кадра как целого будут устранены, но движения объектов внутри кадра могут остаться с рывками.

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

Что из этого доступно в программах обработки видео? В видеоредакторах, как правило, реализован второй метод (смешивание кадров) в комбинации с возможностью использования BOB-деинтерлейса при замедлении (автоматически). При этом скорость можно менять в фиксированное число раз или (в некоторых редакторах) плавно ускорять/замедлять, создавая интересные эффекты. Если хочется попробовать теоретически наиболее качественный метод интерполяции движения, то придётся обращаться к внешним программам. Из свободно распространяемых фильтров есть плагин MVTools для Avisynth, в котором, в частности, реализован и метод изменения числа кадров с помощью интерполяции движения. Также существуют отдельные (коммерческие) программы для этого — RealViz Retimer (считающийся наиболее качественным, в том числе из-за богатства ручных настроек и возможности вручную создавать маску для разделения объекта и фона), DynaPel MotionPerfect, а также плагин к Adobe AfterEffects и Adobe Premiere Pro — Twixtor.

Программы

После изучения теоретической составляющей, пора испытать некоторые известные видеоредакторы. Все ли из них одинаково хорошо (или плохо) умеют замедлять видео? В качестве примера будем использовать этот незамысловатый сюжет:

Обратите внимание, тайм-код внизу кадра добавлен неслучайно: во-первых, после обработки видео станет отчетливо видна степень замедления, а во-вторых, тайм-код сам по себе — достаточно контрастный и резко меняющийся объект, что позволит наиболее полно раскрыть умения тестируемых программных средств.

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

Adobe Premiere Pro

В этом великолепном видеоредакторе скорость клипа изменяется довольно просто: лишь нажмите правой кнопкой мыши на клипе, и выберите из контекстного меню пункт Speed/Duration... В появившемся одноименном окне введите нужное значение (в данном случае 33%), и нажмите ОК.

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

Adobe After Effects

Что нам покажет легендарный монстр композитинга? Модуль изменения длительности клипа здесь вызывается также из контекстного меню: Time -> Time Stretch. Здесь, в отличие от Premiere, чтобы замедлить видео в три раза, необходимо ввести не 33, а 300% — сказывается несколько иная логика разработчиков, все-таки After Effects не монтажная программа...

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

Sony Vegas

В этом довольно оригинальном видеоредакторе даже длительность клипа изменяется необычно (с точки зрения Premiere-водов, разумеется). Достаточно включить на клипе отображение линии скорости (Insert -> Video Envelopes -> Event Velocity), и теперь, зацепив мышкой эту зеленую линию, тяните ее куда угодно, вверх или вниз. Плавающая рядом с курсором подсказка отображает текущую позицию курсора, а также процент ускорения либо замедления. И здесь, как раньше, мы замедлим видео в три раза: утянем зеленую прямую вниз до 33%.

Результат — нечто среднее между работой Adobe Premiere и After Effects. Цифры меняются плавно, мячик не дергается...

Canopus Edius

Здесь скорость клипа изменяется подобно тому, как это делается в Premiere — с помощью модуля, вызываемого либо через контекстное меню, либо (что гораздо быстрее и удобнее) нажатием «горячих клавиш». Alt+E, и окошко Clip Speed перед вами, остается лишь ввести знакомые 33%.

Результат до боли напоминает все предыдущие; это еще раз доказывает, что во всех видеоредакторах при замедлении происходит банальное смешивание кадров (или полукадров), лишь степень этого смешивания у каждого конкретного видеоредактора — своя.

Pinnacle Studio

Единственный видеоредактор, где для изменения скорости клипа к нему необходимо применить одноименный эффект (хотя, по логике — почему бы и нет? Разве замедление нельзя считать эффектом? Не только можно, но и нужно! Тогда почему в остальных программах операции со скоростью встроены в контекстное и программное меню?).

Результат — ни дать, ни взять Premiere! Даже мигающие стрелочки тайм-кода ведут себя одинаково.

Ulead VideoStudio

И в этом видеоредакторе регулировка скорости клипа вынесена в контекстное меню мыши. Нужный пункт так и называется: Скорость воспроизведения...

Здесь замедление очень раздражает глаза за счет отчетливой дискретности движения мячика, что особенно заметно на 16-17 кадрах (см. тайм-код). Цифры самого тайм-кода при этом меняются резко, так же, как и в результате работы After Effects.

DynaPel MotionPerfect

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

Какой неожиданный результат! Мячик сам на себя не похож, зато обратите внимание на цифры тайм-кода: это настоящий морфинг!

Dynapel SlowMotion

Еще одна утилита от того же производителя, имеющая более скромные способности: здесь можно замедлить видео лишь в полтора, два, два с половиной и три раза.

Однако как видим, «движок» этого программного средства полностью идентичен «движку» старшего, более гибкого в настройках, брата. Небольшие отличия в расположении появившихся артефактов лишь подчеркивают родство.

Плагины

Плагины (plug-ins) — великолепное приспособление, ведь эти средства позволяют существенно расширить возможности какой-либо программы. Подчас до такой степени, что разработчик этого пакета удивляется способностям своего чада. Чем известнее, распространеннее программа, тем больше создается «под неё» плагинов. Как бесплатных (силами энтузиастов), так и коммерческих, имеющих стоимость, подчас сопоставимую с ценой самой программы, для которой этот плагин создан.

Назначение плагинов может быть самым разным. Практически для любой операции, проводимой при монтаже, существует отдельный плагин — будь то заливка градиентом, создание титров, переходов и т.п. Не обойдена вниманием и работа с изменением частоты кадров — замедление или ускорение видео. Давайте проанализируем дарования самых известных плагинов, созданных исключительно для «ретайминга» — изменения времени проигрывания.

RealViz Retimer

Первое, что привлекает внимание на странице этого плагина, — его стоимость (в настоящее время Retimer сильно подрос и получил окончание Pro). Посмотрим на него в действии.

Понадеемся на мудрость разработчиков, и оставим настройки данного плагина по умолчанию. Все настройки, кроме способа просчета. Данный плагин предлагает на выбор три способа, и первый из них — Estimation&Warping (Сравнение и Изменение). Предполагается, что плагин при просчете станет анализировать видео, и искусственно дорисовывать недостающие кадры.

Итог работы — мягко говоря, странный. Снова видим непонятный переливчатый объект вместо мячика, а по вертикальной стене вслед за этим объектом пробегает ярко выраженный артефакт.

Сменим способ просчета, выберем Frame Blending — смешивание кадров.

В итоге, знакомое дергание мячика, а цифры тайм-кода сменяются без всякого морфинга.

Прибегнем к последнему способу — Nearest Frame (по ближайшему кадру).

И снова плачевный результат. Мячик дергается, цифры тайм-кода резко скачут...

В чем же дело? Неужели такой «продвинутый» плагин, расхваливаемый во всех конференциях, не способен дать более-менее приличный результат? «Один ум хорошо — а два лучше», придется обратиться за помощью к специалистам.

Сергей Гавриш aka Turyst04 справедливо рассудил, отказавшись от «умолчальных» настроек плагина. Видеоматериал, подлежащий обработке, может иметь самые разные характеристики, и перед тем, как начать обработку, следует определиться с такой важной составляющей, как поля.

В нашем случае исходное видео — это «стандартный» DV-AVI (PAL 720x576, 25 кадр/сек). Следовательно, в настройках плагина необходимо выбрать пункт Lower Field First (нижнее поле — первое).

Попробуем просчитать видео с новыми настройками.

Совсем другое дело!

Дрожание объекта заметно уменьшилось, а цифры тайм-кода ведут себя блестяще!

Twixtor

Данный плагин в среде специалистов позиционируется как наиболее «продвинутое» средство для изменения скорости проигрывания видео. На рисунке приведены настройки, с которыми производилось изменение скорости нашего клипа. Для начала испробуем способ Blend.

В итоге, мячик ведет себя не совсем естественно, к нему «прилепляются» какие-то артефакты, зато цифры тайм-кода — отлично!

А что нам даст изменение способа просчета с Blend на Nearest?

Результат — почти то же, что и в случае с Blend. Лишь артефакты не так ярко выражены, да цифры меняются немного резче.

Испробуем последний из способов просчета — Motion Weighted Blend.

Тоже неплохо. Но хотелось бы еще лучше.

Давайте снова выставим параметр Lower Field First, при это способ просчета оставим Blend.

Совершенно иной результат.

Артефактов практически нет, правда, и мячик приобрел небольшой смазанный след. Зато картина выглядит наиболее естественно.

MVTools

В заключение рассмотрим способ изменения частоты кадров с помощью плагина MVTools для программы Avisynth (те, кто с ней не знаком, могут прочесть вводную статью). Способ работы с этой программой очень отличается от привычных видеоредакторов, здесь нет привычных глазу любителя интерфейсных «рюшечек». В случае с этой программой нам потребуется:

  • написать скрипт — текстовый файл с расширением *.avs, в котором указана последовательность операций с видео;
  • открыть его в программе-кодировщике, понимающей скриптовые файлы;
  • сохранить видео в надлежащем формате.

Для сохранения в контейнер AVI удобна программа VirtualDub, для кодирования в MPEG-2 — например, Canopus Procoder.

Итак, чтобы замедлить файл sample.avi в три раза, мы создадим файл slow.avs с таким содержанием:

avisource(«sample.avi»).killaudio()
source=separatefields()
backward_vec = source.MVAnalyse(isb = true, truemotion=true, pel=2, idx=1, search=3)
forward_vec = source.MVAnalyse(isb = false, truemotion=true, pel=2, idx=1, search=3)
cropped = source.crop(4,4,-4,-4) # обрезка на половину размера блока 8
backward_vec2 = cropped.MVAnalyse(isb = true, truemotion=true, pel=2, idx=2, search=3)
forward_vec2 = cropped.MVAnalyse(isb = false, truemotion=true, pel=2, idx=2, search=3)
source.MVFlowFps2(backward_vec,forward_vec,backward_vec2,forward_vec2,num=150,den=1,idx=1,idx2=2)
weave()
assumefps(25)

Этот файл мы открываем в VirtualDub, устанавливаем нужное сжатие и сохраняем в slow.avi.

Кратко рассмотрим параметры скрипта: предполагая, что видео было чересстрочным с частотой кадров 25 к/с, мы разложили его на поля командой SeparateFields, получив, соответственно, 50 полей/с, и замедлили в три раза (параметр num=150 в функции MVFlowFps2, равный коэффициенту замедления, умножить на 50), а в конце собрали обратно командой Weave. Для прогрессивного видео эти манипуляции не нужны, а число num нужно уменьшить вдвое. В конце мы приводим видео к стандартной частоте кадров (25).

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

Выводы

Сложно сделать всеобъемлющий вывод на основании лишь одного примера — нашего пресловутого мячика. Сцен, подвергающихся замедлению, может быть бесконечно много; в каждой сцене траектория и скорость движения объектов различны. Где-то наилучший результат даст незатейливый «замедлитель», встроенный в Pinnacle Studio, а в каких-то случаях и Twixtor не справится. В любом случае, идеального, киношного результата добиться трудно, не следует забывать, что в профессиональном видео для съемки SlowMo используются специальные скоростные камеры.

В нашем случае, как видно из опытов, наиболее положительно себя показали специализированные средства замедления, в то время как встроенные в видеоредакторы фильтры оказались лишь банальными интерполяторами кадров (или полукадров). Главное при работе с этими специализированными средствами — не забывать, с каким видео имеешь дело (прогрессивное либо чересстрочное с определенным порядком полей), и вовремя вносить нужные изменения в настройки плагина или программы.




21 апреля 2008 Г.

. .

, , , . ? «», e? , , ...

, .

, . , ( ), ( ). , , . .

-, ( ) .


— , 2,5 . , ( , ).

, . «», «» (, , ). , , (, 1,5 : , , 1, 2, 4, 5, 7, 8 .., , , ). — . , ( ) .

-, () (blend). , , : 1 1 , 2 — 2/3 1/3 , 3 — 1/3 2/3 , 4 — ..


( , ).

, , «» - , . (, ). . , .

-, , . , , .


( — ).

, . , , . , (, «» ); .

, , , / () (, depan deshaker, . « »). , .

, , , , , , , . , , BOB- ( «», ) .

? , , ( ) BOB- (). ( ) /, . , . MVTools Avisynth, , , . () — RealViz Retimer ( , - ), DynaPel MotionPerfect, Adobe AfterEffects Adobe Premiere Pro — Twixtor.

, . ( ) ? :

, - : -, , -, - — , .

, . — , , , .

Adobe Premiere Pro

: , Speed/Duration... ( 33%), .

, -, , — .

Adobe After Effects

? : Time -> Time Stretch. , Premiere, , 33, 300% — , - After Effects ...

, , . , . - , , .

Sony Vegas

( Premiere-, ). (Insert -> Video Envelopes -> Event Velocity), , , , . , . , , : 33%.

— Adobe Premiere After Effects. , ...

Canopus Edius

, Premiere — , , ( ) « ». Alt+E, Clip Speed , 33%.

; , ( ), — .

Pinnacle Studio

, (, — ? ? , ! ?).

— , Premiere! - .

Ulead VideoStudio

. : ...

, 16-17 (. -). - , , After Effects.

DynaPel MotionPerfect

, . , , ( ) - . , .

! , -: !

Dynapel SlowMotion

, : , , .

, «» «» , , . .

(plug-ins) — , - . , . , , « » . ( ), , , , .

. , , — , , .. — . , «» — .

RealViz Retimer

, , — ( Retimer Pro). .

, . , . , — Estimation&Warping ( ). , , .

— , . , .

, Frame Blending — .

, , - .

Nearest Frame ( ).

. , - ...

? «» , , - ? « — », .

aka Turyst04 , «» . , , , , , , .

— «» DV-AVI (PAL 720x576, 25 /). , Lower Field First ( — ).

.

!

, - !

Twixtor

«» . , . Blend.

, , «» - , - — !

Blend Nearest?

— , Blend. , .

— Motion Weighted Blend.

. .

Lower Field First, Blend.

.

, , . .

MVTools

MVTools Avisynth (, , ). , «». :

  • — *.avs, ;
  • -, ;
  • .

AVI VirtualDub, MPEG-2 — , Canopus Procoder.

, sample.avi , slow.avs :

avisource(«sample.avi»).killaudio()
source=separatefields()
backward_vec = source.MVAnalyse(isb = true, truemotion=true, pel=2, idx=1, search=3)
forward_vec = source.MVAnalyse(isb = false, truemotion=true, pel=2, idx=1, search=3)
cropped = source.crop(4,4,-4,-4) # 8
backward_vec2 = cropped.MVAnalyse(isb = true, truemotion=true, pel=2, idx=2, search=3)
forward_vec2 = cropped.MVAnalyse(isb = false, truemotion=true, pel=2, idx=2, search=3)
source.MVFlowFps2(backward_vec,forward_vec,backward_vec2,forward_vec2,num=150,den=1,idx=1,idx2=2)
weave()
assumefps(25)

VirtualDub, slow.avi.

: , 25 /, SeparateFields, , , 50 /, ( num=150 MVFlowFps2, , 50), Weave. , num . (25).

, .

— . , , ; . - «», Pinnacle Studio, - Twixtor . , , , , SlowMo .

, , , ( ). — , ( ), .