Обзор программы VirtualDub

  • Введение
  • Меню File
  • Меню Edit
  • Меню Video
  • Меню Audio
  • Меню Options
  • Панель навигации
  • Заключение

    Введение

    Пожалуй, все кто занимается или пытался заниматься видеомонтажом, сталкивался с программой 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. Если же вам нужно оставить настройки и применить их для следующего видео, то можно его открывать сразу, без закрытия предыдущего (оно автоматически закроется).

    Смотрим далее:


    "File Information" - здесь вы можете посмотреть информацию об открытом видео:


    "Save striped AVI", "Save stripe master" - это довольно интересная функция, но на данный момент она не очень то пригодится. Смысл её сводится к тому, что при записи, видео будет разбито на несколько потоков и будет записываться в разные файлы. Это напоминает работу RAID массивов. Файлы с расширением .stripe создаются в ручную, и в них прописывается, куда и как будет производиться запись. Для тех, кто захочет разобраться подробно, как работает эта функция, я рекомендую взять Help (VirtualDub_help.rar) от первых версий VirtualDub и почитать его.

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


    Рассмотрю поподробнее это окошко:

    "Filename prefix:" - какое-либо имя или символ, который будет добавлен перед названием файлов (точнее говоря их номерами).

    "Filename suffix, include extension:" - окончание имени файла (добавляется после порядкового номера).

    "Minimum number of digits in name:" - количество цифр в порядковом номере. Если поставить 4, то отсчёт начнётся с 0001, 0002… 9999 и после того, как порядковый номер уйдёт за пределы 4 цифр, буде добавлена ещё одна цифра - 10000, 10001…

    "Directory to hold images" - здесь указывается директория, в которую будет производиться запись графических файлов. Для того, что бы выбрать эту директорию, нужно нажать на кнопку "…" в конце этого поля (или же, можно написать в ручную, если вам это больше нравится).

    "First frame filename" и "Last frame filename" - показывают, куда и с какими именами будут сохранены первый и последние файлы картинок.

    "Output format" - выставляется графический формат, в котором будет производиться запись. Я предпочитаю BMP (формат без сжатия), что вы выставите - большого значения не имеет.

    "Don`t run this job now; add it to job control so I can run it in batch mode" - пока я только обещаю рассказать, что даёт отложенная запись, но не рассказываю. Видно не пришёл ещё черёд рассказа, про отложенную запись. Потерпите немного. Если поставить эту галочку, то картинки не начнут записываться сразу, а встанут в очередь отложенных записей.

    Теперь тонкость при работе с этой функцией. Для того, что бы правильно сохранялись картинки, нужно выставить режим работы "Full processing mode" и поставить формат сжатия (Video->Compressin) - Uncompressed RGB. Только в этом случае на формирование изображений пойдёт правильный поток. Далее, когда будете разглядывать картинки, не забудьте, что Mpeg4 кодеки формируют B-frames, которые хуже соседних кадров по качеству.

    "Save WAV" - производит запись звуковой дорожки видеофильма в WAV формате. При пользовании этой функцией, нужно учитывать определённые особенности. Запись в WAV формате не производит декомпрессии сжатого звука, а записывает его как он есть внутри видео файла, просто подставляя заголовок WAV. Я использую эту функцию при монтаже видео. Допустим, я свёл несколько фрагментов в один фильм (производя попутно подрезку, стыковку…). Естественно, что бы потом звук совпал с видео, мне нужно его сохранить вместе со всеми этими обрезками. Вот в этом случае я пользуюсь функцией "Save WAV" (звук у всех фрагментов был не сжат и спокойно сохраняется в WAV формате). Далее, произвожу действия с видео и в последнюю очередь свожу звук и видео.

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


    "Load processing settings" - Производится запись установок VirtualDub, которые были сделаны для данного видео. Вы спросите, какие же конкретно установки записываются? Да все. Начиная с установок фильтров (видео и аудио) и заканчивая кодеками, установленными для кодирования и их установками. Единственное, что не записывается - системные установки, находящиеся в меню "Options".


    "Include selection and edit list" - если поставить эту галочку, то в профайл запишутся так же и все действия по монтажу видео. То есть, будут записаны все вырезки из монтируемого видео.

    "Save processing settings" - Производится установка параметров VirtualDub из профайла, записанного ранее.

    Теперь разберёмся, что можно делать при помощи файла конфигурации. Допустим, вы подготовили к сжатию видео. То есть, настроили фильтры, сделали все вставки, вырезки, настроили кодеки на сжатие. Сохранили всё это в профайл и запустили на сжатие из VirtualDub. Но… о неудача, размер сжатого видео зашкалил за нужные нам размеры файла. Заново настраивать фильтры, делать вырезки, довольно муторно. Мы просто открываем открытое ранее видео и загружаем профайл. Единственное, что нужно сделать, настроить заново кодек на меньший битрейт и запустить процесс сжатия видео заново. Или, вы ведёте покадровое редактирование 6 часового фильма - вырезка плохих кадров идёт долго и нудно. Как правило, это не получается сделать за один раз. На время перерывов можно записывать вырезки в профайл, а когда настанет время продолжить редактирование, открыть видео и загрузить профайл. Все ранее сделанные вырезки сохранятся и можно будет продолжить с того места, где вы закончили. В целом, эта функция довольно полезная и стоит всегда помнить о её наличии.

    Далее по меню "File"


    "Start frame server" - фреймсервер, хм, попытаюсь объяснить, что это такое. Допустим, вы сделали определённые действия над видео в программе VirtualDub (фильтры, вырезки…) и хотите произвести сжатие в другой программе (например, в формат Mpeg2, ведь VirtualDub этого не может). У нас есть 2 пути решения этой задачи. Первое - сохранить видео в промежуточный файл, сжатый кодеком без потерь (или с минимальными потерями), потом сжимать из этого промежуточного файла в нужной нам программе сжатия. Второй - воспользоваться фреймсервером. Для этого, из VirtualDub запустить фреймсервер и в нужной программе сжатия открыть промежуточный файл фреймсервера. Немного подробнее о работе фреймсервера: при запуске фреймсервера, он создаёт файл на винчестере (в этом файле нет реальных видео данных), при обращении к которому фреймсервер начинает выдавать кадры программе, обратившейся к этому файлу.

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

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

    "Capture AVI" - Эта функция производит захват видео с карт захвата и TV-тюнеров. Работу VirtualDub в этом режиме я описал в статье про захват.

    "Run script" - Происходит запуск скриптов. Что же такое скрипт? Это файл, содержащий команды, которые понятны VirtualDub-у. В результате исполнения скрипта, VirtualDub произведёт какие-либо действия с видео (загрузка видео, включение фильтров, настройка кодеков…). Из самого VirtualDub скрипты пишутся двумя способами. Первый - записать при помощи команды "Save processing settings". При загрузке такого скрипта, его действие будет равноценно загрузке через "Save processing settings". Второй способ на много более интересен. Я уже долго говорю про отложенную запись, настало время рассказать про неё поподробнее. Если при сохранении видео или картинок воспользоваться функцией "Don`t run this job now; add it to job control so I can run it in batch mode", то создастся скрипт, в который будет внесёно задание (файл VirtualDub.jobs в каталоге VirtualDub). В этом скрипте будет указанно всё, что нужно знать VirtualDub-у для сжатия видео (видео источник, все настройки фильтров, настройки кодека сжатия и файл, в который будет производиться запись сжатого видео). Если теперь открыть этот скрипт из VirtualDub, то запустятся на исполнение все задания, ранее внесённые в него (в соответствии с очерёдностью внесения в скрипт - первое внесённое задание будет исполнено первым). Это очень удобно. Например, при работе кодеков в двух проходном режиме, для того, что бы не подходить к компьютеру после первого прохода. Я всегда пользуюсь этим способом.

    "Job control" - А этой функцией можно просмотреть список отложенных заданий и запустить их на выполнение.


    Если удалить файл VirtualDub.jobs, то все задания из этого списка удалятся. Теперь посмотрим, как мы можем воспользоваться этой функцией. Здесь есть кнопки, которыми можно управлять работой скрипта.

    "Move up" - эта кнопка передвигает выделенное задание выше по списку отложенных записей.

    "Move down" - эта кнопка передвигает выделенное задание ниже по списку отложенных записей.

    "Postpone" - эта кнопка приостанавливает выполнение задания. То есть, если запустить скрипт, то приостановленное задание не будет выполнена.

    "Delete" - удаляет задание из списка отложенных записей.

    "Start" - запускает на выполнение выделенную отложенную запись. Если после этого не остановить выполнение задания, то будут выполняться все задания по очереди.

    "Abort" - останавливает выполнение задания.

    Линейка "Current job" показывает процент выполнения задания.

    Я не люблю пользоваться запуском заданий из этого списка. Причин тому несколько. При запуске заданий в качестве скрипта (функция "Run script") в окошке "VirtualDub Status" мы видим результаты выполнения задания, а при запуске задания из "Job control" видно только процент выполнения очередного задания. Так же, при запуске скрипта, из окошка "VirtualDub Status" можем управлять приоритетом выполняемого задания, что иногда очень пригодится. Например, вы заняты какой-то работой в Word или Excel и параллельно у вас идёт сжатие видео в программе VirtualDub. Если VirtualDub будет иметь нормальный приоритет, то все действия будут выполняться с жуткой натяжкой - весьма медленно. Но если присвоить в окошке "VirtualDub Status" приоритет "Idle", то Word весело забегает. Кодирование в VirtualDub будет происходить в то время, когда вы не производите никаких действий в других программах.

    Ну и в конце выпадающего списка мы увидим список из последних 4 открываемых файлов (для обеспечения возможности их быстрого открытия) и опцию "Quit" - выход их VirtualDub.


    К оглавлению

    Меню Edit

    Второй раздел в панели меню - "Edit". В этой панели находятся инструменты для навигации и редактирования.


    VirtualDub

    Сверху идёт раздел редактирования видео. Здесь всё абсолютно стандартно. Пожалуй, я бы скорее использовал этот раздел для ознакомления с горячими клавишами. Горячие клавиши лучше запомнить и использовать их в процессе редактирования видео. Это здорово сэкономит время.

    "Cut" - вырезает (c копированием в буфер) помеченную область видео. Разметка видео производится клавишами "Home" и "End" или из этой же панели функциями "Set selection start" и "Set selection end". При этом, помеченная область будет выделена синим цветом на панели навигации.


    VirtualDub

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

    Далее, идут функции навигации по видео.


    VirtualDub

    VirtualDub

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

    "Next frame" - переводит слайдер движения по видео на следующий кадр.

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

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

    Есть ещё один резон, зачем нужна эта функция. Допустим, у вас есть видео сжатое кодеком с ключевыми и дельта кадрами. Вам нужно без пережатия (чтобы не попортить картинку), удалить определённые куски. Для этого вы включите "Direct stream copy" (подробнее об этом позже) и вырежете не нужные вам куски. Но после сохранения может оказаться, что сохранилось то, что вы вырезали или не сохранилось то, что вы оставляли.

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

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

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

    "Next keyframe" - переход на следующий ключевой кадр. Если вы находитесь между двумя ключевыми кадрами, то переход будет осуществлён на правый (по линейке VirtualDub).

    "Back 50 frames" - возвращает слайдер на 50 кадров назад по видео.

    "Forward 50 frames" - переводит слайдер на 50 кадров вперёд по видео.

    "Previous drop frame" - переводит слайдер на предыдущий пропущенный кадр (drop). Пропущенные кадры появляются при захвате видео. Можно посмотреть, как много их на вашем материале, для этого применяется эта функция.

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

    "Next drop frame" - переводит слайдер на следующий пропущенный кадр (drop).

    "Previous range" - эта функция производит перевод слайдера на предыдущий фрагмент. Фрагментами считаются те места, где производилась вырезка, вставка или специальная пометка фрагментов. При этом, если производилась вырезка, слайдер становится на месте вырезки и снизу, в информационной строке, указывается, какой диапазон кадров будет входить в следующий фрагмент и какие кадры источника будут в него входить.


    VirtualDub

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


    VirtualDub

    Кадр можно задать, как его номером ("Jump to frame number"), так и нахождением его во времени ("Jump to frame at time"). Ну и в конце списка меню, находятся функции расставления меток.


    VirtualDub

    "Set selection start" - устанавливает метку начала выделенной области. При расстановке меток учтите, что можно поставить только одну метку начала и одну метку конца фрагмента. И как следствие этого, если вы повторно нажмёте установку метки начала, то она будет поставлена вновь, а область будет начинаться уже с этого момента.

    К оглавлению

    Меню Video

    Вот мы и добрались до главного раздела в панели меню - "Video".


    VirtualDub

    Первая опция, пожалуй, одна из самых нужных в VirtualDub - "Filters".


    VirtualDub

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


    VirtualDub

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

    Допустим, вы выбрали какой-нибудь фильтр и нажали "Ok". Сперва нас выкинет в окошко настройки фильтра (если он нуждается в настройке), а потом мы вновь окажемся в окошке "Filters" и выбранный нами фильтр будет в конце списка.

    Кнопка "Delete" удаляет фильтр, на котором остановлен выбор.

    Кнопки "Move Up" и "Move Down" передвигают фильтры по списку вверх и вниз. Зачем это надо, как-нибудь потом.

    Кнопка "Cropping" производит обрезку картинки со всех сторон. Это нужно для того, что бы убрать не нужные чёрные полосы и загибы изображения по краям (они обычно бывают после захвата) или просто вырезать нужную нам часть изображения. Обрезку можно производить перед любым фильтром. Для этого, нужно навести на фильтр, перед которым вы собираетесь произвести обрезку, нажать на кнопку "Cropping" и произвести обрезку.


    VirtualDub

    На картинке видно, что перед 3 фильтром сверху была произведена обрезка. При обрезке, нужно учитывать, что есть фильтры, которые работают только с чётным разрешением, а есть те, которые работают с разрешениями, делящимися на 4, а есть и особо привередливые - требуют, что бы видео на их входе было кратно 16.

    На выходе с последнего фильтра нужно стараться, что бы разрешение было кратно 4 (для данного случая на выходе разрешение 320*240). Это связанно с тем, что, большинство кодеков используют YUY2 формат цветности. Если же исходить из общих рекомендаций разрешения видео, лучше делать, что бы ширина была кратна 32, а высота 16. Эти рекомендации не связаны с работой кодеков, а предназначены для облегчения работы плееров, показывающих видео.


    VirtualDub

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

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

    И последняя кнопка "Configure". Она производит включение настройки фильтра, на котором остановлен фокус.

    Что ж, о фильтрах конкретнее в другой статье, а сейчас пойдём ниже по списку функций в меню "Video".


    VirtualDub

    Функция "Frame rate" позволяет изменить частоту кадров видео. Есть 3 вида изменения частоты кадров: изменение индекса частоты кадров (приводит к замедлению или ускорению видео, соответственно изменяется продолжительность видео), реальное изменение количества кадров в секунду (достигается выкидыванием или дублированием кадров, не приводит к изменению продолжительности) и снижение частоты кадров выкидыванием полей (этот способ достаточно подробно рассмотрен мною в этой статье). Для каких целей вы собираетесь это использовать - ваше дело, но пару советов осмелюсь дать.

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

    Второй способ поможет проредить видео (понизить частоту кадров) для публикации в Интернете, следящих систем и других источников, где не важно содержание каждого кадра и не требуется передача динамики. Этим способом изменения частоты кадров можно понизить видео поток или подогнать видео под какие-то конкретные значения (например, вам нужно переделать из 25 кадрового видео в 30 кадровое). Видео поток сжижается со снижением частоты кадров.

    Третий способ необходимо использовать при получении фильмов в формате NTSC, снятых на киноплёнку. Есть ещё несколько поводов его использовать, но в VirtualDub есть реализация только выкидывания 12 полей из 30 кадров (InverseTelecine).

    Давайте же посмотрим на окошко VirtualDub функции "Frame rate".


    VirtualDub

    "Source rate adjustment" - поле настройки заголовка частоты кадров. Это первый способ изменения частоты кадров (с соответствующими последствиями).

    "Frame rate conversion" - Это производится вторым способом.

    "Inverse telecine (3:2 pulldown removal)" - функция, выкидывающая 12 полей из 30 кадров. Это нужно для возвращения нормального 24 кадрового фильма из 30 кадрового формата NTSC. Этот процесс принесёт пользу, только если изначально фильм был снят на киноплёнку (24 кадра), а потом переведён в формат NTSC (30 кадров).

    Немного ниже по списку функций находится опция "Color Depth":


    VirtualDub

    Здесь можно произвести выбор цветового формата, в котором будет работать VirtualDub. По большому счёту, VirtualDub работает только в форматах RGB, а все входящие форматы преобразует в них. Исключение составляют режимы работы "Direct stream copy" и "Fast recompress", которые не производят преобразования к RGB, но в этих режимах не будут работать фильтры и другие интересности VirtualDub. Но об этом чуть ниже.

    "Decompression format" - позволяет выбрать, в каком формате будет происходить получение видео от декодера.

    "Output format to compressor/display" - цветовой формат, в котором видео выдаётся на кодер и для просмотра.

    Далее, в выпадающем меню "Video" идёт пункт "Compression". Это меню выбора кодека, при помощи которого будет происходить сжатие вашего видео.


    VirtualDub

    Какой кодек выбирать - ваше дело. Есть кодеки, которые широко употребляются и стали практически де-факто (DivX). Есть и другие кодеки, которые дают не худшее качество, но не получившие широкого распространения. Собственно, каждый кодек будет хорош для какой-то своей задачи. На картинке я обвёл цифры, показывающие, с какой глубиной цветности может работать кодек (для данного случая это RGB16 и RGB24). При нажатии на кнопку "Configure" появляется окошко настройки кодека. У каждого кодека оно сугубо индивидуально, поэтому дальше рассматривать я не буду. Для некоторых кодеков требуется внешнее управление битрейтом и расстановка ключевых кадров. При выборе такого кодека становятся доступны два поля:

    Больше ничего интересного на вкладке выбора кодека нет. Перейдём на следующую функцию меню "Video".

    "Select range" - позволяет выделить то видео, которые будут обрабатываться в VirtualDub. Для каждой опции есть два поля, в первом выставляется время в миллисекундах (1 секунда = 1000 миллисекунд), во втором выставляется номер кадра, а который приходится это время. Выставлять можно или время, или номер кадра, значения не имеет.


    VirtualDub

    "Start offset" - начальный отступ видео. То есть, если выставить сюда какое-то значение, то обработка начнётся с этого кадра (или с этого времени).

    "Length" - здесь выставляется продолжительность обрабатываемого видео.

    "End offset" - отступ видео от конца. То есть, на выставленное здесь значение, видео будет укорочено с конца.

    "Offset audio to maintain a/v sync" - делает отступы звука для поддержания синхронизации с видео. Действует только в том случае, если вы воспользовались каким-нибудь пунктом выделения видео.

    "Cut off audio when video stream ends" - если продолжительность звука больше продолжительности видео, то оно будет обрезано с конца.

    Вот мы и дошли до основных режимов работы с видео.


    VirtualDub

    В меню "Video" можно сделать выбор между 4 режимами работы, которые определяют, в каком режиме VirtualDub будет производить обработку видео.

    "Direct stream copy" - при включении этого режима, VirtualDub не будет производить никаких действий с видео. То есть, мы не можем произвести никаких действий с картинкой (подрезка, наложение фильтров). Более того, даже нельзя изменить кодек, при помощи которого было сжато видео. Сразу оговорюсь, что в VirtualDub можно открыть Mpeg1 формат видео, но сохранить в этом режиме будет невозможно, это связано с тем, что VirtualDub не работает с Mpeg форматами сохранения файлов. Скажем так, VirtualDub сможет сохранить видео в этом режиме, если был открыт AVI файл. Теперь о пользе этой функции. Её смысл в том, что видео из оригинального файла переносится без каких бы то ни было изменений, но его можно переносить не полностью, а кусками. То есть, открываем видео в VirtualDub, производим все вырезки, вставки (в смысле перенос кусков видео из одного места в другое, взять из другого файла не получится), включаем режим "Direct stream copy" и сохраняем. При вырезках и вставках видео не забываем про работу с ключевыми кадрами, по которым производится вся работа (подробнее я описывал выше). Сохранение видео произойдёт очень быстро. При этом в видео не вносится никаких искажений (не производится повторного сжатия). Естественно, для просмотра видео, сохранённого таким образом, будет применяться тот же самый кодек, что и в исходном видео. Для чего же мы ещё можем применить этот режим. Например, нам нужно соединить видео со звуком (или заменить одну звуковую дорожку на другую). Для этого, в меню "Audio" открываем нужный файл со звуком, а в меню видео включаем режим "Direct stream copy". После сохранения у нас будет новый файл, в котором видео уже будет с новым звуком. Так же, в этом режиме мы можем изменить частоту кадров для видео. В работе этого режима есть одна главная особенность: при включённом режиме "Direct stream copy" в меню "Video", видео сохраняется без изменений.

    "Fast recompress" - при включении этого режима, видео передаётся на кодер в том же цветовом формате, что и выдал декодер видео. Я уже говорил, что VirtualDub работает в цветовом формате RGB, но это не является панацеей. Такой формат цветности нужен только если производится обработка видеоматериала фильтрами. Если же производится только приём видео и сжатие кодеками, то нет никакого смысла переводить видео в RGB формат (так например происходит обработка материала после Avisynth). Если же переводить в RGB (а кодек потом переведёт видео ещё в какой-то свой формат), то происходит хоть и минимальная, но потеря времени, а в некоторых случаях ещё и искажения картинки. Про искажения - это частные случаи, но они иногда происходят. Рассказывать о них довольно долго, смысл их сводится к тому, что видео несколько тускнеет, если его выдавать в RGB форматах (так, например, работают DV декодеры). Итак, какие можно сделать выводы по этому режиму работы? Его нужно использовать, если вы не производите никакой обработки видео в VirtualDub, но собираетесь сжать видео каким-либо кодеком. Противопоказание этому режиму только одно - кодек, который вы применяете для сжатия видео, должен понимать тот формат цветности, в котором выдаёт декодер видео.

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

    Так же, этот режим работы можно использовать для конвертации RGB16 (если декодер выдаёт в этом формате) в RGB24 или RGB32 для последующего сжатия в кодеках не понимающих RGB16. Это будет происходить быстрее, чем использовать режим "Full processing mode". Делается это при помощи функции "Color Depth".

    "Full processing mode" - этот режим работы стоит по умолчанию и позволяет включать любые настройки VirtualDub. Как я уже говорил, для работы фильтров VirtualDub нужен формат RGB32. VirtualDub производит конвертирование входного формата в RGB32 и после этого выдаёт на фильтры. Включение этого режима необходимо, когда вы собираетесь производить полную обработку видео в VirtualDub.

    Перейдём теперь к последнему набору функций меню "Video".


    VirtualDub

    "Copy source frame to clipboard" - производит копирование текущего кадра в буфер. Копируется оригинальный кадр из открытого видео. После этой операции, можно вставить куда-либо этот кадр (например, в программе Photoshop вставить в изображение).

    "Copy output frame to clipboard" - производит копирование текущего кадра в буфер. Но в отличии от предыдущей функции, копироваться будет не кадр источника, а кадр после обработки в VirtualDub. То есть то, что будет выдаваться кодеку на сжатие, учитывая все фильтры обработки видео, которые были вами настроены.

    "Scan video stream for errors" - производит проверку источника видео на ошибки. Ошибки могут возникать при передаче AVI файла по каким-либо сетям, копировании AVI файла с плохо читаемого диска при помощи программ, предназначенных для копирования сбойных участков и других вариантов, когда возможна неверная передача информации. После выполнения проверки видео в информационной строке будет выдано количество испорченных кадров, а сами испорченные кадры будут выделены, как фрагмент.


    VirtualDub

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

    "Error mode" - производит переключение режимов сканирования на ошибки.


    VirtualDub

    "Report all errors" - производит отслеживание всех ошибок, возможных при декодировании видео.

    "Conceal errors and resume decoding at next keyframe" - при поиске ошибок в этом режиме, после нахождения ошибки, VirtualDub не будет сканировать поток дальше, а перейдёт на следующий ключевой кадр и продолжает сканирование. Смысл этой функции в том, что при нахождении ошибки в дельта кадре, следующий кадр будет выстроен из него, то есть, ошибка будет кочевать из кадра в кадр, до тех пор, пока не придёт ключевой кадр. В ключевом кадре есть вся информация для построения полного кадра. В связи с этим, кадры, попавшие между ключевым и испорченным, будут также испорчены и нет смысла их сканировать.

    "Decode even if the result may be garbled" - отслеживает ошибки даже в том случае, когда результат может быть искажён. То есть, когда результат обнаружения ошибки не может быть 100%, VirtualDub будет продолжать поиск ошибок.

    К оглавлению

    Меню Audio

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


    VirtualDub

    "Interleaving" - эта функция отвечает за то, каким образом звук будет внедрён в AVI файл. При выборе этой функции появится следующее окно:


    VirtualDub

    "Enable audio/video interleaving" - включает режим переплетения видео и звука. Этот режим используют практически всегда, и является де-факто при сохранении видео. Смысл его в том, что в AVI файл звуковой и видео потоки записываются не параллельно (идущими не зависимо друг от друга), а чередующимися. То есть, к определённому кадру привязывается определённый кусок звука. При этом, значительно понижается возможность рассинхронизации звука и видео (но не исключает её).

    "Preload … ms of audio before video stats" - здесь выставляется значение продолжительности звука, который будет загружаться до начала показа кадра. Теоретически, увеличение этого значения повысит стабильность воспроизведения звука, но на практике может получиться наоборот. По умолчанию стоит 500 ms, как правило, это значение не изменяют. Но может получиться, что у вас видео или звук пойдут рывками или начнут отставать друг от друга. В этом случае можно поэкспериментировать с этим значением до получения стабильных результатов.

    "Interleave audio every … frames (ms)" - здесь выставляется значение в кадрах (миллисекундах), через которое нужно вставлять следующий кусок звука. Естественно, чем больше это значение, тем большая продолжительность звука будет вставлена в эти промежутки. При этом надо учесть, что время презагрузки звука ("Preload … ms of audio before video stats") то же должно быть увеличено.

    "Delay audio track by … ms" - устанавливает задержку начала воспроизведения звука от начала воспроизведения видео. Это нужно будет в том случае, когда первый кадр видео не совпадает с началом звуковой дорожки. Выставляя положительное значение в миллисекундах (1000 миллисекунд = 1 секунде), мы производим задержку начала воспроизведения звука при начале воспроизведения видео. Это всё относится только к видео (+звук) сохранённому в AVI файл.

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

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


    VirtualDub

    В левом окошке находится список кодеков, при помощи которых вы можете сжать звук. Сразу предупрежу, 100% результат, что у вас что-то получится, дадут только MP3 (MPEG Layer-3) и "No compression (PCM)". Дело в том, что не смотря на присутствие других кодеков, многими из них нет возможности воспользоваться. После того, как вы выбрали кодек, в правом окошке появится список параметров, с которыми можно использовать этот кодек. Если поставить галочку "Show all formats", то список режимов станет ещё больше.

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

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


    VirtualDub

    "Use advanced filtering" - при выборе этой опции включается режим работы с "продвинутыми" фильтрами. Продвинутость их состоит в том, что можно будет присоединить внешние фильтры обработки звука, а можно воспользоваться внутренними, более функциональными фильтрами VirtualDub. При выборе этой опции становится доступна функция "Filters".

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


    VirtualDub

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

    "Clear" - очищает поле графа. То есть, удаляет все фильтры, которые вы выставили.

    "Add" - добавляет фильтр на поле графов. Когда появится окно добавления фильтров, отведите его в сторону от окна графов. Так будет на много удобнее работать, можно и фильтры добавлять и смотреть, что получилось. С полным списком фильтров я знакомить не буду, внизу окна выбора фильтров, выводится маленькая подсказка, что этот фильтр делает, а настроек эти фильтры не требуют (за редким исключением). Единственное, что подскажу, все графы должны начинаться с фильтра "Input" и заканчиваться "Output". Это говорит о том, что нужно взять звуковую дорожку из VirtualDub и отдать её обратно после обработки.

    "Delete" - удаляет фильтр, на котором находится фокус.

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

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

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

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

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

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

    В списке меню "Audio", после фильтров идёт пункт "Conversion". Он отвечает за перевод звука из одного формата в другой. Объясню, что я отношу к слову формат звука: частоту дискретизации, число уровней квантования и количество каналов (моно, стерео). Первые два относятся к цифровому звуку. Как я уже упоминал при разговоре о звуковых кодеках, при сжатии звука, нужно будет обратить на формат входного звука. Если у вас не совпадёт частота дискретизации входного звука и частота дискретизации кодека, то просто выпадет ошибка. Но если вы для 16-bit звука примените 8-bit кодек, то получите катастрофическое падение качества звука. Обратите на это внимание. Так вот, вкладка "Conversion" предназначена для перевода звука из одного формата в другой.


    VirtualDub

    Для того, чтобы изменить частоту дискретизации звука, нужно просто поставить выбор на той частоте дискретизации, которую вы хотите сделать. Для этого предназначена функция "Sampling rate". Только учтите, что понижение частоты дискретизации понижает качество звука, а повышение частоты дискретизации не улучшит ни каких характеристик (лучше оригинала всё равно не сделаешь). Стоит использовать эту функцию только для определённых, известных вам целей. Например, для звукового кодека необходима частота дискретизации 44100 герц, а при видео захвате у вас получилось 44056 герц (такое бывает, когда видео идёт мастер потоком). Для подготовки звука к сжатию, делаем конвертацию звука в нужный нам формат и никаких проблем. Понижение частоты дискретизации так же иногда может пригодиться. Например, вы собираетесь применить кодек с сильным сжатием. При этом, чем выше частота дискретизации, тем тяжелее кодеку справится со звуковым потоком. Мы можем понизить частоту дискретизации (относительно оригинала) и кодек выдаст более качественный звук, чем это было бы без неё.

    Далее, функция "Precision" позволяет выбрать, какое квантование использовать для звука. Сразу скажу, что повышение числа уровней квантований (из 8-bit в 16-bit) не даст никакого результата. Снижение уровней квантования ухудшит качество звука, вместе с этим упростив работу кодека. Поток звука на него пойдёт значительно меньше.

    Функция "Cannels" в особых комментариях не нуждается. При включении "Mono" происходит смешивание каналов. При включении "Left" или "Right" происходит запись моно сигнала, который будет взять из левого или правого канала соответственно. Пойдём дальше по меню "Audio". Ниже находится функция "Volume".


    VirtualDub

    C ней всё предельно просто. При установке галочки "Adjust volume of audio channels" можно будет отрегулировать уровень громкости выходного сигнала. С одной стороны, это весьма полезная функция (уровень входного сигнала далеко не всегда идеальный), а с другой весьма не удобная. Нет индикатора выходного сигнала, поэтому мы не можем никак сориентироваться, что надо сделать с уровнем звука, повысить или понизить.

    Ниже, в списке функций меню "Audio", находятся опции, отвечающие за источник звукового сигнала.


    VirtualDub

    Здесь можно сделать выбор, что будет обрабатываться в VirtualDub.

    "No audio" - на вход VirtualDub не подаётся никакой сигнал. Естественно, в выходном AVI файле так же не будет никакого звука.

    "Source audio" - при выборе этой опции, на вход VirtualDub подаётся сигнал из открытого видео. Это опция стоит по умолчанию.

    "WAV audio" - позволяет выбрать внешний источник сигнала. На вход VirtualDub можно подавать только WAV сигнал. Это большой недостаток. Тем самым, нас заставляют пользоваться системными кодеками для сжатия сигнала (исходный WAV сигнал имеет очень большой объём и использовать его для сохранения в конечном AVI файле не разумно). Для работы со звуком других форматов написано множество программ. Например, VirtualDubMod может работать с множеством звуковых форматов, поэтому, для работы со звуком я рекомендую именно его.

    Вот мы и дошли до последних опций списка меню "Audio".


    VirtualDub

    "Direct stream copy" - включает режим прямого копирования звука из источника в итоговый AVI файл. Так, если вы выбрали источник через "WAV audio" и выбрали эту опцию, то в итоговом AVI файле будет выбранный WAV звук именно в том формате, в котором был он в файле. То есть, не будет происходить ни сжатия, ни каких других изменений. Если же поставить источником "Source audio", то звук из исходного AVI перекочует в получаемый AVI, не зависимо от того, был он сжат или нет.

    "Full processing mode" - при выборе этой опции будет возможна обработка звука в VirtualDub. При этом, можно будет использовать фильтры, изменять уровень громкости и необходимо будет выбрать кодек, при помощи которого будет производиться сжатие звукового потока.

    "Error mode" - реально, выбрать внутри этой функции ничего не получится. Смысловая нагрузка же этой функции в том, что производится анализ звукового потока на ошибки. Анализ запускается из меню "Video" совместно со сканированием видео.

    К оглавлению

    Меню Options

    Итак, с работой программы VirtualDub практически разобрались. Теперь осталось разобраться с настройками программы, которые помогут нам сделать работу немного комфортнее.


    VirtualDub

    "Show log" - показывает в отдельном окошке список работ производимых в VirtualDub. Кому-то может быть и пригодится, но только не мне.

    "Show real-time profiler" - показывает по времени, к каким подсистемам производится обращение, и с какой активностью.


    VirtualDub

    Сверху, отображается загрузка процессора. Ниже, обращение к устройству чтения-записи. В самом низу отображается работа подсистемы обмена данными.

    Ниже, находятся функции настройки работы VirtualDub по обмену данными с операционной системой и внешними устройствами.


    VirtualDub

    "Performance" - здесь находятся настройки буферов VirtualDub.


    VirtualDub

    "AVI Output buffering" - производится настройка размера буфера при чтении AVI файла с винчестера. Его стоит увеличивать только в том случае, когда идут простои процессора по вине источника AVI файла. Ведь источником может быть не только винчестер, но и сеть, внешний винчестер, CD-ROM… Проследить, из-за чего происходят задержки обработки видео модно посредством функции "Show real-time profiler". Если мы видим, что процессор загружен не полностью, а в основном идёт работа с устройством чтения-записи, то можно попробовать увеличить размер буфера "AVI Output buffering". При этом надо учесть, что VirtualDub будет занимать больше места в памяти.

    "Wave input buffering" - позволяет изменять размер буфера для WAV источника. Так как WAV источник у нас задаётся отдельным файлом, для него так же работает отдельная буферизация. Если мы работаем без звука или берём звук из источника видео, то этот буфер использоваться не будет. Резон изменения размера этого буфера точно такой же, как и изменение размера буфера входного видео.

    "Stream data pipelining" - эта функция ограничивает количество потоков, которые будут использоваться при передаче данных. Для выбора этого режима подходит чисто экспериментальный метод. Мы не можем заранее знать, с каким количеством потоков лучшим образом справится ваша система, поэтому только экспериментально. Это зависит от многих факторов: используемого железа, драйверов и конкретных операций, которые производятся в данный момент. При изменении количества потоков, может изменяться полное быстродействие системы.

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

    Посмотрим, какие функции есть после выбора размера буферов.

    Что касается опции "Dynamic Compilation" у меня нет никакой информации. А вот на "Preferences" остановимся и рассмотрим все пункты.


    VirtualDub

    Первая вкладка - "Main".

    "Quick preview defaults" - это поле отвечает за установки, относящиеся к просмотру видео. В него входят 2 опции:

    "Output color depth" - устанавливает, в каком формате цветности будет производиться вывод на экран. 16-bit более быстрый и нет смысла включать 24-bit, на качество видео, выдаваемого кодеку, это никак не влияет. Так же, можно выбрать:

    "Process priority" - устанавливает приоритет просчёта картинки выводимой на монитор. Здесь можно оставить значение "Default", что будет соответствовать "Normal".

    "Dub defaults":

    "Process priority" - отвечает за приоритет VirtualDub во время его работы. В целом, во время работы, в окошке "VirtualDub Status" можно выбрать статус работы VirtualDub. Если же поставить приоритет здесь, то он будет постоянен, и не нужно выставлять его каждый раз. Здесь можно выбрать среди 9 значений приоритетов:

    "Automatically add extension to filenames when saving" - при установке этой галочки, во время сохранения файла будет автоматически добавлено расширение. Расширение будет поставлено в соответствии с типом файла, который предполагается для работы.

    Вторая вкладка - "Display". Здесь находятся опции, отвечающие за вывод рабочих окон VirtualDub.

    "Enable dithering for 16-bit desktops" - производит сглаживание рабочих элементов при работе с 16 битным рабочим столом. Это на любителя.

    "Use DirectX for display panes" - использовать функции DirectX для прорисовки окон VirtualDub. Эту функцию можно держать постоянно включённой. Если у вас видеокарта не полнейший раритет, то всё будет работать нормально.

    "Use DirectX even when Terminal Services is active (may cause display corruption)" - использование ускорения DirectX при выводе выпадающих меню. Эта опция может работать не правильно (выпадающие окна будут пропадать), поэтому сперва убедитесь, что у вас работает всё правильно, а потом оставляйте эту опцию включённой.

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

    Здесь она так же может пригодиться. На этой вкладке находятся две опции:

    "Interframe (cut)" - уровень разницы между кадрами, при котором считается, что сцена или действие поменялись. Двигая слайдер в сторону "More sensitive" можно добавить чувствительности (в крайнем положении, даже самое небольшое движение в кадре, будет воспринято как смена действия). Движение слайдера в сторону "Less sensitive" уменьшает чувствительность детектора движения, вплоть до его полного отключения.

    "Intraframe (fade)" - эта опция так же относится к детектору смены сцен. Но сцены не всегда сменяются моментально. Иногда, в месте смены сцен делают снижение, а потом нарастание яркости изображения. Эти эффект довольно сложно отследить обычным, пороговым детектором сцен. Для этого был введён этот детектор (Intraframe (fade)). Его чувствительность регулируется так же, как и у предыдущего.

    Четвёртая вкладка - "CPU". Здесь можно выставить оптимизацию кода под конкретный процессор.

    "Use default optimization for current CPU…" - при выборе этой опции включается стандартная оптимизация кода. Она подходит под все виды процессоров, начиная с 486. При выборе этой опции не производится подгонка кода под конкретную модель процессора.

    "Force optimizations" - при выборе этой опции, становится возможно выбрать оптимизацию, в соответствии с вашим процессором.

    Последняя вкладка - "AVI". Здесь находятся опции, отвечающие за работу с AVI файлами.

    "Restrict legacy AVI support to 1 gigabyte (instead of 2GB)" - при включении этой опции в AVI файл будут прописываться заголовки формата AVI 1.0. При этом, на размер AVI файла будет наложено ограничение в 1 гигабайт. Смысл включения этой опции в том, что некоторые программы не могут работать с AVI формата 2.0.

    "Do not correct MPEG Layer III audio streams" - Эта опция отключает корректировку MP3 звука в AVI файле. Лично меня очень раздражает, когда при открытии AVI файла с MP3 звуком в VBR формате, VirtualDub навязчиво начинает пытаться его исправить. Естественно, он не умеет правильно работать с VBR и получается сущее безобразие.

    Что ж, продолжим дальше путешествие по меню "Options".


    VirtualDub

    "Display input video" - при установке этой галочки будет производиться показ входящего видео в окне VirtualDub.

    "Display output video" - при установке этой галочки будет производиться показ видео, уходящего на кодек.

    "Display decompressed output" - это весьма полезная функция, но она очень замедляет работу системы. Смысл её таков, что во время сжатия мы сразу можем просмотреть качество сохранённого видео. То есть, во время сжатия, следом производится разжатие материала и вывод его на экран (в область вывода обработанного материала). Мы можем сразу визуально убедиться, на сколько качественная картинка сохраняется.

    "Show status window" - включение этой опции позволяет появляться окну "VirtualDub Status" во время сжатия материала.


    VirtualDub

    Это окно очень информативно. В нём выводится практически вся информация о ходе кодирования в VirtualDub.

    "Swap input/output panes" - эта опция меняет между собой окна просмотра входящего и выходящего видео. Иногда, эта опция оказывается весьма полезна. Например, у вас на входе видео весьма большого формата, а вы хотите увидеть, что у вас получится на выходе в результате работы фильтров. Для этого меняем местами окна просмотра и видим всё, что хотели.

    Ну и закончим с панелью "Options".


    VirtualDub

    "Vertical display" - выставляет окна просмотра входящего и выходящего видео не горизонтально, а вертикально (друг под другом).

    "Sync to audio" - производит синхронизацию видео и звука. Эту функцию не стоит выключать. Дело в том, что при вырезках и вставках, если не будет синхронизации со звуком, то он не будет смещаться и, как результат, полный бардак со звуком. Я бы назвал эту функцию - привязка звука к видео.

    "Drop frames when behind" - включает режим пропуска кадров, если система не успевает показывать просчитываемый кадр. Это распространяется только на вывод изображения на экран и никак не затрагивает обработку изображения.

    "Allow video overlays" - при включении этой опции видео будет выдаваться в оверлей. Оверлей - это область памяти на видеокарте. Все плеера выводят видео именно этим методом. Единственный его недостаток в том, что если при включённом оверлее сделать скриншот экрана или активного окна, то на месте видео будет пустое окно. Но оверлей позволяет быстрее обрабатывать вывод на монитор.

    "Preview field mode" - позволяет определить, с каким видео мы будем работать. Для интерлейсного материала можно задать порядок полей, с которым нужно выводить на экран. Здесь я предпочитаю оставлять "Progressive".

    К оглавлению

    Панель навигации

    Для передвижения по видеоряду внизу программного окна VirtualDub есть кнопки, помогающие передвигаться по видеоряду.


    VirtualDub

    При наведении на любую из них появляется подсказка, которая говорит, что делает эта кнопка. Я буду приводить название кнопки исходя из появляющейся подсказки.

    "Stop" - производит остановку режима воспроизведения.

    "Input playback" - производит показ видео, которое открыто в VirtualDub.

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


    VirtualDub

    Если у вас не стоит галочка "Swap input/output panes" в меню "Options", то слева будет показываться оригинальное изображение (Input), а справа изображение после обработки (Output). Для удобства работы, вы можете отмасштабировать окна просмотра под ваше изображение. Для этого, на любом из окон просмотра сделайте щелчок правой кнопкой мыши. У вас появится меню, как показано на левой панели просмотра. Здесь вы можете выбрать масштаб окна из списка предложенных значений (слева) и соотношение сторон выводимого изображения (справа). Мне нравится, что бы во время просмотра было и входное и выходное изображение. Я это подгоняю масштабами. Можно так же и в ручную растянуть окно просмотра. Для этого нужно потянуть его за какой-нибудь край. Но при этом изображение будет деформироваться. Что бы этого не происходило, нужно выставить в выпадающем меню "1:1 pixel ratio (PC)".

    "Start" - переводит слайдер на начало видео.

    "Backward" - переводит слайдер (естественно и видео) на один кадр назад. По моему, пользоваться этой кнопкой довольно не удобно. Гораздо удобнее пользоваться клавиатурой. Клавиша лево выполняет эти же функции.

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

    "End" - передвигает слайдер в конец видео.

    "Key previous" - передвигает слайдер на предыдущий ключевой кадр. Опять же, проще воспользоваться сочетанием клавиш Shift+лево, что будет на много быстрее, чем целится в эту кнопку.

    "Key next" - переводит на следующий ключевой кадр. Особо не останавливаемся и пользуемся клавишами Shift+право.

    "Scene reverse" - по нажатию на эту кнопку производится поиск предыдущей смены сцен. Ранее, я рассказывал о том, как настроить пороги поиска смены сцен.

    Кнопки активизации этой функции находятся только в панели навигации.

    "Scene forward" - производит поиск следующей смены сцен.

    "Mark in" - ставит метку начала выделенной области. Гораздо удобнее использовать клавишу "Home" на клавиатуре.

    "Mark out" - - устанавливает метку окончания выделенной области. Будем пользоваться клавишей "End" на клавиатуре.

    По панели навигации особых замечаний больше нет.

    Теперь, для того, что бы вам было не много понятно, что в этой программе можно делать, приведу примеры работы. Например, у вас есть источник видео (захватили картой захвата с разрешением 720*576) и вам его надо сжать кодеком DivX. Как правило, в форматы Mpeg4 не сжимают полноразмерную картинку. Для начала, нужно подготовить картинку к сжатию, потом уменьшить разрешение видео и отдать кодеку на сжатие. Про подготовку видео и для чего это нужно, я расскажу в статье про фильтры, а сейчас про то, что нужно делать в VirtualDub.

    Что же мы делаем в программе VirtualDub. Открываем видео в VirtualDub. Заходим в окошко добавления фильтров, настраиваем их. В списке фильтров будут те, которые чистят видео от разного рода помех, избавляют от последствий чересстрочной развертки (Deinterlace), и уменьшение разрешения (Resize). Опять же, при выборе разрешения для сжатия, учитываем, что разрешение 720*576 использует не квадратный пиксель, а прямоугольный (для получения стандартного соотношения 4:3). То есть, после того, как мы обрезали края, получилось какое-то новое разрешение. Для сжатия нужно его пропорционально уменьшить (разделить ширину и высоту на одно и то же число). Получились какие-то дробные величины. До целого числа можно округлять не задумываясь. Далее, для того, что бы получить правильные размеры картинки с квадратным пикселем, нужно ширину домножить на 1,0667 и после этого округлить ширину до величины, что бы она делилась на 32, а высота на 16. То, что я написал про разрешения, не панацея, а взято оттого, что разрешение входящей картинки 720*576. Если брать картинку на входе с разрешением 768*576 (некоторые карты позволяют захватывать с таким разрешением), то у него изначально пиксель квадратный и можно только пропорционально уменьшать картинку (не забывая про кратности 32 и 16). Разберём другую задачку. Мы произвели захват с VHS кассеты с разрешением 352*576 (576 -неприкасаемое). Посчитаем, во сколько раз нужно будет увеличивать ширину видео. Для этого, разделим 768/352= 2,1818. Почему мы делим 768? Потому, что для получения нормального соотношения 4:3 при высоте 576 нужно 768. Итак, с разрешениями разобрались. Теперь, в зависимости от приёмов работы фильтры могут быть разные, поэтому перечислять или давать какие-то рекомендации пока я не буду. Далее, мы выбираем кодек, при помощи которого будем сжимать видео и производим его настройку. Если вы собираетесь использовать кодек в двух проходном режиме, то рекомендую при сохранении пользоваться функцией "Don`t run this job now; add it to job control so I can run it in batch mode", о работе которой я уже рассказывал. Пользоваться ей достаточно просто. Через окошко выбора кодека настраиваете кодек на первый проход и сохраняете видео, включив эту функцию. Потом, настраивайте кодек на второй проход и сохраняйте видео, вновь включив эту опцию. Как запустить отложенные задания, я рассказывал. Запускайте отложенные задания и ждите результатов. Имейте ввиду, что при сохранении первого и второго прохода видео должно быть одно и то же. То есть, нельзя добавлять-убирать фильтры или изменять их настройки.

    Как метод работы, можно назвать очистку видео. Дело в том, что в монтажных программах, таких как Adobe Premiere, Pinnacle Edition, Ulead Media Studio… нет фильтров, способных конкурировать с фильтрами VirtualDub по качеству очистки видео от различного рода помех и искажений. Поэтому, если источником видео у вас была видеокассета (формат DV не имеется в виду, хотя и после него можно кое-что почистить), то имеет смысл сначала почистить видео в VirtualDub, а уж потом производить монтажные действия в этих программах. Схема работы в этом случае проста. Загружаем в VirtualDub видео, подлежащее чистке. Настраиваем фильтры, при помощи которых будем чистить видео. Сохраняем видео в каком-либо формате без потерь: RGB uncompressed, Huffiuv, PICVideo MJPEG… Второй кодек предпочтительнее всего. При сохранении учтите, что полученный файл будет занимать огромные размеры (какие конкретно, зависит от разрешения видео, частоты кадров, кодека сжатия видео, наличия/отсутствия звука…). Такие размеры невозможно будет реализовать на файловых системах FAT16 или FAT32 - только NTFS. После сохранения, можно открывать это видео (уже очищенное) в любой монтажной программе и производить все действия по монтажу.

    Возможно, вы не собираетесь делать никакого монтажа, а хотите сжать видео в MPEG2 формат. Тогда, просто подаёте видео на MPEG2 кодек (CCE, Procoder…). Но перед тем, как сжимать в MPEG2 форматы, так же желательно произвести чистку видео (в том случае, когда источник оставляет желать лучшего, а если это не DV материал, то так и будет). Последовательность действий ни сколько не будет отличаться от описанных в предыдущем абзаце.

    Ещё один вариант применения. VirtualDub - самая удачная программа для сжатия в Mpeg4 форматы. В последнее время появились другие, превосходящие по своим характеристикам кодеки, но они пока не получили большого распространения, так VirtualDub отменно работает и с ними. Теперь, допустим, вы делаете какой-то проект в Adobe Premiere и хотите его сжать в MPEG4 формат. Если вы будете это делать из самого Premiere, то столкнётесь с разного рода проблемами: программа по непонятным причинам может вылетать, работа будет происходить очень медленно, для двухпроходного видео придётся отдельно запускать первый и второй проход.

    Для того, что бы избежать этого, мы можем поступить двумя способами.

    Для тех, кто владеет скриптовым языком Avisynth, так же не обойтись без VirtualDub. Сам по себе, Avisynth очень гибок и позволяет получить гораздо больше возможностей для редактирования и обработки видео, чем позволяет VirtualDub. Но опять же, Avisynth позволяет только обработать видео, но не позволяет его сохранять. Что бы сохранить видео, обработанное при помощи Avisynth, нам нужно открыть AVS скрипт в VirtualDub, выбрать кодек, при помощи которого будем сохранять и запустить на сохранение. При открытии и сохранении видео из Avisynth скрипта (без какой бы то ни было обработки в VirtualDub), имеет смысл включить режим работы "Fast recompress".

    К оглавлению

    Итак, применений VirtualDub-у довольно много. Я практически никакой обработки видео не делаю без этой программы.
    На последок, даю ссылки, где можно скачать последние релизы программ
    VirtualDub и VirtualDubMod.