DivX Основы создания видео на компьютере

         

C чего начать


Источника видео мы касаться не будем. Это может быть DVD, захват видео с TV тюнера, и.т.далее… Подробно об этом я напишу в более поздних статьях. Со всего этого мы, как правило, имеем файлы очень больших размеров. Наша задача, сократить размеры этих файлов. Как правило, ограничителем служит объём CD диска. Это делается при помощи программ кодеков.

По поводу копирования DVD дисков на компьютер написано много статей, например вот здесь. Захват TV и входа видео можно делать с помощью программы Virtualdub, я не буду на этом останавливаться в этой статье.

Обрабатывать изображение можно разными программами, самые распространённые - Adobe Premiere, Ulead Media Studio, Pinnacle Studio... Здесь на вкус и цвет. Если хочется видеоэффектов, наложения титров, то вам конечно, без выше перечисленных программ не обойтись. Но я пользуюсь Virtualdub - маленькая, быстрая, бесплатная, достаточно функциональная для простого кодирования в DivX или любой Mpeg4 клон, довольно простая и к тому же постоянно обновляется.

Процесс кодирования можно разделить на два этапа: Процесс кодирования видео и процесс кодирования аудио. Многие программы делают это за один раз, но это не самый лучший вариант. После такого кодирования мы получим всё не самого лучшего качества. Самого высокого качества мы можем добиться только при раздельном кодировании аудио и видео. Я использую для этого специализированные программы: VirtualDub или NanDub (предназначены для кодирования видео), RazorLame или oggdropXPd - кодирование аудио. Можно использовать и другие программы, я написал про те, которыми привык пользоваться. Про кодирование аудио мной написано в другой статье, поэтому подробно на этом процессе я останавливаться не буду.



Микширование


Объединять звук с видео можно при помощи программы VirtualDubMod, это переделанный Virtualdub и со своей задачей он справляется на все 100%. Он понимает звук MP3, AC3, OGG, WAV, в общем, весь набор. Правда, при использовании MP3 VBR (переменный битрейт), и последующем открытии в Virtualdub, он будет утверждать, что у вас проблемы со звуком. Поясню на счёт переменных битрейтов. Официально, на сайте VirtualDub заявлено, что формат AVI не поддерживает переменный битрейт, вернее его можно вставить в AVI, но он может быть рассинхронизирован с видео. У меня проблем ни разу не было, но эта информация официальная.

Так же следует учитывать, что при микшировании видео и аудио MP3, происходит дописывание к получаемому файлу 10-20 мегабайт. Это служебная информация (называемая "frame overhead"). При создании видео формата OGM этого не происходит (поясню, формат OGM получается при микшировании обычного AVI и аудио формата OGG, VirtualDubMod тоже это делает).

Я рекомендовал бы вам пользоваться форматом OGM, для этого есть несколько предпосылок. В OGM не расходуется место на "frame overhead" Звук OGG на низких битрейтах гораздо качественнее, чем MP3 того же битрейта Он без проблем работает с переменными битрейтами.

Короче, делаем это так: в VirtualDubMod открываем видео файл. В разделе "Video" ставим опцию "Direct stream copy". В разделе "Streams" заходим в опцию "Stream list" и выбираем файл с уже приготовленным ранее звуком. Далее, заходим во вкладку File-> Save as... Там выбираем формат, в который будем сохранять (AVI, OGM), выбираем "Direct stream copy" в подразделе "Video mode" и нажимаем сохранить. Работа закончена.



Mpeg - кодеки


Автор: Евгений Сучёв
Дата: 29.08.2003

Все кодеки, предназначенные для сжатия видео можно разделить на два типа: с устранением пространственной избыточности и устранением временной избыточности. К первому типу можно отнести M-JPEG кодеки. Ко второму типу можно отнести все Mpeg кодеки. Суть первого типа кодеков сводится к сжатию каждого кадра, по JPEG алгоритму. При этом каждый кадр сжимается независимо от другого.

Второй тип кодеков производит сравнение двух соседних кадров. При точном совпадении кадров, считается, что записывать второй кадр не нужно. При каких-то незначительных изменениях, производится запись только изменившейся части, остальная часть забирается из предыдущего кадра. По этому алгоритму работают все Mpeg кодеки и их клоны: XVID, DivX, WMV, Quick Time…

В связи с тем, что Mpeg кодеки (и их клоны) работают по одному и тому же алгоритму, все они подвержены одним и тем же искажениям. Можно вывести закономерности, влияющие на качество результирующего видео. По материалам авторитетного сайта www.doom9.org и моим собственным исследованиям, я вывел некоторые конкретные факторы, влияющие на качество сжатого видео кодеками второго типа.

Я насчитал их 6 штук:

Разрешение Битрейт B-frames Фильтры Низкий уровень движения в фильме Темное кино

1. Разрешение (или размер картинки) при сжатии видео имеет не маловажную роль. Нам кажется, что увеличение разрешения видео несёт только благо, но… При увеличении разрешения требуется больше поток для каждого кадра. Если приводить это к пикселям в кадре, то при разрешении 320*240 получается 76800 пикселей в кадре. То же самое изображение при 384*288 будет иметь 110592 пикселей в кадре. Имеем увеличение в 1,44 раза, что должно повлечь увеличение битрейта кодека (для получения картинки того же качества) во столько же раз. Как видим, минимальное изменение разрешения картинки, влечёт за собой значительные изменения потока. Для обобщения понятия о приемлемости качества, обычно вводят такое понятие, как b/(s*f) (b-битрейт, измеряется в бит/секунда; s-количество пикселей в одном кадре, высчитывается умножением высоты на ширину; f - число кадров в секунду) и оно не должно быть ниже определённого порога. По большому счёту, это поток, приходящийся на один пиксель. Для определения этого параметра я пользуюсь пакетом GordianKnot. Он предназначен для обработки видео и вычисляет этот параметр автоматически. При снижении этого параметра ниже 0,19 сигнализирует, что сжатие неприемлемо высоко.







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

Я вычисляю его в уже упомянутом мной GordianKnot (подробно описано в статье "Личный опыт работы с DivX"). Там можно загрузить обрабатываемое видео, а можно просто задать продолжительность фильма, там же указать размер имеющегося аудио или битрейт с которым оно будет зажиматься, выбираем каким кодеком будем обрабатывать (DivX3 или DivX5), на сколько и каких CD это будет укладываться... В результате, получаем максимальный битрейт, с которым можно кодировать видео. При кодировании видео, мы выставляем этот битрейт и больше его не трогаем. Теперь можно попробовать поиграться с разрешением видео. При увеличении разрешения видео, как я уже упоминал, улучшается детализация картинки, но при ограниченном битрейте кодера, мы уже не будем получать улучшения детализации. Детализация будет расти до определённого разрешения, потом начнётся размытие картинки и разваливание её на квадраты.

Проследить, как ведёт себя параметр b/(s*f) в зависимости от изменения разрешения можно при помощи то же программы GordianKnot. На вкладке разрешение, передвигайте слайдер и программа будет выводить наиболее близкие значения ширины и высоты (перед эти на вкладке битрейт нужно обязательно ввести все параметры в соответствии с написанным выше). Делитель ширины и делитель высоты нужно выставить в 16. Вместе с изменением разрешения будет автоматически пересчитываться и значение b/(s*f). Таким образом вы можете подбирать максимальное разрешение проверяя его по параметру b/(s*f).


Получается, что для определённого битрейта имеем определённое разрешение, при котором детализация максимальна (на конкретном видео материале).

Вернёмся к формуле b/(s*f) (назовём этот параметр Q). Глядя на нё, можно сказать, что в качестве картинки участвует битрейт, разрешение и количество кадров в секунду. Битрейт = Const (максимум для нашего размера файла); кадров в секунду = Const (можно их уменьшить, но это не всегда будет приятно смотреть, за исключением процесса Inverse telecine); разрешение = Variable. Получаем, что изменяя разрешение, мы можем повысить или понизить качество картинки в целом.

Моими экспериментами было установлено, что при Q>0.4, мы получаем вполне не плохую картинку для данного разрешения. С увеличением разрешения, параметр Q будет падать, соответственно, общее качество расти уже не будет, а к Q=0.2 упадёт до неприемлемого уровня.



2. Про выбор битрейта я уже написал чуть выше, как правило он выбирается для получения определённого размера файла. Но, допустим, у вас задача в другом, вы не постоите за размером файла, но хотите получить максимальное качество. Возьмём уже известный нам параметр Q. Для получения максимального качества Q должен быть больше или равен 0.8. Это возможно подбором битрейта (будем думать, что разрешение вы не хотите изменять). Но может получиться такая ситуация, что при увеличении битрейта размер файла видео не будет расти. Это будет обозначать одно: вы достигли максимального качества для данной картинки и разрешения. Как дальше будет рассказано, содержимое фильма так же имеет важную роль в качестве сжатия.

3. В кодере DivX5 появилось новшество, которое позволило получить более высокое качество, по сравнению с предыдущими версиями. Это - B-frames. При работе B-frame используют не только предыдущий кадр, но и следующий (P-frame рассчитывал картинку только по предыдущему кадру), что даёт нам дополнительный толчок для повышения качества картинки. B-frame получаются очень маленькие, значит можно больше объём выделить на P-frame.

Короче, B-frame не требует никакой настройки, достаточно просто включить эту функцию и качество сжатого видео должно повысится.

4. Теперь я хочу рассмотреть работу фильтров. При сжатии видео, на сжимаемость картинки влияет наличие множества мелких деталей, ярких переходов… короче, мягкость картинки. Здесь и далее, про видео, которое можно сильно сжать без ощутимых потерь, я буду писать "хорошо сжимается".

Чем более чёткая картинка, тем тяжелее кодеру будет её сжимать. Применяя разные фильтры, мы можем менять чёткость картинки, тем самым меняем условия работы кодера. Так, применяя фильтр Smoother, мы делаем картинку более размытой, после этого, кодер будет работать в облегчённых условиях (видео хорошо сжимается), и после сжатия картинка будет выглядеть на много лучше, чем без применения этого фильтра. Здесь идёт речь о кодировании в нужный объём (например при Q=0.3), а не получения максимального качества (где битрейт увеличивают до получения высокого качества).

При изменении разрешения видео, мы так же включаем какой-нибудь фильтр, за частую не задумываясь об этом. Мы можем включить разные режимы перерасчёта картинки: Nearest neighbor (берётся ближайшая точка оригинала), Bilinear (линейное усреднение в матрице 2х2) или Bicubic (кубическое усреднение в матрице 4х4). Есть так же другие способы, но их основа Bilinear или Bicubic.

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



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

Bicubic годится для любого рода работ, но в основном его рекомендуют для увеличения. После применения Bicubic интерполяции происходит подчёркивание мелких деталей, контуров объектов. Это усложняет сжатие и для кодирования того же видео с тем же качеством, потребуется повышенный битрейт.

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

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

5. Форматы Mpeg, регистрируют не каждый кадр, а изменение картинки от кадра к кадру. В результате имеем, что в фильмах с низким движением, кадры изменяются мало, соответственно нужно мало места на промежуточные кадры (P-frames, B-frames). Получается, что мы можем получить достаточно качественную картинку при более низком параметре Q. Как количество движения нужно понимать не только передвижение объектов, но и вспышки, мерцание, дрожание объектов. На практике, могу сказать, что сценическое освещение (вспышки, резко перемещающийся свет) требует резкого повышения битрейта, для получения качественной картинки.

6. После наблюдения за качеством работы кодеков Mpeg с разными фильмами было выявлено, что очень качественно сжимаются фильмы с тёмными фонами. Здесь появляется такая же ситуация, как и в фильмах с малым уровнем движения, при малых уровнях Q, мы получаем приемлемое качество. Разумного объяснения этому феномену у меня нет. Быть может составляющие видео (YUY2) при тёмном изображении стремятся к 0, размах их достаточно низок и небольшие изменения легко укладываются в маленькие промежуточные кадры.


На подступах к видео


Жать будем, конечно же, в формат DivX. Почему конечно? Всё дело в распространённости. Один из реальных конкурентов это Xvid, но его основной недостаток - это постоянное морфирование. По качеству, кодек Xvid показывает более высокие результаты, но вместе с видео файлом придётся выкладывать и кодек Xvid, которым это закодировано. Кодеки Xvid не совместимы ни в одну сторону, это их основной минус.

Основным инструментарием будет NanDub или Virtualdub (в зависимости от того, каким кодеком будете кодировать). Версий кодека DivX выпускалось более десятка, поэтому может возникнуть вопрос: Каким кодеком пользоваться? DivX3 - это один из первых релизов, DivX 5.05 последний релиз. Были так же промежуточные релизы DivX 4. Что лучше?

Начну с начала. Первым релизом кодека DivX был по сути взломанный кодек Mpeg4 и назвали его DivX 3. У кодека DivX 3 есть два режима работы: low-motion и fast-motion. Для чего они нужны?

У DivX3 low-motion коэффициент сжатия низкий и почти постоянный, а у fast-motion высокий и довольно таки сильно изменяется. Это грозит тем, что low-motion весь фильм сожмёт с одинаковым коэффициентом сжатия. Все фрагменты будут выглядеть с одинаковым качеством, не зависимо от того, есть какое-нибудь движение в кадре или нет. При нехватке общего битрейта на картинке будут появляться артефакты: окантовка вокруг переходов, наблюдается размытие картинки, так же появляются квадраты на картинках с плавными переходами цветов.


Появление окантовки на переходах и размытие картинки



Появление квадратов на изображении

Для исправления подобных вещей был сделан режим работы fast-motion. Было замечено, что при просмотре гораздо более заметны искажения на статичных картинках, чем на динамичных. Режим fast-motion занимается тем, что отбирает битрейт у картинок с быстрым перемещением и отдаёт его статичным картинкам. Такой подход частично выправляет положение с нехваткой битрейта. Но в этом случае, эти артефакты появляются на быстро перемещающихся картинках. Приходится искать компромисс, между хорошим качеством статичных и динамичных картинок. Для работы с кодеком DivX 3 настоятельно рекомендуется использовать программу NanDub. Данной связкой (DivX 3 +NanDub) можно добиться лучших результатов, чем при работе последующих кодеков DivX 4-5. Настройки этого кодека хорошо описаны в статье, а про работу в NanDub.

Про DivX 4 по большому счёту говорить нечего, это промежуточная версия между 3 и 5. DivX 5 ушёл немного дальше, а для DivX 3 написана более качественная программа (NanDub). В связи с этим кодирование при помощи DivX 4 я даже не буду рассматривать.


DixX5 так же как и DivX 3 подвержен выше перечисленным искажениям, но у него нет режимов low-motion и fast-motion. Если у DixX3 коэффициенты квантования жёстко заданы (только при помощи NanDub можно настраивать), то у DixX5 они задавались вручную, но в последней версии кодека DivX 5.05 убрана и эта возможность. Изменяя коэффициенты квантования можно получить такие же эффекты, как и в DixX3+NanDub, причём, минимальный коэффициент квантования играет решающую роль, превращая кодек из low в fast.

В DivX5 Pro, есть функция работы с B-frames, что теоретически повышает качество закодированного материала. Реально, при детальном исследовании, мной не было найдено качественного улучшения картинки. Хуже то же не делает, и на этом спасибо :). Этой функцией можно пользоваться для успокоения нервов, мол производители говорят лучше, значит это так.

Итак, я рекомендую использовать DivX 3.11alpha+NanDub. При их использовании мы получим видео со 100% совместимостью с любыми версиями декодеров DivX и качество получаемого видео не хуже, а зачастую лучше, чем при кодировании последней версией кодека DivX 5.05. В отличии от Divx 3, DivX 5.05 значительно проще в настройках. Похоже, производители решили за нас, что для нас хуже, что лучше. Что в DivX 5 получилось по-настоящему удачно - это декодер. Даже фильмы закодированные DivX 3, я рекомендую смотреть при помощи DivX 5, качество картинки значительно лучше, чем при просмотре декодером Divx 3 (и разного рода проблем меньше). Я опишу особенности работы обеих версий кодеков.

Стр.2 - Сжатие Видео


Содержание:
• Стр.1 - Кодирование.

• Стр.2 - Сжатие Видео.

• Стр.3 - Микширование.





//

Hardwarez Community Network 468


Ниже приведено описание настроек кодера


Ниже приведено описание настроек кодера DivX 5. Некоторые функции уже отсутствуют в DivX 5.05, но я их оставлю, для полноты описания всех кодеков DivX 5.

Variable bitrate mode.

Доступны следующие значения:

1-pass - режим кодека, при котором битрейт примерно выдерживается в указанном значении, это режим с переменным битрейтом.

1-pass quality based - режим кодека, при котором битрейт удерживается в заданном значении не зависимо от сцены. При изменении уровня качества меняется так же и коэффициент сжатия кадров. Этот режим не рекомендуется использовать для хранения информации, а только как материал для последующей обработки.

2-pass first pass - Видео кодируется в два прохода, в первый проход создаётся файл статистики, во второй уже кодится итоговый материал. Это первый проход, когда создаётся файл статистики. Файл, в который будет писаться *.AVI при первом проходе, ничего в себе не несёт, он нужен как своп файл, на втором проходе его можно заменить на настоящий AVI.

2-pass second pass - В этот проход создаётся итоговый файл, руководствуясь данными из файла статистики, созданным во время первого прохода.

MPEG-4 Tools

Use Quarter Pel - Функция, предназначенная для просчёта движения пикселов с точностью до 1/4 пиксела. Реального выигрыша от этой функции я не вижу никакой, а на слабых компьютерах это вообще противопоказано.

Use GMC (Global Motion Compensation) - Помогает улучшать сцены, где используются наезды на объект, панорамирование. То есть, пытается передать максимум информации из предыдущих кадров (ведь они практически не изменяются, особенно при панорамировании). Я бы не рекомендовал использовать этот режим, уже наблюдались проблемы с разваливанием картинки на квадраты при использовании этой функции.

Use Bidirectional encoding - режим работы, при котором дельта кадры делятся на P-frame и B-frame (в DivX 3-4 были только P-frame).При работе B-frame используют не только предыдущий кадр, но и следующий (P-frame рассчитывал картинку только по предыдущему кадру), что даёт нам дополнительный толчок для повышения качества картинки. B-frame получаются очень маленькие, значит можно больше объём выделить на P-frame. Рекомендуется к включению.

Enable Crop - При включении этой функции видео изображение будет подрезано на столько пикселей, сколько выставите в пунктах:



Crop top - обрезка сверху

Crop left - обрезка слева

Crop right - обрезка справа

Crop bottom - обрезка снизу

Psychovisual Enhancements. Как заявлено производителем, это попытка убрать из изображения ненужные детали (психовизуальное восприятие человека). Про эту функцию могу описать свои выводы: В положении Light стало лучше передавать тёмные полутона. Разницу же между OFF и Strong я не заметил.

Maximum key frame interval. Максимальное количество дельта кадров между ключевыми кадрами. В новый кодек изначально встроен механизм вставления ключевых кадров по изменению сцены. Эта цифра, как и следует ожидать, заставляет кодек вставить ключевой кадр, если он не вставлен SCD механизмом. По умолчанию стоит 300, что соответствует 10-12 секундам, в зависимости от frame rate. Я же рекомендую ставить 50-100, что соответствует 2-4 секунды, это несколько увеличивает размер конечного файла, но вместе с этим облегчает поиск нужного фрагмента, и улучшает качество (ведь в течение этого интервала кодек не показывает кадр целиком, а получает из ключевого, путём передачи изменений оного, при этом возможны любые искажения).

Scene change threshold Теоретически должен отлавливать порог изменения сцен, при котором нужно вставлять ключевой кадр, но реально работает не очень корректно, если выставить очень маленький, то в некоторых местах они (ключевые кадры) будут через каждый кадр, а там, где сцены явно изменяются, он их не ставит. Это происходит потому, что он сравнивает соседние кадры, а сцена может меняться 5-10 кадров. Рекомендую выставить 20%.

Enable Resize - при включении этой функции будет произведено изменение размеров видео.
Output width x height - получаемые ширина и высота.

Методы расчета изменения размеров:

Bilinear (Very Soft) - билинейный, самый простой в расчетах, соответственно самый быстрый, рекомендуется только для уменьшения размеров.

Bicubic (Soft) - кубический мягкий, самый простой из кубических.

Bicubic (Normal) - кубический нормальный.

Bicubic (Sharp) - кубический чёткий, рекомендуется для всех видов изменения размеров, но он самый медленный.

Pre Processing Source Заявлено производителем, как шумодав. На самом деле просто происходит сглаживание картинки, что несомненно, помогает при работе кодера и качество картинки в целом растёт. В положении Extreme происходит максимальное сглаживание, в положении Light - минимальное сглаживание.

Source Interlace. Имеет 3 положения:



All frames are progressive - с исходным видео ничего не делается кроме сжатия.

All frames are interlaced - Конвертирует из чрезстрочного видео (при захвате сигнала PAL) в прогрессивное.

All frames telecine - Конвертирует из чрезстрочного видео (при захвате сигнала NTSC) в прогрессивное. Вместе с этим, частота видео снижается с 30 кадров до 24, без потери качества.

Существенное замечание: При включении All frames are interlaced или All frames telecine, не должно быть изменено разрешение видео материала перед кодером.

Data rate control (RC) - управление битрейтом

Maximum quantizer и Minimum quantizer - прямой перевод, коэффициент квантования, но реально, эти параметры задают максимальный и минимальный коэффициенты сжатия P-frames. В работе Maximum quantizer практически не используется, а вот Minimum quantizer задаёт основное качество. Если Minimum quantizer выставить в 2, то это будет означать работа без сжатия и уменьшение размера видео будет только за счёт работы P-frames и B-frames.

Rate control averaging period, frames. Определяет как долго кодек "помнит" как менялся битрейт в процессе кодирования. Высокое значение этого параметра стоит ставить, если в кодируемом материале есть длинные динамичные сцены.
Rate control reaction period, frames. Определяет, как быстро кодек меняет битрейт с изменением сцены.

Rate control up/down reaction. Определяет, как резко кодек может менять битрейт при изменении сцены.

Performance/quality имеется четыре возможных значения:

Slowest.
Slow.

Medium.
Fast.

Fastest.

Значения достаточно очевидны, предлагается выбрать что важнее - скорость кодирования или качество итогового материала. Учитывая, что кодировать надо всего один раз, а смотреть много, то оптимальный выбор, IMHO, очевиден...

Write conversion log file. Нужен для ускорения 2-проходного кодирования.

Продолжение темы следует…

Титул


Содержание:
• Стр.1 - Кодирование.

• Стр.2 - Сжатие Видео.

• Стр.3 - Микширование.







//

Hardwarez Community Network 468


Обо всём понемногу


По поводу одно или двух проходного кодирования, на первый взгляд, разницы никакой, при детальном просмотре двух и одно проходного кодирования я выяснил, что там, где есть движение, двухпроходное кодирование работает достаточно эффективно. Для двух проходного метода есть два режима работы - первый и второй проход, они описаны ниже, в настройках работы DivX. Ещё, в пользу двух проходного кодирования можно отнести практически 100% попадание размера файла в рассчитанный размер. При однопроходном кодировании, размеры файла могут очень сильно варьироваться.

Немного о пользовании Virtuldub. Если у вас возникнет желание зажать в два прохода, есть возможность не подходить каждый раз к компьютеру, когда выполнится проход, а сделать это в виде скрипта, который автоматически выполнит оба прохода, а вы только проверите результат. Делается это так. В настройках звука ставим "No audio", звук будет наложен после обработки видео. Сделайте все установки в кодировщике на первый проход (Video -> Compression -> DivX5-> Configure -> 2-pass, first pass), установите битрейт и другие установки. Зайдите в сохранение ( File -> Safe as AVI ), поставьте галку "add operation to job list and defer processing" наберите название AVI файла и нажмите сохранить, процесс сразу не запуститься, он будет занесён в очередь. Также настраиваем на второй проход (2-pass, second pass), заходим в сохранение и производим там те же действия. После этого можно продолжить заниматься своими делами. Когда компьютер освободится (например, ночью), запускаем Virtualdub и даём команду (File -> Run script -> VirtualDub.jobs) на исполнение скрипта, написанного нами ранее. Файл VirtualDub.jobs находится в каталоге с установленным VirtualDub. VirtualDub выполнит все задания, написанные нами ранее. После выполнения скрипта, закройте VirtualDub и удалите файл VirtualDub.jobs. При помощи этого скрипта можно также монтировать фильмы (запоминаются все вырезки, вставки, наложения, всё так, как вы хотели сохранить), подбирать наиболее качественное сжатие (ставим несколько заданий на сжатие одного и того же файла, но с разными размерами картинки, на утро нам предложат несколько авишек). В общем, очень удобная вещь. А в целом для описания работы с VirtualDub требуется отдельная статья и выходит за рамки описания работы с DivX.



Сжатие Видео


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

В первую очередь, нам нужно определить, какой максимальный битрейт можно будет выставить в кодеке. Для этого я использую программу Gordian Knot. В ней можно открыть файл видео, который мы будем сжимать (обозначено под цифрой 1) или ввести продолжительность нашего видео (2). Далее, нужно выбрать кодек, который мы будем использовать для кодирования (3). Для правильного определения максимального битрейта нам нужно учесть звук, который будет прикреплён, это делается опцией номер 4. В этой опции нужно выставить битрейт, с которым будем сжиматься звук. Следует так же выбрать размер записываемого CD и количество дисков, на которые будет производиться запись (5). В окне 6 у нас посчитается наш максимальный битрейт, с которым можно кодировать видео.

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

При выставлении разрешения нужно ставить величины, кратные 16.

Далее, просматривая фильм, определяю длительное быстрое и статичное изображение с плавными переходами цветов (нужно чтобы это всё было на светлом фоне, так лучше проявляется заквадрачивание). Для статичного изображения иногда подходит логотип кинокомпании, который выводится вначале фильма. Для быстрого изображения подходят кадры с погоней, быстрым переводом камеры… Делаю из них один короткий ролик, примерно на минуту. В Virtualdub это делается очень просто: Перемещая слайдер, находим начало и конец вырезаемого куска и помечаем их соответственно клавишами "home" и "end" клавиатуры. После разметки, нажимаем клавишу "del". Так, вырезая кусок за куском, оставляем только эти два куска (статичный и динамичный).

Теперь начинаем кодировать этот ролик (NanDub для DivX 3 и VirtualDub для DivX 5). Сперва для DivX 3:

Заходим в опцию Nandub "Video", ставим закладку "full processing mode", далее заходим на вкладку "SBC options" и "SBC settings":


В разделе "Bitrate" выставляем максимальный битрейт, который посчитан для DivX 3. На самом деле, лучше выставлять его немного меньше, чем он посчитан, т.к. при кодировании этот битрейт соблюдается не точно а приблизительно и возможны выбеги размеров в любую сторону. В разделе "Minimum allowed bitrate" лучше выставить значение 200, хуже от этого не будет.

Далее переходим во вкладку "Bitrate curve":


Выставляем значение "Motion based curve modulation" в 35, а "Bitrate redistribution" на "Proportional".

Поясню, что выполняет вкладка "Motion based curve modulation". При выставлении этой вкладки в 100% кодек начинает вести очень агрессивно по отношению к динамичным сценам, то есть, он начинает очень сильно забирать битрейт у этих сцен и отдавать его статичным сценам. По мере уменьшения этого значения, агрессивность падает, и к 0 уже практически нет никакой разницы для кодера, динамическая это сцена или статическая. Таким образом, можно подобрать этот параметр под конкретные нужды и конкретный фильм. Остальные настройки кодера DivX 3 + NanDub хорошо описаны в этой статье.

DivX 5 настраивается таким образом:

Заходим в опцию Virtualdub "Video", ставим закладку "full processing mode", далее заходим на вкладку "Compression":


выбираем DivX 5 Codec, заходим на вкладку "Configure":


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

На вкладке "General Parameters" в строке "Max keyframe interval" вместо 300 выставляем 100. Это облегчит навигацию по фильму. Поиск будет происходить не 12 секунд, а 4.


На этом настройка DivX 5 заканчивается.

Теперь производим кодирование. После кодирования, просматриваем обычным проигрывателем, которым пользуемся всегда. В свойствах DivX декодера устанавливаем минимальное качество изображения:


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

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


с кодеками второго вида перед


При работе с кодеками второго вида перед нами стоит проблема выбора разрешения, при котором качество картинки будет достаточно высоким. Для приблизительной оценки качества можно пользоваться оценочным параметром Q, введённым мной в этой статье. Повышать качество кодирования можно повышением битрейта (при сжатии в объём это не применимо), включением B-frames, включением сглаживающих фильтров. При выборе всех этих параметров стоит учитывать факторы не зависящие от кодера: количества движения в видео материале и темноту фона, на котором происходит действие.