Как установить кодеки для virtualdub

Обновлено: 07.07.2024

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

Собственно, в этой статье приведу небольшую инструкцию по работе с программой VirtualDUB* для решения сей задачи. Материал рассчитан на начинающего пользователя (который ранее не сталкивался с видео обработкой). Вместе с этим разберу самые частые попутные вопросы: как усилить звук, наложить свое лого, подрезать края и пр. (их все можно решать одновременно!).

И так, вступление закончено, перейдем к делу .

*Примечание : выбор пал на VirtualDUB т.к. программа бесплатна, компактна, имеет множество фильтров и дополнений, позволяет решить все оговоренные выше задачи. Отмечу, что она, конечно, не идеальна (другие видеоредакторы можете найти по ссылке ниже) .

ускорение ПК

Конвертирование видео [по шагам]

VirtualDub

Бесплатная компактная программа для работы с видеофайлами (преимущественно с AVI (для работы с MPEG и MP4 необходимо загрузить доп. плагины)). Программа поддерживает AVI файлы с разной частотой кадров (с такими могут работать далеко не каждое ПО) , позволяет разрезать и склеивать видео, накладывать свои звуковые дорожки, усиливать/уменьшать громкость звука и пр.

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

  1. возможность быстрой нарезки (обрезки) видеофайлов;
  2. сотни различных фильтров: наложение водяных знаков, подрезка краев, резкость, яркость, поворачивание видео на определенный угол и т.д. (smooth, 3x3 convolution, flip, resize rotate, brightness/contrast, levels, deinterlace, threshold и др.) ;
  3. возможность самостоятельного выбора кодека (и его точечной настройки) как для видео, так и для аудио дорожек;
  4. возможность усиления громкости звуковой дорожки;
  5. возможность импорта звука/видео из разных источников;
  6. работа с AVI файлами с разной частотой кадров;
  7. программа бесплатна;
  8. поддерживается всеми популярными ОС Windows XP, 7, 8, 10 (32/64 bits).

ШАГ 1: добавление видео

Все действия будут рассмотрены в английской версии 1.10.4 (32 битной).

И так, перейду сразу к делу: после запуска программы нажмите по "File/Open video file" (или сочетание кнопок Ctrl+O). После укажите нужное видео (которое хотите отредактировать).

Open Video File (открыть видео)

Далее VirtualDUB должен показать вам два окна: в первом исходное видео, во втором - выходное (т.е. уже с примененными фильтрами, например). Т.к. пока что мы ничего с ним не делали - и там, и там изображение у вас будет одинаковым.

Отмечу, что, если у вас слишком большое разрешение видео, которое не вмещается в размер вашего рабочего стола: просто выставите масштаб отображение в 50 или 25% (для этого, достаточно кликнуть правой кнопкой мышки по экрану с видео, пример ниже).

Если вы хотите склеить (соединить) несколько видео в одной, то после открытия первого из них - просто добавьте к нему последовательно еще несколько файлов. Для этого используйте инструмент "File/Append AVI segment".

Если вы хотите добавить к этому видео еще одно (т.е. склеить их)

ШАГ 2: отрезка лишних кусков из видео

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

Для этого в VirtualDUB есть удобный инструмент: . Все, что лишнее - выделяете при помощи этих кнопочек в голубой цвет и жмете клавишу DEL. См. пример ниже.

Останавливаем видео на нужном кадре, и жмем кнопку отрезки

VirtualDUB хорош еще тем, что при помощи стрелочек на клавиатуре можно найти начало и конец отрезаемого куска вплоть до каждого кадра!

Вырезаем второй ненужный кусок

Обратите внимание, что ниже на скринах показано удаление большей части фильма, из него оставлено лишь

Выделен второй кусок (удаляем!)

Вместо целого фильма осталось видео 8 мин. длиной

В общем-то, инструмент весьма простой и эффективный. Думаю, разобраться с ним не составит труда (будем считать, что "обрезка" выполнена).

ШАГ 3: наложение фильтров

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

Наложение своего лого

Лого - это своя мини-картинка, показываемая при просмотре видеофайла. Например, подобное лого вы видите каждый раз при просмотре ТВ - в углу отображено название канала. В общем-то, полезная штука, которая поможет вам подписать свое видео, или указать важный момент, на который нужно обратить внимание при его просмотре.

Попробуем наложить лого на наше видео. После того, как оно будет открыто в VirtualDUB, нажмите по "Video/Filters" (или сочетание Ctrl+F).

Video - Filters (видео, фильтры)

В открывшемся окне нажмите по кнопке "Add" (т.е. добавление).

Далее выберите фильтр "logo", и нажмите OK.

Добавляем свое лого на видео

После вам нужно будет указать свою картинку (лого), задать ее расположение (в каком углу показывать ее), и нажать OK. См. пример ниже.

Указываем картинку (лого) и ее расположение

Если все сделали правильно, в "выходном" видео увидите, как появился логотип (см. скриншот ниже).

Выходное видео изменилось

Изменение разрешения видео

Еще одна популярная задача. Для ее решения в VirtualDUB есть фильтр "resize" ( прим.: необходимо также открыть список фильтров и нажать "Add", затем выбрать "resize" и нажать OK) .

Resize (изменяем разрешение видео)

Далее сможете указать новое разрешение в пикселях (см. пример ниже).

Задаем настройки изменений

Поворот видео на определенный угол

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

Чтобы это сделать, откройте список фильтров ("Video/Filters"), затем щелкните по "Add" и в списке найдите фильтр "rotate2" (см. скрин ниже).

Rotate 2 (выбираем угол поворота видео)

Далее можете указать нужный вам угол поворота. Кстати, для того чтобы посмотреть, как будет повернуто видео -используйте кнопку "Show preview/Hide preview" (см. пример ниже).

Проверяем, насколько повернулось видео

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

Обрезка неровных черных краев

Нередко по краям видео можно встретить неровные края, черные полосы и др. "добро", которое хотелось бы обрезать. Для осуществления этого в VirtualDUB необходимо открыть вкладку "Video/Filters" и добавить фильтр с названием "null transform" (см. скрин ниже).

После щелкнуть по кнопке "Cropping" (подрезка).

Обрежем края видео (например, если есть черные полосы по бокам)

Далее при помощи инструментов "X1, X2, Y1, Y2" вы сможете вручную отрегулировать кол-во подрезаемого пространства от каждой стороны видео. См. пример ниже.

В итоге, после наложения фильтра, видим, что черные полосы были "отрезаны" (было - стало).

Смотрим, что получилось в итоге

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

ШАГ 4: выбираем кодек для сжатия видео, аудио

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

Аудио

Аудио, по умолчанию, VirtualDUB конвертировать не предлагает (т.е. дорожка в этом случае просто будет скопирована из оригинального видео без изменений). Если вы хотите ее сжать (а я рассмотрю именно такой вариант) - то сначала необходимо нажать "Audio/Full processing mode" . См. пример ниже.

Full Processing Mode (режим полной настройки)

Далее открыть "Audio/Compression" .

Compression (настраиваем сжатие)

После чего откроется окно, в котором вы сможете выбрать кодек для сжатия (слева), и выбрать битрейт (справа). Вообще, чаще всего выбирают кодеки Divx, MPEG Layer-3, AC-3.

Выбираем кодек и битрейт

Усиление громкости звука в видео

Для этого необходимо открыть "Audio/Volume" (обращаю внимание, что для осуществления этой операции необходимо, чтобы была включена опция "Full Processing mode" в том же разделе "Audio").

Далее поставьте галочку напротив пункта "Adjust volume of audio channels" (регулировка громкости аудио канала) и сдвиньте ползунок вправо (обратите внимание, что VirtualDUB покажет вам, на сколько процентов будет усилен звук).

Увеличиваем громкость звука в видео

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

Видео

Для выбора видеокодека, откройте раздел "Video" и нажмите по вкладке "Compression" (также можно использовать сочетание кнопок Ctrl+P).

Затем выберите из списка кодек (чаще всего выбирают кодеки Divx или Xvid) и откройте его настройки (кнопка "Configure", см. скрин ниже).

Выбираем кодек и открываем его настройки

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

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

ШАГ 5: запускаем конвертирование

Для начала сжатия (кодирования) осталось только нажать на "File/Save as AVI" (также можно нажать на клавишу F7) и выбрать место на диске, куда будет сохранен файл.

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

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

Кодирование запущено (обратите внимание на приоритет)

Кстати, обратите внимание на приоритет выполнения этой операции (строка "Processing thread priority"). По умолчанию, приоритет операции выставляется на "Normal", но его можно поменять и на "High. " (повышенный). За счет этого существенно можно ускорить процесс конвертирования. Правда, в этом случае остальные операции ПК будет выполнять куда медленнее (и вы вряд ли сможете параллельно с этой операцией даже открыть браузер) .

VirtualDub - бесплатный видеоредактор поддерживающий работу с avi, mp4, wmv, flv, mpg, mkv, mp3, wav, mov, gif и еще более чем 70 форматами. VirtualDub может обрабатывать видео без рекомпрессии, что позволяет обрезать и склеивать видео без потери качества меньше чем за минуту.

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

Основные возможности VirtualDub:

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

Как обрезать видео?

  1. Включаем: Видео → 'Прямопотоковое копирование'
  2. Включаем: Аудио → 'Прямопотоковое копирование'
  3. Выделяем начало и конец удаляемого фрагмента кнопками
  4. Удаляем клавишей Del
  5. Файл → 'Сохранить как AVI' → Указываем имя и расширение(не обязательно AVI)

Как склеить несколько видео в одно?

  1. Открываем первый фрагмент: Файл → 'Открыть видео файл'
  2. Добавляем другие фрагменты: Файл → 'добавить AVI сегмент'
    Если кнопка 'добавить AVI сегмент' неактивна, то необходимо предварительно пересохранить все части видео в формат AVI программой VirtualDub (Даже если они уже AVI).
  3. Чтобы не было потери качества включаем 'Прямопотоковое копирование' во вкладках Аудио и Видео.
  4. Сохраняем: Файл → 'Сохранить как AVI' → Указываем имя и расширение(не обязательно AVI)

Кодируем видео другим кодеком

  1. Включаем: Видео → 'Режим полной обработки'
  2. Видео → 'Компрессия' → Выбираем кодек(Xvid, MPEG-2, H.264. )
  3. Включаем: Аудио → 'Режим полной обработки'
  4. Аудио → 'Компрессия' → Выбираем кодек(MPEG Layer 3, IMA. )
  5. Сохраняем: Файл → 'Сохранить как AVI' → Указываем имя и расширение(не обязательно AVI)

Избавляемся от ошибок VirtualDub - ставим кодеки

Без установки внешних кодеков VirtualDub может выдавать ошибки при попытке открыть файл.
Исправляется это установкой K-lite Codek Pack.
При установке этого пакета кодеков необходимо отметить флажками кодек ffdshow.


Virtualdub — это программа для работы с захватом и обработкой видеоряда, которая может решать большой спектр программ. Официальный разработчик – Эвери Ли. Она работает как под 32-ух разрядной, так и под 64-ех разрядной системой Windows. Официально данный проект уже давно не обновляется, однако сама программа остается довольно актуальной даже в 2019 году.

Как пользоваться?

Основное предназначение Virtualdub: захват и обработка видеоизображения. Многие пользователи отмечают, что эту программу отличает от аналогов наличие двух функций, которые редко встречаются у других разработчиков:

Рассмотрим работу ПО на примере простого линейного монтажа.

Важно! Разные видеофайлы должны иметь абсолютно идентичные параметры, вплоть до тех, которые скрыты от пользователя. В противном случае программа выдаст ошибку. Узнать полную информацию по каждому файлу можно через команду File>File information. Или воспользоваться утилитой GSpot.

Резка подготовленного файла – чуть более сложный процесс. Если речь идет о работе с покадровым сжатием (MJPG, DV, HuffYUV и т.д.), то проблем, как правило, не возникает. Куски видео спокойно вырезаются и вставляются. Совсем другой принцип взаимодействия при межкадровым сжатием (DivX/Xvid, VP6, Indeo и проч.).

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

Теперь рассмотрим интерфейс программы. Условно ее можно разделить на несколько частей:

  1. Основное меню программы. Находится в верхней части окна. В нем можно найти вкладки: файл, правка, вид, переход, видео, аудио, параметры, инструменты, справка. Эта часть отвечает за выбор и наложение аудио и видео фильтров, использование плагинов и прочих функций обработки, настройку самой программы, сохранение и рендер готового файла.
  2. Исходное и выходное видео. Два поля, которые располагаются чуть ниже основного меню. В смежных окнах отображается картинка исходного и обработанного видео в режиме реального времени.
  3. Аудиодорожка. Находится сразу под двумя окнами с видео потоками. Отвечает за пост обработку звука, а также его настройку.
  4. Временная шкала. Отображает длину ролика. Также на ней можно ставить отметки для работы с инструментами обрезки или для наложения фильтров и прочих настроек.
  5. Управление позицией. Строка, которая располагается под временной шкалой. На ней находятся кнопки управления видео, а также инструменты для выделения отдельных фрагментов ролика.
  6. Строка состояния. Самая нижняя часть окна. В ней отображаются текущие действия и процессы, которые происходят с видео.

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

Пошаговая инструкция: как установить?

Virtualdub: что это за программа, как установить и пользоваться?

Рассмотрим пошаговый алгоритм установки программы:

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

В некоторых случаях программу нужно открывать через режим администратора. Для этого нажмите правую клавишу мышки и кликните по строке «запуск от имени администратора».

Настройка

Рассмотрим первичные настройки, которые могут потребоваться при первой работе с ПО при захвате изображения:

  1. Чтобы перейти в режим захвата изображения, нажмите: File>Capture AVI.
  2. Для настройки области сохранения нажмите: File> Set Capture file.
  3. Далее выбираем источник видеосигнала: Video>Source. В открывшемся окне выбираем, например, видеотюнер.
  4. Далее выбираем формат видео и настройки видео и звука: Video>Format.

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

Какие есть плагины и кодеки для работы?

Программа работает с большим количеством плагинов, которые упрощают работу.

Список плагинов с описанием их возможностей:

  • AC-3 plugin — импорт АС3 дорожек (требует AC-3 ACM Codec).
  • FLIC plugin — fli, flc.
  • FLV plugin — flv (для работы необходим ffdshow).
  • WMV plugin — Открывает Windows Media Video (контейнер [ASF]): asf, wmv, так-же открытие/импорт wma (аудио).(Для работы необходим ffdshow, либо WMV9 VCM).
  • MP4 / 3GP plugin — импорт в 3gp, mp4.
  • Quicktime plugin — mov, mp4.
  • Directshow plugin — позволяет подгружать любые форматы, которые открываются плеерами типа MPC.
  • MPEG-2 plugin — mpg, m2v, vob, vro.
  • PVN plugin — pvn — (только x86).
  • R3D plugin — поддержка R3D (Redcode RAW) — (только x86).
  • Matroska plugin — поддержка MKV (Matroska).
  • AC-3 ACM Codec — для поддержки формата AC-3.
  • AAC ACM Codec — поддержка формата AAC.

Как добавить кодеки?

Для установки нужного плагина вам потребуется найти его в интернете. Скорее всего он будет представлять собой архив, в котором и будет находиться нужный вам файл плагина в формате VDF. Его нужно будет извлечь и скопировать в корневую директорию программы VirtualDub, а именно в папку «Plugins». После чего перезапустить программу.

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

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

VirtualDub — бесплатный видеоредактор поддерживающий работу с avi, mp4, wmv, flv, mpg, mkv, mp3, wav, mov, gif и еще более чем 70 форматами. VirtualDub может обрабатывать видео без рекомпрессии, что позволяет обрезать и склеивать видео без потери качества меньше чем за минуту.

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

Основные возможности VirtualDub:

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

VirtualDub 1.10.4 Build 35491 Stable (2013) Portable by SamLab

Адрес официального сайта

Системные требования

Описание:
VirtualDub
— это бесплатная программа для обработки AVI файлов, как то: цветокоррекция, изменение размеров, обрезка (кропинг), сведение полей (деинтерлейс), нарезка и склеивание частей, компрессия, рекомпрессия, захват видео; добавление, компрессия и обработка фильтрами аудиотрека и многое другое. Одна из немногих программ, которые позволяют работать с видео без рекомпрессии вообще. При помощи встроенных и дополнительных плагинов (иногда платных, но чаще — нет) возможности программы расширяются чуть ли не бесконечно. К примеру — фильтры: денойз, удаление статичных логотипов, даже титровка. К плюсам программы можно так же отнести простоту и доступность, а так же высокую скорость работы. Она написана Avery Lee и лицензирована на условиях GPL. VirtualDub может использовать встроенные фильтры или подключаемые модули. По умолчанию работа с .AVI, .dat, .divx, .mpeg, .mpg, .mpv. Работа с VOB, MPEG-2, AC-3, FLIC, FLV, FLI, FLC, MOV, MP4, PVN, 3GP, WMA,WMV, (с помощью плагинов).

Портативная версия работает без инсталляции на компьютер Основные возможности:

• Конвертирование видео из одного формата в другой • Захват видео • Отдельная обработка видео и звукового потока • Разделение AVI файлов на части • Соединение AVI файлов • Вырезание из AVI звука • Изменение задержки звука и многое другое

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

1.10.4 Build 35491 Stable

: Added %(outputbasename) to insert output filename without extension.
ExtEnc
: Editor UI now has a drop-down for tokens.
Filters
: Expanded color space support in resize filter.
Preview
: Return now also stops preview.
AVI
: Added Copy button to AVI file information dialog.
AVI
: Fixed bitsPerPixel value for NV12 output.
Capture
: Improved error handling in screen capture module.
Capture
: Fixed sporadic errors in DXGI 1.2 screen capture mode related to tracking pointer shape changes.
Capture
: Spill drives can be adjusted on Windows XP.
Display
: Fixed regression in D3D effects display mode.
ExtEnc
: Fixed weird selection behavior when duplicating item.
Filters
: Fixed operation for Convert Format filter for the new modes.
Filters
: Fixed crash when attempting to crop video in a format that isn’t AVI-compatible.
Filters
: Fixed cropping errors on alias format filter.
Filters
: Fixed issues with interpolate filter in nearest mode.
GIF
: Fixed shifted presentation timings when reading animated GIFs.
Render
: The processing priority setting now correctly adjusts the priority of filter and compression worker threads too when multithreading is enabled.
TARGA
: Fixed vertical inversion issues during read. * UI: Add Windows 8.1 per-monitor DPI awareness support.

Как склеить несколько видео в одно?

  1. Открываем первый фрагмент: Файл → ‘Открыть видео файл’
  2. Добавляем другие фрагменты: Файл → ‘добавить AVI сегмент’ Если кнопка ‘добавить AVI сегмент’ неактивна, то необходимо предварительно пересохранить все части видео в формат AVI программой VirtualDub (Даже если они уже AVI).
  3. Чтобы не было потери качества включаем ‘Прямопотоковое копирование’ во вкладках Аудио и Видео.
  4. Сохраняем: Файл → ‘Сохранить как AVI’ → Указываем имя и расширение(не обязательно AVI)

Пишем простой плагин для VirtualDub

Несмотря на то что обработка видео не спеша переезжает на OpenCL / CUDA VirtualDub остается удобным средством для простых действий с видео. Обрезка кадра, добавление фильтров или наложение выполняется гораздо удобнее чем из консоли ffmpeg. Кроме того за годы существования была разработана масса фильтров позволяющие выполнять многие операции быстро и удобно. Несмотря на простоту SDK, при написании плагина возникают некоторые нюансы. Статья посвящена работе с ними.




В качестве примера напишем фильтр с нуля. Туториал рассчитан на начинающих или вспоминающих Win32 API. Создаём в студии пустой проект динамической библиотеки DLL.



Плагины для VirtualDub имеют расширение vdf, поэтому чтобы не переименовывать его каждый раз меняем расширение в свойства проекта Properties→General→Target extension на .vdf. Меняем для всех конфигураций, поэтому не забываем переключить их на вкладке настроек Configuration: на All Configurations и Platform на All platforms.



Копируем в проект папку include из распакованного SDK и добавляем файлы из него в проект через Atl-Shift-A или меню Add→Existing Item. Для работы нам понадобятся файлы заголовков из папки include и набор файлов хелпера VDXFrame. Не забываем добавить папку include в список папок где система будет их искать. Делается это из Properties→VC++ Directories→Include Directories, добавляем ссылку на корень проекта в виде $(ProjectDir)\include.



Добавляем в проект библиотеку VDXFrame, в примерах она используется в виде отдельного модуля, но так как лицензия позволяет, добавим её в виде исходного кода. Создадим в каталоге проекта папку src и скопируем в неё из SDK файлы VideoFilter.cpp,VideoFilterEntry.cpp,VideoFilterDialog.cpp и stdafx.cpp. Далее скопируем файл заголовка из include\stdafx.h в ранее созданную папку include. Не забываем добавить скопированные файлы в проект через Atl-Shift-A или из меню Add→Existing Item. На этом интеграция библиотеки хелпера заканчивается.

Переходим к написанию кода. Добавляем в проект новый файл main.cpp через Add→Existing Item или комбинацию клавиш Ctrl-Shift-A. Добавляем в main следующие строки

Метод GetParams() используется VirtualDub для определения совместимости фильтра, он должен вернуть битовую маску из перечисления FILTERPARAM

  • FILTERPARAM_SWAP_BUFFERS
    создаётся два независимых буфера для входного и выходного кадров, рекомендуется использовать всегда чтобы не создавать такие буфера руками
  • FILTERPARAM_NEEDS_LAST
    передаёт в фильтр не только текущий кадр но и идущий перед ним, используется для фильтров состояние которых зависит от предыдущего кадра
  • FILTERPARAM_SUPPORTS_ALTFORMATS
    информирует VirtualDub что плагин поддерживает кодирование кадра отличное от RGB32, например YUV, что позволяет оптимизировать вычисления
  • FILTERPARAM_ALIGN_SCANLINES
    фильтр требует выравнивания данных на 16 байт, а значит не поддерживает например длину строки 13 байт
  • FILTERPARAM_PURE_TRANSFORM
    поведение фильтра зависит только от данных в буфере кадра, позволяет ускорить обработку и отображение фильтра
  • FILTERPARAM_NOT_SUPPORTED
    фильтр не поддерживает входные данные в данном формате и работать не будет

Для фильтра который будет конвертировать изображение RGB32 в черно-белое нам подойдет FILTERPARAM_SWAP_BUFFERS и FILTERPARAM_PURE_TRANSFORM. Если мы хотим поддерживать кодировку цвета отличную от RGB32 и версию SDK меньше 12 пишем проверку на g_VFVAPIVersion и если она поддержана проверяем формат полученного изображения в поле fa->src.mpPixmapLayout->format. Ранние версии VirtualDub не поддерживали представление цвета отличное от RGB32. Для упрощения обработки писать будем придерживаясь формата RGB32, но вообще VirtualDub поддерживает большой список форматов, перечисленный в VDXPixmapFormat. uint32 BlackWhiteFilter::GetParams() < if (g_VFVAPIVersion >= 12) < switch (fa->src.mpPixmapLayout->format) < case nsVDXPixmap::kPixFormat_XRGB8888: break; default: return FILTERPARAM_NOT_SUPPORTED; >> fa->dst.offset = 0; return FILTERPARAM_SWAP_BUFFERS; > Обработка кадра выполняется методом Run(). Данные о кадре и входном и выходном буферах хранятся в переменной fa являющаяся экземпляром класса VDXFilterActivation. VirtualDub поддерживает обрезку кадра, поэтому алгоритм обработки можно оптимизировать получив информацию о выбранном пользователем окне с координатами x1,y1,x2,y2. Данные кадра хранятся в объектах src и dst, соответственно входной и выходной буфер. class VDXFilterActivation < public: const VDXFilterDefinition *filter; // void *filter_data; VDXFBitmap& dst; VDXFBitmap& src; VDXFBitmap *_reserved0; VDXFBitmap *const last; uint32 x1; uint32 y1; uint32 x2; uint32 y2; VDXFilterStateInfo *pfsi; IVDXFilterPreview *ifp; IVDXFilterPreview2 *ifp2; // (V11+) uint32 mSourceFrameCount; // (V14+) VDXFBitmap *const *mpSourceFrames; // (V14+) VDXFBitmap *const *mpOutputFrames; // (V14+) >; Если мы продолжаем писать код с поддержкой SDK меньше 12 версии то реализация метода Run() примет такой вид: void BlackWhiteFilter::Run() < if (g_VFVAPIVersion >= 12) < const VDXPixmap& pxdst = *fa->dst.mpPixmap; const VDXPixmap& pxsrc = *fa->src.mpPixmap; switch (pxdst.format) < case nsVDXPixmap::kPixFormat_XRGB8888: ToBlackAndWhite(pxdst.data, pxdst.pitch, pxsrc.data, pxsrc.pitch, pxsrc.w, pxsrc.h); break; >> else < ToBlackAndWhite(fa->dst.data, fa->dst.pitch, fa->src.data, fa->src.pitch, fa->dst.w, fa->dst.h); >> От версии которую поддерживает плагин зависит место хранения сырых данных в структуре. Итак, в функцию ToBlackAndWhite будет передано 6 параметров:

  1. void *dst0
    – выходной буфер кадра
  2. ptrdiff_t dstpitch
    — полная длина строки в байтах выходного буфера
  3. const void *src0
    — входной буфер кадра
  4. ptrdiff_t srcpitch
    — полная длина строки входного буфера
  5. uint32 w
    — ширина кадра в пикселях
  6. uint32 h
    — высота кадра в пикселях

Для упрощения кода мы проигнорируем параметры обрезки, поэтому кадр будет обрабатываться с одинаковой скоростью вне зависимости от параметра Crop в настройках. Точка в буфере хранится в формате kPixFormat_XRGB8888 и занимает 32 бита. Реализуем простейшее преобразование кадра в черно-белый. Задача оптимизации у нас не стоит, поэтому считать будем по формуле с расчетом в арифметике с плавающей запятой
GRAY = 0.299 * R + 0.587 * G + 0.114 * B

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

8)

void BlackWhiteFilter::ToBlackAndWhite(void *dst0, ptrdiff_t dstpitch, const void *src0, ptrdiff_t srcpitch, uint32 w, uint32 h) < char *dst = (char *)dst0; const char *src = (const char *)src0; for (uint32 y = 0; y> + 0.114f *((data & 0x00ff0000) >> 16); dstline[x] = gray < 128 ? 0x00000000 : 0x00ffffff; > src += srcpitch; dst += dstpitch; > > Собираем плагин, копируем файл Windows-VirtualDub-Plugin-BlackWhite.vdf в папку plugins VirtualDub и делаем его активным. В списке он будет виден под названием, которое мы задали в классе VDXFilterDefinition — Black White filter. Плагин собранный для 64 битной версии не будет видно в 32 битной версии VirtualDub, поэтому не забываем проверить активную конфигурацию проекта. Плагин без настроек довольно уныл, добавим возможность настройки и кнопку предварительного просмотра. Для этого нам бы следовало погрузиться в дебри Win32 API, но по этой теме написано достаточно книг, поэтому не будем вдаваться в детали.



По умолчанию проект собирается с зависимостями от установленной в системе VC Runtime, если планируется его использование на других компьютерах, при сборке необходимо указать параметр Multi-threaded (/MT) из меню настроек Configuration->C/C++->Code Generation->Runtime Library. Плагин увеличит свой размер в десять раз но пользователям не придется подбирать Runtime под версию Visual Studio которую использовал разработчик.



Код проекта доступен на github. Материал нацелен на людей которым нужно сделать что-то быстро а вспоминать тонкости работы с Win32 API неохота. Мне этот плагин понадобился для переноса видео на платформу с однобитным представлением цвета, а прогонять каждый раз набор кадров через XnView надоело.

Набор Фильтров VirtualDub Filter Pack

Содержит более 200 фильтров. Рассмотрим несколько:

  • 2:1 reduction — уменьшает видео в 2 раза
  • Invert — инвертирует цвета
  • Levels — регулирование уровня освещения
  • Rotate — поворот на 90, 180, 270 градусов
  • Subtitler — добавление субтитров
  • Motion blur — размывает движения
  • Logo — добавление логотипа
  • Flip horizontally, Flip vertically — поворот по горизонтали,вертикали
  • Levels — уровень освещенности
  • Colorize — приведение к одноцветному
  • Grayscale — приведение к черно-белому
  • MSU Subtitle and Logo Remover, Logoway — удаление субтитров и логотипов
  • MSU Smart Brightness and Contrast Filter — яркость и контрастность
  • MSU Denoising Filter, Temporal cleaner — удаление шума
  • MSU Smart Sharpen Filter, Unsharp Mask- увеличение резкости, четкости
  • Video DeNoise — удаление шума
  • Zoom — изменение перспективы

Захват видео

Он поддерживает DirectShow и Video для Windows для захвата. Захватить возможности включают захват в любой Ави вариант, аудио vu метров, наложения и режимы предварительного просмотра, гистограмма, выбор посевных площадей, видео-шумоподавление, автоматическая остановка настройки (на основе захвата время, размер файла, свободное место, и/или пропущенные кадры), и назначить альтернативный диск(ы) для отслеживания переполнения.

Утилита поддерживает захват DV только с контроллеров FireWire типа 2 (VfW). (Он не будет работать с типом 1). Нет пакетного захвата ДВ, фотосъемка, или DV устройства средств контроля.

Развитие

Он породил несколько форков, один из которых является заброшенным VirtualDubMod, который включает в себя такие функции, как Matroska (MKV), OGM и Dolby AC-3 поддержка, ни один из которых не присутствуют без использования сторонних плагинов. VirtualDubMod представляет собой объединение нескольких более ранних проектов/форков, в том числе: VirtualDub-MPEG2, VirtualDubOGM, VirtualDubAVS и других. Другой пример вилки Nandub, что позволило использовать смарт-контроля скорости.

Разработка остановилась в 2013 году, а форумы официального сайта закрылись в 2020 году.

Последняя вилка-VirtualDub2, разрабатывается с 2020 года. FilterMod имеет все возможности, а также встроенное кодирование/декодирование H. 264 и других форматов; Открытие и сохранение QuickTime, MP4, Matroska и др.; новое и поддержка форматов с высокой глубиной цветопередачи (например, deep).

Плюсы и минусы

  • поддержка AVI2 (OpenDML);
  • поддержка больших файлов (свыше 2 Гб);
  • работа с большим количеством видеоформатов (плюс расширение с помощью сторонних аудио и видео-кодеков);
  • большой набор фильтров (еще и расширяемый);
  • присутствуют привычные для пользователя языки (русский и украинский);
  • возможность установки сторонних дополнений;
  • некоторые операции происходят без рекомпрессии;
  • легкий и функциональный.

Этот видеоредактор среди других выделяется выбором инструментов: от работы с наложением нескольких аудиодорожек до профессионального видеомонтажа. Функционал распространяется даже на работу с изображениями. Программу можно использовать для удаления водяного знака, изменения интерпретации видео (разворот), создания анимации, изменение громкости звука DVD-фильма.


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

Читайте также: