Сегодня 18 ноября 2017
18+
Звук и акустика

DVD Rip. Часть 2 Smart Bitrate Control - новый шаг в сжатии цифрового видео

Вступление

Если ещё несколько лет назад на десяток пользователей PC приходился хорошо если один любитель просматривать видеодиски с фильмами или видеоклипами в формате Mpeg1, то сегодня фильмы в Divx или, реже, в DVD смотрит наверное каждый второй. Более того, многие не удовлетворяются просто просмотром, они хотят делать фильмы самостоятельно. Принимает это разные формы, от перегонки уже оцифрованных фильмов с одного формата в другой, до оцифровки видеофильмов самостоятельно, после чего всё равно встаёт вопрос про оптимальный формат в котором всё это хранить. Спрос рождает предложение и нет ничего удивительного в том, что на рынке появилось множество программ и устройств призванных помочь пытливому оцифровщику. Причём, возможности этих программ и железок, доступных сегодня почти что каждому, таковы, что несколько лет назад подобное стоило столько, что страшно даже подумать, и было по карману только узкому кругу профессионалов. Впрочем, пользователям РС к таким темпам прогресса не привыкать :-). Тема это огромная и страшно интересная, разговаривать про неё можно практически бесконечно. Но сейчас мы поговорим про одну из самых мощных программ для кодирования видео в один из самых удачных форматов Divx, известной как

Smart Bitrate Control

Так называется алгоритм реализующий MM4 (Multiple Mpeg4) энкодинг с помощью одного из дополнений к VirtualDub. Этот пакет отдельно можно взять здесь, а весь VirtualDub, со всеми необходимыми интегрированными пакетами здесь. Часто это название связывают только с DVD-Rip’ом, но это далеко не так (в отличии, например, от FairUse, так же реализующей алгоритм MM4). С его помощью можно оцифровывать любое видео, которое возможно загрузить в VirtualDub, или же оптимизировать (уменьшать размер с минимальными потерями качества) уже готовые видеофайлы, в том числе формата Divx. Впрочем, для DVD-Rip SBC тоже подходит наилучшим образом, поэтому на этом вопросе я остановлюсь поподробнее, тем более что методика применяемая для этого имеет гораздо более широкое применение.

DVD в Nandub.

Главная проблема, с которой придётся столкнуться при кодировании DVD фильма в Divx с помощью Nandub (так называется надстройка к VirtualDub реализующая SBC), это как загрузить видео из VOB файла. Подобные проблемы (видео не загружается в Nandub непосредственно) могут возникнуть и в других случаях, принцип решения во всех случаях одинаков, меняется может только набор нужного программного обеспечения.

Прежде всего нам понадобится программа, которая будет работать как Frame Server. Как вы уже знаете, Nandub не может работать напрямую с VOB файлами, поэтому ему нужен "помощник", который такую возможность предоставит. Процесс такой помощи и называется Frame Serving. Doom9, любезно разрешивший мне воспользоваться в этой статье информацией имеющейся на его сайте, для этой цели рекомендует воспользоваться Mpeg2Avi. Поэтому и мы не будем велосипед изобретать, а воспользуемся советом. Загрузив уже рипнутые vob’ы (File - Open), запускаем фильм на проигрывание (F5), ждём несколько минут (если чего-то не работает, то просто сотрите файл DVD2AVI.ini), и наблюдаем за статусом

Из этого окна нам надо определить:

1. Aspect Ratio (пригодится когда будем рассчитывать разрешение фильма).
2. Тип фильма, PAL или NTSC.
3. требуется ли применение IVTC.

На первый вопрос ответ очевиден сразу, второй определяем по Frame Rate (если 25 то PAL, если 30 то NTSC). Ответ на третий вопрос зависит от второго. Если фильм в PAL, значит кадры идут один за другим, и ничего делать не надо. Если фильм в NTSC, то надо подождать несколько минут, и посмотреть какого значения достигнет поле Video Type. Если это Film 95% или выше, значит всё прекрасно, используется порядок кадров 01001 (более подробно про это написано в PC-DVD FAQ, в вопросе про виды развёртки), и всё что требуется, это отметить в меню Video - Field Operation значение Forced Film. Если же значение Video Type так и не достигнет 95% или выше, значит используется какой то другой порядок кадров, и с этим придётся что-то делать. Остаётся только выбрать звуковую дорожку в меню Audio - Track Number (советую выбрать None, и сделать звук потом, каким-либо другим методом. Почитать про эти методы можно в первой части DVD-Rip). После этого сохраняем проект (не avi!), File - Save Рroject.

Теперь можно решить проблему с IVTC (порядок кадров, если она была, если нет, то можете пропустить этот пункт). Для этого воспользуемся программой под названием TMPGEnc. Запускаем её, и в качестве Video Source загружаем Dvd2Avi проект (*.d2v файл). Потом идём Settings - Advanced.

Первое что надо сделать, это выставить правильный Field Order. Для этого выставляем Еven field first (Field order A), двойной клик на Deinterlace, в открывшемся окне выбираете Method как Even-Odd field (field), и навигационными стрелками меняете кадры по одному. Если изображение не прыгает взад-вперёд, можно себя поздравить, нажать на Cancel и перейти к следующему пункту, если прыгает, то всё равно нажать на Cancel, поменять значение Field Order, и проделать всю операцию ещё раз.

После того, как Field Order выставлен правильно, кликаем два раза на Inverse telecine, и оказываемся вот в таком окне.

Самое простое, что здесь можно сделать, это нажать на кнопку Auto-Set, в открывшемся окне нажать на старт, и подождать сможет ли TMPGEnc сделать всё правильно (как правило, сможет). Определить это очень просто, надо побегать слайдером по фильму, и если нет "ёлочек" по краям движущихся объектов, значит всё в порядке. Если ёлочки есть, то можно попробовать кодить с 29.97 fps, или включить Deinterlace, в окне открывающимся при нажатии на Auto-Set.

Если неохота сидеть и ждать пока TMPGEnc разберётся в порядке кадров автоматически, можно попробовать задать их самому. Для этого надо нажать Control-P. Как я уже говорил, наиболее часто встречающийся порядок 01001. Если он не подойдёт, попробуйте сдвинуть цифры на одну, ещё одну, и так пока полный круг не пройдёте.

После того как всё нормально, закройте окно, и сохраните проект, File - Save Project.

Теперь нам надо из сохранённых проектов сделать что-нибудь, что Nandub сможет прочитать. Для этого служит VFAPI. После распаковки этого архива не забудьте запустить vifpset.bat из директории Codec, что бы зарегистрировать его в системе. Интерфейс программы элементарен, сначала кнопкой Add Job загружаете в неё проект полученный в Dvd2avi или TMPGEnc, потом нажимаете Convert, и получается Avi файл. Что бы загрузить проект сделанный TMPGEnc, воспользуйтесь этим пакетом. Запустите полученный файл в плеере, и убедитесь что всё в порядке, то есть файл проигрывается. Играться он будет медленно, потому что этот avi не настоящий avi. Просто берётся поток который выдаётся frame server’om, декомпрессируется, и покадрово выдаётся "на гора" любой программе, что требует. В том числе и Nandub.

Nandub - основы

Полученный таким (или любым другим) методом файл загружается в NanDub. Первое, что необходимо сделать, это отрезать лишнее (чёрные полосы, или участки с артефактами изображения, что иногда встречается по краям оцифрованного с видеокассет материала) и изменить разрешение (если вы не хотите кодировать в оригинальном разрешении). Для этого придётся воспользоваться фильтром из богатого набора VirtualDub. Заходим в Video - Filters..., выбираем там Add. Из открывшегося списка выбираем Resize, и два раза кликаем на нём. В открывшемся окне вводим значения высоты и ширины (не забудьте, что бы ширина была кратна 32), исходя из своих представлений о том сколько должно быть и в соответствии с Aspect Ratio. Не забудьте выставить Filter Mode, что определяет алгоритм который будет использоваться при изменении размера. Если оставить всё как есть, то само изменение размера приведёт к куче артефактов изображения, на что потом наложатся артефакты сжатия и в итоге без слёз смотреть на полученный фильм будет сложно. Вариантов режимов, которые стоит рассматривать, всего два. Precise bilinear и Precise bicubic. Bicubic обладает более высоким качеством, но размер файлов получается несколько больше. И если учитывать, что после того как видеопоток будет сжат в Divx разница между Precise bilinear и Precise bicubic станет практически незаметна, то можно смело использовать режим Precise bllinear, особенно для фильмов на 1CD. Впрочем, если планируется делать на два диска, то можно подумать и о Precise bicubic. После того как вы выставите всё необходимое для этого фильтра, загорится кнопка Cropping..., нажав на которую получите возможность отрезать лишнее по краям. Там всё достаточно очевидно, и вряд ли нуждается в дополнительных комментариях. Поменяв размеры и отрезав всё лишнее, можно побегать слайдером в основном окне программы, что бы убедиться что результат вас удовлетворяет, и переходить к настройкам самого кодека.

Но для начала немного теории, объясняющей принцип работы SBC. Как вы знаете (если нет, то ознакомьтесь с первой частью DVD-Rip, там этот вопрос освещается более подробно), качество видео зависит от Bitrate, то есть количества данных выделяемых на каждый кадр. И подобрать оптимальный битрейт для различных сцен весьма не тривиальная задача. Программисты бьются над этой проблемой, о чём свидетельствует выход на рынок нескольких видов Mpeg4 подобных кодеков, но никто не смог разработать алгоритм, при котором оптимальный битрейт подбирался бы с одного прохода. Как следствие, ни один из кодеков, существующих сейчас на рынке не может дать качество сравнимое с получаемым при использовании MM4 энкодинга и старых кодеков, при наличии хоть какого то контроля над размером итогового файла. Не думаю, что это вообще возможно. Разные программы реализующие MM4 алгоритм решают проблему определения оптимального битрейта при нужном размере итогового файла по своему (в качестве примера можно взять FairUse, описанную в первой части), в Nandub это реализовано так. Видео кодится в два прохода, во время первого прохода видеопоток кодится с максимальным для Divx битрейтом 6000, для получения максимального качества, возможного для кодека. Однако, результат этой работы не сохраняется на диск (поэтому можно не беспокоиться по поводу свободного места), а анализируется по нескольким параметрам. Результат этого анализа записывается в файл статистики. Этот файл единственное, что сохраняется на жёсткий диск во время первого прохода. Из информации, которая хранится в этом файле, можно отметить следующее.

Прежде всего, это данные о коэффициенте сжатия каждого кадра. На эту информацию отводится 4 бита, таким образом имеется 16 возможных значения (именно столько комбинаций можно составить из четырёх нулей и единиц). Это значения зависит от соотношения размеров сжатого Divx кадра и исходного. Чем оно больше, тем лучше сжался исходник. Коэффициент 2x означает что кадр плохо поддаётся сжатию (кодек не может выдать вообще не сжатый файл, поэтому коэффициент 1x не используется), а 32x что кадр сжался на максимальную величину, доступную кодеку. Таким образом на качество кадра влияет два фактора - битрейт (когда его не хватает, появляются квадраты) и уровень сжатия (высокие уровни сжатия добавляют артефакты изображения, знакомые всем, кто видел слишком сильно сжатые Jpeg картинки). Кроме коэффициента сжатия в файл статистики записывается размер кадра, баланс яркости (соотношение яркого и тёмного), и кое-какую другую информацию. Данными, содержащимися в файле статистики Nandub руководствуется во время второго прохода, когда исходя из своих настроек кодирует исходный сигнал в Divx, и записывает результат на жёсткий диск. Вооружённые этим знанием, рассмотрим настройки Nandub подробнее.

Следующая страница →
 
Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER.
Материалы по теме
⇣ Комментарии