|
Здесь я хотел бы
рассказать историю о переводе видео с магнитного на цифровой носитель.
Можно рассматривать как руководство к действию.
Цель: получить на
болванках копию Hi8 кассет, пригодную для просмотра как на
мониторе, так и через TV-выход видеокарты на телевизоре,
записывая на одну не менее 1,5 часов.
Приборы и
материалы
- 2 компьютера: AtlonXP 1700+ (80
Gb HDD) и AtlonXP 2000+ (40 Gb HDD), 256мб RAM каждый,
соеденены 100мбит LAN, Win2k SP2.
- Видеокамера Sony (модель 1996
года)
- Видеокассеты Hi8 с видео (7
штук по 1,5 - 3 часа)
- Плата видеозахвата AverMedia
(разрешение - 352х288, 30fps noninterlaced, RGB16 или YUY2)
(на AtlonXP 1700+)
- Интегрированный в материнскую
плату звук
- VirtualDub 1.51
- NunDub 1.0RC2
- DivX 5.03
Professional
- CoolEdit 2000
- WinAMP 2.80 + out_lame.dll
+ lame_enc.dll v3.93
- Windows Media Player
Classic
- ffdshow
декодер
- Nero Burning Rom
5.5
- CD-RW
ASUS CRW-4012A
- 7 CD-R болванок
40x
Запись
Первая трудность, с которой
пришлось столкнуться - это выбор кодека для переписи файлов с
видеокамеры на компьютер для последующего сжатия. Ясно, что
напрямую сжимать видео кодеком MPEG4 не выдерживает никакой
критики: трудности с последующим монтажам и обработкой
(дельта-кадры), невозможно устроить двухпроходное сжатие, да и
не всякий компьютер такой сильный :). Ясно, что без сжатия
записывать такие объемы могут позволить себе только обладатели
RAID, да и с точки зрения быстродействия это не окупается (STRIPE
RAID ? :). Проблема решилась установкой видеокодека PICVideo
MJPEG (Pegasus), Motion JPEG кодек как раз идеально подходил
для этой цели: высокая скорость, отсутствие дельта-кадров,
приемлемое сжатие. После некоторых экспериментов были выбраны
оптимальные настройки, а именно: движок "качество" - на 19.
Это качество по идее можно сделать и меньше, так как видимые
искажения начинаются где-то с 12 и ниже (видимые искажения в
канале цвета - с 17). Кнопка "Advanced" нажималась, но игра с
этими настройками ни к чему хорошему не привела. Это качество
соответствует сжатию около 5.0:1. Вторая проблема - это выбор
программы для видеозахвата. VirtualDub был выбран как
самый не громоздкий, однако дальше в нем появлялись некоторые
проблемы. В качестве компрессора звука сначала был выбран
Micrisoft ADPSM, однако при воспроизведении были проблемы
(что-то не так с у него с синхронизацией в реальном времени),
поэтому окончательно звук записывался без сжатия (по сравнению
с размером видео - это капля). MP3 не использовалось
в силу трудностей с монтажом. Окончательно:
- Видео: PVMJPG 352x288 25
fps
- Звук: PCM 44Khz
Stereo
Запись проходила спокойно, но была
замечена странность в виртуалдубе: когда окно предпросмотра
полностью закрывается другим окном, загрузка процессора падает
с 70% до 15%. Автору виртуалдуба есть над чем поработать. К
прочему звук постепенно убегал от видео, за 1 час на 200 мс, и
появлялось около 80 пропущенных (dropped) кадров,
поэтому кассета переписывалась в 3-4 приема (2-3 Гб фрагменты
.avi на выходе).
Редактирование
Средство редактирования - тот же
VirtualDub. Ничего сверхъестественного в плане эффектов не
требовалось, просто дословная копия кассет с вырезанием съемок
чьих-то ног и салфеток на столе :). Благодаря LAN во время
записи одного фрагмента другой уже редактировался (удалялся
мусор и разбивался на файлы по темам). При этом после
дописывании очередного фрагмента он просто "приклеивался" к
предыдущему и редактировался дальше (file->append avi
segment). Естественно все это делалось в режиме "direct steram
copy", без рекомпрессии. В итоге получилось около 35 Гб
отредактированного и разбитого по темам в виде файлов
видео.
Сжатие
В качестве средства сжатия рассматривались три претендента:
XviD 2.1, DivX 5.03 и NunDub (DivX 3.11). По результатам
тестов NunDub отмелся сразу (сложность настроек, не
требовалась совместимость со старыми кодеками). В результате
еще одного теста (сжатие фрагмента видео с разными
настройками, в том числе bidirectional encoding, GMC и quarter
pixels, многопроходное сжатие) выиграл DivX 5.03. XviD при
всех своих достоинствах, при равных условиях "сыпал"
макроблоками и делал чуть большие файлы. DivX, напротив, при
минимуме имеющихся настроек давал прекрасный результат. В
итоге:
- Кодек: DivX 5.03, Multipass (2 прохода), 850кбит, все
остальные настройки выключены или по умолчанию.
При сжатии было замечено, что видео имеет отношение, не
равное 4:3, к тому же по краям были полосы (граница кадра).
Поэтому в виртуалдубе поставлен фильтр для обрезания краев (1
пиксель справа и слева и 4 сверху и снизу) и растяжение на
384x288 бикубиком. К тому же это положительно сказывается на
сжатии (отсутствуют резкие, быстро меняющиеся полосы по
границе кадра, количество макроблоков четное и хорошее -
384/16x288/16 = 24x18, ресайз бикубиком - сглаживает
слишком резкие границы). Однако это уменьшило скорость сжатия
со 120 до 100 fps!
Сжатие звука - не долго думая:
- MP3, 32Khz mono, 52кбит VBR (из пижонства :).
Можно было бы и исходные файлы писать 32Khz моно, но кто же
знал, что камера - mono :). Для этого из каждого
нарезанного для сжатия файла сохранялась звуковая дорожка
(file->save WAV), и в винампе через dsp фильтр для
нормализации громкости (Enhancer 0.17) писалось прямо в MP3
через LAME кодер. VBR MP3 файлы в дальнейшем снова склеивались
с уже сжатым видео с помощью нандаба. Выгоды от VBR, если
честно, нет, потому что в некоторых кривых плеерах при VBR
звук не совпадает с видео. Некоторые звуковые дорожки
в PCM чуть-чуть редактировались в CoolEdite'e
(добавлялась музыка вместо шипения ветра, фильтровались шумы
от работающей техники, добавлялись комментарии).
Для сжатия удобно использовать встроенный в виртуалдуб
организатор работ (file->job control), для этого надо при
сохранении видео надо ставить внизу птицу, тогда задание
попадет в этот лист.
Результат: 3,5 Гб файлов от 14 до 684 мб
размером каждый (684 мб = 1час 45 минут). Возникла задача:
разместить их на 700 мб болванках с как можно лучшим
использованием места. Для этого был написан
специальный JavaScript
:))), который перебирал все возможные варианты расположения
файлов на болванках и выбирал лучший. Если будет время, доведу
его до ума и выложу.
Последние штрихи - запихиваем на каждую болванку
видеоплеер (Windows Media Player Classic мне показался лучшим
вариантом), видеокодек ffdshow и на всякий пожарный MP3 кодек.
И делаем автостарт (autorun.inf). Запускаем Nero и
болваним...
Выводы: в некоторых местах видео есть
зерно (в плохо освещенных помещениях, в сумерках -
естественный шум матрицы камеры), оно конечно негативно
сказывается как на степени сжатия, так и на качестве. Попытки
фильтрации (smart smooth) привели только к ухудшения качества
картинки, поэтому никакой обработки, кроме обрезания и
растягивания, с видео не производилось. Сжатое видео в местах
с зерном само размывается, обеспечивая тем самым эту
"фильтрацию" (тем более с включенным постпроцесингом в
декодере). На экране телевизора с обычного расстояния
просмотра потерь не заметно (немного убавилась глубина цвета,
но это исправляется настройками декодера или того же
телевизора). На экране компьютера с дальнего расстояния - как
на телевизоре, с ближнего - немного бросается в глаза эффект
"жидкой картинки", особенно в местах с плохим освещением и
там, где есть эффект "fade". Небольшой ореол вокруг надписей
даты и времени, почти исчезает при включении постпроцессинга.
Кроме зерна в видео есть небольшие колебания в цветности, но
это уже претензии к видеокамере. В ffdshow можно включить
фильтрацию шумов "temporal noise reduser" - и помеха исчезает
(но появляется новая :). К звуку претензий нет
:)))
|