Домой Сделай сам! Монтаж стерео 3D-видео с помощью VirtualDub и скриптов AviSynth

Монтаж стерео 3D-видео с помощью VirtualDub и скриптов AviSynth

Автор: Владимир Климов, ведущий специалист по технологии стерео кино и стерео телевидения

Почему я использую VirtualDub?

Среди видеолюбителей наилучшей монтажной программой заслуженно считается Adobe Premier Pro, но я использую VirtualDub. Почему? В основном, из вредности и ещё по ряду причин:

  • При монтаже 3D видео требуется точность до кадра, а в “Премьере” я не вижу общее количество кадров и плохо понимаю, на каком именно кадре нахожусь
  • В отличие от “Премьера”, изображение занимает практически весь экран, что позволяет лучше рассматривать мелкие детали и меньше напрягать зрение
  • VirtualDub запускается за считанные доли секунды и сразу готов к работе
  • Хорошо сжимает видео в формат MP4
  • Легко экспортирует видео в последовательность картинок, и наоборот, из секвенции картинок создаёт видео
  • В сотрудничестве с программой AviSynth легко создаёт видео в специфических 3D-форматах. При этом длина выходящего файла не ограничена. Напомню, что специальная программа Stereo Movie Maker имеет ограничение на размер выходящего .avi файла до 2 Гбайт (если больше, то результат сохраняется в виде множества отдельных файлов).

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

Монтаж стерео видео с помощью VirtualDub и скриптов AviSynth

Имея определённый опыт стерео съёмки, я и без предпросмотра представляю себе, какое 3D у меня получится, поэтому мне не нужна предварительная 3D-визуализация. Что действительно мне нужно знать отчётлво, так это то, что я монтирую оба ракурса синхронно. С точностью до кадра. Этой точности Adobe Premier Pro 2.0 на разрешении Full HD не давал – первая склейка проходила нормально, а вторая и последующие теряли один кадр. Я не стал дожидаться новых версий этого редактора и перешёл на VirtualDub. Пробовал, конечно, и Sony Vegas, но мне он показался неудобным, как и другие программы, которые, кстати, стоят немалых денег.

В редакторе VirtualDub нет определения “файл проекта” – план монтажа нужно составлять на бумаге (или держать у себя в голове). VirtualDub не импортирует видео, а всего лишь его открывает. Он не имеет ничего лишнего.

У этого видеоредактора есть невидимый друг AviSynth, который многократно увеличивает его силу. У программы AviSynth нет своего интерфейса, вообще никакого. В этом смысле уж точно – “ничего лишнего!”. Действует эта программа-невидимка через специальные скрипты, которые нужно открывать с помощью VirtualDub как если бы они были обычными видеофайлами. Эти скрипты самому писать очень просто, а делать они могут очень сложную работу.

Наверно, нет смысла пересказывать основы работы с программами VirtualDub и Avisynth. Для начинающих есть очень хорошие статьи, по которым я сам учился:

Нас, в данном случае, интересует монтаж стереоскопического 3D-видео с помощью этих программ.

Сначала хотел бы сказать о творческом аспекте 3D-монтажа. Я пробовал разные монтажные переходы – все они производят нелепое впечатление. Учитывая, что в 3D монтировать приходится не плоские картинки, а объёмные пространства, пригодными к творческому применению оказались только обычная склейка и приём “из затемнения” (“в затемнение”). Даже титры, и те так просто не наложишь, объёмные буквы являются такими же полноценными объектами пространства, как и другие предметы. Вот и получается, что простейшего видеоредактора достаточно, чтобы монтировать стереоскопическое 3D-видео.

Проблема нулевого кадра

При монтаже стерео видео требуется точность до кадра, левое и правое видео должны точно совпадать по длине. Поэтому от проблемы нулевого кадра никуда не уйти. Человек так устроен, что в обыденной жизни начинает счёт предметов с 1 и далее. Если бы у Буратино спросили: “У тебя есть три яблока. Как ты их посчитаешь?”, его ответ нетрудно предугадать. Мы не должны вслед за Буратино повторять -“Это первое яблоко, это второе, это третье”. Мы должны сказать – “Это нулевое, это первое, это второе”.

В цифровом видео нумерация кадров начинается с нуля. При работе с VirtualDub это наглядно видно, он не позволяет этого забыть никогда. Интерфейс у программы очень простой – глазу не за что зацепиться, и он зацепляется за этот ноль. В начале монтажного отрезка мы видим цифру ноль, а в конце – количество кадров, и эту “контрольную цифру” нужно всегда записывать на бумажке. Таким образом можно сэкономить очень много нервов, которые были бы потрачены при работе с “крутыми” видеоредакторами.

Как видим, никакой проблемы нулевого кадра нет, а есть проблема инерции человеческого мышления. Интерфейс программы постоянно об этом напоминает, а это – лучшая гарантия от путаницы и нестыковки.

Причина популярности 3D формата Over/Under

Форматов для обработки и хранения 3D видео много, но основных три:

  • Left + Right – левое и правое видео отдельно. Не знаю даже, можно ли это назвать 3D-форматом. В чём он, этот “+” заключается? Левое и правое видео могут быть вообще на разных дисках, т.е. они никак не связаны между собой. Для монтажа это самый неудобный вариант.
  • Side-by-Side – левое и правое видео размещены бок-о-бок и объединены в один длинный кадр. Изображение представлено в виде узкой длинной полоски – не совсем удобный формат, но имеет право на существование
  • Over/Under  – левое и правое видео размещены одно над другим и объединены в один высокий кадр. С точки зрения монтажа, этот формат не является более удобным, чем предыдущий, но является более функциональным в случае применения камер с чересстрочной развёрткой.

Большинство современных 3D-телевизоров требуют предоставить видео, редуцированное на 50% в горизонтальном или вертикальном направлении. Это так называемые 3D форматы “Anamorph side-by-side” и “Anamorph over/under”. Применение формата Over/Under позволяет нейтрализовать “гребёнку” на изображении при изготовлении анаморфного 3D-видео.

Конечно, если ваши амбиции идут дальше чем показ домашнего 3D-видео на экране 3D-телевизора узкому кругу друзей и знакомых, лучше использовать камеры, способные снимать в режиме с прогрессивной развёрткой, желательно 50 полноценных кадров в секунду (PAL) – это достаточно высокая скорость съёмки, позволяющая получить достаточно хорошую синхронизацию между левым и правым видео (в случае съёмки двумя камерами) и в то же время эта частота легко преобразуется в частоту 24 кадр/с, которая пока является единственным профессиональным стандартом для проекции на “большом” экране.

В любом случае, имея навыки монтажа стерео видео с помощью VirtualDub и скриптов AviSynth, всегда можно легко трансформировать различные 3D-форматы из одного в другой, изменять размеры изображения, частоту, применять различные фильтры для коррекции цвета, использовать различные кодеки для сжатия видео, экспортировать видео в секвенцию картинок и т.д.

Подготовка стерео 3D-видео для монтажа

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

VirtualDub работает только с несжатым видео, поэтому видео нужно расжать. Надо быть готовым к тому, что понадобится много места на диске. У меня, например, четыре дополнительных “винта” общей ёмкостью 1,2 Тбайт, объединенные в один массив данных.

После этого нужно совместить левое и правое видео (в случае съёмки двумя камерами). Этот этап можно пропустить тем, у кого 3D-моноблок. Чтобы узнать, какое количество кадров в начале или в конце какого ракурса нужно отрезать, я совмещаю изображение по кино-хлопушке и произвожу обрезку. Если вы не применяете хлопушку (и не хлопаете в ладоши при съёмке), можно совместить ракурсы по фазам движения объектов в программе Stereo Movie Maker и определить, на какое количество кадров и какой ракурс нужно обрезать.

Извлекаю звук из видео в отдельный аудиофайл name_your_video.wav и сохраняю в ту же папку.

Теперь, когда ракурсы во всех дублях согласованы по длине с точностью до кадра, объединяем левое и правое видео в 3D формат Over/Under простым скриптом:

# Load sources
A = AviSource(“S:\For_stereo_video\name_your_video…_L.avi”)
G = AviSource(“S:\For_stereo_video\name_your_video…_R.avi”)
F = StackVertical (A,G)
audio = WAVSource(“S:\For_stereo_video\name_your_video.wav”)
AudioDub(F,audio)

Подставьте свои названия диска, папки и видео и сохраните этот файл с названием script_Over_under.avs После этого откройте этот скрипт с помощью VirtualDub как будто это простой видеофайл. Теперь сохраните как AVI файл.

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

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

Процесс монтажа

Надеюсь, понятно, что я монтирую 3D как 2D? Монтирую левый ракурс, точно зная, что он составляет с правым единое целое. При разрешении монитора ПК 1920×1080 пикселей, VirtualDub показывает на экране практически весь кадр формата Full HD. При удвоенной высоте кадра мы просто не видим нижнюю часть.

Описать процесс 2D монтажа?

Это очень несложный процесс. В меню “File” выбираем строчку “Open video file…” и открываем тот видеофайл, который хотим. Передвигаем ползунок на тот номер кадра, который хотим сделать начальным, идём в меню “Edit”, выбираем строчку “Set selection end” (что означает “установить выбранный кадр последним”). Выделенный участок становится светло-синим. Опять идём в меню Edit и выбираем строчку Cut (что означает удалить) – выделенный участок исчезает. Слегка напоминает работу в редакторе Sony Vegas. Немного непривычно, но ничего сложного.

Если хотите к этому видео добавить ещё одно (т.е. склеить вместе два видео), то идёте в меню “File”, выбираете строчку “Append AVI segment…” и добавляете тот видеофайл, который хотите. Таким способом добавляем любое количество видеофайлов. Какие-то участки видео выделяем и удаляем в соответствии со своим творческим чувством. После того как смонтировали всё, что хотели, идём в меню File, выбираем строчку Save as AVI… и сохраняем результат монтажа. Это так называемый элементарный монтаж с применением простой склейки.

Если хотите, чтобы ваш фильм начинался “из затемнения”, то первый видео фрагмент нужно предварительно подготивить. Напишем несложный текст в программе “блокнот”:

# Fading
AVISource(“S:\For_stereo_video\name_your_video_over_under.avi”)
# fade-in the first 30 frames from black
FadeIn(30)

Подставьте свои названия диска, папки и видео и сохраните этот файл с названием script_Fade_In.avs После этого откройте этот скрипт с помощью VirtualDub как будто это простой видеофайл. Нажмите кнопку Play, чтобы посмотреть. Теперь сохраните как AVI файл. Перед названием файла добавьте приставку Fade_In, чтобы самому не забыть, почему в начале в этом видео всё темно. Для монтажа используйте этот модифицированный фрагмент – и будет у вас фильм “из затемнения”.

Если хотите, чтобы Ваш фильм заканчивался “в затемнение”, то последний фрагмент нужно предварительно подготовить через script_Fade_out.avs

# Fading
AVISource(“S:\For_stereo_video\name_your_video_over_under.avi”)
# fade-out the last 30 frames to black
FadeOut(30)

На всякий случай привожу текст скрипта “Dissolve”, который позволяет сделать так, чтобы одно изображение постепенно исчезало, а другое в это время появлялось:

# Load sources
A=AviSource(“S:\For_stereo_video\name_your_first_video.avi”)
B=AviSource(“S:\For_stereo_video\name_your_second_video.avi”)
# 30 frame Dissolve between clipA & clipB
Dissolve(A,B,30)

После того, как картинка смонтирована, остаётся смонтировать звук. К сожалению, в VirtualDub не очень удобно работать со звуком, поэтому я рекомендую для финального монтажа звуковой дорожки использовать Adobe Premier Pro.

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

A = AviSource(“S:\For_stereo_video\name_video…_over_under.avi”)
# crop the dimensions of the video frame from 1920×2160 to 1920×1080
B = Crop(A, 0, 0, 0, -1080)
# resize the dimensions of the video frame from 1920×1080 to 640×360
C = GaussResize(B, 640, 360)
return C

Подставьте свои названия диска, папки и видео и сохраните этот файл с названием: script_To_small_size.avs

После того, как смонтируете звуковую дорожку, желательно сохранить звук отдельно в виде файла с названием ready_sound_for…_.wav. На всякий случай. В дальнейшем, если будете делать цифровой 3D-кинопакет DCP для показа своего фильма на “большом” экране кинотеатра, вам придётся работать со звуком и изображением отдельно.

Чтобы выделить из LR Over/Under видео левый ракурс, можно использовать скрипт Extract_left_from_over_under.avs

A = AviSource(“S:\For_stereo_video\name_video…_over_under.avi”)
# crop the dimensions of the video frame from 1920×2160 to 1920×1080
B = Crop(A, 0, 0, 0, -1080)
return B

Чтобы выделить из LR Over/Under видео правый ракурс, можно использовать скрипт Extract_right_from_over_under.avs

A = AviSource(“S:\For_stereo_video\name_video…_over_under.avi”)
# crop the dimensions of the video frame from 1920×2160 to 1920×1080
B = Crop(A, 0, 1080, 0, 0)
return B

Если хотите разместить своё 3D-видео в Интернете, например, на популярном сервисе YouTube, для этого нужно редуцировать видео на 50%. Для этого напишем несложный текст:

# Load source
A = AviSource(“S:\For_stereo_video\name_video…_over_under.avi”)
VerticalReduceBy2

Подставьте свои названия диска, папки и видео и сохраните этот файл с названием script_Vertical_reduce_by_2.avs. Затем откройте его с помощью VirtualDub. В меню “Video” выберете строку “Compression…” – назначьте кодек для сжатия и определите степень компрессии Вашего видео и сохраните как AVI. При размещении на YouTube первым тегом укажите yt3d:enable=LonR.

После этого все пользователи YouTube будут иметь возможность оперативно выбирать метод и технологию 3D для просмотра этого стерео 3D-ролика.

С помощью простого видеоредактора VirtualDub и несложных скриптов AviSynth можно делать практически всю работу по монтажу стерео 3D-видео. Это совершенно бесплатные программы, написанные энтузиастами своего дела и пригодные для профессионального применения. Со всей очевидностью они демонстрируют нам простую и понятную истину – профессионализм не в дорогостоящих видеоредакторах, а в знаниях человека.

Завершая свой рассаз о монтаже 3D-видео с помощью VirtualDub и скриптов AviSynth, я бы хотел пожелать всем творческого успеха – чтобы удача чаще улыбалась тем, кто берёт в руки стереокамеру и все мы, как зрители, имели возможность наслаждаться невероятным и удивительным объёмным изображением на сервисе YouTube или экране 3D кинотеатра!