VirtualDub

Посмотри Фотографии Байкала
VirtualDub

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

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


Введение

Virtual Dub. Предварительный обзор.

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

Использование VD для кодирования в DivX.

Существует несколько вариантов одной и той же версии программы, эти варианты узкоспециализированы и предназначены только для своих целей. Основной вариант VD работает с видеофайлами AVI, MPEG-1, есть вскрытый вариант программы для работы с ASF. Аудио понимает только в виде WAV, причем для VBR MP3 WAV нужен свой вскрытый вариант.

Минусом вскрытых версий является их большое количество. Для работы порой может понадобится несколько версий VD. Для АС3 - одна, для ASF - другая, для VBR MP3 - третья, для VKI - четвертая и т.д. Автору стоило бы давно уже объединить все эти версии под одной крышей.

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

До сих пор все основные (mp3, wma) аудио кодеки в VD глючили - рвется звук. Так что рекомендую использовать другие программы для сжатия аудио, с последующим совмещением его с видео в VD.

Для кодирования фильма в DivX нам нужен AVI файл, т.к. VD не умеет открывать VOB, но это можно обойти применением фрэймсерва, например VFAPI для DVD2AVI или AVIsynth для FlasKMPEG. Как создать фрэймсервный AVI файл рассказывалось в предыдущих статьях. Есть возможность у VD создавать и свой фрэймсервный файл, правда для его использования вам придется держать VD открытым, т.к. он является исключительно он-лайновым фрэймсервером - он создает нужный поток только "на лету".

Скажем мы хотим применить Project DivX для создания фильма с переменным битрэйтом через полный процесс с использованием Virtual Dub. Сливаем с декодированием VOB на винт, открываем его (их) в DVD2AVI, выбираем нужный фрагмент, создаем проект d2v, конвертируем его через VFAPI во фрэймсервный AVI файл, открываем этот короткий AVI в VirtualDub, накладываем нужные фильтры, создаем фрэймсервер и используем проект как оригинальный фильм в Project.

Плюсы.
Максимальное приближение к оригиналу. Оптимальное использование места на винте.
У нас есть ни разу не сжатый, а значит наиболее близкий к DVD-оригиналу, фильм для использования его в Project как оригинального. Весь процесс пойдет параллельно - наложение фильтров VD прямо на оригинальные кадры из VOB и кодирование сразу на два варианта потоков - LM и FM. Значит экономится место на винте от промежуточно-пожатого в VD варианта (LM-FM варианты Project все равно будут записаны на винт). Параллельный процесс займет немного меньше времени, чем последовательный (сначала наложение фильтров и сжатие с максимальным битрэйтом = "МБ", а затем уже использование такого фильма в качестве оригинального), за счет максимального использования возможностей процессора и отсутствие промежуточного кодирования.

Минусы.
Тяжесть процесса. Спорность ускорения процесса.
Во время параллельной работы всех этих программ (VD + PD) машину практически невозможно эксплуатировать - одновременное вытягивание кадров из VOB через фрэймсерв VFAPI плюс наложение фильтров плюс кодирование сжирает почти все ресурсы и тормозит машину довольно сильно. Ее придется оставить и уйти гулять. Причем надолго. Соответственно время кодирования увеличивается по сравнению с кодированием без фрэймсервера (просто из AVI с МБ), и при нестабильных (разогнанных) машинах теоретически больше вероятность прерывания процесса из-за глюков (проц греется в этом случае гораздо сильнее). Кроме того, процесс наложения фильтров Дубом пройдет два раза - первый раз при сжатии на два разных потока, второй раз - при сравнении разножатых AVI с оригиналом, что явно не ускорит времени создания VBR-фильма. При кодировании уже готового МБ-фильма без применения VD фрэймсерва этого не происходит - фильтры уже наложены, так что не факт, что применение Дубового фрэймсерва ускоряет процесс, это нуждается в дополнительной проверке (зависимость скорости процесса от количества фильтров).

Повторение тяжелого процесса при корректировке битрэйта.
Также если вас не удовлетворит качество одного или обоих потоков (LM FM) или качество фильтров, и вы захотите попробовать их на других установках (скажем попробовать повысить битрэйт или уменьшить sharpness), вам придется ожидать всех этих тормозов снова, чего не пришлось бы делать, если бы вы создали сразу в VD фильм на максимальном битрэйте с применением нужных фильтров. МБ (6000-100-1) практически не портит фильм, по крайней мере последующее сжатие на 1200-1800 пройдет по тем же местам и я думаю вы не заметите отличий фильма, сжатого повторно после максимального битрэйта и фильма, сжатого из оригинального через два фрэймсерва.

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

Первое - не забудьте поставить библиотеки фрэймсервера VD. Они не установлены изначально и ставить их придется отдельно - надо запустить программу AuxSetup из папки VD и выбрать там "Install handler".

Второе - VD почему-то не добавляет расширение к своему проекту. Вручную добавьте к имени файла ".vdr".

Третье - при попытке открыть клиентом фрэймсерверный проект VD вы его можете не найти в клиентских программах (скажем Project DivX), т.к. они предлагают открыть файлы с расширением .avi, а у проекта VD расширение .vdr. После открытия диалога Open клиентской программы нужно выбрать в Типе файлов "All files", после этого выбрать свой проект.

И не забывайте, что VD должен быть открыт для работы с его проектом.


Требования к компьютеру для видеомонтажа

Введение
Требования к компьютеру для видеомонтажа

Каков источник вашего видео – VHS или SVHS/Hi8?

Между SVHS и VHS источниками видео имеется очень большая разница в качестве, которая особенно важна для последующей цифровой обработки.

Вы знаете, что потеря качества при простом копировании с одной VHS кассету на другую весьма заметна. Вы не можете избежать этого при цифровой обработке, если результат будет скопирован на VHS. Если исходное видео снято S-video камерой (Hi8 или SVHS/C), то результат на обычной видеокассете будет по качеству соответствовать нулевой копии. Для оцифровки S-video сигнала следует обязательно использовать S-video соединение с картой оцифровки. В случае использования VHS камеры, можно получить заметно лучшие результаты при оцифровке ее "живого" сигнала, минуя видеокассету, но это, как правило, невозможно.

Давайте перечислять:

1. Для достаточно комфортной работы с видео вы можете использовать любой компьютер с не менее чем 128 МБ памяти и процессором быстрее 500 МГц. Я сознательно не говорю о ценах, потому что такая информация быстро устаревает. Чем больше скорость процессора – тем лучше. PIII/Celeron 933 или аналогичные AMD процессоры уже достаточно быстрые для сжатия полноразмерного видео в реальном времени современными программными компрессорами MJPEG и даже DV (см. Picvideo MJPEG codec или Mainconcept DV или MJPEG кодеки).

2. 128 МБ памяти можно считать необходимым минимумом, допускающим использование одной программы редактирования или сжатия видео. Для переключения между одновременно работающими программами памяти нужно много больше. Некоторые MPEG компрессоры могут использовать до 256 МБ оперативной памяти, многие модули спецэффектов также требуют больших объемов памяти. Кроме них, в работе с видео часто используют специализированные программы 3D титрования, редакторы изображений. Если вы хотите переключаться между этими приложениями без 10-20 секундных ожиданий перерисовки экрана, поставьте 256 или больше мегабайт памяти.

Следует сказать, что все известные мне проигрыватели видео, программы его изначальной оцифровки не требуют много памяти. Я всегда смеюсь, когда читаю предложение поставить 1 ГБ памяти, чтобы решить проблему работы программы, не использующей более 10 МБ.

3. Диски. Вам понадобится много дискового пространства. При существующих ценах на винчестеры имеет смысл выбирать UDMA модели с наименьшей ценой за ГБ. Все современные диски имеют скорость линейной записи, достаточную для работы со сжатым видео при потоках данных как минимум 10 МБ/сек. Большинство новых дисков может писать и несжатое видео (20 МБ/сек), но я не уверен, что это удобно в использовании. При выборе дисков, помимо цены, хорошо было бы узнать статистику их надежности и (очень важно!) совместимости с контроллерами UDMA, которых теперь развелось великое множество.

Приведу пример из личного опыта. В моем первоначальном обзоре я хвалил диски FUJITSU как надежные, достаточно быстрые и тихие. К сожалению, мои восторги теперь можно отнести только к уже устаревшей серии MPC. MPE, MPF и MPG диски имеют много проблем при работе с UDMA 66/100 контроллерами разных сортов. Они могут проявляться как отсутствие DMA режима и невозможность его включить, ограничение по скорости записи (при нормальной скорости чтения) на уровне 4-5 МБ/сек, прочими неприятностями. В моем домашнем и рабочем опыте все подобные проблемы не проявлялись с дисками Western Digital и Seagate. Они правильно опознавались и работали с контроллерами от CMD, Promise, HighPoint и встроенными DMA66 контроллерами VIA чипсетов для PIII процессоров.

Еще раз повторю: возможные проблемы совместимости дисков и контроллеров могут быть очень неприятными при работе с видео. В качестве защитной меры я могу даже рекомендовать использовать только 40-жильные IDE кабели, сознательно ограничив скорость работы контроллера UDMA 33 режимом. Мне, во всяком случае, это иногда помогало, а уменьшение скорости работы дисковой подсистемы не было заметно.

Сколько надо физических дисков и какой размер минимально необходим? Дисков должно быть не менее двух, один системный, другой для видео. В принципе, системный диск тоже можно использовать для хранения видео, и даже для его записи, но риск получения сбоя в самый неожиданный момент все же существует. Особенно обидно бывает, если такое выпадение происходит в конце записи на ленту готового видео длиной минут 10. Приходится все повторять сначала.

Разумным минимумом для видеодиска следует признать 40 ГБ. Во-первых, такого объема достаточно для записи двух кассет часовой продолжительности в формате DV или MJPEG. Во вторых, при этом размере уже полгода как наблюдается минимум стоимости одного ГБ хранения информации. Не думаю, что этот порог как-то изменится скоро. Скорость вращения шпинделя – дело вкуса. Я до сих пор предпочитаю 5400 – шума и тепла меньше. Цена не столь существенна, хотя диски 7200 стоят дороже. Выбирайте модели с наибольшей плотностью записи в битах на см длины трека записи. На сайтах производителей часто приводятся какие-то комбинации, получаемые умножением или делением этого параметра и плотности треков на единицу радиуса. Попытайтесь вычислить нужную вам величину самостоятельно. Дело в том, что скорости вращения и радиусы дисков всем известны, поэтому только количество битов на см длины трека имеет значение для линейной скорости записи. Что же касается времени поиска дорожки, то эта величина может быть важной при сложном редактировании, когда головки постоянно переключаются на считывание данных из многих исходных файлов. Я не думаю, что вы сразу начнете делать видео наложением 25 дорожек. Даже если это и так, то основное время при генерации видео потратится не на чтение диска, а на просчет самих эффектов наложения. Так что мне до сих пор не кажется, что уменьшение времени поиска 7200 дисков приводит только к трате лишних денег и дополнительным заботам по охлаждению. Тесты ZDNET по производительности для Adobe Premiere безусловно интересны и познавательны, но я не могу считать их главными при выборе диска.

Системный диск должен иметь достаточно большой системный раздел. Многие программы видеомонтажа занимают много места, а разного рода заготовки видео/аудио/картинок вполне разумно хранить на системном диске. Мне хватает 3 ГБ пространства для Windows 2000 операционной системы и всех программ работы с видео и изображениями. По-видимому, размер системного раздела должен быть больше, если вы еще и играете в игрушки или программируете. Размер физического диска для системных нужд – индивидуален. Я обхожусь немолодым диском в 10 ГБ, и делю его с сыном на Windows 2000 и Windows 98 части. Непременное требование к такому диску – тишина работы во всех мыслимых режимах.

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

Наконец, если вы покупаете все новое – купите два одинаковых больших диска и используйте часть системного диска для краткосрочного хранения видео. Места никогда много не бывает.

4. RAID контроллеры. Дополнительные контроллеры жестких дисков – скорее всего обязательный атрибут компьютера для видеомонтажа. Для полного укомплектования вам обязательно понадобится 3 канала UDMA – два для дисков и как минимум 1 для комбинированного DVD/CD/CDR-RW устройства. Уже такая, не самая удобная, конфигурация имеет проблемы с количеством независимых каналов IDE. Для надежной записи CD желательно не совмещать записывающее устройство с системным диском на одном кабеле. Соединение видео диска с CD устройством тоже блокирует возможность интенсивной работы с диском во время записи CD. Если же вы хотите иметь раздельные пишущие и читающие оптические диски устройства, то все каналы будут заняты. А любимый ZIP куда присоединить? Mobile Rack со старым добрым потрепанным 6 ГБ диском, который вы привыкли носить с собой? Наконец, еще один диск куда добавлять, если решите его купить? Итак, дополнительный контроллер на 4 устройства необходим. Какой именно – работающий. Он может быть встроен в материнскую плату или быть отдельной картой.

Встроенные контроллеры хороши тем, что соединения с дисками расположены удобнее. Они также внешне не занимают разъема PCI, хотя и используют один из них неявно. Не всегда, но иногда бывает трудно заставить встроенный контроллер уживаться с другими платами, использующими его же PCI разъем. Даже при наличии описания, его ясность в пункте нумерации PCI разъемов обычно до изумления плоха. Да и забыть все это легко. В результате, если плата заработала, то все оставляется как есть, даже если имеется возможность использовать другой разъем. Позже, после изменения конфигурации аппаратной или программной части системы могут возникнуть сбои. Понять, виноват ли в них возможный конфликт ресурсов бывает непросто. В системе с большим количеством плат расширения для отдельного контроллера может не найтись места, и ресурсы все равно придется аккуратно делить. Поэтому выбор типа контроллера – дело вкуса, которому, впрочем, желательно следовать с осторожностью...

RAID. Трудно сказать, нужен ли он в варианте Raid 0. С одной стороны, такое подключение увеличивает и размер, и скорость работы одного логического тома. Но, если у вас возникнет проблема хотя бы с одним из физических дисков, то вы потеряете данные на всем томе. Объема и скорости современных дисков вполне достаточно для работы с DV или MJPEG видео, а для работы с несжатыми форматами существует много труднопреодолимых ограничений на размер файла avi или вообще файла на диске. Все же я бы не советовал использовать RAID 0 из-за потенциальных проблем с надежностью хранения данных. Мне не приходилось пользоваться аппаратными RAID 0 платами. Программная реализация RAID0 в Windows 2000 работала хорошо, но и особых преимуществ я не увидел. Действительно, два диска сразу стали с некоторым запасом способными писать несжатый поток видео, но невозможность их разъединить без перезаписи информации в другое место создавала больше неудобств, чем появившаяся возможность записать целых 100 секунд YUY2 видео подряд.

5. Файловая система. В целом, я не заметил разницы в скорости работы с файловыми системами FAT, FAT32 или NTFS. Про FAT16 можно забыть, а выбор между FAT32 и NTFS неочевиден.

FAT 32 для видео файлов работает немного быстрее. Так, мой старый Seagate medallist 6.5 GB в конце тома может записывать видео с потоком до 5 МБ/сек. Обычно этой скорости достаточно для записи и воспроизведения DV потока (3.7 МБ/сек), но вот под NTFS последние 500 МБ вызывают проблемы при записи.

Этот диск уже два года живет в mobile rack и почти ежедневно перемещается в пространстве. Со временем контакты разъема коробочки с диском стали ненадежными и время от времени диск включается и опознается BIOS, но работает ненадежно. FAT32 в таких условиях просто портится, и все данные теряются насовсем. NTFS как правило выживает, и более разумно реагирует на подобные сбои. В итоге для этого диска я выбрал NTFS.

В пользу NTFS говорит и ее корректная работа при сбоях приложений, интенсивно использующих диск. Надо сказать, что программы работы с видео не отличаются стабильностью. Весьма часто приложение падает, совершив чего-нибудь нелегальное. В системе, перегруженной мультимедийными железками, даже Windows 2000 может умереть из-за неотработанных драйверов устройств. FAT 32, как правило, оставляет при этом потерянные кластеры. Если учесть объем видеофайлов, то количество проблем на диске может быть изрядным. При старте системы инициируется проверка диска, которая может продолжаться довольно долго. В NTFS такого не может быть.

Поэтому выбор Windows 2000 и NTFS для системного раздела являются предпочтительными. Небольшие файлы в большом количестве также надежнее хранить на NTFS разделах.

С другой стороны, конфигурирование и устранение сбоев операционной системы на разделе NTFS может оказаться невозможным или трудным из-за того, что доступ к NTFS можно получить только присоединив диск к другому компьютеру с Windows 2000. Я не считаю способы доступа к NTFS тому из DOS применимыми, потому что их, как правило, под рукой не оказывается, да и длинные имена файлов не позволяют сделать многого.

Я все же конвертировал системный том в NTFS и не жалею об этом. FAT 32 остается на моем 40 ГБ видео диске. Любопытно, что Windows 2000 не умеет сама делать тома более 32 ГБ с файловой системой FAT32. Диагностика ошибки в Disk Manager непонятная, поэтому предупреждаю об этом на всякий случай.

6. Операционная система (ОС). Как уже понятно из предыдущего пункта, желательный вариант ОС – Windows 2000. Кроме поддержки NTFS и существенно лучшей защищенности от плодов работы разработчиков мультимедийных приложений ;), сейчас уже можно говорить о стабилизации ее поддержки всеми производителями дополнительных плат. Таким образом мы уже не ограничены в функциональных возможностях или скорости, и имеем более устойчивую к программным ошибкам среду для работы. Нелишней будет и поддержка двухпроцессорных конфигураций.

Windows NT следует признать устаревшей из-за отсутствия нормальной поддержки DMA режимов доступа к дискам и новых аппаратных средств.

Windows 9x или ME вполне может быть правильным выбором, но ее защищенность от ошибок в коде программ оставляет желать лучшего. Правда, алгоритмы работы с памятью, дисковым КЭШем и файлом подкачки у нее лучше приспособлены для видео. Во всяком случае, их можно самостоятельно настроить так, чтобы система не мешала работе с видео выполнением ненужных сервисных задач.

Некоторое время назад я использовал 9х и 2000 одновременно и разные вещи делал на разных системах. Но уже примерно год я не использую Win 9x совсем. Главной причиной явилось не мое увлечение двухпроцессорным вариантом компьютера, а трудности с конфигурированием множества карт в моем компьютере. Опытным путем выяснилось, что а) установка флажка PNP OS installed не решает проблемы работоспособности всех установленных плат; б) при ручном распределении ресурсов не удается распределить PCI IRQ для win2000 и win 9x одинаково и так, чтобы все работало; в) если это и удается, то обновление bios или изменение этой конфигурации все равно может все поломать на одной из систем.

В итоге сейчас моя Win 9x о-о-чень долго пытается загрузиться, и работает нормально только с аудио и видеокартами и модемом. Пробовать другие устройства лучше не стоит. Я даже почти уговорил сына перейти на использование только Win 2000 ;).

Итак, будьте осторожны при конфигурировании двух операционных систем.

7. Системная плата. Каюсь, но я все еще использую Intel BX/MX для работы с мультимедийными устройствами. Не могу утверждать, что только с ними не будет проблем. Например, моя ASUS CUBX плата так и не смогла включить DMA на DVD ROM или на CD/R-RW, если они подключаются как primary slave. Не получилось у меня и с увеличением RAM до 512 МБ. В некоторых разъемах DIMM разные модули PC133 размером в 128 и 256 M вообще не опознаются, а в других работают со сбоями даже на 100 МГц. Обновления Bios давно прекратились.

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

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

Я не пробовал более новые Intel или VIA чипсеты на совместимость с моим набором железа:

AGP ATI rage 128 fury pro;
Realmagic Hollywood+ MPEG decoder;
Canopus DV Raptor DV video editing card
PCI network card (3Com EtherLink XL 10/100 PCI NIC (3C905-TX);
Sound blaster 128 PCI;
USR Sportster 33.6 modem ISA.
На CUBX все это работает, но разъем PCI, разделяемый с CMD DMA66 контроллером, и первый PCI разъем заполнить не удается.

У меня нет претензий к программной (без захвата) работе с видео на двухпроцессорной PIII системной плате от MSI на VIA чипсете. Ее дополнительный дисковый контроллер от Promise тоже корректно работает с не-Fujitsu дисками. Впрочем, нормально диски и CD устройства стали работать после примерно пятого обновления bios, что наводит на грустные мысли... Примерно столько же раз обновлялись и win2000 драйверы от VIA. Итого, потребовался почти год, чтобы стало возможным легко сконфигурировать дисковые системы для работы с видео. Изучение конференции пользователей Canopus DV Raptor показало, что именно эту плату MSI 6321 хвалят за беспроблемность работы с видео.

Компьютер на Athlon процессоре не попадал мне под руку.

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

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

Большая их часть не имеет оснований, но следует внимательно относиться к ответам представителей разработчиков о проблемах с некоторыми моделями или чипсетами/драйверами под них.

8. Выбор процессора. В целом этот выбор определяется количеством денег, которые вы готовы потратить. На ваше решение может повлиять наличие у вас элементов предыдущей системы, с которыми не хочется расставаться. В моем случае, например, это PC133 SDRAM память и ISA модем. И то и другое сейчас работает хорошо, а вот будет ли PCI модем переваривать мою реликтовую 201- АТС и соответствующие провода?

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

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

Можно предположить, что на способность компьютера показывать видео на экране монитора тип системной платы не должен влиять. Все современные платы способны показывать более 60 кадров в секунду в играх при разрешении 800х600. Отображение картинки в играх, как и в видео, производится в режиме overlay YUV, и большинство операций по преобразованию в RGB и масштабированию кадра делаются аппаратурой видеокарты. Для видео необходима способность шины AGP передавать картинку 720х576х16 бит = 829440 байт. Максимальная частота кадров составляет 50 Гц (для NTSC видео поток данных будет точно таким же за счет меньшего размера кадра при максимум 60 Гц). Итого, аппаратура компьютера должна быть способной передать в видеопамять максимум 41.5 МБ/сек, что вполне вписывается даже в возможности PCI шины. В реальности, для PAL DV или MPEG видео в видеокарту достаточно передавать 12 бит на каждый пиксел, что дает минимальную необходимую пропускную способность шины в 31.5 МБ/сек. В этих расчетах принималась во внимание возможность изготавливать видео в варианте с 50 кадрами в секунду для исключения искажений от чересстрочной развертки видео. Для сохранения информации о движении можно аппаратно реализовать в видеокарте показ полей видео в размере полного кадра, но с частотой 50 Гц. Так уже делается в ATI DVD player (Cinemaster), хотя и неидеально. При реализации такого алгоритма в большинстве видеокарт требования к скорости шины уменьшаются вдвое.

Вывод таков – шины данных и подсистема памяти всех современных системных плат не могут быть перегружены при проигрывании видео. Конечно, можно провести соревнование по способности показывать видео с частотой кадров 155.678 Гц и вычислить абсолютного лидера, оторвавшегося от конкурентов на целый процент, но смысла в таких опытах будет немного. Наличие у видеокарты аппаратной поддержки IDCT (inverse discrete cosine transform) и вовсе делает проигрывание видео простой задачей для всех вариантов системных плат и типов памяти.

Другое дело - кодирование/декодирование сжатого видео. Во-первых, некоторые кодеки явно оптимизируются под мультимедийные расширения команд процессоров. Наиболее охотно это делается для процессоров Intel, поэтому минимальный вариант для них – Coppermine Celeron. Более ранние модели PII не поддерживаются некоторыми кодировщиками, например Cinemacraft MPEG Encoder. Для процессоров AMD оптимизации, как правило, тоже есть, но встречаются и проблемы, когда код на них не работает. Например, Cinemacraft MPEG encoder не может сжимать аудио на процессорах AMD. Впрочем, он его так некачественно сжимает, что невелика потеря... Итог – выбирайте SSE enabled Intel CPU или Duron/Athlon. P4 позиционируется как процессор для обработки потоковых данных, но пока я не видел преимуществ его использования именно при сжатии видео, что и является в некотором смысле потоковыми вычислениями. Дороговизна решения и (пока) сомнительная степень отработки bios плат для P4 не делают его для привлекательным для работы с видео.

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

Другим интересным вариантом кодека является DIVX 4.0 MPEG 4, наконец-то отлично оптимизированный и существенно лучший по качеству, чем предыдущие div-всякие незаконнорожденные дети MPEG4 v3 кодека от Microsoft. Я охотно верю, что этот кодек был сделан с нуля, потому что его поведение заметно отличается от "оптимизаций" продукта Microsoft.

Скорость подсистемы памяти заметно влияет на быстроту выполнения типичных для видео задач. Ранние решения типа Xing MPEG encoder, LSX encoder version 1, 2, 2.5, как мне помнится, не реагировали заметно даже на отключение кэша второго уровня. Вообще говоря, это могло бы означать относительно слабую загрузку основной шины памяти при кодировании MPEG этими программами. Если это не так, то должна бы наблюдаться сильная зависимость скорости кодирования от скорости подсистемы основной памяти, чего не было заметно в те времена, когда процессоры были большие и не мешали менять коэффициент умножения ;). Времена, однако, меняются пропорционально зафиксированным в железе коэффициентам. Мои опыты по кодированию с помощью TMPEG encoder, Cinemacraft SP encoder, рекомпресии из DV в DV и в DivX 4.0x форматы на PIII процессорах с коэффициентами умножения от 5 до 8 показали, что число процессорных тактов, расходуемое на кодирование тестового фрагмента, увеличивается с ростом коэффициента умножения частоты FSB. Разница в производительности между множителем 5 (mobile PIII 600 c включенным Speed Step) и 8 (PIII 800) достигает 20%. Это означает, что повышение скорости ядра на 60% за счет увеличения множителя увеличивает скорость вычислений в видео только на 2/3 от этой величины. Скорость работы самой подсистемы памяти тоже влияет на время кодирования видео. Так, изменение параметров работы памяти latency с 3 на 2 увеличило скорость кодирования на 12%. В системе с VIA KX133a чипсетом помогал и перевод частоты шины памяти на +33 МГц по отношению к частоте FSB. Впрочем, выигрыш был не столь велик. Например, для PIII 800 c множителем 8 наиболее производительным оказался вариант включения 124х8 при установках работы памяти в turbo и CAS delay=2. Если бы модули памяти работали стабильно в режиме turbo на частоте 147 МГц, то можно было бы ожидать дополнительного прироста производительности на 5%. Вариант же 124х8 & 147 МГц на модулях памяти в режиме normal, Cas=3 оказался не менее стабильным, но чуть медленнее.

Итог: выбирайте процессор с максимальной частотой внешней шины и старайтесь купить модули памяти, работающие с минимальными значениями CAS delay на возможно более высокой частоте. Реальный выбор для PIII систем невелик – только 133 МГц варианты.


Захват видео.

VirtualDub запущен, переходим в режим захвата видео.

По умолчанию файл в который будет производиться захват расположен на диске C: и называется Capture.avi, при необходимости это можно изменить.

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

Я выбираю "Видеотюнер", тут же можно настроить яркость/контрастность/насыщенность/... , для этого необходимо выбрать закладку "параметры устройства". Если у вас эти параметры не доступны для регулировок - в этом виноват WDM драйвер, попробуйте поставить другой (я предпочитаю драйвер от Eduardo Jose Tagle).

Выбираем формат, в который будем производить захват.

При захвате под Windows2000/XP, используя WDM драйвер - максимальное разрешение, с которым можно захватить видео программой написанной под VideoForWindows (а VirtualDub именно такой и является), равно 352x288. Правда есть небольшое исключение, о котором я узнал совсем недавно : если использовать WDM драйвер от Eduardo Jose Tagle, то даже VideoForWindows программами можно захватить видео с разрешением вплоть до 720x576. Как такое возможно - не знаю, но факт остается фактом. :-)
И так выбираем разрешением и глубину цвета. Глубину цвета, как уже говорилось, лучше выбирать YUY2.

Выбираем формат звука и количество кадров в секунду.

Чаще всего следует выбирать следующим образом, см. ниже.

По умолчанию, звук записывается без сжатия. На всякий случай можно зайти и убедиться, что все так и есть.

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

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

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

И ставим пометку, против "Lock video stream to audio".

При желании можно подрезать неровные края. Для этого необходимо поставить галочку против "Enable" и зайти в "Set bounds ...", что бы выставить размеры обрезаемых полей.

Выставляя поля можно сразу видеть результат - это очень удобно.

Если позволяет производительность компьютера и есть желание можно наложить фильтры.

Теперь все готово и можно переходить непосредственно к захвату видео :
Кнопка F6 - начать захват.
Esc - прервать захват.
В ходе захвата можно видеть всю необходимую статистику.


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

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

Для звука все аналогично.
Выбрав "Full processing mode", убедитесь что, верно, выставлен и настроен аудио кодек.

Когда все настроено - сохраняем AVI.

Еще несколько моментов.

Можно сохранить видео совсем без звука. Для этого, соответственно, необходимо выбрать :

Можно и на оборот, сохранить только звук (в WAV файл). Это может понадобиться, например, для обработки его в более продвинутом аудио редакторе. Мне приходилось вытаскивать, таким образом, звук, что бы обработает его фильтрами в CoolEdit.
Для этого, не требуется делать каких то специфических настроек. Просто открываем AVI файл в VirtualDub и сразу :

Что бы присоединить звук обратно к видео, делаем так : AVI файл должен быть уже открыт в VirtualDub, выбираем файл со звуком :

Теперь, если неободимо, просто сохранить все как есть, без всякой обработки - выбираем для видео и аудио потоков "Direct stream copy" и сохраняем AVI.


Обработка видео : вырезание ненужных фрагментов.

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

Открываем файл в VirtualDub.

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

Реклама найдена, теперь необходимо остановиться на кадре, с которого она начинается. Для этого удобно пользоваться клавишами со стрелками на клавиатуре "<" и ">" - преход на предыдущий/следующий кадр. Тоже самое можно делать, нажимая кнопки на экране.

И так кадр с которого начинается реклама найден, нажимаем на клавиатуре кнопку "Home", таким образом мы пометили начало удаляемого фрагмента. Тем же образом ищем конец рекламы, находим последний кадр рекламы - нажимаем "End". Фрагмент выделен, что бы его удалить нажимаем "Delete". Все, фрагмент удален !
Тоже самое можно делать нажимая кнопки на экране.

Что бы изменения вступили в силу необходимо сохранить AVI файл. Различные способы сохранения мы рассмотрим дальше.


Обработка видео : обработка изображения фильтрами.

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

VirtualDub запущен и AVI файл, требующий обработки открыт. Переходим к выбору фильтров.

В открывшемся окне сначала ничего нет, для добавления фильтра, нажимаем кнопку "Add ...".

Изначально программа VirtualDub уже содержит в себе некоторое количество фильтров, они встроены и в списке значатся как "Internal". Но встроенных фильтров часто бывает недостаточно. Так, например для того, что бы убрать "гребенку" лучше пользоваться внешним фильтром. Внешние фильтры скачиваются из интернета дополнительно.
Непосредственно сам фильтр (внешний) представляет собой файл с расширением .vdf , что бы подключить такой фильтр к VirtualDub необходимо просто поместить его в каталог : "каталог_где_установлен_VirtualDub\Plugins".

Выбрав один из фильтров, нажимаем "ОК".

Таким образом, мы выбираем необходимое количество фильтров, обязательно производим их настройку. Настроить фильтр можно, нажав кнопку "Configure ...".
В каком порядке расположены фильтры в этом списке, в том порядке они и будут накладываться на изображение - это необходимо учитывать. При необходимости можно двигать фильтры вверх или вниз - кнопки соответственно "Move Up" и Move Down".

Выбрав и настроив необходимые фильтры - нажимаем "ОК" и возвращаемся к нашему AVI файлу. Теперь мы можем видеть полученный результат.

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

Теперь, что бы все эти фильтры окончательно наложить на исходный AVI файл его необходимо сохранить. Но предварительно обязательно убедиться, что для видео выбран "Full processing mode".

Собственно сохранение.

При оцифровке видеофильмов с кассет, особенно с VHS и VIDEO8, получившееся видео имеет по периметру кадра много "мусора", края кадра не имеют резких границ.Если видео предназначено для просмотра на компьютере,то этот "мусор" нужно отрезать.Открываем в VIRTUAL DUB редактируемый файл, в опции VIDEO ставим галочку FULL PROCESSING MODE заходим в подменю FILTERS нажимаем

ADD, и выбираем в списке фильтров NULL TRANSFORM жмем OK, и в этом же окне нажимаем клавишу CROPPING , появляется кадр и регулировки "обрезания".После установки необходимых значений жмем ОК. В списке окна FILTERS появляется название фильтра и новый размер кадра.Обрезать кадр можно до задуманного размера или растянуть его до исходного значения применив фильтр RESIZE .Его выбираем в том же списке ,устанавливаем размер кадра, жмем ОК. Сохраняем готовый фильм.

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

Обрезаем немного по краям картинку NULL TRANSFORM - CROPPING.И устанавливаем
размер кадра используя RESIZE.Далее можно применить к видео фильтр размытия BLUR или выдавливания EMBOSS,и сохранить полученное видео.

Особо стоит отметить,что выходной кадр должен быть кратен 32 по горизонтали и 16 по
вертикали.Удобно использовать для вычисления размера кадра калькулятор битрейта, к тому же он необходим по своему прямому назначению - рассчетам потока видео .


Обработка видео : описание основных фильтров
  • 2:1 reduction (high quality) - Уменьшает размер изображение по горизонтали и по вертикали ровно в 2 раза.

  • 3x3 average - Обрабатывает изображение, путем заменены каждого пикселя картинки на некоторый "средний пиксель", который получен после анализа соседних пикселей. :-)

  • Blur и Blur more - В разной степени размывают изображение.

  • Box blur - Настраиваемый фильтр размытия изображение. В настройках есть кнопка "Show preview", нажав которую можно сразу видеть результат работы фильтра.

  • Brightness/Contrast - Позволяет изменить яркость и контрастность изображения.

  • Deinterlace - Встроенный фильтр для устранения "гребенки". Честно говоря результат его работы мне не понравился, лучше пользоваться внешним фильтром "Smart deinterlace".

  • Emboss - В Adobe Photoshop этот эффект называется "рельеф". Трудно на словах объяснить, что он делает, проще показать. :-)

  • Flip horizontally - Перевернуть изображение по горизонтали.

  • Flip vertically - Перевернуть изображение по вертикали.

  • Grayscale - Делает изображение черно-белым.

  • Invert - Инвертирует цвета.

  • Levels - Фильтр позволяет корректировать уровень освещенности изображения. Предлагается, передвижением ползунков, выставить значение для самых темных/светлых пикселей, а так же некое среднее значение.
    Нажмите кнопку "Show Preview" что бы сразу следить за результатом работы фильтра. Так же, периодически, нажимайте кнопку "Sample frame", чтобы видеть гистограмму, по ней проще сориентироваться и проще выставить ползунки.

  • Motion blur - Размывает движения. Переместившиеся объекты исчезают несразу.

  • Null transform - Дословно : нулевая трансформация, т.е. сам по себе этот фильтр ничего не делает. Обычно он выбирается для подрезания неровных краев.

  • Resize - Позволяет изменить размер картинки. Задайте новые размеры ширины и высоты. В списке "Filter mode" я обычно выбираю "Precise bicubic (A=-1.0)", можете поэкспериментировать и выбрать что-то на свой вкус. Нажмите кнопку "Show Preview" что бы следить за происходящим.

  • Rotate - Поворачивает картинку на 90, 180 или 270 градусов.

  • Rotate2 - Этот фильтр представляет более широкие возможности поворота картинки, здесь угол поворота, вы вписываете сами.

  • Sharpen - Увеличивает контраст между сливающимися элементами в изображении, если попроще : увеличивает резкость изображения.

  • Smoother - Размывает картинку. Фильтр позволяет задать степень размытия.

  • Temporal smoother - Размывает картинку по времени. :-) Фильтр чем-то похож на "Motion blur", но эффект несколько другой.

  • Threshold - Преобразует изображение в черно-белое (оттенки серого отсутствуют полностью).


Соединяем несколько AVI файлов в один.
Соединять воедино несколько AVI файлов не такое простое дело как может показаться по началу. Дело в том, что чаще всего отдельные фрагменты, имеют разный FPS, и именно по этой причине VirtualDub отказывается их соединять.

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

Самый простой и верный способ избежать таких проблем - это захватывать видео не кусками, а все сразу. Тем более, то, как создавать большие по продолжительности и по объему AVI файлы вы уже знаете, и знаете, что особых проблем при этом нет (если вы еще не в курсе, обратитесь к статье "захват видео").

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

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

1. Идеальный вариант - AVI файлы имеют одинаковый FPS.

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

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

Выбираем файл. Открытый, таким образом, файл будет присоединен в конец предыдущего.

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

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

Сохранить тоже можно по разному, можно с пережатием и без пережатия видео и аудио потоков.

В общем, не буду повторяться - вы все это знаете из предыдущих описаний...

2. Не идеальный вариант - AVI файлы имеют различный FPS.

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

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

Что бы узнать какой FPS имеет отдельно взятый файл необходимо открыть его в VirtualDub.

Затем в меню "Video" выбрать:

В открывшемся окне видим FPS текущего файла:

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

Переходим к обработке, открываем в VirtualDub первый фрагмент и переходим к уже знакомому диалоговому окну:

Выбираем пункт "Change to...". Вписываем требуемое значение, нажимаем ОК.

Теперь что бы сохранить изменения, сохраняем AVI файл.

При этом, выбирая для видео и аудио потоков "Direct stream copy".

Но это еще не все! Дело в том, что, изменив FPS для AVI файла, мы неизбежно получили рассинхронизацию видео и звука, и чем больше вы изменили при этом FPS, тем больше рассинхронизация. Именно по этому, лучше приводить FPS файлов к среднему значению, в этом случае уход будет меньше.

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

Что бы синхронизировать видео и звук зайдите:

Здесь изменяя значение "Delay audio track by" вы можете немного сжать или наоборот растянуть аудио поток. Положительное значение используйте, если звук опережает видео. Отрицательные значения используйте, если наоборот звук отстает от видео.

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

Далее что бы сохранить изменения, необходимо так же сохранить AVI файл, при этом потоки можно не пережимать, т.е. снова выбираем для видео и аудио потоков "Direct stream copy". Не торопитесь закрывать VirtualDub и открытый AVI файл в нем...

После того как файл сохранен, откройте его любым видео проигрывателем и убедитесь еще раз, что звук соответствует изображению. Я сталкивался с тем, что даже всех этих манипуляций была рассинхронизация, и приходилось еще корректировать значение "Delay audio track by". А если вы еще не закрыли данный файл, в VirtualDub, это будет сделать проще.

...Просто подкорректируйте еще значение "Delay audio track by" и сохраните снова.

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

Ну а после того как все готово, файлы можно соединять так, как это делается при идеальном варианте, пункт 1.

Ну вот вроде и все!

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


Маленькие хитрости

Если у вас возникает проблема сдвига аудиопотока относительно видео (аудиоряд отстает или опережает видео), ее можно решить в разделе "interleave". Короткая клавиша - Ctrl-I. Audio skew correction задает сдвиг аудиоптока относительно видео в миллисекундах. Задержка аудиопотока может быть как положительной (delay = задержка), так и отрицательной (если аудио отстает от видео).

Если вам не помогает сдвиг аудиоряда - вы задаете задержку, аудио в начале фильма синхронизируется, но потом опять убегает впред, значит вы имеете дело не (или не только) со сдвигом аудио, но и с несовпадением длины аудио и видео рядов. Тогда ваш шанс - в изменении фрэймрэйта с подгонкой потоков. Ctrl-R. Change so video and audio duration match. Если вы отмечаете этот пункт и в окошечке чуть выше встает цифра, отличающаяся от значения в первой строке (current:), то вы были правы и действительно в вашем фильме присутствует разница во времени воспроизведения между аудио и видеоптоками. Теперь надо выставить в меню Video/Direct stream copy и Audio/Direct stream copy и снова записать фильм - File/Save AVI. Этот процесс не займет слишком много времени, так как не производится никакой перекодировки, а фильм просто копируется из файла в файл, возможно с изменением интерливинга (если вы его задавали).