Программное обеспечение

VirtualDub

⇣ Содержание

Меню 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" - поле настройки заголовка частоты кадров. Это первый способ изменения частоты кадров (с соответствующими последствиями).

  • No change - оставляет частоту кадров без изменений
  • Change to … frames per second - изменяет индекс частоты кадров до выставленной вами частоты
  • Change so video and audio durations match - производит подгонку частоты кадров до выравнивания продолжительности звука и видео

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

  • Process all frames - обрабатывает из исходного видео все кадры
  • Process every other frame (decimate by 2) - из исходного видео берётся только каждый второй кадр (деление частоты кадров на 2)
  • Process every other frame (decimate by 3) - из исходного видео берётся только каждый третий кадр (деление частоты кадров на 3)
  • Decimate by … - деление частоты кадров на произвольный множитель.
  • Convert to fps … - преобразует частоту кадров к заданному значению. Но, в продолжение темы скажу, что практическую пользу может принести только уменьшение частоты кадров (поводы перечислены выше)

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

  • None (progressive) - не производит никаких действий с полями
  • Reconstruct from fields - adaptive - автоматическое выкидывание одинаковых полей в соседних кадрах. Качество работы этой функции я не проверял, поэтому эффективность её работы мне не известна. Для работы с полями я предпочитаю Avisynth.
  • Reconstruct from fields - manual - ручное выставление порядка полей для работы функции InverseTelecine. На самом деле, выставляется не порядок полей, а первый кадр, с которого начинала работу функция "3:2 pulldown" (или "Telecine"). Выставив первый кадр, остальное высчитывается автоматически. Для задачи первого кадра используется опция "Offset …". Ручной метод - весьма не удачная мысль работы с функцией InverseTelecine. Дело в том, если выпадет хоть один кадр из видеоряда, то произойдёт ошибка высчета (смещение) выкидываемых полей и видео будет только испорчено.
  • Reconstruct from blurred fields - manual - если исходить из названия функции, то производится удаление полей из материала с размытыми полями. То есть, на вход подаётся достаточно поношенное видео (где кадры подвергались размытию в результате хранения на магнитных лентах или после каких-либо обработок) при удалении дублированной пары полей, кадр может получиться с подобием интерлейсной расчёски. Для удаления этого эффекта можно будет воспользоваться деинтерлейсом (что повлечёт за собой ещё большее размытие картинки) или включить этот метод обработки полей. Так же, как и предыдущий метод, его работа определяется параметрами, выставляемыми вручную ("Offset …" и "Invert polarity").
  • Offset … - выставление первого кадра для ручного режима работы функции InverseTelecine.
  • Invert polarity - инвертирует работу функции InverseTelecine. Это не приводит к преобразованию полей и относится только к математическому аппарату функции InverseTelecine. Всё дело в том, что задавая смещение функцией "Offset …", мы не знаем, в какую сторону потом пойдёт работа функции InverseTelecine (с верхнего поля или нижнего). Для того, что бы была возможность выставить все варианты работы и предназначена эта опция.

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


VirtualDub

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

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

  • 16-bit (HiColor/32K) - получает от декодера 16 битное видео. Первый кодер из серии Divx (DivX3) работал именно в этом цветовом формате. Если нет какого-то особого резона (например, использование DivX3 для декодирования), не стоит включать этот режим.
  • 24-bit(TrueColor/16M) - большинство современных кодеков работает в этом цветовом формате. Он стоит по умолчанию. Конечно, можно заставить выдавать кодеки и 16-bit режиме, но это вызовет определённые искажения.

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

  • 16-bit (HiColor/32K) - в этом формате потребуется выдавать разве что для DivX3 но его использование с VirtualDub не оправданно (для него сделан NanDub).
  • 24-bit(TrueColor/16M) - стоит по умолчанию и работает практически со всеми кодеками.
  • 32-bit(TrueColor/16M+alpha) - почему-то автор отнёс к 32 битному изображению и канал альфа (канал прозрачности), но внутри самого VirtualDub используется RGB32 (для фильтров) и я так понимаю выдаваться будет в этом же RGB32. Из кодеков, известных мне, VP6 работает с этим форматом цветности.

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


VirtualDub

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

  • "Use target data rate of … kilobytes/second" - Для того, что бы задействовать эту функцию нужно поставить галочку в заголовке и выставить битрейт, с которым вы собираетесь сжимать.
  • "Force keyframes every … frames" - здесь выставляется количество кадров, после которого будет поставлен ключевой. Функция включается в работу так же, выставлением галочки в заголовке.

Больше ничего интересного на вкладке выбора кодека нет. Перейдём на следующую функцию меню "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 будет продолжать поиск ошибок.

Следующая страница → ← Предыдущая страница
⇣ Содержание
Если Вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии
window-new
Soft
Hard
Тренды 🔥