Сегодня 01 июля 2016
18+
Программное обеспечение

VirtualDub

Автор: Евгений Сучев


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

Естественно, с такими монстрами, как Adobe Premier или Ulead Media Studio ей тягаться просто невозможно, но несложные операции над видеоматериалом VirtualDub делает на ура. Более того, VirtualDub умеет выполнять те операции, которые не под силу этим монстрам. Например, очистка видео от специфических помех. Всё дело в том, что фильтры для VirtualDub могут писать все, кто имеет навыки программирования, что очень сильно развязывает руки при обработке видео.

Я решил написать статью, которая поможет освоить программу VirtualDub в полной мере. В этой статье будет содержаться описание работы с VirtualDub и в конце приведены маленькие примеры работы с ней. Вот как выглядит стандартный VirtualDub:


Вы спросите, что значит - "стандартный VirtualDub"? Дело в том, что эту программу написал (и продолжает писать) Avery Lee, но на основе VirtualDub уже написано несколько клонов - VirtualDubMod, VirtualDub Mpeg2. Не надо понимать, что клон это что-то плохое, наоборот, за основу был взят VirtualDub и добавлены некоторые дополнительные возможности.

В двух словах расскажу о том, как работает VirtualDub внутри. Это поможет вам понять логику некоторых операций и станет более понятно то, что я написал. При открытии какого-либо видео, VirtualDub открывает его при помощи декодеров, установленных в системе. Это касается только AVI формата. VirtualDub умеет так же открывать и MPEG1 видео, но только открывать (причём внутренним декодером).

Для того, что бы сохранить это видео, вам нужно будет его сжать в какой-либо кодеком, который можно сохранить в AVI формате. Если я веду разговор о декодерах, то это означает, что при открытии видео, VirtualDub воспользовался каким-то системным (или внутренним) декодером для открытия видео (и звука). Если же, разговор зашёл о кодеках (или кодерах), это значит, что он используется для сжатия видео, которое выдал VirtualDub и сохранения в AVI файле.

Итак, посмотрим, что у нас есть в программе VirtualDub. Сверху находится панель меню, снизу находится панель навигации по видеоряду.

Меню File

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


Здесь сгруппированы все команды VirtualDub, которые открывают или создают различные файлы. Начнём их обзор сверху.

"Open video file" - открывает файл с вашим видео.


Изначально, VirtualDub может открыть множество видео форматов, перечислять их нет большого смысла. Если вы не смогли открыть какой-то формат, то можете попробовать VirtualDubMod, в него заложена поддержка большего количества форматов.

Если же у вас видео состоит из множества кусков (или вы составляете видеоряд из множества картинок), то вы можете автоматизировать их открытие. Для этого, в окне открытия файлов нужно поставить галочку "Automatically load linked segments" (внизу окна). Далее, у всех кусков видео, должны быть одинаковые имена и отличаться только окончанием - номером куска. Например: Video_1, Video_2, Video_3… При этом, все файлы, которые попадут под этот шаблон будут открыты в соответствии с номером в конце файла. Откроются, правда, однотипные файлы (BMP только с BMP, AVI только с AVI…). Галочка "Ask for extended options after this dialog" отвечает за дополнительное меню при открытии файлов. При выставлении этой галочки, после открытия видео появится следующее меню:


Поясню, что значат пункты этого меню.

"Re-derive keyframe flags" - восстановление ключевых кадров. Зачем это надо? При передаче файлов по Интернету (или чтении AVI файла с повреждённого диска или…), периодически возникает ситуация, когда повреждаются заголовки AVI. При этом, вся информация о ключевых кадрах теряется и полноценная навигация по фильму будет невозможна. Но внутри видео потока эти кадры никуда не делись и их можно восстановить. Эта команда этим и занимается.

"Open in AVIFile compatibility mode" - если исходить из названия функции, то при открытии файла, VirtualDub должен переходить в режим работы с AVI файлом. Реально же, не зависимо от расширения файла, VirtualDub распознаёт что там внутри и соответственно открывает.

"Force video format FOURCC code to" - включает обработку открываемого видео при помощи кодека, указанного в окошке FOURCC метки. FourCC метка - это четырёх знаковый индекс. В AVI файле их ставится 2 штуки: один обозначает кодек, при помощи которого был сжат данный видео файл, а второй обозначает кодек, при помощи которого нужно просматривать данное видео. При открытии видео файла AVI, проигрыватель смотрит на FourCC метку и ищет соответствующий кодек в системе. Так вот, при открытии видео в VirtualDub можно подменить эту метку и в программе видео откроется при помощи указанного кодека. В жизни это на вряд ли пригодится, разве что для Mpeg4 совместимых кодеков. Полный список FourCC меток можно посмотреть здесь.

"Force video codec handler FOURCC code to" - как я уже сказал, в AVI файле есть 2 FourCC метки. При открытии AVI в VirtualDub, он смотрит на метку кодека, при помощи которого было сжато и открывает соответствующим кодеком. Проигрыватели же смотрят на метку, при помощи которой нужно воспроизводить видео. Если в поле "Force video codec handler FOURCC code to" поставить какую-либо метку, то на работу VirtualDub это никак не отразится. А вот если сделать после этого сохранение видео в режиме "Direct stream copy", то FourCC метка кодека (при помощи которого нужно воспроизводить видео) будет заменена на ту, которую вы укажете.

По большому счёту, работа с FourCC метками достаточно бесполезные функции. Уже давно вышли отдельные программы, которые позволяют не производя копирования видео заменять обе FourCC метки.

"Force audio sampling rate to" - эта функция изменяет частоту дискретизации звуковой дорожки. Не знаю, для чего может пригодиться эта функция. Ведь при изменении частоты дискретизации изменяется и продолжительность звука. Разве что, это позволяет устранить ошибки, которые были допущены ранее при записи звука.

"Disable optimized streaming I/O (saves memory)" - вот с этой функцией есть определённые "непонятки". Описания её нет. В моём понимании, она отключает оптимизацию работы с потоками, что поможет экономить память, но замедляет работу.

"Use VirtualDub routines for MJPEG (disables any hardware decompression)" - эта функция включает внутреннюю обработку VirtualDub-ом формата сжатия MJPEG, при этом не будут работать аппаратные декодеры, которые установлены на компьютере. Иногда это избавляет от определённых сбоев. Но основная прелесть этой функции в том, что она даёт нам возможность работать с полями.

После активизации этой функции, можно будет произвести с ними следующие операции:

"Normal" - не производятся никакие действия с полями.

"Split interlaced frames into two fields (unswapped) and double framerate" - производит разложение кадров на поля. При этом, производится увеличение частоты кадров в 2 раза и снижение высоты кадра в 2 раза. Порядок полей при этом разложении - верхнее поле первое (TFF). Если видео открытое при помощи этой опции будет смотреться не правильно (кадры будут прыгать то назад, то вперёд), значит ваше видео с нижним полем первым (BFF) и открывать его нужно при помощи следующей опции.

"Split interlaced frames into two fields (swapped) and double framerate" - это то же самое, что и предыдущая функция, но порядок открытия полей - нижнее поле первое (BFF).

"Discard first field" - при разложении на поля, откидывает первое (верхнее) поле. При этом производится уменьшение высоты кадра в 2 раза.

"Discard second field" - при разложении на поля, откидывает второе (нижнее) поле. При этом производится уменьшение высоты кадра в 2 раза.

"Swap field" - меняет порядок полей в кадре. Эта опция пригодится для видео, которое было сжато со сбоями во время работы MJPEG кодека. Вернёмся же к первому разделу в панели меню.


После "Open video file" идёт функция "Append AVI segment". Здесь можно произвести присоединение какого-либо видео к вашему. При присоединении учтите, что видео должно иметь те же параметры, что и уже открытое. То есть, у открываемого видео должны быть те же размеры и частота кадров. В звуке так же не должно быть различий (частота дискретизации, число уровней квантования). При открытии дополнительных видео файлов, можно поставить галочку "Autodetect additional segments by filename", которая автоматически определит дополнительные сегменты видео.

"Preview input" - эта функция включает просмотр видео, которое открыто в VirtualDub.

"Preview filtered" - эта функция включает просмотр видео, после прохождения обработки во всех фильтрах.

"Preview output from start" - эта функция включает просмотр видео потока на выходе VirtualDub. Если включить VirtualDub в режим "Direct stream copy", то VirtualDub покажет поток видео, который находится внутри открытого AVI файла.

"Save as AVI" - тут задаётся имя файла, в который будет производиться запись. Здесь есть единственная галочка ("Don`t run this job now; add it to job control so I can run it in batch mode"), которая позволит вместо моментальной записи, произвести отложенную запись. Подробнее, что это такое. Объясню чуть ниже.

"Save as old format AVI" - при сохранении видео в этом формате, в AVI файле ставится заголовок старого типа (1.0). Для файлов этого типа есть ограничения в 2 Гигабайта. Использование этого типа AVI файла на данный момент не имеет какого-то смысла и она была сделана для старых программ, которые не понимают AVI формата 2.0.

"Save segmented AVI" - эта функция позволяет при сохранении видео делить его на куски.


Допустим, вы пользуетесь файловой системой FAT16, для неё есть ограничение на максимальный размер файла - 2 гигабайта. Так же вам может потребоваться разделить видео на куски по 25 кадров, при помощи этой функции это возможно. А конкретнее: "Don`t run this job now; add it to job control so I can run it in batch mode" - как уже писалось выше, эта функция заносит запись в список отложенных заданий, которые можно будет запустить позже.

"Limit number of video frames per segment:" - если поставить галочку в этом поле и указать количество кадров, то выходящее видео будет разбито на отдельные файлы, в каждом из которых будет содержаться то количество кадров, которое вы укажете. Правда, есть тонкости при работе этой функции:

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

"File segment size limit in MB (50-2048):" - здесь задаётся максимальный объём файла, который будет создаваться. При превышении этого объёма, начинается запись следующего куска.

"Close video file" - эта функция закрывает открытый для редактирования видео файл. По большому счёту, пользоваться этой функцией нет необходимости. У меня по этому поводу есть 2 соображения:

  1. Если файл открыт и производились какие-то настройки фильтров, кодеков… то при открытии следующего файла все эти настройки останутся. По этому, лучше совсем закрыть VirtualDub, а потом запустить заново и открыть нужное нам видео. В этом случае от предыдущих настроек точно ничего не останется.
  2. Если же вам нужно оставить настройки и применить их для следующего видео, то можно его открывать сразу, без закрытия предыдущего (оно автоматически закроется).

Следующая страница →

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии