В прошлом году наш журнал уже писал о вводе и редактировании видеоинформации с помощью персонального компьютера [1]. Рассматривались все стадии этого процесса — от ввода поступающего извне аналогового видеосигнала до создания видеофильма в популярном сейчас формате MPEG-4 (DivX). Было описано применение видеоэффектов, включение титров и обработка звукового сопровождения. Такая технология, думаю, больше подходит для энтузиаста, получающего удовольствие от самого процесса и готового освоить семь программных продуктов с целью достижения максимальной выразительности своего творения. Однако для большинства пользователей ПК достаточно было бы ограничиться записью любимого фильма из эфира (избавив его от надоедливой рекламы) да подготовкой компакт-диска с семейной хроникой либо «отчетом» о проведенном отпуске, скомпоновав нужные фрагменты с видеокассеты VHS или Video 8.
К счастью, закон Мура пока еще действует, и то, что раньше было под силу только профессионалам, вооруженным дорогостоящей техникой, становится доступным и любителям. Домашнее видео постепенно перекочевывает на компьютер. И если мы не ставим перед собой задачи создать неповторимый шедевр, а готовы ограничиться оцифровкой видео с последующим простейшим монтажом, который сводится в основном к вырезанию ненужных фрагментов, будь то реклама или неудачные кадры хроники, то для работы хватит одной программы, притом свободно распространяемой. Но с поправкой на закон Мура придется сформулировать несколько более жесткие требования к компьютерному «железу». Не пугайтесь! Речь пойдет не о 3-ГГц Pentium 4. В качестве минимально допустимого я собираюсь объявить процессор, уже исчезнувший из прайс-листов как морально устаревший, но еще исправно несущий службу в наших ПК.
Выбор аппаратной конфигурации
В своей работе я использовал компьютер следующей конфигурации:
- процессор Intel Celeron-566 (Coppermine), "разогнанный" до 664 МГц (шина FSB с частотой 78 МГц);
- системная плата MSI MS-6163 Pro (набор микросхем Intel 440BX);
- видеоплата MSI AGPhantom (на базе кристалла Riva TNT2) с 32-Мбайт видеопамятью;
- плата ввода видео/TV-тюнер Pixel View PV-BT878P+;
- звуковая плата Creative SB Live!;
- оперативная память 256 Мбайт PC-133;
- жесткий диск UDMA-100 IBM IC35L040AVER07-0 40 Гбайт;
- CD-ROM 48X IDE;
- дисковод Iomega Zip IDE 100 Мбайт;
- дисковод для гибких дисков;
- сетевая плата.
Особенности аппаратной конфигурации, на которые следует обратить внимание, я опишу чуть ниже, а пока скажу о формате изображения.
В статье Г. Г. Маркарова [1] рекомендуется разрешение 384x288 пикселов. Хочу подчеркнуть, что альтернатив, пожалуй, нет (вариант 192x144 мы не рассматриваем как неинтересный). Дело в том, что телевизионный кадр содержит 625 строк, но часть их приходится на бордюр, остается только 576, которые и захватываются соответствующим «железом». Беря каждую вторую или четвертую строку, получаем 288 или 144 строки растра соответственно. Все прочие размеры — результат интерполяции1, снижающей качество картинки и требующей дополнительных вычислительных затрат. С одной стороны, «переварить» 576 строк современным процессорам еще не под силу (хотя этот момент уже не за горами), поэтому такое разрешение требует специализированной платы ввода видео ценой от нескольких сот долларов. С другой стороны, при воспроизведении видео на компьютере применяется прогрессивная развертка, тогда как в телевидении — чересстрочная, что приводит к сдвигу полей кадра во времени. При этом на вертикальных границах перемещающихся фрагментов изображения наблюдаются помехи в виде зазубренного края. Существуют, конечно, способы борьбы с ними, но в общем случае такая обработка изображения — типичный пример задачи для искусственного интеллекта (распознавание образов), а ввиду того, что последний в полном объеме так и не создан, результат не всегда получается удовлетворительным. Другими словами, изображение с 576 строками зачастую выглядит хуже, чем с 288. Таким образом, у любителя попросту нет источника сигнала, который мог бы обеспечить качество выше, чем в формате 384x288.
С размером по горизонтали ситуация менее определенная. Дело в том, что если аналоговый сигнал уже разделен на строки и количество их менять нецелесообразно, то вдоль строки телевизионный сигнал меняется непрерывно, а потому может быть оцифрован с любым разрешением. Поэтому нет ничего удивительного в том, что нередко можно встретить видеофрагменты «шириной» 320 или 352 пиксела. Вообще-то считается, что качество изображения, обеспечиваемое видеомагнитофоном VHS, примерно соответствует цифровому разрешению 320x240 пикселов. Коль скоро наиболее удобный размер по вертикали на 20% больше этой цифры, то вполне логично в той же пропорции увеличить и горизонтальное разрешение, что и дает число 384. Итак, будем считать, что оптимальным для нас является качество «на 20% выше, чем у видеомагнитофона».
Упомянем еще две альтернативы. Форматы от 768x576 до 640x480 пикселов, используемые в фильмах на DVD, могли бы быть полезны при записи изображения из эфира телевидения высокой четкости (если бы такое в нашей стране имелось), а также в качестве профессиональных при подготовке видеоматериалов для телевизионного вещания (но, естественно, при наличии профессиональных же источников сигнала). Другой вариант — цифровая обработка видеоряда в кино. Здесь на каждый кадр требуется уже несколько миллионов пикселов, так что стоимость подобной аппаратуры лежит за пределами возможностей не только рядового энтузиаста, но и многих киностудий.
Однако пора спуститься с небес на землю и вернуться к обсуждению аппаратной конфигурации, необходимой для оцифровки видеоизображения в любительских условиях.
Эту статью не стоило бы писать после публикации Г. Г. Маркарова [1], если бы не один принципиальный момент в ней, который хотелось бы уточнить: современные процессоры позволяют сжимать видео в реальном времени сразу в формате MPEG-4. Таким образом, отпадает необходимость использовать временный формат MPEG-1, требующий меньших вычислительных ресурсов, но много дискового пространства, а вся технология работы с видеоматериалом существенно упрощается.
Признаком того, что процессор не справляется с нагрузкой, служит пропуск кадров. В описанной выше конфигурации количество пропущенных кадров — один-два на тысячу при средней загрузке процессора 20—40%, в то время как при замене его на Celeron-533 (Mendocino) будет пропущено более ста кадров на тысячу при 100%-ной загрузке. Границу приемлемой конфигурации здесь провести достаточно легко — для процессоров Intel она проходит по отметке тактовой частоты 533 МГц. Дело, правда, не в самой тактовой частоте, а в дополнительном наборе инструкций SSE, используемом в процессорах на ядре Coppermine (Pentium III). С процессорами AMD я опытов не проводил, но думаю, что благодаря наличию инструкций 3DNow! они начиная с Athlon/Duron также пригодны для записи в формате MPEG-4.
Объем несжатого изображения размером 384x288 пикселов составляет примерно 330 Кбайт, а еще нужно немного места для сжатого, временных данных и программы, поэтому было бы весьма желательным наличие 512 Кбайт кэш-памяти. К сожалению, даже среди современных процессоров таким объемом обладают только находящиеся вблизи верхней границы ценового диапазона. А на наших столах, как правило, стоит еще менее мощная техника возрастом 1—3 года. В то же время возможно, что благодаря кэш-памяти с подобной задачей могут справиться и более медленные процессоры — Pentium III (Katmai) с частотой 450—500 МГц. Таким образом, определяющим является наличие расширения набора команд для векторной обработки вещественных чисел: SSE у Intel и 3DNow! у AMD.
Возвращаясь к описанной в начале статьи конфигурации, отмечу, что из-за использования устаревшего набора микросхем i440BX, который не имеет возможности асинхронной работы ОЗУ и шины FSB (память PC-133 функционирует на частоте 78 МГц), и небольшого объема кэш-памяти процессора Celeron (128 Кбайт) производительность подсистемы памяти оставляет желать лучшего. Кроме того, у жесткого диска с интерфейсом UDMA-100 скорость обмена данными изменяется от 39 Мбайт/с на внешних дорожках до 18 Мбайт/с на внутренних. Но из-за того, что набор микросхем i440BX не допускает работу UDMA со скоростью выше 33 Мбайт/с, реальное ее значение не превышает 29 Мбайт/с. Однако несмотря на эти недостатки описываемая конфигурация вполне справляется с оцифровкой видео в реальном времени.
Коснемся остальных элементов аппаратной части. Объем памяти не является критичной величиной, просто его должно хватать. Само видеоизображение не занимает много места, а вот увеличение количества буферов, рекомендуемое для снижения вероятности пропуска кадров, должно происходить сообразно имеющейся в наличии памяти.
Выбор видеоплаты не ограничивается какими-либо жесткими условиями, главное, чтобы она допускала работу с имеющейся платой ввода видео. Подавляющее большинство плат видеоввода сегодня выпускается на одном и том же кристалле Brooktree Bt878 [2], поэтому различие между ними невелико и обусловлено в основном поставляемым в комплекте ПО, пользоваться которым для записи я все равно не рекомендую. Большая часть его работает либо медленно, либо неустойчиво. Лучше взять универсальную, но хорошо отлаженную программу.
Современные жесткие диски IDE в режиме UDMA обеспечивают скорость обмена данными порядка 20—40 Мбайт/с [3], этого вполне достаточно, и в применении интерфейса SCSI нет необходимости. Следует только помнить, что при определении скорости диска многие утилиты, в том числе и написанные весьма уважаемыми компаниями, показывают результаты, далекие от реальности. Поэтому надежнее ориентироваться на заявленное производителем значение, разделив его для верности пополам (скорость зависит от номера дорожки, а производитель, как правило, указывает максимальную) и убедившись, что ОС поддерживает режим UDMA2.
Оцифровка звука осуществляется звуковой платой. К сожалению, многие их производители ориентируются на использование звука только в играх, из-за чего АЦП работает намного хуже, чем ЦАП. Такой дефект встречается даже у достаточно дорогих плат [4], поэтому следует либо проверять качество записываемого звука, в частности реакцию на перегрузку, либо просто ориентироваться на имя компании. Например, изделия Creative Labs, насколько мне известно, обеспечивают приемлемое качество записи.
Запись видео
С аппаратной конфигурацией мы определились, перейдем теперь непосредственно к процессу записи. Самым неприятным дефектом здесь является пропуск кадров, приводящий к «подергиванию» изображения. При этом даже 20 кадров в секунду (пропущено 5 кадров из 25) на глаз воспринимается почти так же, как и пять, — и в том и в другом случае изображение «дергается» пять раз в секунду. Поэтому основное внимание следует уделять именно предотвращению пропуска кадров. А кадры могут быть пропущены в двух случаях: при недостатке производительности компьютера и при слишком низкой скорости потока (bitrate) (т. е. высокой степени сжатия).
Рис. 1 |
Рис. 2 |
Рис. 3 |
Рис. 4 |
Рис. 5 |
Рис. 6 |
Для работы на всех этапах создания видеофайла я рекомендую пользоваться свободно распространяемой программой VirtualDub www.virtualdub.org (рис. 1). Сначала в настройках Options?Preferences?CPU необходимо установить переключатель Force optimization и пометить флажками все, что допускает процессор (рис. 2). Для Intel Pentium III (Celeron Coppermine) это FPU, MMX, Integer SSE и SSE. Для Pentium 4 следует добавить SSE2, а для AMD вместо всех вариантов SSE — 3DNow! и 3DNow! 2 (для Athlon XP можно использовать SSE). Для записи нужно перейти в режим ввода видео: File?Capture AVI. Далее выбрать команду Video? Compression и установить DivX MPEG-4 (Low-Motion) (рис. 3). Можно оставить заданную по умолчанию конфигурацию, в частности Data Rate порядка 900 кбит/с. Программа допускает выбор из двух вариантов ввода видео, и параметры для каждого из них настраиваются независимо. Звук (Audio?Compression) лучше оставить несжатым (PCM), так как сжатие требует дополнительных вычислительных ресурсов и ведет к увеличению вероятности пропуска кадров. Исходя из характеристик входного сигнала вполне достаточными являются атрибуты 22 050 Гц, 16 бит, Mono (рис. 4). При этом на видео будет приходиться примерно 115 Кбайт/с, а на аудио — 44 Кбайт/с. Кстати, еще раз напомню — звук записывает звуковая плата, поэтому необходимо, чтобы был выбран нужный источник сигнала, отключены все остальные (для уменьшения уровня шумов), а также установлен приемлемый уровень громкости. Последнее можно проверить и отрегулировать, выбрав команду Audio?Volume meter (рис. 5). Никакими дополнительными фильтрами при записи лучше не пользоваться, если только вы не располагаете изрядным запасом процессорной мощи. Только записывая широкоформатный фильм, можно уменьшить площадь кадра (Video? Cropping?Set bounds), обрезав черные поля сверху и снизу изображения (рис. 6).
Рис. 7 |
Нагрузка на процессор очень сильно зависит от входного сигнала. Для описанной конфигурации и сигнала хорошего качества, например с видеокамеры, она в среднем составляет 20 — 40%, но довольно часты флуктуации от 2 — 7 до 100%. В последнем случае возможны пропуски кадров, поэтому надо стараться уменьшить среднюю загрузку процессора. Несколько сгладить пиковую нагрузку (при средней менее 100%) позволяет увеличение количества видеобуферов. По умолчанию используется 10 буферов по мегабайту каждый, при наличии достаточного количества памяти их число желательно увеличить (но использовать не более половины объема всей имеющейся памяти!). Это можно сделать, выбрав команду Capture?Settings. Там же следует установить частоту 25 кадров в секунду. Если запись осуществляется в ваше отсутствие, то желательно задать условия окончания записи либо по времени, либо по объему файла в окне Capture?Stop conditions (рис. 7). Естественно, в процессе записи не следует запускать никаких других программ.
Плохое качество изображения из эфира («снег») «сбивает с толку» алгоритм сжатия (следствие этого — резкое ухудшение получаемой картинки) и ведет к повышенной загрузке процессора. Кроме того, как правило, чувствительность TV-тюнеров в исполнении PCI-плат ниже, чем тюнеров бытовых видеомагнитофонов, поэтому целесообразно подключать антенну к видеомагнитофону, а TV-тюнер компьютера (или плату видеоввода) — к низкочастотному выходу видеомагнитофона. Встроенный в PCI-плату тюнер при этом будет отключен. Заодно такое подключение избавит от необходимости перекоммутации при смене источника сигнала с эфира на видеокассету и обратно (правда, выбирать между стандартами PAL и SECAM в настройках драйверов все равно придется). Возможно, стоит предпочесть плату видеоввода без тюнера, что позволит сэкономить 20—50 долл.
Рис. 8 |
Рис. 9 |
После записи материал следует отредактировать (рис. 8): убрать рекламу или неудачные кадры. Программа VirtualDub позволяет сделать это наиболее естественным и привычным способом: помечая ненужные фрагменты и удаляя их клавишей . Для вырезания рекламы в записанном из эфира фильме данных операций вполне достаточно. При работе с материалом, отснятым видеокамерой, возможно, понадобится поменять отдельные фрагменты местами. В этом случае фрагмент, который нужно поставить позже (в компонуемом фильме), следует выделить и записать в отдельный файл, который затем можно будет присоединить к концу редактируемой цепочки. Для экономии времени делайте такую запись в режиме Video?Direct stream copy (рис. 9). Помните только, что в этом режиме границы записываемого в файл фрагмента сдвигаются до ближайшего ключевого кадра (по умолчанию ключевые кадры следуют через каждые 10 с), но этот недостаток можно устранить при редактировании и окончательной записи.
Перемещаться по файлу можно с шагом как в один кадр, так и в 50, а также между ключевыми кадрами (шаг в 250 кадров при 10-секундных интервалах). При этом из-за того, что в файл пишутся в основном отличия текущего кадра от предыдущего, перемещение вдоль файла в прямом и обратном направлении требует существенно различающихся вычислительных ресурсов. Движение по файлу назад происходит в десятки раз медленнее. К счастью, это не распространяется на ключевые кадры, которые пишутся целиком. Поэтому если в процессе редактирования вы пропустили нужное место, лучше вернуться к предыдущему ключевому кадру, а затем снова осуществлять поиск в прямом направлении.
Рис. 10 |
Рис. 11 |
После того как видеофильм приведен к требуемому виду (пока только в памяти VirtualDub), его необходимо вновь записать на жесткий диск. Аудиоданные у нас находятся в несжатом виде и занимают более четверти объема файла, что слишком много. Следует установить флажок Audio?Full processing mode (рис. 10), после чего станет доступным пункт меню Audio?Compression. Лучше всего остановить выбор на формате MPEG Layer-3 32 кбит/с, 22 050 Гц, Mono (рис. 11). При этом поток аудиоданных будет сокращен более чем в десять раз и займет всего несколько процентов в выходном файле.
Если длительность фильма не превышает полутора часов, то уровень сжатия видео можно оставить без изменения. Если же она больше, то для того, чтобы файл поместился на CD, имеет смысл увеличить степень сжатия, понизив скорость потока (см. рис. 3), по моим оценкам, не более чем в два раза (т. е. до 450 кбит/с). При более сильном сжатии будет наблюдаться потеря кадров. Чтобы проиллюстрировать это, я привел в таблице данные по сжатию 4-минутного блока рекламы (в рекламе чаще, чем в обычном фильме, происходит смена сюжета), а также 20-секундного достаточно динамичного фрагмента из него. Как видно, пропуск кадров начинается со скорости потока данных 400 кбит/с. Кроме того, потерянные кадры крайне неравномерно располагаются в видеофайле, поэтому даже при довольно высоком среднем показателе частоты кадров отдельные динамичные сцены могут отображаться неудовлетворительно. Увеличение степени сжатия неизбежно ухудшает качество изображения, поэтому злоупотреблять этим не следует.
Запись результирующего файла осуществляется по команде File?Save as AVI. Предварительно нужно восстановить для видео режим Full processing mode, иначе в выходном материале появятся «хвосты» вырезанных кусков из-за смещения границ фрагментов к ключевым кадрам. Время, в течение которого будет осуществляться эта процедура, может превысить время показа фильма. Но это уже не столь важно — на данном этапе качество полученного результата не зависит от производительности процессора. В частности, вполне возможно совместить запись фильма с какой-либо другой работой на компьютере.
Литература
- Маркаров Г. Г. Опыт записи и редактирования видео на ПК // Мир ПК. 2001. №12. С. 130.
- Андрианов С. Телевизор в компьютере: обзор TV-тюнеров // Мир ПК. 2001. №8. С. 12.
- Андрианов С. Испытания на "жесткость" // Мир ПК. 2001. №12. С. 18.
- Андрианов С. Универсалы в мире звука // Мир ПК. 2002. №2. С. 28.
1 Впрочем, зачастую при показе широкоэкранного фильма вверху и внизу изображения наблюдаются черные поля, которые можно обрезать. Высота картинки при этом, естественно, уменьшится.
2 В Windows 9х для этого необходимо на Панели управления щелкнуть на значке «Система», затем в открывшемся диалоговом окне выбрать «Устройства?Дисковые накопители?GENERIC IDE DISK TYPE47?Свойства?Настройка» и установить флажок в поле DMA.