Как пользоваться программой виртуал даб. Как работать с программой VirtualDub

Как пользоваться программой виртуал даб. Как работать с программой VirtualDub

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

Одним из главных плюсов данной программы, помимо её бесплатности, можно выделить малый размер. Этот удивительный инструмент настолько компактен, что работает без установки в портативном режиме, при этом имеет внушительный арсенал возможностей для монтажа и обработки видео. Разумеется, он не может конкурировать с такими гигантами, как Sony Vegas или Adobe Premier, но отлично справляется с множеством бытовых задач.

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

Уроки VirtualDub

Полезный сборник инструкций по использованию главных возможностей редактора. Качественные видеоруководства, приведут наглядные примеры выполнения определенных задач и покажут, как пользоваться VirtualDub 1.10 4 на уровне уверенного пользователя. Приятного просмотра!

Данный обзор расскажет нам о главных функция редактора и продемонстрирует принцип работы.


Учимся выделять и обрезать видео в VirtualDub, с последующим сохранением.


Данный урок, расскажет, как удалить часть видеоролика.


Демонстрация процесса изменения видео и аудиокодеков.


Настраиваем размер кадра с помощью фильтра Resize.


Используем фильтр Rotate, чтобы повернуть видео.

Введение

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

Типичные задачи, успешно решаемые с помощью "Дуба", включают в себя:

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

Немаловажным плюсом является и то, что VirtualDub занимает на диске всего 1-2 мегабайта, не требует установки, распространяется свободно (текущую версию можно скачать с http://virtualdub.sourceforge.net). Кстати, последнее обстоятельство привело к тому, что помимо самого VirtualDub, существует еще ряд его модификаций (VirtualDubMod, VirtualDub-MPEG2 и т.д.), отличающихся дополнительными возможностями.

Архитектура работы

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

VirtualDub нацелен на работу прежде всего с AVI файлами. Точнее, так: на выходе мы получаем AVI файл (хотя есть возможность работы в роли т.н. фреймсервера (frameserver), аналогично утилите AviSynth; модификация VirtualDubMod умеет дополнительно сохранять в контейнеры Matroska (MKV) и OGM), а на вход можно подавать AVI, MPG, AVS и некоторые другие типы файлов. При этом из общих соображений понятно, что AVI на входе и на выходе - это некоторая выделенная ситуация (действительно, в таком случае можно производить обработку без перекодирования - об этом ниже).

AVI файлы, как вы, наверное, знаете, содержат обычно один поток видео и 0, 1 или больше потоков звука. При этом само расширение файла не говорит практически ничего о его содержимом: AVI файл - это всего лишь контейнер, в котором могут храниться данные с различными форматами сжатия. Возможность работы с ними определяется наличием соответствующих кодеков (отдельно для видео и звука). В Windows существует две разные подсистемы работы с видеоданными - более старая Video for Windows (VfW) и более современная DirectShow (DS). И та, и другая предусматривает унифицированный интерфейс работы с любыми форматами сжатия - программа, работающая с видеофайлом, не обязана знать, как именно он закодирован - достаточно, чтобы в системе был зарегистрирован соответствующий модуль декодирования. VirtualDub и многие другие видеоредакторы используют интерфейс VfW, в то время как большинство проигрывателей - технологию DirectShow.

Что это означает на практике? Может оказаться так, что какой-либо файл, который прекрасно проигрывается плеером, VirtualDub не сможет открыть, т.к. в системе есть только DS декодер данного формата, но нет VfW кодека (в Video for Windows практически всегда компрессор и декомпрессор идут вместе и называются словом кодек, в то время как в DirectShow часто бывает только декодер). Например, раньше часто можно было встретить ситуацию, когда видео с цифровой камеры miniDV на "чистой" системе проигрывалось с использованием DS декодера от Microsoft, но не открывалось в дубе - требовалось установить VfW кодек, например, от MainConcept или Canopus. (В последних версиях VirtualDub имеется встроенный декодер (но не кодировщик!) для формата DV, также как и для формата MJPG, часто используемого в аппаратных платах аналогового видеозахвата). Отметим еще, что в противоположном случае, когда для формата сжатия есть только VfW кодек, то он автоматически будет воспроизводиться и в подсистеме DirectShow. Наконец, упомянем, что можно "подружить" дуб и с DirectShow - см.раздел про VirtualDubMod в конце статьи.

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

Настала пора обратиться к интерфейсу программы.

Интерфейс

Основную часть окна программы занимают два окна, отображающие входной и выходной (после применения фильтров) видеопотоки. (Поскольку фильтры могут менять размер изображения, то в общем случае оба окна неодинаковы по размеру; кроме того, можно вручную установить масштаб, отличный от 100%). Под ними находится линейка прокрутки с подписанными номерами кадров. В отличие от настоящих программ монтажа, в VirtualDub нет ни многодорожечного режима, ни timeline в обычном понимании - только одна полоса прокрутки. Причем если вы удалили какой-либо кусок, то он бесследно исчезает из обращения (впрочем, всегда есть кнопка Undo и команда Edit/Revert all edits, которая сбрасывает все операции с полосой прокрутки). Если вы пристыковали несколько клипов друг к другу, то полоса будет отображать их суммарную длительность. Само собой, перемещением маркера по полосе прокрутки мы добиваемся отображения нужного кадра в обоих окошках. Номер кадра и время, которое ему соответствует, показано чуть ниже, вместе с информацией о типе кадра (в квадратных скобках). Для AVI файлов K обозначает ключевой кадр (Keyframe), пусто - дельта-кадр, D - пропущенный кадр (Dropped frame, в нормальной ситуации таких быть не должно).

Для Mpeg файлов исторически обозначения другие: I - ключевой кадр, P - дельта-кадр, B - двунаправленный дельта-кадр. В Avi файлах часто ключевые кадры отстоят друг от друга на несколько сотен кадров, поэтому отображение произвольного кадра потребует распаковки всех дельта-кадров от предыдущего ключевого, что может быть достаточно медленным делом. Для перемотки в файле, кроме двигания маркера мышью, служат курсорные клавиши с различными модификаторами (см. в меню Go), из которых самый полезный - нажатие Shift, позволяющее перемещаться только по ключевым кадрам (также и при движении мышью). Такое перемещение не очень точно, но зато быстро - требуется декодировать только один кадр, а не целую цепочку. Еще отметим, что Home и End не приводят к перемещению в начало и конец клипа (для этого служат Ctrl+влево/вправо), а отмечают начало и конец фрагмента для обработки. Далее можно либо удалить отмеченный фрагмент кнопкой Del (можно сделать и что-нибудь более конструктивное, например, с помощью Ctrl+C-Ctrl+V скопировать и вставить его в другое место на линейке прокрутки Дуба, но не в другое приложение), либо же при сохранении файла будет обработана только выделенная область.

После того, как вы открыли нужные файлы, вырезали ненужные куски, настроили фильтры и прочие параметры обработки (см.ниже), выбираете File/Save as AVI и запускаете процесс обработки, во время которого на экран выводится индикатор прогресса с дополнительной информацией, а в окошках отображаются кадры исходного и обработанного видео (не все подряд, а раз в секунду, и только в режиме Full processing mode).

При сохранении файла возможны два различных варианта работы: если вся обработка сводится к вырезанию кусков или склейке файлов, либо к замене звука, и при этом исходный файл (файлы) были в формате AVI, то можно и нужно использовать режим без перекодирования (Direct Stream Copy в меню Video). В этом случае сжатые кадры видео напрямую передаются из входного в выходной поток (естественно, без раскодирования и показа на экране), соответственно, качество и размер файла не меняется. Во всех других случаях нужно ставить режим Full Processing Mode и, соответственно, задавать кодек для сжатия (меню Video - Compression) и настроить его параметры (через диалог, вызываемый кнопкой Configure; настройки на общем экране выбора кодеков - Quality и target data rate - в современных условиях чаще всего не применяются).

Есть еще два промежуточных режима: Fast recompress имеет смысл использовать при перекодировании из одного формата сжатия в другой без наложения фильтров в VirtualDub. В частности, для сжатия видео, подаваемого через AviSynth скрипт. В этом случае также на экран при сохранении может ничего не выдаваться. Режим Normal recompress практически не имеет смысла применять. Аналогичные режимы есть и для звука, только там варианта всего два - прямое копирование и полная обработка (в т.ч. с указанием сжатия и применением звуковых фильтров).

Еще из полезных особенностей можно отметить возможность отображения в выходном окошке видеоданных, полученных после распаковки сжимаемого видеопотока (Display decompressed output). Таким образом можно оценить качество сжатия и, если оно недостаточно, прервать обработку, не дожидаясь завершения всего процесса. Хотя эта опция замедляет работу и не всегда применима. Также можно полюбоваться работой фильтров без сохранения файла (режим Preview): в этом случае на экран выводятся все кадры, причем если скорость обработки недостаточно высока, то скорость показа будет соответственно меньше нормальной, а звук будет прерываться. Практически такой же результат (проигрывание выходного потока) достигается нажатием кнопки в левом нижнем углу, а кнопка , соответственно, воспроизводит только входной поток.

Возможности по обработке видео

Перейдем к описанию того, что же, собственно, можно делать с видео. Как уже было сказано, кроме возможности резки-склейки файлов без перекодирования (которую мы подробнее разберем в первом примере) VirtualDub славится своими фильтрами. Имеется три десятка встроенных фильтров и возможность подключения внешних плагинов, которых написано довольно много разными людьми. Порою не имеется сопоставимых по качеству аналогов для других программ. (Справедливости ради надо сказать, что в последние годы фокус внимания фильтрописателей сместился в сторону создания плагинов для AviSynth, утилиты, имеющей сходную архитектуру, но совершенно другой интерфейс). Фильтры можно добавлять в произвольном количестве и порядке через меню Video - Filters:

Рядом с каждым фильтром отображается размер кадра до и после его применения (с учетом обрезки - Cropping), а также некоторые его параметры. Подробное описание фильтров и рекомендации по их применению выходят за рамки данной статьи - да и возможностей столько, что нужно в каждом случае разбираться отдельно. Здесь мы дадим только общие рекомендации. Фильтры можно приблизительно разделить на несколько тематических групп:

  • изменение размеров изображения (Resize), обрезка/добавление полей (Null transform с опцией crop), поворот (Rotate - для видео, снятого фотоаппаратом в вертикальной ориентации, не делайте так в следующий раз!);
  • очистка от шумов (Chroma noise reduction, Smart smoother HiQ, Dynamic noise reduction, Temporal smoother, NeatVideo и т.д. - в основном внешние плагины);
  • настройка изображения (Levels, Brightness/contrast, Autocorrection of white balance, Grayscale и т.д.);
  • работа с чересстрочным (interlaced) изображением (различные варианты Deinterlace, включая встроенный);
  • прочие фильтры (Deshaker - устранение дрожания камеры, Logo и Delogo - нанесение логотипов и борьба с оными, Subtitler - добавление субтитров и т.д.).

Работу фильтра можно ограничить определенным диапазоном кадров (кнопка Blend и команда View/Curve editor). Мы не будем останавливаться на этой возможности (ее описание можно найти в справке), а рассмотрим подробнее одну из самых часто используемых функций - масштабирование (resize) и обрезка краев (crop). В последних версиях этот, в сущности, простой фильтр приобрел пугающее количество настроек:

На самом деле ничего сложного нет. Нужно иметь в виду, что формат AVI не предусматривает хранения информации о соотношении сторон кадра (Aspect ratio), предполагается, что оно равно соотношению ширины и высоты в пикселях (т.е. "квадратный пиксель"). С другой стороны, в некоторых случаях это не так: самый типичный пример - формат DV, с размером кадра 720х576 (т.е. 5:4) и пропорциями кадра при корректном отображении 4:3 для обычного и 16:9 для широкоэкранного формата. (Поэтому открытый в дубе DV файл будет немного вытянут по вертикали, если не изменить настройки отображения, хотя обычные проигрыватели покажут его правильно). В то же время в файлах DivX/Xvid пиксель обычно квадратный, т.е. при масштабировании DV нужно переключить пункт Aspect ratio с Same as source на Compute height from ratio и задать там 4:3 или 16:9. Ну и общее правило для всех кодеков - желательно иметь ширину и высоту кратную 2, 4, 8, а лучше 16 (для этого служит раздел Codec-friendly sizing).

Что же касается обрезки краев, то специального фильтра для этого нет - зато есть кнопка Cropping, позволяющая задать обрезку перед применением указанного фильтра. В частности, это может быть фильтр-пустышка Null transform, единственный смысл которого и заключается в сочетании с Cropping. Обрезать, конечно, тоже лучше кратно 2 или 4.

Некоторых комментариев удостоится еще работа с чересстрочным (интерлейсным) видео. Как известно, в большинстве видеокамер именно этот режим является основным (часто единственным) вариантом, и он отлично сочетается с просмотром на ЭЛТ телевизорах. Если вы собираетесь делать DVD из своего видео, то также лучше всего оставить изображение чересстрочным - при воспроизведении на компьютере или LCD/плазменном телевизоре автоматически будут приняты соответствующие методы деинтерлейса. С другой стороны, если нужно, например, закодировать видео в какой-либо из вариантов MPEG-4 (DivX, Xvid, ...), например, для размещения в интернете, то разумно будет применить деинтерлейс и затем уменьшение размеров кадра (как на скриншоте выше, где еще добавлена стадия очистки от шума и небольшая обрезка краев). В качестве метода деинтерлейса не стоит выбирать встроенный фильтр Deinterlace в режиме Blend fields - вопреки надписи best рядом с ним, ничего хорошего, как правило, не выйдет, будут двоящиеся контуры. Лучше воспользоваться сторонними плагинами, хотя и здесь тоже самые современные и качественные разработки существуют только в варианте для AviSynth. И никогда без особых причин не меняйте размер кадра в чересстрочном видео!

Типовые задачи

Теперь опишем некоторые типовые сценарии, в которых VirtualDub применяется для решения специфических задач.

Пример №1: Для начала разберемся с линейным монтажом, т.е. резкой-клейкой и перестановкой кусков. Как уже было сказано, эту операцию можно проводить без перекодирования, если исходное видео было в контейнере AVI. Добавление нескольких файлов происходит командой File/Append AVI segment, причем если они пронумерованы по порядку, то можно загрузить сразу несколько (галка Autodetect additional segments by filename). При этом форматы сжатия видео и звука должны быть строго одинаковы (вплоть до некоторых параметров, скрытых от пользователя: например, может случиться так, что DV-файл с камеры, обработанный в Dub-е и сжатый опять в DV, нельзя пристыковать к такому же файлу, но полученному непосредственно с камеры.. С другой стороны, файлы, сжатые в DivX одинаковым образом, но с разными битрейтами, спокойно можно склеить). Между прочим, многие (но не все "скрытые") параметры файла можно узнать командой File/File information, хотя более универсальной является отдельная утилита GSpot: http://www.headbands.com/gspot.

Со "склейкой" разобрались, теперь обратимся к "резке", т.е. удалению ненужных фрагментов (например, рекламы из записи телепередачи), а заодно и к перестановке фрагментов местами (через механизм типа буфера обмена - Ctrl+X, Ctrl+C, Ctrl+V, только в пределах одной программы). Здесь ситуация различается в зависимости от того, сжат файл кодеком с межкадровым (например, DivX/Xvid, VP6, Indeo) или покадровым (MJPG, DV, HuffYUV и т.д.) сжатием. Если во втором случае можно спокойно вырезать любой кусок, т.к. каждый кадр кодируется независимо от других, то в первом ситуация сложнее. Ведь для того, чтобы декодировать некоторый кадр, нужно найти ближайший стоящий перед ним ключевой кадр и пройти всю цепочку от него до нужного кадра. Например, рассмотрим такое выделение:

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

А если мы, наоборот, захотим оставить только этот фрагмент, то полученный видеоряд начинался бы с дельта-кадра, перед которым нет ни одного ключевого, что недопустимо. Поэтому в режиме Direct Stream Copy такая обрезка приведет к тому, что выходной файл будет начинаться не с 3-го кадра, а с 1-го (ближайшего перед ним ключевого). Аналогично, при попытке убрать следующий фрагмент:

мы получим видеоряд с кадрами с 1 по 4 и с 11 (а не 13) по 15. Отсюда вывод - чтобы не ошибиться в нарезке, делайте это по ключевым кадрам. А именно, если вы удаляете фрагмент, то он должен заканчиваться на ключевом кадре, а если оставляете, то, наоборот, начинаться. Здесь как раз пригодится возможность перемещения только по ключевым кадрам при нажатом Shift. Кстати, отметка конца выделения относится к предыдущему кадру (т.е. выделено все до текущего, не включая его), поэтому ставить конец надо как раз на сам ключевой кадр.

А что делать, если нужно более точное позиционирование для резки/клейки? В последних версиях Дуба появилась очень полезная галочка Smart Render, активная в режиме Full processing mode. Действие ее следующее: если участок может быть обработан в режиме Diect stream copy, то так и происходит, иначе запускается указанный в настройках кодек (он должен быть тем же, с каким сжат исходный файл) и с его помощью кодируется фрагмент вплоть до следующего ключевого кадра (естественно, он начнется с вновь сделанного ключевого кадра), а на нем опять переключается в режим Direct stream copy.

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

Кроме того, есть команда Video/Select range, результат которой сводится к тому, что удаляется участок до первого и после последнего указанного кадра. Связанная с этим задача - разбить длинный файл на куски, например, по 700 мегабайт, для записи на CD, удобнее решается с помощью VirtualDubMod, в котором рядом с номером кадра дополнительно выводится "расстояние" от начала файла в мегабайтах.

Подчеркнем, что резать MPEG-файлы таким образом не получится, для этого удобно использовать MPEG Video Wizard: http://womble.com.

Пример №2: Предположим, вы смонтировали фильм в какой-либо программе монтажа, например Pinnacle Studio или Adobe Premiere. Дальше его нужно как-то сохранить, причем часто бывает нужно иметь его в нескольких вариантах: например, если формат исходной съемки был miniDV, то разумно готовый фильм из монтажки экспортировать тоже в DV AVI и потом его скинуть обратно на ленту (если камера это позволяет); почти наверняка требуется сделать DVD; может быть, хочется разместить фильм в интернете (даже если вы собираетесь использовать сервис типа YouTube, который сам пережимает видео в свой формат, причем довольно скудного качества, все равно загружать на сервер исходный DV AVI может быть слишком долго и непроизводительно). В последнем случае имеет смысл готовый DV AVI загрузить в дуб, добавить при необходимости фильтры деинтерлейса и уменьшения размера и сохранить во что-нибудь типа DivX, желательно в два прохода. Конечно, можно сделать это и непосредственно из монтажной программы, но в этом случае все монтажные эффекты и переходы будут просчитываться два раза, а ведь у нас уже есть DV-AVI файл, подготовленный для записи на камеру.

Пример №3: Допустим, вы снимали в условиях недостаточной освещенности и хотите почистить видео от шумов, или желаете избавиться от дрожания камеры при съемке с рук. В этих случаях имеет смысл делать выборочную фильтрацию только для тех эпизодов, которые в этом нуждаются (в DVD-камерах каждый эпизод записывается в отдельный файл, при захвате видео с miniDV также, как правило, включают разбиение на сцены с записью каждой сцены в отдельный файл). Желательно проводить обработку перед загрузкой фрагмента в программу монтажа - в этом случае вы можете подбирать и настраивать нужные фильтры отдельно для каждого фрагмента. Впрочем, можно применить и другой ход (реализуемо только в случае AVI файлов с камеры miniDV): смонтировать весь фильм с исходными файлами, а перед окончательным экспортом определить фрагменты, требующие обработки, пропустить их через VirtualDub, исходный файл переместить в архивную папку, а на его место поместить обработанный файл под тем же именем. Затем запустить заново программу монтажа и экспортировать уже с новыми файлами. Обрабатывать видео можно как фильтрами самого VirtualDub, так и через AviSynth, что описано в соответствующей статье. В последнем случае, впрочем, все равно желательно AVS скрипт загрузить в дуб и сохранить как регулярный AVI файл (например, с тем же кодеком DV) - не все монтажные программы работают с AVS скриптами, да и удобнее работать с готовым файлом, чем с "тяжеловесным" (в смысле времени обработки) скриптом. Стабилизации видео с помощью фильтров VirtualDub и AviSynth будет посвящена отдельная статья.

Пример №4: Нужно сделать скриншот с видео, чтобы разглядеть его на предмет качества или наличия дефектов. Из проигрывателя это делать не стоит, т.к. он может вносить какие-либо модификации в изображение (например, принудительный деинтерлейс или коррекцию яркости). В то же время VirtualDub откроет файл "как есть", при условии, конечно, что он поддерживается им. Кстати, о форматах: по умолчанию, кроме AVI, VirtualDub умеет открывать mpeg-1 файлы. С помощью плагинов от fccHandler"а (http://fcchandler.home.comcast.net/~fcchandler/) можно научить его открывать MPEG-2 (кстати, можно открыть и склеить подряд несколько VOB-файлов за раз) и WMV/ASF; есть также плагины для работы с MOV и FLV контейнерами, а модификация VirtualDubMod умеет работать с MKV файлами. Остальные форматы можно попробовать открыть с использованием AviSynth (см.ниже). Ну а собственно сохранение скриншотов делается командой File/Export/Image sequence (нужно выделить участок для экспорта - если нужен один кадр, то поместить его под курсор и нажать Home, стрелка вправо, End).

VirtualDubMod и AviSynth

Несколько слов про важную ветвь развития "дуба" - VirtualDubMod. Это отдельная программа, основанная на исходных кодах VirtualDub и множестве полезных добавлений. Ее имеет смысл поместить в ту же директорию, что и сам VirtualDub, чтобы использовать общий набор плагинов. (В принципе, можно вообще заменить ей сам дуб, разве что последняя версия DubMod"а основана на версии 1.5.10 от 2005 года, т.е. в ней отсутствуют возможности, добавленные в Dub за последнее время - впрочем, их не так много). Интерфейс VirtualDubMod похож на VirtualDub, одно существенное отличие состоит в том, что меню Audio заменено на Streams, что отражает нацеленность на работу с несколькими аудиопотоками. Второе полезное нововведение заключается в более тесной интеграции с AviSynth. Нам будет полезно одно ее свойство - умение работать с подсистемой DirectShow наряду с VideoForWindows. Вкратце, AviSynth - это скриптовый язык и программа для его интерпретации, а интерфейс его взаимодействия с остальными программами очень прост - вы пишете текстовый файл со скриптом, а затем открываете его в (почти) любой программе видеообработки, кодировщике или проигрывателе, как обычный видеофайл, и работаете точно так же, как с видеофайлом на жестком диске. Видеоряд и звук формируются командами, записанными в скрипте. Для наших целей достаточно просто установить AviSynth, и тогда при открытии видеофайла в VirtualDubMod будет доступна опция Use AviSynth template:

Это значит, что для открытия файла будет автоматически создан промежуточный AviSynth скрипт, содержащий соответствующую команду открытия (в данном случае DirectShowSource), и уже его загрузит VirtualDubMod. Таким образом можно попытаться работать практически с любыми типами файлов, которые воспроизводятся проигрывателями - RealVideo, QuickTime (MOV), MPEG2-TS (в нем обычно находится видео с видеокамер формата HDV и AVCHD), MP4 (тоже частый вариант в фотокамерах и комбинированных фотовидеокамерах). Надо отметить, что этот способ, во-первых, не всегда работает, во-вторых, не такой надежный, как открытие "родными" средствами (в частности, может неверно работать позиционирование по файлу и т.д.). Поэтому всегда при возможности лучше пользоваться встроенными или специализированными средствами (MPEG2-PS, в частности, DVD файлы (VOB), открываются непосредственно в VDMod, а для перевода MP4 файлов в AVI существует специальная программа MP4Cam2AVI).

Еще отметим, что в VirtualDubMod есть специальный Script Editor (в меню Tools), предназначенный для оперативного контроля и настройки параметров AviSynth скрипта. Просто меняйте текст скрипта, а затем нажимайте F5 или F7, чтобы увидеть в окне VirtualDub результат работы скрипта. Подчеркнем, что и обычный VirtualDub прекрасно открывает AVS скрипты, просто в VDMod интеграция с AviSynth более удобная. Нужно помнить, что AviSynth скрипт, открытый в любой программе, представляется несжатым файлом, так что копирование без пересжатия в этом случае невозможно. (Если не требуется дополнительно использовать фильтры VirtualDub, то лучше выбирать режим Fast Recompress, а не Full processing mode)."

Короче говоря, VirtualDub (а также VirtualDubMod и AviSynth) должны быть в арсенале всякого, кто работает с цифровым видео на уровне чуть выше стартового. Изучайте и применяйте! В статье были рассмотрены далеко не все возможности VirtualDub, так что читайте Help. Детальное описание пунктов меню можно найти на специализированных ресурсах (впрочем, для довольно старых версий Дуба). В сети есть также и русскоязычные сборки VirtualDub, правда, скорее всего, не последних версий.

Полезные советы по работе с VirtualDub

Совет 01 - Сохраняйте настройки обработки видео.

VirtualDub позволяет полностью сохранить настройки обработки видео (Меню "File" - "Save/Load Processing Settings..."). При этом сохраняется все: настройки и последовательность наложенных фильтров, вырезанные фрагменты, настройки кодеков, и т.д. Очень полезно, если часто приходиться обрабатывать однотипные видео файлы, или просто, часто приходится накладывать одну и ту же последовательность фильтров...

Совет 02 - Горячие клавиши перемещения по видео.

Очень удобно при движении по видео пользоваться следующими горячими клавишами:

Стрелки [<] и [>] - предыдущий и следующий ключевой кадр (для перемещения по видео сжатому в MPEG4).

Стрелки [<] и [>] - 50 кадров назад и вперед, соответственно (для перемещения по видео сжатому в MJPEG, Nuffyuv, ... т.к. здесь каждый кадр является ключевым).

Совет 03 - Комфортное MPEG4 кодирование в два прохода.

Когда все настройки VirtualDub и кодеков сжатия выставлены, и настало время производить первый проход сжатия в MPEG4, удобнее поступить следующим образом:

(уточняю) в настройках DivX кодека выбран первый проход.

Сохраняем, меню "File" - "Save as AVI ...", задаем имя и расположение AVI файла, а так же ставим галочку напротив "Don"t run this job now...". Теперь жмем кнопку "Сохранить".

Заходим в настройки DivX кодека, выбираем второй проход. Напомню, что больше ничего менять нельзя!

Снова, меню "File" - "Save as AVI ...", задаем имя и расположение AVI файла (имя другое), а так же ставим галочку напротив "Don"t run this job now...". Жмем кнопку "Сохранить".

Теперь, меню "File" - "Job control...". В открывшимся окне мы видим два назначенных нами задания (первый и второй проходы), жмем "Start".

По завершению первого прохода сжатия, VirtualDub сразу начнет выполнять второй проход. Согласитесь, это очень удобно...

Читайте и пишите полезные

1. VirtualDub переводится в режим захвата: «Файл->Захватить видео в AVI»

2. Задается имя файла: «Файл->Установить захватываемый файл»

3. Выбирается устройство захвата

4. Выбирается источник видео. Для ТВ тюнера это либо сам модуль ТВ, или один из входов.

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

6. Далее проверяются некоторые пункты меню «Видео»: «Опция захвата», «Опция просмотра», «Фильтр захвата», «Переходник», «Установить формат». Общее правило - надо проверить соответствие системы цвета PAL/SECAM, установить разрешение, формат. Для предыдущего ТВ тюнера на чипе BT878 (Avermedia 203) я использовал разрешение 768*576 (YUY2). Метод захвата в разрешение 704*576 с добавлением бордюров до 720*576 с имеющийся картой был неприемлем, так как нарушалась геометрия, т.е. соотношение сторон 4:3 - круг становился овалом. Для тюнера AverTV 307 разрешение ставлю 720*576 (YUY2).

7. В пункте «Компрессия» выбирается подходящий видеокодек для сжатия при захвате.

8. В разделе «Аудио» первым делом включается измеритель сигнала. Затем следует выбрать устройство, аудиовход, источник. Неважно, есть ли звук в динамиках, наличие сигнала определяется по включенному измерителю уровня. Через системный микшер системы устанавливается уровень аудиосигнала. Для точной регулировки и избежания перегрузки все же нужно провести несколько пробных захватов.

9. Формат захвата mono (если устройство моно), частота 48000 Гц. (стандарт DVD). При использовании тюнера на BT 878 и аудиокарты SB Live Value 5.1 я ставил частоту 44100, иначе возникала рассинхронизация. Поэтому, при наличии проблем с синхронизацией с этим параметром следует поэкспериментировать.

10. Компрессия для звука - РСМ, то есть без сжатия.

11. Проверка пункта «Захват->Настройки->Частота кадров 25.000». Возможно, там по умолчанию окажется другое значение, например 15.000, что приведет к рассинхронизации.

12. Установка активным пункта «Захват->Увеличении имени файла после захвата» позволит не затереть случайно уже захваченный файл, и полезно при захвате фрагментами.

13. В разделе «Видео» (вызывать удобнее клавишами «L» и «H») выводятся регуляторы уровней видеосигнала и гистограмма.

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

Насыщенность, резкость устанавливаются визуально.

14. Можно пройтись повторно по настройкам что бы убедиться, что какой то пункт «не слетел».

15. Запуск захвата - F5, остановка - ESC.

При наличии качественного источника, как правило, получается видеофайл с синхронизированным звуком. Так, при захвате с видеокамеры HI8 кассеты длительностью 1.5 часа тюнером на BT878 в моей практике практическая рассинхронизация на протяжении всей длинны записи обычно составляла 1-2 кадра, что вполне достойный результат. Тем не менее, при захвате с VHS кассеты с затертыми или плохими участками, срывом синхронизации, с эфира с потерей сигнала и в др. сложных случаях можно было все же получить смещение аудиодорожки. Предположу, что наличие аппаратной аудиокарты дает больше шансов на успешный захват, нежели использование встроенного звука. Важным для успешного захвата является также исключение дефрагментации диска, отсутствии загрузки процессора какими либо фоновыми процессами, отключение компьютера от сети при наличии таковой. Впрочем, даже в случае неспешного по синхронизации звук/видео захвата сведение дорожек в видеоредакторе несложная задача.

В мире программ для обработки видео Virtual Dub известен уже давно в основном благодаря своей бесплатности и простоте использования. Базовые навыки приобретаются в течение часа работы. Однако для более эффективного применения нужно обладать также знанием используемых кодеков и фильтров. Итак, что же такое Virtual Dub? Это программа линейного видеомонтажа, или, говоря проще, достаточно мощный инструмент для редактирования и сжатия видео в формате AVI. Но не стоит думать, что Virtual Dub заменит Adobe Premiere. Не заменит никогда, но прекрасно дополнит.

Программ класса Virtual Dub существует достаточно много. Все они различаются уровнем универсальности (поддержка различных форматов и кодеков) и набором базовых функций. Полных аналогов Virtual Dub не существует. Функциональный набор Virtual Dub можно разделить на 3 части:

1. Линейный видео- и аудиоредактор. Ближайшим конкурентом и одновременно дополнением в этой области можно назвать Canopus ProCoder. В отличие от Virtual Dub, этот редактор поддерживает большее число форматов и кодеков, но для него не найдется такого огромного количества фильтров, как для Virtual Dub. Множество программ для конвертации видео (например, для мобильных телефонов) обычно только повторяют некоторые возможности этих программ, упрощая работу. В последнее время с развитием h.264 довольно широкую популярность приобрела программа Nero ReCode с оригинальным и довольно качественным кодеком MPEG-4 Ateme. Интерфейс этой программы достаточно удобен за исключением некоторых мелких моментов. С помощью этой программы удобно сжимать DVD-видео (формат MPEG-2, а значит, и DVD, не поддерживается базовой модификацией Virtual Dub). Программы DVD2AVI, FlaskMPEG и Gordian Knot - наиболее известные аналоги Nero ReCode. Достаточно необычно в этом ряду выглядит VideoLAN Media Player - программа, предназначенная для воспроизведения видео. Однако этот плейер включает функции сохранения и сжатия видео и аудио с применением небольшого числа фильтров.

2. Фреймсервер (Frameserver). Программа работает как обычный видеоредактор. Суть режима в том, что после обработки кадры видео не сохраняются, а передаются на обработку другому приложению. В качестве фреймсервера Virtual Dub используют не так уж часто. Чаще в этой роли используется программа AviSynth. Для нее существует множество собственных фильтров, более качественных, чем фильтры Virtual Dub. Кроме того, можно использовать и фильтры от Virtual Dub. Возможности AviSynth шире, чем у Virtual Dub, однако использовать их можно только посредством написания скриптов - AviSynth лишен интерфейса, и результат его работы можно увидеть только в "приложении-клиенте" - в этом и суть работы фреймсервера.

3. Захват видео. В последних версиях (начиная с 1.6.3) Virtual Dub обновился и сильно улучшился интерфейс захвата видео. Обладателям ТВ- тюнеров и карт захвата на базе Connexant BT848/878 (AverMedia TVPhone/TVPhone 98/Model 203, Fly Video 98, KWorld Expert PVR-TV878, Acorp Y878 и т.д.) эта часть Virtual Dub будет особенно интересна, т.к. в ней наконец-то решена проблема "несовместимости" BT8x8 с драйвером захвата от Microsoft (драйвер позволял захватывать только с разрешением 352х288 в формате PAL, что составляет половину возможностей чипсета). Других приемлемых средств захвата до этого момента, в общем-то, и не существовало, т.к. штатные программы захвата от
производителей ТВ-тюнеров и карт захвата были либо сырыми, либо обманывали (как, например, программа от AverMedia 203, которая захватывала видео с разрешением 720х288 вместо 720х576) либо "специализировались" на определенных устройствах и кодеках. Ближайшие конкуренты Virtual Dub в этой области - iuVCR и BorgTV - программы, специально предназначенные для BT8x8. В возможности VideoLAN Media Player также заложена работа с устройствами захвата и ТВ-тюнерами, однако эта часть программы совсем "сырая" и практически не работает.

Однако тонкости захвата видео с помощью Virtual Dub - тема для отдельной статьи. Рассмотрим некоторые настройки программы Virtual Dub. За основу возьмем версию 1.6.10. Программа поддерживает много форматов - таких, как AVI, MPEG-1, IFF-анимации, скрипты AviSynth. Можно также загружать последовательности картинок. Общий вид рабочего окна Virtual Dub показан на рис. 1. Внизу рабочего окна расположена панель инструментов. Каждая кнопка снабжена подсказкой и дублируется командой в меню Edit. Рядом отображается текущее время, кадр. В панели статуса есть информационная строка, в которой отображается полезная информация. Над панелью инструментов находится ползунок для удобства перехода к произвольному кадру. Две панели просмотра видео предназначены для входного и выходного видео. При применении фильтров можно будет просмотреть изменения. Можно заметить полное отсутствие кнопок управления проектом. Соответствующие команды находятся только в меню, что создает некоторое неудобство. Хотя, с другой стороны, большинство команд можно вызвать сочетанием клавиш.

Команды меню рассмотрим более подробно. В меню File нас интересуют следующие пункты:
. Open/Close video file - открыть и закрыть файл.
. Append AVI segment - добавляет к открытому файлу другой файл. У файлов должны быть одинаковые параметры разрешения видео, кодеков, битрейта. Если файлы имеют одинаковое название и пронумерованы, они могут быть открыты/добавлены автоматически.
. Save as AVI, Save old format AVI, Save segmented AVI - эти опции предназначены для сохранения файла. Отличие их в том, что первая сохраняет файл в формате OpenDML AVI, вторая - в "старом" формате Microsoft AVI (для нас разницы между этими форматами нет), третья - для "кусочного" сохранения. Для чего она предназначена? Если размер AVI-файла превышает 2 Гб, то этот файл может быть не открыт в
некоторых программах редактирования. Эту опцию также очень удобно использовать для разбивки фильмов на части по 700 Мб. Для этого в диалоговом окне достаточно задать ограничение размера файлов 700. Ограничение можно задавать не только по размеру, но и по количеству кадров в каждом файле. Каждое диалоговое окно сохранения файла имеет опцию Don"t run this job now; add it to job control so I can run it in batch mode. Она предназначена для запуска текущего задания не в данный момент, а в удобное время, что позволяет сразу
сформировать список из нескольких заданий, а не дожидаться выполнения каждого задания перед формированием и запуском следующего.
. File information - выводит информацию об открытом файле. Опция особенно полезна для выставления значения задержки аудиопотока и для определения отсутствия кодека в системе.
. Load/Save processing settings - загружает или сохраняет настройки фильтров, кодеков, а если отмечена опция Include selection and edit list, то и выделенного фрагмента (или удаленных фрагментов). Все настройки сохраняются в виде скриптов.
. Start frame server - запускает так называемый фреймсервер. Опция предназначена для случая, когда кадры видео обрабатываются в другой программе редактирования. Это позволяет применять определенные фильтры (например, для улучшения качества изображения) в Virtual Dub и передавать кадры видео другому редактору.
. Capture AVI - переводит программу в режим захвата видео.
. Run script - запускает скрипт обработки видео.
. Job control - список заданий. Задания выполняются по порядку. Порядок заданий можно менять. Здесь же можно видеть статус выполнения заданий. Каждое задание в Job control сохраняется в виде скрипта. Посмотреть и отредактировать скрипты заданий можно в файле
virtualdub.jobs.

В меню Video расположены следующие пункты:
. Filters - список фильтров для обработки видео. У Virtual Dub есть определенное количество базовых (внутренних) фильтров. Также
достаточно много фильтров для этой программы есть в Интернет. Все подгружаемые фильтры хранятся в папке Plugins. Загружаются они
автоматически при старте программы. Описание и сравнение хотя бы части существующих на сегодняшний день скриптов - также тема
отдельной статьи.
. Frame rate - частота кадров. В этом окне можно изменять частоту кадров для подгонки видеопотока к аудио. Еще можно изменять частоту кадров, не меняя времени воспроизведения видео (то есть конвертировать частоту кадров).
. Color Depth - глубина цвета (и цветовые пространства). Поначалу лучше оставить здесь все по умолчанию, пока мы не узнаем больше о цветовых пространствах.
. Compression - список кодеков с информацией о каждом кодеке и настройками. Здесь видны только так называемые кодеки с VfW (Video for Windows) интерфейсом. Каждый кодек имеет какие-либо ограничения, связанные с глубиной цвета и цветовым пространством. Поэтому
рассмотрение популярных на сегодня кодеков отложим до рассмотрения цветовых пространств.
. Direct stream copy. Если отмечена эта опция, то видео не будет сжиматься. Оно будет сохраняться в том виде, в каком было открыто. Можно будет только выставить частоту кадров. Эта опция полезна для разбивки и склеивания видеофайлов, а также когда требуется сжать только аудиопоток или подогнать частоту видеопотока к аудио.
. Full processing mode. В этом режиме происходит обработка и сжатие видео.
. Error mode - определяет режим отработки ошибок входного видеопотока. По умолчанию при обнаружении ошибки обработка видео
останавливается. Вторая опция в этом окне позволяет пропускать "ошибочные" кадры и начинать обработку со следующего ключевого кадра. Третья опция включает обработку "ошибочных" кадров. Содержимое этих кадров может быть сильно искажено и вызвать крах программы.

В меню Audio находятся вот такие пункты:
. Interleaving - чередование. AVI - аббревиатура, которая расшифровывается как чередование видео и аудио. В этом окне определяются
параметры чередования. Если работаете с MPEG-1,2-форматом, то нужно обратить внимание на Audio skew correction окне File information. Значение задержки аудиопотока должно быть таким же, как в окне File information.
. Compression. Эта опция аналогична опции в меню Video. В этом окне присутствует опция Show all formats. Обычно форматы аудио, скрытые этой опцией, несовместимы с форматом открытого аудиопотока. Это означает, что попытка напрямую (без конверсии и сохранения открытого потока в несжатом формате) сжать аудиопоток в новый формат приведет к рассинхронизации видео- и аудиопотока.
. Use advanced filtering. Эта опция, а также опция Filters, появились в новых версиях Virtual Dub для обработки аудио без применения соответствующих редакторов.
. Conversion. Конвертирует аудиопоток. Можно выбрать частоту и качество, а также количество каналов и режим.
. No audio, Source audio, WAV Audio - эти опции определяют источник аудио - соответственно без аудио, аудио из открытого видеофайла, аудио из отдельного файла формата WAV (но может быть сжато любым кодеком).
. Direct stream copy и Full processing mode, Error mode. Опции аналогичны опциям в меню Video.
В остальных меню расположены опции, не влияющие на качество обработки видеофайла, поэтому их рассматривать не будем. Мы рассмотрели настройки базовой модификации Virtual Dub. Помимо нее, существует еще несколько модификаций. Основные модификации таковы:
. Virtual Dub MPEG-2. Отличается от базовой модификации поддержкой MPEG-2- и VOB-файлов.
. Vitual Dub Mod. Отличается от базовой модификации поддержкой MPEG-2-, VOB- и MKV-файлов. Эту модификацию можно также использовать для создания видеофайла, в котором будет несколько потоков аудио разных форматов (MP3, ogg, WAV, AC3, DTS). Сохранить такое видео можно в MKV-файл. Эта модификация полностью заменяет Virtual Dub AC3, предназначавшийся для обработки AC3-аудио.
. Nan Dub. В свое время эта программа выдавала самый качественный результат. Отличается от базовой модификации тем, что использует внутренние кодеки (DivX4 и MPEG4v2) и поддерживает 2 аудиопотока разных форматов (MP3, ogg, AC3, WAV и VBR MP3 - MP3-файл с переменным битрейтом). Сейчас видеочасть этой программы уже устарела, т.к. использует устаревшие кодеки. Новые видеокодеки позволяют превратить любой Virtual Dub в Nan Dub, т.к. в них реализован алгоритм сжатия видео Nan Dub. Алгоритм этот таков: видео сжимается в 2 этапа. На первом этапе видео сжимается с максимальным битрейтом, а затем оценивается качество кадров либо минимальный битрейт, при
котором визуальное качество остается приемлемым. Информация об этом записывается в файл статистики и используется на втором этапе, когда видео сжимается таким образом, чтобы среднее значение битрейта не превысило значения, заданного пользователем Такой метод упрощенно называется кодированием за 2 прохода (2-pass encoding). Некоторые кодеки (например, x264) могут уточнять информацию в файле статистики за второй, третий и т.д. проходы, что еще увеличивает качество, хотя и незначительно.
. Virtual Dub for ASF. Эта модификация существует только в виде версии 1.4. Она позволяет открывать файлы ASF и сохранять их в формате AVI без повторного сжатия.

Собственно, и все на сегодня. Все программы можно найти по указанным ссылкам, действительным на момент написания статьи.

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

VirtualDub нацелен на работу прежде всего с AVI файлами. Точнее, так: на выходе мы получаем AVI файл (хотя есть возможность работы в роли т.н. фреймсервера (frameserver), аналогично утилите ; модификация VirtualDubMod умеет дополнительно сохранять в контейнеры Matroska (MKV) и OGM), а на вход можно подавать AVI, MPG, AVS и некоторые другие типы файлов. При этом из общих соображений понятно, что AVI на входе и на выходе - это некоторая выделенная ситуация (действительно, в таком случае можно производить обработку без перекодирования - об этом ниже).

AVI файлы, как вы, наверное, знаете, содержат обычно один поток видео и 0, 1 или больше потоков звука. При этом само расширение файла не говорит практически ничего о его содержимом: AVI файл - это всего лишь контейнер, в котором могут храниться данные с различными форматами сжатия. Возможность работы с ними определяется наличием соответствующих кодеков (отдельно для видео и звука). В Windows существует две разные подсистемы работы с видеоданными - более старая Video for Windows (VfW) и более современная DirectShow (DS). И та, и другая предусматривает унифицированный интерфейс работы с любыми форматами сжатия - программа, работающая с видеофайлом, не обязана знать, как именно он закодирован - достаточно, чтобы в системе был зарегистрирован соответствующий модуль декодирования. VirtualDub и многие другие видеоредакторы используют интерфейс VfW, в то время как большинство проигрывателей - технологию DirectShow. Что это означает на практике? Может оказаться так, что какой-либо файл, который прекрасно проигрывается плеером, VirtualDub не сможет открыть, т.к. в системе есть только DS декодер данного формата, но нет VfW кодека (в Video for Windows практически всегда компрессор и декомпрессор идут вместе и называются словом кодек, в то время как в DirectShow часто бывает только декодер). Например, раньше часто можно было встретить ситуацию, когда видео с цифровой камеры miniDV на «чистой» системе проигрывалось с использованием DS декодера от Microsoft, но не открывалось в дубе - требовалось установить VfW кодек, например, от MainConcept или Canopus. (В последних версиях VirtualDub имеется встроенный декодер (но не кодировщик!) для формата DV, также как и для формата MJPG, часто используемого в аппаратных платах аналогового видеозахвата). Отметим ещё, что в противоположном случае, когда для формата сжатия есть только VfW кодек, то он автоматически будет воспроизводиться и в подсистеме DirectShow. Наконец, упомянем, что можно «подружить» дуб и с DirectShow - см.раздел про VirtualDubMod в конце статьи.

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

Основную часть окна программы занимают два окна, отображающие входной и выходной (после применения фильтров) видеопотоки. (Поскольку фильтры могут менять размер изображения, то в общем случае оба окна неодинаковы по размеру; кроме того, можно вручную установить масштаб, отличный от 100%). Под ними находится линейка прокрутки с подписанными номерами кадров. В отличие от настоящих программ монтажа, в VirtualDub нет ни многодорожечного режима, ни timeline в обычном понимании - только одна полоса прокрутки. Причём если вы удалили какой-либо кусок, то он бесследно исчезает из обращения (впрочем, всегда есть кнопка Undo и команда Edit/Revert all edits, которая сбрасывает все операции с полосой прокрутки). Если вы пристыковали несколько клипов друг к другу, то полоса будет отображать их суммарную длительность. Само собой, перемещением маркера по полосе прокрутки мы добиваемся отображения нужного кадра в обоих окошках. Номер кадра и время, которое ему соответствует, показано чуть ниже, вместе с информацией о типе кадра (в квадратных скобках). Для AVI файлов K обозначает ключевой кадр (Keyframe), пусто - дельта-кадр, D - пропущенный кадр (Dropped frame, в нормальной ситуации таких быть не должно). Для Mpeg файлов исторически обозначения другие: I - ключевой кадр, P - дельта-кадр, B - двунаправленный дельта-кадр. В Avi файлах часто ключевые кадры отстоят друг от друга на несколько сотен кадров, поэтому отображение произвольного кадра потребует распаковки всех дельта-кадров от предыдущего ключевого, что может быть достаточно медленным делом. Для перемотки в файле, кроме двигания маркера мышью, служат курсорные клавиши с различными модификаторами (см. в меню Go), из которых самый полезный - нажатие Shift, позволяющее перемещаться только по ключевым кадрам (также и при движении мышью). Такое перемещение не очень точно, но зато быстро - требуется декодировать только один кадр, а не целую цепочку. Ещё отметим, что Home и End не приводят к перемещению в начало и конец клипа (для этого служат Ctrl+влево/вправо), а отмечают начало и конец фрагмента для обработки. Далее можно либо удалить отмеченный фрагмент кнопкой Del (можно сделать и что-нибудь более конструктивное, например, с помощью Ctrl+C-Ctrl+V скопировать и вставить его в другое место на линейке прокрутки Дуба, но не в другое приложение), либо же при сохранении файла будет обработана только выделенная область.

После того, как вы открыли нужные файлы, вырезали ненужные куски, настроили фильтры и прочие параметры обработки (см.ниже), выбираете File/Save as AVI и запускаете процесс обработки, во время которого на экран выводится индикатор прогресса с дополнительной информацией, а в окошках отображаются кадры исходного и обработанного видео (не все подряд, а раз в секунду, и только в режиме Full processing mode).

При сохранении файла возможны два различных варианта работы: если вся обработка сводится к вырезанию кусков или склейке файлов, либо к замене звука, и при этом исходный файл (файлы) были в формате AVI, то можно и нужно использовать режим без перекодирования (Direct Stream Copy в меню Video). В этом случае сжатые кадры видео напрямую передаются из входного в выходной поток (естественно, без раскодирования и показа на экране), соответственно, качество и размер файла не меняется. Во всех других случаях нужно ставить режим Full Processing Mode и, соответственно, задавать кодек для сжатия (меню Video - Compression) и настроить его параметры (через диалог, вызываемый кнопкой Configure; настройки на общем экране выбора кодеков - Quality и target data rate - в современных условиях чаще всего не применяются).

Есть ещё два промежуточных режима: Fast recompress имеет смысл использовать при перекодировании из одного формата сжатия в другой без наложения фильтров в VirtualDub. В частности, для сжатия видео, подаваемого через AviSynth скрипт. В этом случае также на экран при сохранении может ничего не выдаваться. Режим Normal recompress практически не имеет смысла применять. Аналогичные режимы есть и для звука, только там варианта всего два - прямое копирование и полная обработка (в т.ч. с указанием сжатия и применением звуковых фильтров).

Ещё из полезных особенностей можно отметить возможность отображения в выходном окошке видеоданных, полученных после распаковки сжимаемого видеопотока (Display decompressed output). Таким образом можно оценить качество сжатия и, если оно недостаточно, прервать обработку, не дожидаясь завершения всего процесса. Хотя эта опция замедляет работу и не всегда применима. Также можно полюбоваться работой фильтров без сохранения файла (режим Preview): в этом случае на экран выводятся все кадры, причём если скорость обработки недостаточно высока, то скорость показа будет соответственно меньше нормальной, а звук будет прерываться. Практически такой же результат (проигрывание выходного потока) достигается нажатием кнопки в левом нижнем углу, а кнопка , соответственно, воспроизводит только входной поток.Возможности по обработке видео

Перейдём к описанию того, что же, собственно, можно делать с видео. Как уже было сказано, кроме возможности резки-склейки файлов без перекодирования (которую мы подробнее разберём в первом примере) VirtualDub славится своими фильтрами. Имеется три десятка встроенных фильтров и возможность подключения внешних плагинов, которых написано довольно много разными людьми. Порою не имеется сопоставимых по качеству аналогов для других программ. (Справедливости ради надо сказать, что в последние годы фокус внимания фильтрописателей сместился в сторону создания плагинов для AviSynth, утилиты, имеющей сходную архитектуру, но совершенно другой интерфейс. Подробнее об этом - в ). Фильтры можно добавлять в произвольном количестве и порядке через меню Video - Filters:

Рядом с каждым фильтром отображается размер кадра до и после его применения (с учётом обрезки - Cropping), а также некоторые его параметры. Подробное описание фильтров и рекомендации по их применению выходят за рамки данной статьи - да и возможностей столько, что нужно в каждом случае разбираться отдельно, для этого лучше всего обратиться в . Здесь мы дадим только общие рекомендации. Фильтры можно приблизительно разделить на несколько тематических групп:

  • Изменение размеров изображения (Resize), обрезка/добавление полей (Null transform с опцией crop), поворот (Rotate - для видео, снятого фотоаппаратом в вертикальной ориентации, не делайте так в следующий раз!);
  • Очистка от шумов (Chroma noise reduction, Smart smoother HiQ, Dynamic noise reduction, Temporal smoother, NeatVideo и т.д. - в основном внешние плагины);
  • Настройка изображения (Levels, Brightness/contrast, Autocorrection of white balance, Grayscale и т.д.);
  • Работа с чересстрочным (interlaced) изображением (различные варианты Deinterlace, включая встроенный);
  • Прочие фильтры (Deshaker - устранение дрожания камеры, Logo и Delogo - нанесение логотипов и борьба с оными, Subtitler - добавление субтитров и т.д.).

Работу фильтра можно ограничить определённым диапазоном кадров (кнопка Blend и команда View/Curve editor). Мы не будем останавливаться на этой возможности (её описание можно найти в справке), а рассмотрим подробнее одну из самых часто используемых функций - масштабирование (resize) и обрезка краёв (crop). В последних версиях этот, в сущности, простой фильтр приобрёл пугающее количество настроек:

На самом деле ничего сложного нет. Нужно иметь в виду, что формат AVI не предусматривает хранения информации о соотношении сторон кадра (Aspect ratio), предполагается, что оно равно соотношению ширины и высоты в пикселях (т.е. «квадратный пиксель»). С другой стороны, в некоторых случаях это не так: самый типичный пример - формат DV, с размером кадра 720х576 (т.е. 5:4) и пропорциями кадра при корректном отображении 4:3 для обычного и 16:9 для широкоэкранного формата. (Поэтому открытый в дубе DV файл будет немного вытянут по вертикали, если не изменить настройки отображения, хотя обычные проигрыватели покажут его правильно). В то же время в файлах DivX/Xvid пиксель обычно квадратный, т.е. при масштабировании DV нужно переключить пункт Aspect ratio с Same as source на Compute height from ratio и задать там 4:3 или 16:9. Ну и общее правило для всех кодеков - желательно иметь ширину и высоту кратную 2, 4, 8, а лучше 16 (для этого служит раздел Codec-friendly sizing).
Что же касается обрезки краёв, то специального фильтра для этого нет - зато есть кнопка Cropping, позволяющая задать обрезку перед применением указанного фильтра. В частности, это может быть фильтр-пустышка Null transform, единственный смысл которого и заключается в сочетании с Cropping. Обрезать, конечно, тоже лучше кратно 2 или 4.

Некоторых комментариев удостоится ещё работа с чересстрочным (интерлейсным) видео. Как известно, в большинстве видеокамер именно этот режим является основным (часто единственным) вариантом, и он отлично сочетается с просмотром на ЭЛТ телевизорах. Если вы собираетесь делать DVD из своего видео, то также лучше всего оставить изображение чересстрочным - при воспроизведении на компьютере или LCD/плазменном телевизоре автоматически будут приняты соответствующие методы деинтерлейса. С другой стороны, если нужно, например, закодировать видео в какой-либо из вариантов MPEG-4 (DivX, Xvid, ...), например, для размещения в интернете, то разумно будет применить деинтерлейс и затем уменьшение размеров кадра (как на скриншоте выше, где ещё добавлена стадия очистки от шума и небольшая обрезка краёв). В качестве метода деинтерлейса не стоит выбирать встроенный фильтр Deinterlace в режиме Blend fields - вопреки надписи best рядом с ним, ничего хорошего, как правило, не выйдет, будут двоящиеся контуры. Лучше воспользоваться сторонними плагинами, хотя и здесь тоже самые современные и качественные разработки существуют только в варианте для AviSynth. И никогда без особых причин не меняйте размер кадра в чересстрочном видео!Типовые задачи

Теперь опишем некоторые типовые сценарии, в которых VirtualDub применяется для решения специфических задач.

Пример №1 : Для начала разберёмся с линейным монтажом, т.е. резкой-клейкой и перестановкой кусков. Как уже было сказано, эту операцию можно проводить без перекодирования, если исходное видео было в контейнере AVI. Добавление нескольких файлов происходит командой File/Append AVI segment, причём если они пронумерованы по порядку, то можно загрузить сразу несколько (галка Autodetect additional segments by filename). При этом форматы сжатия видео и звука должны быть строго одинаковы (вплоть до некоторых параметров, скрытых от пользователя: например, может случиться так, что DV-файл с камеры, обработанный в Dub-е и сжатый опять в DV, нельзя пристыковать к такому же файлу, но полученному непосредственно с камеры.. С другой стороны, файлы, сжатые в DivX одинаковым образом, но с разными битрейтами, спокойно можно склеить). Между прочим, многие (но не все «скрытые») параметры файла можно узнать командой File/File information, хотя более универсальной является отдельная утилита .

Со «склейкой» разобрались, теперь обратимся к «резке», т.е. удалению ненужных фрагментов (например, рекламы из записи телепередачи), а заодно и к перестановке фрагментов местами (через механизм типа буфера обмена - Ctrl+X, Ctrl+C, Ctrl+V, только в пределах одной программы). Здесь ситуация различается в зависимости от того, сжат файл кодеком с межкадровым (например, DivX/Xvid, VP6, Indeo) или покадровым (MJPG, DV, HuffYUV и т.д.) сжатием. Если во втором случае можно спокойно вырезать любой кусок, т.к. каждый кадр кодируется независимо от других, то в первом ситуация сложнее. Ведь для того, чтобы декодировать некоторый кадр, нужно найти ближайший стоящий перед ним ключевой кадр и пройти всю цепочку от него до нужного кадра. Например, рассмотрим такое выделение:

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

А если мы, наоборот, захотим оставить только этот фрагмент, то полученный видеоряд начинался бы с дельта-кадра, перед которым нет ни одного ключевого, что недопустимо. Поэтому в режиме Direct Stream Copy такая обрезка приведёт к тому, что выходной файл будет начинаться не с 3-го кадра, а с 1-го (ближайшего перед ним ключевого). Аналогично, при попытке убрать следующий фрагмент:

мы получим видеоряд с кадрами с 1 по 4 и с 11 (а не 13) по 15. Отсюда вывод - чтобы не ошибиться в нарезке, делайте это по ключевым кадрам. А именно, если вы удаляете фрагмент, то он должен заканчиваться на ключевом кадре, а если оставляете, то, наоборот, начинаться. Здесь как раз пригодится возможность перемещения только по ключевым кадрам при нажатом Shift. Кстати, отметка конца выделения относится к предыдущему кадру (т.е. выделено всё до текущего, не включая его), поэтому ставить конец надо как раз на сам ключевой кадр.
А что делать, если нужно более точное позиционирование для резки/клейки? В последних версиях Дуба появилась очень полезная галочка Smart Render, активная в режиме Full processing mode. Действие её следующее: если участок может быть обработан в режиме Diect stream copy, то так и происходит, иначе запускается указанный в настройках кодек (он должен быть тем же, с каким сжат исходный файл) и с его помощью кодируется фрагмент вплоть до следующего ключевого кадра (естественно, он начнётся с вновь сделанного ключевого кадра), а на нём опять переключается в режим Direct stream copy.

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

Кроме того, есть команда Video/Select range, результат которой сводится к тому, что удаляется участок до первого и после последнего указанного кадра. Связанная с этим задача - разбить длинный файл на куски, например, по 700 мегабайт, для записи на CD, удобнее решается с помощью VirtualDubMod, в котором рядом с номером кадра дополнительно выводится «расстояние» от начала файла в мегабайтах.

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

Пример №2 : Предположим, вы смонтировали фильм в какой-либо программе монтажа, например Pinnacle Studio или Adobe Premiere. Дальше его нужно как-то сохранить, причём часто бывает нужно иметь его в нескольких вариантах: например, если формат исходной съёмки был miniDV, то разумно готовый фильм из монтажки экспортировать тоже в DV AVI и потом его скинуть обратно на ленту (если камера это позволяет); почти наверняка требуется сделать DVD; может быть, хочется разместить фильм в интернете (даже если вы собираетесь использовать сервис типа YouTube, который сам пережимает видео в свой формат, причём довольно скудного качества, всё равно загружать на сервер исходный DV AVI может быть слишком долго и непроизводительно). В последнем случае имеет смысл готовый DV AVI загрузить в дуб, добавить при необходимости фильтры деинтерлейса и уменьшения размера и сохранить во что-нибудь типа DivX, желательно в два прохода (подробнее об этом можно почитать в достаточно старой, но остающейся концептуально справедливой ). Конечно, можно сделать это и непосредственно из монтажной программы, но в этом случае все монтажные эффекты и переходы будут просчитываться два раза, а ведь у нас уже есть DV-AVI файл, подготовленный для записи на камеру.

Пример №3 : Допустим, вы снимали в условиях недостаточной освещённости и хотите почистить видео от шумов, или желаете избавиться от дрожания камеры при съёмке с рук. В этих случаях имеет смысл делать выборочную фильтрацию только для тех эпизодов, которые в этом нуждаются (в DVD-камерах каждый эпизод записывается в отдельный файл, при захвате видео с miniDV также, как правило, включают разбиение на сцены с записью каждой сцены в отдельный файл). Желательно проводить обработку перед загрузкой фрагмента в программу монтажа - в этом случае вы можете подбирать и настраивать нужные фильтры отдельно для каждого фрагмента. Впрочем, можно применить и другой ход (реализуемо только в случае AVI файлов с камеры miniDV): смонтировать весь фильм с исходными файлами, а перед окончательным экспортом определить фрагменты, требующие обработки, пропустить их через VirtualDub, исходный файл переместить в архивную папку, а на его место поместить обработанный файл под тем же именем. Затем запустить заново программу монтажа и экспортировать уже с новыми файлами. Обрабатывать видео можно как фильтрами самого VirtualDub, так и через AviSynth, что описано в соответствующей статье. В последнем случае, впрочем, всё равно желательно AVS скрипт загрузить в дуб и сохранить как регулярный AVI файл (например, с тем же кодеком DV) - не все монтажные программы работают с AVS скриптами, да и удобнее работать с готовым файлом, чем с «тяжеловесным» (в смысле времени обработки) скриптом. Стабилизации видео с помощью фильтров VirtualDub и AviSynth будет посвящена отдельная статья.

Пример №4 : Нужно сделать скриншот с видео, чтобы разглядеть его на предмет качества или наличия дефектов. Из проигрывателя это делать не стоит, т.к. он может вносить какие-либо модификации в изображение (например, принудительный деинтерлейс или коррекцию яркости). В то же время VirtualDub откроет файл «как есть», при условии, конечно, что он поддерживается им. Кстати, о форматах: по умолчанию, кроме AVI, VirtualDub умеет открывать mpeg-1 файлы. С помощью плагинов от можно научить его открывать MPEG-2 (кстати, можно открыть и склеить подряд несколько VOB-файлов за раз) и WMV/ASF; есть также плагины для работы с MOV и FLV контейнерами, а модификация VirtualDubMod умеет работать с MKV файлами. Остальные форматы можно попробовать открыть с использованием AviSynth (см.ниже). Ну а собственно сохранение скриншотов делается командой File/Export/Image sequence (нужно выделить участок для экспорта - если нужен один кадр, то поместить его под курсор и нажать Home, стрелка вправо, End).VirtualDubMod и AviSynth

Несколько слов про важную ветвь развития «дуба» - VirtualDubMod. Это отдельная программа, основанная на исходных кодах VirtualDub и множестве полезных добавлений. Её имеет смысл поместить в ту же директорию, что и сам VirtualDub, чтобы использовать общий набор плагинов. (В принципе, можно вообще заменить ей сам дуб, разве что последняя версия DubMod"а основана на версии 1.5.10 от 2005 года, т.е. в ней отсутствуют возможности, добавленные в Dub за последнее время - впрочем, их не так много). Интерфейс VirtualDubMod похож на VirtualDub, одно существенное отличие состоит в том, что меню Audio заменено на Streams, что отражает нацеленность на работу с несколькими аудиопотоками. Второе полезное нововведение заключается в более тесной интеграции с AviSynth. Этой важной программе посвящена , здесь же нам будет полезно одно её свойство - умение работать с подсистемой DirectShow наряду с VideoForWindows. Вкратце, AviSynth - это скриптовый язык и программа для его интерпретации, а интерфейс его взаимодействия с остальными программами очень прост - вы пишете текстовый файл со скриптом, а затем открываете его в (почти) любой программе видеообработки, кодировщике или проигрывателе, как обычный видеофайл, и работаете точно так же, как с видеофайлом на жёстком диске. Видеоряд и звук формируются командами, записанными в скрипте. Для наших целей достаточно просто установить AviSynth, и тогда при открытии видеофайла в VirtualDubMod будет доступна опция Use AviSynth template:

Это значит, что для открытия файла будет автоматически создан промежуточный AviSynth скрипт, содержащий соответствующую команду открытия (в данном случае DirectShowSource), и уже его загрузит VirtualDubMod. Таким образом можно попытаться работать практически с любыми типами файлов, которые воспроизводятся проигрывателями - RealVideo, QuickTime (MOV), MPEG2-TS (в нём обычно находится видео с видеокамер формата HDV и AVCHD), MP4 (тоже частый вариант в фотокамерах и комбинированных фотовидеокамерах). Надо отметить, что этот способ, во-первых, не всегда работает, во-вторых, не такой надёжный, как открытие «родными» средствами (в частности, может неверно работать позиционирование по файлу и т.д.). Поэтому всегда при возможности лучше пользоваться встроенными или специализированными средствами (MPEG2-PS, в частности, DVD файлы (VOB), открываются непосредственно в VDMod, а для перевода MP4 файлов в AVI существует ).

Ещё отметим, что в VirtualDubMod есть специальный Script Editor (в меню Tools), предназначенный для оперативного контроля и настройки параметров AviSynth скрипта. Просто меняйте текст скрипта, а затем нажимайте F5 или F7, чтобы увидеть в окне VirtualDub результат работы скрипта. Подчеркнём, что и обычный VirtualDub прекрасно открывает AVS скрипты, просто в VDMod интеграция с AviSynth более удобная. Нужно помнить, что AviSynth скрипт, открытый в любой программе, представляется несжатым файлом, так что копирование без пересжатия в этом случае невозможно. (Если не требуется дополнительно использовать фильтры VirtualDub, то лучше выбирать режим Fast Recompress, а не Full processing mode)."

Короче говоря, VirtualDub (а также VirtualDubMod и AviSynth) должны быть в арсенале всякого, кто работает с цифровым видео на уровне чуть выше стартового. Изучайте и применяйте! В статье были рассмотрены далеко не все возможности VirtualDub, так что читайте Help. Детальное описание пунктов меню можно найти на специализированных ресурсах (впрочем, для довольно старых версий Дуба). В сети есть также и русскоязычные сборки VirtualDub, правда, скорее всего, не последних версий.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows