(по мотивам данных статьи с http://www.3dnews.ru)
Возможен вариант, когда вас не удволетворяет качество полученного изображения. Наиболее очевидным решением этой проблемы, является полная перекодировка всего фильма заново, изменив либо битрейт, либо разрешение, либо и то и другое сразу. Но, с другой стороны, не хочется сильно увеличивать размер файла. Ситуация кажется безвыходной. Но это не совсем так.
Бывают Low Motion и High Motion варианты кодеков. Различаются они тем, что при использовании Low Motion кодека битрейт постоянно остаётся неизменным, и его часто не хватает на быстро меняющихся сценах, зато спокойные сцены кодируются с великолепным качеством. High Motion кодек напротив, меняет битрейт при увеличении потока данных, поэтому динамичные сцены кодируются с более высоким битрейтом и качеством. Оборотной стороной процесса является то, что во время спокойных сцен битрейт падает сильнее, чем нам хотелось бы, и их качество получается существенно хуже. То что мы хотим сделать, это взять лучшее с одного и другого режима, то есть иметь стабильный битрейт в спокойных сценах, и более высокий в динамичных. В теперешней версии Divx нет возможности толком настраивать эти параметры, будем надёятся, что в будущем они появятся. (На самом деле в новой программе VirtualDub при установки кодека DixX5 Pro есть возможность задать кодировку файла, используя два прохода - в первом проходе снимается статистика по имеющимся кадрам, а во втором проходе принимается решение, каким из двух перечисленных варианов кодеков производить кодирование: Low Motion или High Motion, причем можно сделать поправку, как в сторону одного, так и в сторону другого, в зависимости от того, что Вы хотите получить на выходе: размер или качество. Подробнее об этом можно почитать тут) Но, тем не менее, при определённом желании это можно поправить уже сейчас. Основная идея проста. Фильм кодируется два раза, один раз с использованием Low Motion режима, и ещё раз с использованием High Motion. После этого, с первого варианта вырезаются спокойный сцены, со второго динамичные, и то что получиться склеивается вместе. Всё что требуется, это изменить тип кодека в заголовке файла. Делается это любым HEX editor'ом, найдя стринг div4 или div3. Означают они Fast Motion кодек или Low Motion кодек соответственно, и всё что надо сделать, это убедиться в том, что во всех частях, которые планируется клеить, тип кодека называется одинаково. Саму склейку и резку можно, конечно же, делать с помощью VirtualDub, который будет описан ниже, но в силу его особенностей, про которые так же будет упомянуто ниже, он далеко не лучший выбор, когда приходится работать с большим количеством частей одного фильма, и лучше делать это чем-нибудь более продвинутым, и увы, не бесплатным.
Однако, резать фильм на куски вручную, выбирать различные участки и сводить их, занятие весьма утомительное, даже когда имеется всего лишь два файла, над которыми надо работать. А ведь очевидно, что если закодировать фильм с большим количеством кодеров и настроек, то можно добиться ещё меньшего размера файла, и ещё более высокого качества. Однако, объём работы, который придётся проделать для этого такой, что страшно даже приступать. Неужели нельзя этот процесс как-нибудь автоматизировать? Конечно можно, и соответствующее программное обеспечение уже написано. Одной из самых удобных, и в то же время одной из самых мощных программ, которые занимаются этим, является
Download
с http://www.3dnews.ru/download/dvd/fairuse/
FairUse_0.30_Beta.zip с моей странички.
FairUse Wizard 0.38 Beta с моей странички.Подробнее
о ней можно прочитать чуть ниже.
В самом названии заложено, что не надо её использовать для нехороших целей, таких как обкрадывание бедных медиа издательских компаний, а только с целью расширения кругозора, или экономии ресурса DVD привода :-) Хотя, исходя из того, как выглядит логотип этой программы, про происхождение названия есть и другое мнение...
При старте FairUse выводится лицензионное соглашение с которым надо согласиться, что бы запустить её. Одним из пунктов в этом соглашении является запрет на обсуждение программы, её функций, и даже самого факта её существования. Поэтому я специально оговорюсь, я не буду ОБСУЖДАТЬ FairUse, я её просто опишу. А если мне захочется её обсудить, то я попрошу брата запустить её, и пускай он соглашается с лицензией. В общем, не подкопаетесь ;-).
Итак, FairUse это программа реализующая очень интересный алгоритм при декодировании, известный под названием MM4, то есть кодирование одного и того же фильма несколько раз с разными настройками кодеков, что бы в последствии выбрать лучшие части закодированные каждым из кодеков и соединить их вместе. Несмотря на реализацию столь продвинутого метода, работать с FairUse настолько просто, её интерфейс настолько продвинут, что первая мысль возникающая при ознакомлении с этой программой "Так не бывает!". Всё настолько просто, что описывая её можно было бы ограничиться всего лишь несколькими предложениями:
К сожалению, в текущей версии FairUse имеется ряд недостатков:
- можно работать только с DVD дисками;
- нельзя раскидывать временные файлы по разным дискам;
После того как пользователь согласился с лицензионным соглашением у него спросят,
в каком из приводов находится диск с фильмом, который требуется закодировать
(обычно правильно выбирается автоматически), и после этого окажитесь в меню,
где предложат выбрать нужный видеофрагмент. Из дополнительной информации по
видеофрагментам указывается длина ролика, аудиодорожки и субтитры, что более
чем достаточно для того, что бы выбрать то, что нужно.
После того как выбрано нужное, соответствующие файлы с DVD диска будет переписаны на жёсткий диск и расшифрованы.
Файлы записываются в собственном формате, и не могут быть проиграны стандартными плеерами. Итак, после того как нужные файлы находятся на жёстком диске, вы окажитесь вот в таком окне:
В этом окне можно выбрать диапазон кадров, которые надо декодировать,
вручную или выставив слайдер на нужное значение, и нажав на соответствующий
значок, а так же вырезать ненужное (отступы лево-право-верх-низ), чтобы не тратить
битрейт понапрасну. Сделать это можно и вручную, но удобнее воспользоваться
автоматической резкой. При нажатии на кнопку Auto Set, FairUse выбирает несколько
произвольных кадров из выбранного отрезка (обычно 32), анализирует их, определяет
лишние области. Обычно, он делает это правильно, и ничего подправлять не нужно.
Выбрав нужное, нажимаем на кнопку Next, и оказываемся в следующем окне, где
предложат выбрать режим, в котором FairUse будет работать с видео. Этих режимов
два, Native, когда видеопоток будет кодироваться в том виде,
в котором он записан на DVD диске, т.е. 29,970 кадров в секунду, и IVTC
mode, используемый тогда, когда видео записано в чрезстрочном формате,
и каждый кадр разбит на два полукадра (подобных дисков становится всё меньше
и меньше). Лучшим выбором будет воспользоваться кнопкой Auto detect, тогда FairUse
проанализирует несколько кадров, и подскажет, какой режим лучше использовать.
Выбрав нужный режим, окажитесь в следующем окне, где предложат выбрать размер файла, который желательно получить, и разрешение, в котором фильм должен быть записан.
Единственное новое понятие, с которым придётся встретиться в этом окне, это Compression Ratio. Это значение означает отношение размера оригинального кадра и компрессированного кадра. Чем оно меньше, тем качество выше. Автор FairUse рекомендует использовать значения не более чем 120:1 для динамичных фильмов, и не более чес 150:1 для спокойных фильмов. У меня нет оснований не доверять ему. FairUse по умолчанию показывает только оптимальные (с его точки зрения) разрешения, если хотите чего-либо другого, снимите галочку с чекбокса Show only preferred resolutions. Выбрав нужное разрешение и нажав на кнопку Next, окажитесь в окне, где предложат выбрать количество и настройки кодеков, которые будут использоваться при кодировании фильма. Это окно является одним из важнейших, и даёт возможность настроить именно ту функцию, которая делает FairUse настолько отличным от других программ энкодеров.
В этом окне можно ещё раз уточнить, какой размер файла желательно
получить. Здесь же показывается и средний битрейт, который получиться при кодировании
выбранного отрезка в выбранный размер. В отличии от большинства других программ,
здесь значение битрейта указывается не в кбитах в секунду, а в килобитах на
кадр (фрейм). Для того что бы получить более привычное значение, надо всего
лишь умножить эту цифру на количество кадров в секунду (это значение показывалось
в окне, где предлагалось выбрать режим работы с фильмом, Native - 29,970или
IVTC mode - 23,976). Количество кодеков, которые могут быть использованы, 10.
По умолчанию стоит 4. Вообще, можно нажать на кнопку Auto Add,
и продолжить с тем, что предложит FairUse, обычно его выбор далеко не самый
худший.
Но можно добавить и самому. Для каждого из добавляемых кодеков можно выбрать
его тип, Low-motion или High-motion, битрейт (в битах на кадр), минимальный
и максимальный промежуток между ключевыми кадрами. Здесь стоит отметить, что
кодеки которые используются при работе FairUse, это не тот Divx кодек, который
используется большинством программ энкодеров и практически всеми плеерами. Автор
FairUse переделал стандартный кодек, убрал несколько багов с него, и изменил
механизм вставки ключевых кадров. Сделано это как с целью повышения качества
получаемых фильмов, так и с целью уменьшения размера получаемых файлов.
На этой же странице в нижнем окне выбираются звуковые дорожки, которые будут
извлечены из vob-файла. Можно добавить интересующие дорожки, которые будут сохранены
в директории проекта в формате ac3.
После того, как выбрано количество кодеков, которые будут использоваться,
и все они настроены, остаётся только нажать кнопку Next, и начнётся процесс
кодирования. Процесс этот весьма долгий, заметно дольше чем
это заняло бы с другими программами энкодерами, потому что FairUse делает всё
то же самое что и они, только несколько раз, столько, сколько кодеков используется.
Приятный сюрприз ожидает владельцев SMP машин. Поддержка мультипроцессорных
машин в FairUse сделана лучше всяких похвал, гораздо лучше чем во всех энкодерах,
которые мне приходилось пробовать. Из-за этого, на SMP машине FairUse работает
практически с той же скоростью, как на той же самой машине работает Flask!
Также выбирается режим кодирования для аудиодорожки. На выходе получается ac3-файл.
После того как кодирование законченно, вы окажетесь в следующем окне, где предложат ещё раз выбрать итоговый размер файла. Выбрав размер, нажмёте на кнопку Recalculate, и увидите похожее окно:
В этом окне показывается статистика, сколько кадров из какого видеопотока используется, и очень интересная переменная, названная автором diff threshold. Эта цифра представляет собой некий коэффициент определяющий разницу между полученным изображением и исходным. По утверждению автора, всё что ниже 11000 означает практически идеальное качество, от 11000 до 12000 приемлемое. Выше 12000, качество не столь хорошо, как хотелось бы, и лучше увеличить размер файла, но получить лучшее качество. Изменив размер, снова нажмите кнопку Recalculate, и все значения изменятся. Таким образом можно подобрать оптимальный размер файла исходя из значения diff threshold. После этого останется вновь нажать на Next, и вы получите готовый файл с изображеним. Если качество полученного фильма вас не удовлетворяет, то всегда можно открыть проект заново (при старте FairUse выбрать опцию Open an existing project), и переделать его с другим размером файла, и с другим diff threshold.
Останется только наложить звук. Как и говорилось, звуковая
дорожка вытаскивается из выбранного отрезка фильма в формате ac3. Прежде чем
продолжить работу - определитесь, хотите ли вы иметь звук в AC3 формате в итоговом
фильме (что будет расточительством, с точки зрения размера итогового файла),
или в чём-либо более экономном. От этого зависят дальнейшие действия. Обычно,
*.ac3 дорожку сначала переводят в *.wav формат, и потом уже с ним работают.
Для этого можно воспользоваться уже знакомой нам утилиткой ac3dec.zip.
Её возможности весьма широки, что можно было видеть из описания её настройки
в mpeg2avi GUI, но для того что бы просто перевести AC3 в *.wav, достаточно
всего одного ключа:
Ac3dec ИмяФайла.ac3 -out ИмяФайла.wav
Так или иначе, вы имеете несколько файлов с видео и звуком, всё что теперь требуется, это объединить их. Это можно сделать при помощи программы NanDub и описанного алгоритма.
P.S. Появилась новая версия программы
FairUse Wizard 0.38. Внешне последовательность действия для создания avi-файла
такая же. Нюансы:
- Появились кодеки DivX и XviD. Последний, на мой взгляд, более качественно
при меньшем объеме делает компрессию. Однако, если у Вас на компьютере стоит
старый кодек XviD, то при просмотре изображение будет дрожать. Если такое происходит,
то просто обновите кодек на своем компьютере - .
- Программа может накладывать звуковую дорожку, причем в следующих форматах:
AC3, MP3, OGG. Сама же конвертирует звук с заданным битрейдом.
В кратце теперь все делаем так:
- Высвобождаем на жестком диске порядка 10 Гб свободного места.
- Создаем проект, выбирая с DVD файл с фильмом, который будем конвертировать
или выбираем существующий проект, если вам надо перекодировать фильм с новыми
пареметрами звука или видео.
- Выбираем разрешение будущего avi-файла.
- Задаем размер будущего avi-файла (в этом размере будет также присутствовать
звук).
- Выбираем кодек - DivX или Xvid. Исходя из заданных размеров будущего файла
вам будет показан размер битрейда, с которым будет кодироваться видео. Заранее
скажу, что при битрейде менее 800кбит/с для DivX - качество будет неудобоваримым.
- Выбираем звуковую дорожку и ее формат.
- Отдыхаем пару (а то и более) часов.
- Оцениваем получившийся результат. Если он не удовлетворяет вас, то выбираем
уже существующий проект и повторяем эти шаги.