Ошибка

FAQ: Кодирование видео с помощью Gordian Knot

Ответить на тему
 
Автор Сообщение

PNYKLR

Пол: Пол:Муж

Стаж: 15 лет

Сообщений: 1933

Россия
Рейтинг

post 21-Ноя-2010 21:50 [-]0[+]

[Цитировать] 

Кодирование видео с помощью Gordian Knot

1. Введение.

Gordian Knot представляет собой графическую оболочку для быстрой и удобной работы с целым набором программ, которые, по сути, вполне самостоятельны, и пользоваться которыми можно и без Gordian Knot. Каждая из входящих в пакет программ написана абсолютно разными людьми. Gordian Knot просто помогает немного автоматизировать последовательность необходимых действий.
2. Подготовка инстументов.

Для осуществления процесса Вам понадобятся:

Пакет программ



В процессе установки пакета кодеков Gordian Knot Codec Pack будут последовательно устанавливаться выбранные Вами кодеки. Перед установкой пакета, настоятельно рекомендуется деинсталировать установленные до этого кодеки и фильтры (DivX, XviD, ffdshow, x264 и пр.) и установить все кодеки из пакета. В процессе установки на экране будет возникать куча вопросов, на которые вам следует отвечать утвердительно. Однако, совсем не обязательно пользоваться кодеками из этого пакета. Можно скачать и установить только тот кодек, которым Вы собираетесь в основном пользоваться, а остальными не загроможнать свой компьютер.
При установке Gordian Knot Rip Pack вопросов будет поменьше, но опять же, на все следует дать утвердительный ответ.

После установки пакета необходимо совершить некие шаманские действия: запустить программы Nandub и VirtualDubMod (Пуск -> Программы -> Gordian Knot -> Apps) и нажать "Ok" во всех предупредительных окнах, которые могут повиться после запуска.

Теперь можно запускать программу Gordian Knot (Пуск -> Программы -> Gordian Knot). Сразу после запуска мы увидим рабочее окно программы. Переходим на закладку "Настройки" (Options) и, собственно, производим эти самые настройки:
При использовании кодека DivX 5 есть возможность зажимать титры, присутствующие в конце каждого фильма, с меньшим битрейтом в пользу основного содержимого. Для титров рекомендуется использовать поумолчательные значения: режим 1-pass quality based с квантизером равным 20. Следует напомнить, что чем выше квантизер, тем хуже качество кодирования титров.

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

3. Этап первый. Декодирование и сброс содержимого DVD на жёсткий диск.

Как все уже, наверняка, знают, DVD-диски обладают несколькими степенями защиты, встроенными в сам формат. Поэтому обрабатывать информацию прямо с DVD-диска скорее всего не получится. Нам придется декодировать диск и сбросить его содержимое на жесткий диск нашего компьютера (рипнуть диск).

В принципе, выбор программм для рипования DVD-дисков огромен, у каждой есть свои плюсы и свои минусы, но наиболее стабильные результаты получаются при использовании программы DVD Decrypter. Именно ее и предлагают использовать разработчики Gordian Knot. Итак, запускаем GKnot и переходим на закладку Считывание:
Находим кнопку и запускаем DVD Decrypter.

4. Этап второй. Создание d2v-проекта, вырезание звука.
На этом этапе нашим инструментом станет программа DGIndex, входящая, как и DVD Decrypter, в состав пакета Gordian Knot Rip Pack. Запустить DGIndex можно с закладки Считывание программы GKnot нажатием кнопки Сразу после запуска необходимо открыть рипнутые VOB-файлы, для этого используем меню File -> Open или кнопку F2 и выбираем все VOB-файлы в той папке, куда Вы рипнули Ваш DVD при помощи DVD Decrypter.
Следующим нашим шагом будет определение типа фильма, с которым мы имеем дело. Прежде всего, зайдите в меню Video и установите Field Operation: Honor Pulldown Flags (в старых версиях - None). Затем запускаем предварительный просмотр из меню File -> Preview или нажатием кнопки F5. По прошествии нескольких минут останавливаем предварительный просмотр нажатием кнопки Esc и обращаем свое внимание на повившееся справа окно Information:
Здесь есть два важных параметра которые необходимо запомнить (а лучше записать). Первый параметр это Aspect Ratio, он может иметь значения 16:9 или 4:3. Второй важный параметр это Frame Type, он может быть Progressive или Interlaced. Хотя DGIndex частенько ошибается в этом параметре, но опытному глазу интерлейсный материал видно сразу по так называемому эффекту "расчески". Значения этих параметров для нашего фильма понадобятся нам в дальнейшем.

Теперь обратим свой взор на параметр Frame Rate.
  • Если Frame Rate = 25.000 fps , то мы имеем дело с PAL-овским исходным материалом. Если при этом Frame Type имеет значение Interlaced, то запустите предварительный просмотр снова (F5), и хорошенько присмотритесь к изображению, на предмет наличая черных горизонтальных линий. Если линий нет, значит DGIndex ошиблась в опредлении Frame Type, исходный материал на самом деле Progressive, и мы можем переходить к следующему шагу.
  • Если Frame Rate = 20.000 fps , то мы опять же имеем дело с PAL-овским исходным материалом, но в меню Video -> Field Operation у Вас выбран пункт Forced Film (хотя я вам говорил сбросить его в None или Honor Pulldown Flags). Для получения корректного результата Вам необходимо выбрать пункт Honor Pulldown Flags в меню Video -> Field Operation.
  • Если Frame Rate = 29.970 fps , запускаем предварительный просмотр (F5) на пару минут еще раз и смотрим на параметр Video Type, если он имеет значение FILM с процентным числом более или равным 95%, необходимо активизировать функцию Forced FILM в меню Video -> Field Operation. Иначе вам необходимо будет в дальнейшем выполнить операцию обратного преобразования IVTC, процесс выполнения которой будет описан ниже (помечаем себе необходимость ее выполнения, чтоб не забыть).
  • Значение Frame Rate = 23.976 fps сведетельствует о том, что активизирована функци Forced FILM для исходного NTSC материала. Если при этом Video Type имеет значение FILM или FILM с процентным числом больше или равным 95% оставяем все как есть и переходим к следующему шагу. Если же процентное число ниже или Video Type имеет значение NTSC, то вам необходимо выбрать в меню Video -> Field Operation пункт Honor Pulldown Flags и произвести в дальнейшем операцию обратного преобразования IVTC, пометьте себе это чтобы не забыть (объяснения о том как это делается будут даны ниже, когда настанет время для этого).


Следующим нашим шагом станет установка необходимых параметров для получения звука из VOB-файлов.

Проверям, что в меню Audio -> Dolby Digital Decode -> Dynamic Range Control установлен режим Normal. А в меню Audio -> 48 -> 44.1KHz выбан пункт Off.
Теперь необходимо решить, сколько звуковых дорожек Вы собираетесь оставить в своем фильме, а также в каком формате Вы хотите их оставить: стерео или 5.1. Если Вы собираетесь оставить одну русскую дорожку в стерео формате, тогда в меню Audio -> Track Number выберем номер нужной звуковой дорожки. Номер дорожки можно узнать, заглянув в файл "VTS_0х - Stream Information.txt", который лежит в том же каталоге, что и VOB-файлы (он создается программой DVD Decrypter). Выберите по названию и формату необходимую дорожку, имея ввиду, что 0x80 соответсвует дорожке №1, 0x81 дорожке №2 и т.д. В меню Audio -> Output Method выбираем Decode to WAV.
Теперь выбираем пункт Audio -> Normalization и в появившемся окне устанавливаем флажек, расположенный в правом верхнем углу и устанавливаем рычажок Volume в значение 80.
Если Вы собираетесь сохранить звук 5.1, в меню Audio -> Output Method выбираете Demux.
Если же Вы собираетесь оставить несколько звуковых дорожек (например русский перевод и оригинальный английский саундтрэк), выбираете в меню Audio -> Output Method пункт Demux All Tracks.
На этом установка всех параметров закончена и можно сохранять наш d2v-проект, вырезая попутно звуковую дорожку. Для этого выбираем пункт меню File -> Save Project (или просто нажимаем F4) и указываем имя d2v-файла.

После сохранения проекта, мы получим d2v-файл и файл звуковой дорожки в формате wav или ac3 в зависимости от выбранных настроек. Но только не удаляйте vob-файлы, они еще будут нужны. И вообще, рекомендую не стирать их до тех пор пока фильм не будет полностью готов.

5. Этап четвертый. Предварительная настройка параметров видео и создание AviSynth скрипта.

Запускаем Gordian Knot, и сразу обращаем внимание в правый нижний угол, в раздел Сохранить. Здесь содержится список из 16 точек сохранения, которые позволяют запоминать выбранные настройки, дабы в дальнейшем можно было вернуться к параметрам, выбранным для какого-либо фильма. Выбираем в выпадающем списке свободную точку сохранения и нажатием кнопки "Переим." переименовываем ее так, чтобы было понятно, к какому фильму она относится.
Затем открываем наш d2v-проект, путем нажатия кнопки Open в левом нижнем углу и выбора нужного файла.
После открытия проекта, в соседнем разделе Кадры будет автоматически выставлено соответствующее число кадров фильма и его fps (число кадров в секунду). Если FPS = 29.970 и у вас помечено, что необходимо сделать обратное преобразование IVTC, то установите в выпадающем списке значение fps равное 23.976 (при этом количество кадров в строке ввода выше будет автоматически пересчитано). Если в выпадающем списке FPS пусто, значит вы накосячили с созданием d2v-проекта и вам необходимо вернуться ко второму этапу и проделать все повторно, но уже более внимательно. Во всех остальных случаях (FPS=25.00 или fps=23.976) можно продолжать двигаться дальше.
Также, после открытия проекта, появится окно с изображением одного из кадров фильма, уберите это окно на задний план, но не закрывайте его.

Теперь переходим на закладку Битрейт и начинаем проверку и установку параметров, связанных с вычислением битрейта фильма.
  • Перво-наперво убедимся, что в разделе Режим выбран пункт "Считать средний битрейт", этот режим позволяет высчитывать битрейт фильма для получения заданного объема.
  • В разделе Кодек выбираем кодек, который мы будем использовать для сжатия. Рекомендую Вам использовать кодек x264, т.к. он дает наилучшее качество. Именно на его примере будет построено дальнейшее повествование.
    Однако, если Вы планируете в будущем смотреть пережатый фильм на аппаратном DVD плеере, то Вам лучше выбрать какой-либо ASP-совместимый кодек (XviD или DivX).
  • Теперь переходим к выбору желаемого объема для фильма. Прежде всего в разделе Конечный размер выбираем из выпадающего списка размер болванки. Если это не особый случай, то естественно 700 Мб. Затем выбираем количество дисков для нашего фильма, обычно 1 или 2 CD. И в случае нескольких CD отмечаем флажек "Разбить конечный файл на CD" для автоматической разбивки файла по дискам после окончания процесса кодирования.
  • Также нужно определиться с форматом контейнера, в который Вы поместите видео и аудио. Если звук у Вас в формате mp3, то наилучшим выбором будет AVI, как обладающий наилучшей совместимостью, поддежкой всеми программами просмотра и т.п. Если же звук у Вас в формате Ogg, то наилучшим вариантом будет MKV
  • В разделе(ах) Audio мы указываем файл(ы) звуковых дорожек, которые будет содержать наш фильм. Так, в разделе Audio A, жмем кнопку "Выбрать" и выбираем подготовленный нами ранее звуковой файл. При этом, автоматически выделится пункт "Размер", а в строках ввода KB и MB оборазится размер нашего звукового файла в килобайтах и мегабайтах соответственно.
  • В связи с тем, что в файле, содержащем аудио и видео данные, необходимо отвести место, для хранения информации о синхронизации аудио и видео данных, мы должны указать тип звуковой дорожки, для корректного учета объема, необходимого для хранения информации о синхронизации. Для этого, в разделе "Чередование & Перерасход" выберем пункт, соотвествующий количеству звуковых дорожек файла и их типу. Для одной mp3-дорожки: 1x cbr-mp3, для одной ogg-дорожки: vorbis. Не забываем, здесь, так же поставить флажек "Подсчитать превышение размера".
Вот теперь все параметры, влияющие на битрейт, выставлены, и в разделе Видео мы можем наблюдать значение битрейта для видеопотока. Замечу, что теперь повлиять на битрейт мы сможем лишь либо уменьшением размера файла звуковой дорожки, перекодировав ее с меньшим битрейтом, либо увеличением числа дисков, занимаемых фильмом.

Далее, переходим на закладку Разрешение.
Здесь сразу обращаемся к разделам Входящее разрешение и Пропорции вх. изображения. Первый раздел позволяет указать ТВ-систему (PAL или NTSC), этот параметр был выявлен нами на этапе создания d2v-проекта (если вы забыли и не записали, обратитесь к текстовому файлу Stream Information.txt, созданному на том же этапе, там прописана ТВ система для видеопотока). В разделе "Пропорции вх. изображения" выбираем соотношение сторон, также выданное нам программой DGIndex (16:9 или 4:3).

И переходим к более деликатному делу - обрезанию черных полос на избражении. Первую итерацию этой процедуры возложим на компьютер, для чего в разделе Урезать (перед изменением размеров!) нажмем кнопку "Авто" и подождем пока в окне предварительного просмотра GKnot пролистает несколько кадров видео. После завершения процедуры автоматического определения границ изображения, будет автоматически выбран режим "Попиксельно" в том же разделе и поля ввода справа заполнятся цифрами, соответсвующими размерам обрезания слева, сверху, справа и снизу соотвественно расположению. Теперь стоит проверить насколько хорошо компьютер справился с этой задачей, для этого переходим в окно предварительного просмотра и внимательно смотрим на края изображения, на разных кадрах, желательно наиболее светлых. Если где-то остались черные полоски, или неровные границы кадра - обрезаем их при помощи стрелок около строк ввода размеров обрезания. Режем беспощадно, добиваясь четкого прямоугольного кадра, потому что пикселем больше, пикселем меньше - роли не играет, а вот кривой кадр будет потом бросаться в глаза, да и сжиматься будет хуже. После того, как кадр идеально вырезан, выбираем в разделе пункт "Умное урезание (полное)", после чего изображения будет еще немного подрезано, для получения правильной пропорции отношения высоты к ширине.

Теперь самое время проверить результаты нашего труда, для этого переключаемся в окно предварительного просмотра и в меню "Смотреть" отмечаем пункт "С измен. размеров". Мы должны увидеть идеально обрезанный кадр, без черных полос с боков и неровных границ (если это не так, Вы плохо сделали обрезание кадра), и самое главное лица должны выглядеть естественно, т.е. не быть сплюснутыми или вытянутыми (если что-то не так, значит вы неправильно установили "Входящее разрешение" или "Пропорции вх. изображения").

Теперь переходим к одному из важнейших шагов - предварительному выбору размера кадра фильма. Почему важнейшему? Дело в том что для каждого фильма (а точнее для конкретной степени сжимаемости фильма) и для каждого битрейта существует только одно оптимальное значение размеров. И не думайте, что чем больше размеры, тем лучше качество картинки. Оптимальные размеры разные для каждого фильма и для каждого битрейта. Если выбрать размеры кадра слишком большие, то на экране будет много "квадратов", если же выбрать слишком малые, то мы просто подойдем к порогу сжатия и те же самые результаты могли бы быть получены для картинки большего размера, так мы впустую потратим место на болванке. Так что размер должен быть выбран оптимально! Почему предварительному? Да потому что мы еще пока не знаем степени сжимаемости фильма в данном разрешении. И вполне возможно, что фильм сжимается плохо и его размеры придется взять поменьше, а может быть наоборот, сжимается хорошо и можно выбрать размеры побольше. Степень сжимаемости, кстати, зависит от целого ряда параметров, среди которых повторяемость участков изображения от кадра к кадру, количество пикселей, изменяющих свой цвет на следующем кадре, количество и размеры областей, состоящих из пикселей, цвет которых неотличим человеческим глазом друг от друга и многих других. Но вот узнать степень сжимаемости не производя кодирование невозможно. Т.е. узнать степень сжимаемости можно только закодировав фильм. А чтобы закодировать фильм нужно выбрать его размеры исходя из степени сжимаемости. Вот такой замкнутый круг...

Но хватит философии, вернемся к практике. Итак нам необходимо выбрать размеры для нашего фильма. Причем воспроизведение видео на компьютере тоже накладывает свои ограничения - для того чтобы фильм проигрывался без рывков необходимо, чтобы его ширина была кратна 32, а высота кратна 16. Это в идеале. В принципе нет ничего криминального и в кратности ширины 16, но гарантий корректного вопроизведения такого фильма на всех видеокартах и на всех драйверах уже не будет, хотя чаще всего и будет работать.

Обращаем внимание в среднюю часть закладки "Разрешение":
Здесь мы видим раздел "Выходное разрешение", содержащий информацию о размере видео (Ширина x Высота), кратности ширины и высоты (Дел-ль Ш. и Дел-ль В.) при выборе размеров, процент ошибки отношения высоты к ширине в получаемом файле (Ошибка проп., обычно ниже 2%), а так же еще ряд параметров, которые не представляют для нас особого интереса. Ниже расположен бегунок, при помощи которого можно изменять размеры видео в соотвествии с заданной кратностью ширины и высоты (рекомендую вам не менять кратности). При перемещении бегунка, изменяется конечное разрешение, отображаемое в разделе "Выходное разрешение". И, паралельно, пересчитывается параметр Бит/(Пиксель*Кадр), отображаемый в одноименном разделе.
Именно параметр Бит/(Пиксель*Кадр) будет нашей предварительной оценочной характеристикой качества изображения. Как я уже говорил, не зная степени сжимаемости, нельзя выбрать оптимальное разрешение, но эмпирически получены следующие постулаты:

  • Не опускайте высоту изображения ниже планки в 256 пикселей и не заползайте за цифру 400. Превышение планки в 400 пикселей оправдано в случае кодирования с высоким битрейтом, более 1000 Mbps, когда исходный материал имеет не анаморфное PAL разрешение 4:3. Но с таким битрейтом Вы, скорее всего, не уложитесь в 700 MB, поэтому это актуально лишь для короткометражных фильмов, либо при кодировании на 2 CD, либо при последующей записи фильма на DVD болванку;
  • Опускать Бит/(Пиксель*Кадр) ниже 0.15 не стоит. Исключением является кодирование кодеком x264;
  • При кодировании фильма на 1CD придерживайтесь значения Bits/(Pixel*Frame) в районе 0.20;
  • При кодировании фильма на 2CD придерживайтесь значения Bits/(Pixel*Frame) в районе 0.27;
  • Если Бит/(Пиксель*Кадр) не удается поднять выше 0.15 при разумных значениях высоты - увеличьте битрейт путем увеличения количества дисков или за счет уменьшения объема звуковой дорожки;


Не следует забывать также, что при воспроизведении на экране ТВ, фильм с размером 288 по вертикали, но без "квадратов", вызванных пониженным Бит/(Пиксель*Кадр), смотрится лучше, чем тот же фильм с 384 строками и с пониженным Бит/(Пиксель*Кадр), в следствие неидеальности самого телевизора. Но не переборщите, а то можете перешагнуть за предел сжимаемости.

И, главное, помните - наш выбор лишь предварителен, мы еще не знаем истиного значения степени сжимаемости фильма. Может случиться так, что фильм с Бит/(Пиксель*Кадр) = 0.28 будет выглядеть ужасно, а может быть и при значении 0.11 будет выглядеть великолепно.

Если Вы все же решили использовать кодек DivX 5, перейдите к окну предварительного просмотра. Здесь, при помощи ползунка, Вам необходимо установить момент начала титров. Т.е. момент, когда кино закончилось, а титры еще не начались. Обычно появлению титров предшествует кадр с черным экраном, именно на этот момент необходимо и установить ползунок. Хотя, конечно, черного экрана может и не быть, тогда необходимо просто поймать момент их начала. Установив ползунок в нужном месте, нажимаете кнопку "Начало титров". Нужно это, как Вы наверное поняли из предыдущего повествования, для того, чтобы кодировать титры (на которые обычно мало кто обращает особое внимание) с пониженным битрейтом, экономя место для самого фильма.

Теперь в окне предварительного просмотра нажимаем кнопку Сохранить & Кодировать. На экране появится окно "Сохранить .avs".

6. Этап пятый. Тест сжимаемости.

Как уже говорилось ранее, каждый видеоматериал обладает неким коэффициентом сжимаемости, который показывает насколько хорошо может быть этот материал сжат при помощи алгоритма MPEG-4. Но единственный способ получить этот коэффициент - провести тестовое сжатие, что потребует достаточно много времени. Поэтому, для оценки степени сжимаемости фильма, проводят кодирование не всего фильма целиком, а лишь отдельных его частей (обычно 5%).
Для проведения теста сжимаемости отмечаем пункт "Вкл." в разделе "Тест на сжимаемость" и запусаем процесс нажатием кнопки "Сейчас". После утвердительного ответа на вопрос, действительно ли мы хотим провести тест сжимаемости, начнется тестовое кодирование части исходного материала

По окночании процесса, все окна отображаюшие ход процесса будут автоматически закрыты, а в заголовке окна предварительного просмотра появится надпись "Проверка сжимаемости: Завершено". Обратим теперь свое внимание на раздел Бит/(Пиксель*Кадр), который находится в нижней части главного окна GKnot. Ориентируясь именно на цифру этого раздела мы предварительно выбирали размер видео. После же проведения теста сжимаемости, в этом разделе появятся 2 новые цифры: приблизительный коэффициент, показывающий насколько хорошо может быть сжат данный фильм (3-ий столбец) и выраженное в процентах отношение между оптимальным и выбранным Бит/(Пиксель*Кадр).
В данном примере разрешение выбрано таким, что Бит/(Пиксель*Кадр) равен 0.140, а тест сжимаемости показал что оптимальным будет значение 0.139, при этом выбранное значение составляет 99.7% от оптимального.

Теперь необходимо скорректировать разрешение с учетом результатов теста сжимаемости. Если выбранное значение совпадает с оптимальным, т.е. процентное соотношение равно 100%, то выбрано самое оптимальное разрешение, и вы получите идеальное изображение. Если соотношение составляет более 100% это перебор, вы не получите значительного улучшения качества изображения, использовав в пустую отведенный для фильма размер файла, в этом случае необходимо увеличить разрешение. Процентное соотношение в интервале 80-100% дает очень хороший результат, интервал 60-80% говорит о том, что качество будет нормальным, значения в интервале 40-60% так же являются приемлемыми для некоторых фильмов, опускаться же ниже 40% крайне не рекомендуется, это уже будет отвратительное качество. Исключением является кодек x264, который при тестовом кодировании очень завышает свои требования, и при 30% может дать очень качественную картинку. Но и для него без острой необходимости опускаться ниже 40-50% от тестового значения не рекомендуется.

Как уже упоминалась выше, на степень сжимаемости влияют такие параметры как метод фильтрации при масшатабировании и фильтр шумов, но для того чтобы узнать насколько изменится степень сжимаемости при изменении этих параметров необходимо повторно проводить тест сжимаемости, меняя необходимые параметры.

7. Этап шестой. Кодирование.

Итак, разрешение для фильма выбрано, можно приступать к собственно кодированию. Опять вызываем окно "Сохранить .avs" из меню Файл -> Сохранить & Кодировать окна предварительного просмотра. Удостоверяемся что все параметры выбраны так же, как при проведении теста сжимаемости.

Теперь нажимаем кнопку Сохр & Кодир и в появившемся диалоговом окне указываем, куда и под каким именем сохранить AviSynth-скипт (служебный файл, необходимый в процессе кодирования).

После этого, появится диалоговое окно "Панель контроля кодирования", в котором необходимо настроить параметры для автоматического кодирования видео и наложения звуковой дорожки.
  • Первым делом удостоверимся, что выбран режим многопроходного кодирования, в правом верхнем блоке переключателеей должен быть выбран пункт "Многоходовой". Затем перейдем к закладке Аудио 1.
  • Проверяем, чтобы в строке Файл аудио был выбран файл с нашей звуковой дорожкой. Если его там нет, указываем его снова, нажав на кнопку "Выбор".
  • В разделе переключателей выберем пункт Только объединять, указывая, что обрабатывать звук не надо, а после кодирования необходимо просто наложить его.
  • Теперь обратим внимание на раздел "Задерж", здесь выставляется задержка аудиопотока отностительно потока видео. Если при создании d2v-проекта был выбран режим Decode to WAV, то время задержки было автоматичеки учтено при создании wav-файла и следовательно необходимо установить параметр "Задерж" в ноль.


Если же в программе DGIndex для получения звука использовался режим Demux, то задержку необходимо учитывать. Выяснить величину задержки можно либо заглянув в файл "VTS_0х - Stream Information.txt", который DVD Decrypter заботливо разместил в том же каталоге, что и vob-файлы. Либо просто отбратиться к назанию файла, например для файла "ssch AC3 T01 3_2ch 192Kbps DELAY 197032ms.ac3" задержка, как явствует из его названия составляет 197032ms. Если задержка представляет собой отрицательное число, то необходимо указать задержку без знака минуса и отметить пункт "отрицательная". В разделе "Интерливинг" оставляем все значения по умолчанию и переходим к закладке видеокодека.
Очередной раз проверим правильность настроек кодека для первого и последующих проходов, а так же настройки для кодирования титров, нажимая соотвествующие кнопки "First Pass" и "Second Pass". Сделать это надо обязательно, поскольку GKnot контролирует нажатия этих кнопок и не даст возможности продолжить без просмотра настроек. Активизируем функцию пересчета битрейта при несовпадении размера файла, отметив флажек "Re-Calculate Bitrate if needed".

Нажимаем кнопку "Add Job to Encoding Queue" для добавления задания в очередь кодировния и положительно отвечаем на вопрос о том, хотим ли мы приступить к кодированию прямо сейчас.
GKnot автоматически переключится на закладку Кодировщик, в верхней части которой, будут видны задания кодирования, а в нижней будут повляться комментарии к ходу выполнения. Вот теперь остается лишь ждать завершения кодирования, после окончания которого будет получен готовый avi-файл.

Настройки кодека XviD

Основное окно настройки кодека имеет следующий вид:
В большинстве случаев при кодировании достаточно произвести настройки только в этом окне, указав количество проходов и требуемый битрейт (или требуемый размер видеофайла). Однако сразу после установки кодека (и в некоторых специфических случаях) не помешает полазить по некоторым расширенным опциям.

Рассмотрим настройки Profile @ Level:
  • Первый элемент окна - выпадающее меню. Здесь можно выбрать стандартные предустановки, которые должны быть совместимы с аппаратными проигрывателями. Здесь только готовые предустановки для разрешения, битрейта и других параметров, которые можно увидеть на закладке Level. Но если вы пытаетесь сжать готовый фильм, то для него потребуется своё разрешение и битрейт. В связи с этим, эта функция почти не применима. По умолчанию можно поставить "unrestricted" или "AS @ L5".
  • Опция "Quantization type" даёт возможность выбора типа матрицы квантизеров.
    • "H.263" - это стандартная матрица квантизеров для Mpeg4. Это даёт менее чёткую картинку, чем MPEG матрица и рекомендуется делать для битрейтов ниже 900 kBit/s.
    • "MPEG". Этот выбор даст более чёткую картинку и соответственно, требует битрейтов больших, чем 900 kBit/s.
    • "MPEG-Custom" даёт возможность задавать самому матрицу квантизеров.
  • Опция "Adaptive Quantization" включает возможность маскировки ярких и тёмных мест при сжатии. Раньше эта опция называлась "lumi masking". Эта опция нужна для того, что бы увеличить коэффициент сжатия исходного материала. Теоретически, человеческий глаз не заметит такого преобразования. Но на практике, при включении этой опции происходят искажения. В кодере Xvid этот алгоритм реализован недостаточно качественно.
  • Опция "Interlactd Encoding " включает работу кодека с чересстрочным видео. При включении этой опции кодек начинает сжимать не кадры, а поля. Эта опция пригодится только в том случае, если вы производите сжатие без деинтерлейса. Я не вижу практического применения такому сжатию, но кто знает, может Вам пригодится.
  • Опция "Quarter Pixel " включает разрешение с точностью до четверти пикселя. Это повышает чёткость, особенно на низких разрешениях, но вместе с этим добавляет шум на изображение. Естественно, просто так это не происходит. Включение Quarterpel повышает загрузку процессора и увеличивает поток, используемый для этого. Не поддерживается аппаратными MPEG-4 плеерами.
  • Опция "Global Motion Compensation" предназначена для компенсации движения. Она начинает функционировать, когда идёт панорамирование, наезд или отъезд на объект, а так же при вращении. Не поддерживается аппаратными MPEG-4 плеерами.
  • Опция BVOPs включает использование B-frames.
    При сжатии видео используется 3 типа кадров: I,P и B - frames. I-frames - это кадры с очень небольшим коэффициентом компрессии. Их кодер описывает целиком. I-frames так же называются ключевыми кадрами. При просмотре сжатого фильма, вся навигация по фильму производится через ключевые кадры. После I-frames следует последовательность P-frames, например так: IPPPPPPPPPPPPPPPPIPPPPPPP и так далее. P-frames имеют гораздо больший коэффициент сжатия, т.к. в них кодер сохраняет информацию не обо всей картинке, а только о той ее части, которая изменилась по сравнию с предыдущим кадром. Для того, что бы еще больше повысить коэффициент сжатия, были введены B-frames. Они ставятся между двумя менее сжатыми кадрами (I,P-frames). Последовательность получается такой: IPBPBPBPBPBPBPIPBPBPBP… Коэффициент сжатия B-frames больше, чем коэффициент сжатия P-frames. Это достигается тем, что P-кадр сравнивается только с предыдущим кадром, а B-кадр с 2 окружающими его кадрами, и в B-кадре записывается, чем он отличается от них. Но вместе с этим, это накладывает определённые ограничения. Например, видеопоследовательность не может заканчиваться B-frames. Начинаться же видеоряд должен обязательно с I-кадра, т.к. в нём содержится вся информация об изображении. Итак, с B-frames мы можем сильнее сжать видео. Вы спросите, а причём здесь качество? Всё просто. Сильнее сжали, а размеры видео файла у нас те же самые. Этот "освободившийся" поток перераспределяется на все кадры.
  • Опция "Max consecutive BVOPs" Определяет максимальное количество идущих подряд B-frames. Если поставить 0, то мы попросту отключим использование B-frames. Если поставить 1, то последовательность кадров будет: IPBPBPBPBPI, если 2, то IPBBPBBPBBPI и т.д. Однако при очень большом количестве B-frames качество картинки может упасть (из-за высокой степени сжатия B-frames). Рекомендуется ставить 1 или 2.
  • Опция "Max consecutive BVOPs" Определяет максимальное количество идущих подряд B-frames. Если поставить 0, то мы попросту отключим использование B-frames. Если поставить 1, то последовательность кадров будет: IPBPBPBPBPI, если 2, то IPBBPBBPBBPI и т.д. Однако при очень большом количестве B-frames качество картинки может упасть (из-за высокой степени сжатия B-frames). Рекомендуется ставить 1 или 2.
  • Опция "Quantizer offset" показывает, сколько нужно прибавить к квантизеру B-кадров относительно расчётной величины после Quantizer ratio. Изменять этот параметр не стоит. Если включить опцию "Packed bitstream", то производится упаковка P-кадров и B-кадров в одном потоке. Это даёт возможность декодировать B-frames без задержек. При 2 проходном кодировании и включении этой опции кодер работает неправильно. Если у вас достаточно мощный процессор, нет никакого смысла включать эту опцию.
  • Опция "Closed GOV" предназначена для того, что бы перед I-кадрами никогда не стоял B-кадр. Если вы не собираетесь сжатый материал впоследствии резать или сращивать, нет никакой надобности в этой функции. Зато при отключении этой функции качество можно ещё повысить за счёт добавления B-кадров. Если же, вы собираетесь впоследствии как-либо монтировать Mpeg4, то вам понадобится включение этой функции.
Почти дословно: "Функция Aspect Ratio создана для использования в контейнере mp4. К сожалению, при упаковке видеопотока в остальные контейнеры (напр. .avi, .ogm, .mkv), соотношение Aspect Ratio не учитывается. Поэтому имейте ввиду, что использование Aspect Ratio, отличного от Square (default), может игнорироваться некоторыми плеерами, особенно под Windows. Поэтому используйте на свой страх и риск."
Однако, согласно спецификации контейнера Matroska (.mkv), "в нем поддерживается "анаморфное изменение размеров" ("anamorphic resize"). Вы можете установить размер изображения ваших matroska файлов. Например, в mkvmerge, AVI-Mux GUI или в проводнике Windows, используя matroska shell extension. Для воспроизведения анаморфного содержимого с правильными размерами нужно использовать ffdshow и опцию "overlay mixer".

Теперь разберемся с настройками типов работы кодека, доступ к которым можно получить с основного окна:
В выпадающем меню вы можете выбрать 3 типа работы кодека. Для каждого типа есть свои настройки, которые находятся под кнопкой "more...":

1. "Single Pass".
Это однопроходный режим работы с постоянным битрейтом. При вызове настроек однопроходного режима (нажатие на кнопку "more...") появится окно:
В этом окне есть всего 3 параметра.

  • "Reaction Delay Factor" служит для задания времени задержки реакции кодера на изменение качественных параметров видеосигнала.
  • "Averaging period" этот параметр определяет скорость реакции на изменение качественных параметров видеосигнала
  • "Smoother" параметр, определяющий количество кадров, в течении которых возможно понижение качества картинки для выдерживания заданного битрейта.

Twopass - 1st pass.
Это первый проход двухпроходного режима. О нём говорить особо нечего, заглянем только в его настройки:
  • В окошке "Stats filename" стоит название файла, в который будет записываться статистика от первого прохода о фильме.
  • "Discrad first pass" если убрать галочку с этого пункта, то во время первого прохода будет не только производится сбор статистики, так же будет производиться сохранение сжатого материала. Если вы используете двухпроходный режим, то нет никакого смысла это делать. Единственное, для чего может это понадобится - что бы сделать видео с переменным битрейтом за 1 проход. Но размер при этом будет абсолютно не управляем, он получится на усмотрение кодека.
  • "Full quality first pass" имеет смысл использовать только если Вы собираетесь сохранить видео, сжатое во время первого прохода. Если ее не включить, видео может получиться не совместимым со стандартом Mpeg4. Эта функция не повлияет на качество второго прохода, и обычно должна быть отключена.

Twopass - 2nd pass.
Это второй проход двухпроходного режима. Заглянем в его настройки:
  • "Stats filename" здесь указывается файл, в котором находится статистика от первого прохода. Вы спросите, зачем это надо? Дело в том, что уже появились программы, позволяющие править этот файл. Если вы создали (исправили) свой собственный файл статистики, то можно указать его здесь и кодирование будет происходить по этим данным.
  • "I-frame boost (%)" эта функция делает увеличение потока на I-frames. Указывается в процентном соотношении. То есть, если указать 10, то на I-frames пойдёт на 10 процентов больше битрейт, относительно расчётного значения (расчёт изначально производит кодер, а мы можем к этому ещё добавить).
  • "I-frames closer than… (frames)" здесь указывается расстояние между соседними I-frames, меньше которого считается, что ключевые кадры следуют друг за другом. Если какие-то I-frames попадают в этот предел, то производится уменьшение потока, расходуемого на них. При установке этого параметра в 1, производится отключение этой функции. Оптимальным значением я считаю 2.
  • "…are reduced by (%)" эта функция уменьшает битрейт первых I-frames в ряде идущих подряд I-frames. Последний I-frames идёт с нормальным коэффициентом сжатия.
  • "Overflow control strength (%)" этот параметр указывает, на сколько кодек может выходить за расчётные значения в каждом кадре (без разницы, уменьшение или увеличение). При установке этого параметра в 0, кодек начинает работать по-умолчанию (как заложено в алгоритме кодека).
  • "Max overflow improvement (%) " этот параметр определяет, на сколько можно поднимать битрейт, относительно среднего битрейта, на непродолжительных участках (там, где это требуется). Слишком большое значение замедляет работу кодера.
  • "Max overflow degradation (%)" этот параметр определяет, на сколько можно снижать битрейт, относительно среднего битрейта, на непродолжительных участках (там, где это требуется). Слишком большое значение замедляет работу кодера.
    Теперь мы дошли до компрессии по криволинейному алгоритму (Curve compression) . Эта функция есть только у кодека Xvid. Я бы не назвал это большим преимуществом кодека Xvid, но в определённых обстоятельствах это может добавить немного качества.
  • "High bitrate scenes (%)" здесь можно указать, сколько процентов битрейта может забрать кодек со сцен с высокими битрейтами и перераспределить на средне и низкобитрейтные сцены.
  • "Low bitrate scenes (%)" этот параметр указывает, сколько процентов битрейта нужно добавить сценам с низкими битрейтами. Этот битрейт будет забран со сцен со средним и высоким битрейтом.


При работе с компрессией по криволинейному алгоритму, перед тем, как им воспользоваться нужно произвести сжатие без него. Если Вы видите, что видео получилось недостаточно качественнее, посмотрев видео можно проанализировать, в каких местах плохо отработал кодек. С динамикой, как правило, проблем не бывает. Динамика - это высокобитрейтные сцены. Так же, к высокобитрейтным относится зашумлённое видео или видео с множеством мелких предметов. Так вот, если при просмотре оказалось, что динамика смотрится хорошо, а статика не очень, можно немного снять битрейт с динамичных и среднебитрейтных сцен, для этого нужно поставить какой-то процент в "Low bitrate scenes %". Если среднебитрейтные (движение есть, но его не много) сцены смотрятся то же не очень хорошо, то битрейт можно снять только с высокобитрейтных сцен. Для этого нужно проставить какое-то значение в опции "High bitrate scenes %". Как я уже сказал, эти параметры нужно подбирать экспериментально.
Далее рассмотрим установку требуемого битрейта для видеопотока. Возвращаемся к основному окну настроек кодека:
Здесь мы можем задать для двухпроходного режима:
  • Размер файла, который мы хотим получить (при этом кнопка будет подсвечена надписью "Target size (kbytes)").
  • Если кнопка подсвечена надписью "Target bitrate (kbps)", то задаваться будет средний битрейт, с которым будет кодироваться фильм.
  • Средний битрейт "Target bitrate (kbps)", либо
  • Квантизер "Target quantizer".


При однопроходном кодировании с выбором "Target quantizer" происходит кодирование с постоянным качеством, независимо от сложности сцен. Т.е. необходимый битрейт будет определяться кодеком так, чтобы в любой сцене, статичной или динамичной, качество полученного видео было одинаковым. При таком кодировании размер полученного файла будет абсолютно непредсказуемым. Поэтому кодировать таким способом имеет смысл лишь в том случае, если Вы собираетесь записать полученное видео на DVD, и по этой причине размер в 700 Mb Вас не лимитирует.

Также учтите, что у вас ещё есть звук, на который тоже надо оставить место. Если вы хотите сделать фильм на один CD диск, то для подсчёта размера видео лучше всего воспользоваться встроенным калькулятором, который учтёт размер звука в итоговом файле. В том случае, если кнопка подсвечена надписью "Target bitrate (kbps)", то задаваться будет средний битрейт, с которым будет кодироваться фильм. Для того, что бы переключить из одного режима в другой, нужно нажать на эту кнопку.
Для доступа ко встроенному калькулятору нажмите кнопку "calc...":
Здесь необходимо указать:
  • Target size (kbytes): размер файла, который Вы хотите получить. Можно ввести с клавиатуры или выбрать одну из стандартных предустановок. Если Вы собираетесь закодировать свой фильм на 1CD 700 Mb, выбираете 716800.
  • Subtitles (kbytes): размер файла с субтитрами. Либо ввести размер вручную, либо выбрать этот файл, воспользовавшись кнопочкой "..."
  • Format: формат контейнера, в который Вы собираетесь поместить Ваше видео.
  • Video: указать продолжительность фильма в часах, минутах и секундах, а также частоту кадров.
  • Audio: указать формат, в котором будет находиться звуковая дорожка (каким кодеком зажата, а в случае mp3 еще и то, переменный или постоянный у нее битрейт). Также необходимо указать собственно битрейт аудиодорожки. В случае, если Вы зажимали аудио каким-либо кодеком с переменным битрейтом, и точное его значение Вам неизвестно, Вам будет удобнее указать файл с аудио, воспользовавшись соответствующей кнопкой (неоходимо переключиться в режим Size вместо Average bitrate).
Нажав кнопку OK, Вы вернетесь к основному окну, где у Вас уже будет выставлен необходимый видеобитрейт, или размер видео-составляющей Вашего фильма, в зависимости от того, что у Вас было выбрано.

Теперь рассмотрим расширенные опции кодека XviD. Получить к ним доступ можно, нажав кнопку "Advanced options" в основном окне:
  • "Motion search precision" - точность поиска движения. Чем выше этот параметр, тем более качественно будут выглядеть движения. Авторы рекомендуют ставить не менее 5, в идеале 6. Но учтите, чем выше этот параметр, тем медленнее будет работать кодек.
  • "VHQ mode" эта функция позволяет оптимизировать режим макроблоков, вместо усреднения. Чем выше это значение, тем медленнее будет работать кодек. Качество вместе с этим повышается значительно (не сравнить с использованием B-frames). Нельзя использовать совместно VHQ mode и GMC (Global Motion Compensation).
  • "Use chroma motion" эта функция включает поиск движения по цветовой информации. Этот способ на много более точен, чем стандартный способ. Включение этого метода замедляет работу кодера.
  • "Frame drop ratito" количество пропускаемых кадров. Эта функция будет работать в том случае, если кодек считает, что для кодирования не хватает битрейта. В этом случае кодер начнёт выкидывать кадры. При выставлении в 0 не пропускается ни одного кадра, при выставлении в 100 пропускается столько кадров, сколько нужно кодеру для нормальной работы. Для получения качественного видео я не рекомендую использовать значения отличные от нуля.
  • "Maximum I-frame interval" максимальное количество кадров, которое может быть между ключевыми (I-frames). На качество кодирования это особо не сказывается, а вот на поиске фрагмента очень сильно. Объясню почему. При просмотре фильма, когда мы хотим переместится в какое-то произвольное место, мы передвигаем ползунок поиска. Если в том месте, куда мы попали, стоит ключевой кадр, то воспроизведение пойдёт сразу. А вот если ключевого (I-frame) нет, то мы будем слышать звук, а видео увидим только когда положение просмотра дойдёт до ключевого кадра.
  • "Use cartoon mode" эта функция введена для работы кодера с мультипликацией. Я не знаю, чем отличаются алгоритмы работы в этом режиме.

Перейдём на следующую вкладку "Quantization".
Что такое квантизеры уже объяснялось выше. В этом меню можно расставить, в каких интервалах будут работать квантизеры отдельно для I,P и B-frames. По большому счёту, не вижу смысла менять эти значения. Кодер Xvid распоряжается квантизерами достаточно хорошо. Но скажу, что это значит ещё раз.

  • "Min ..-frame quantizer" - минимально возможный квантизер для .. типа фреймов. Чем ниже это значение, тем более чёткая картинка будет получаться (при условии, что битрейт будет достаточно высоким для достижения этого квантизера). Для I-frame это будет самое низкое значение, для P-frame - повыше, а для B-frame самое высокое. Но лучше не трогать значения по-умолчанию.
  • "Max ..-frame quantizer" - максимально возможный квантизер для .. типа фреймов. Высокое значение этого параметра снижает детализацию картинки. Для I-frame это будет самое низкое значение, для P-frame - повыше, а для B-frame самое высокое. Но лучше не трогать значения по-умолчанию.
  • "Trellis quantization" на данный момент, эта функция работает только с матрицей квантования H.263. За счёт небольшого изменения математического алгоритма работы должно происходить улучшение качества. Эта функция экспериментальная. При включении этой опции я не заметил большой разницы от материалов, сжатых без неё. Разница была как на качелях, то в её пользу, то наоборот. Если учесть, что это использует нестандартные функции, то включать "Trellis quantization" наверное не стоит.

На последней вкладке находится отладочная информация кодека.
При выборе параметров оптимизации для конкретного процессора ("Performance optimizations") можно сделать 2 выбора:
  • "Automatically detect optimizations" - включает автоматический выбор оптимизации под ваш процессор.
  • "Force optimizations" - ручное выставление параметров оптимизации.
  • Следующая доступная функция "FourCC used". Объясню, что это такое. При сжатии, в заголовке AVI файла прописывается метка, каким кодеком это было сжато. При воспроизведении проигрыватель считывает эту метку и запускает соответствующий декодер. Для Mpeg4 совместимых кодеков возможна замена декодера. Так, сжимать видео мне больше нравится при помощи кодера Xvid, а просматривать при помощи декодера DivX (этот декодер имеет меньше проблем с разными проигрывателями и картинка после него имеет меньше артефактов). Для того, что бы изменить FourCC метку, нужно сделать выбор в выпадающем меню. Если здесь выбрать DX50 или DIVX, то для воспроизведения запустится декодер DivX5. Именно это я Вам и рекомендую сделать.


Далее, идут два пункта ("OutputDebugString debug level" и "Print debug info on each frame"), которые требуются для отладки кодека и при сжатии они абсолютно не нужны.

И последний пункт в этой закладке "Display encoding status". Эта опция включает информационную панель во время сжатия.
На этой панели будет отображена информация о квантизерах, которые были использованы при сжатии, диапазоне квантизеров для каждого типа кадров, средний битрейт и много другой информации о кодировании. Я обычно отключаю, т.к. неоднократно наблюдались глюки с различными программами, отличными от Virtual Dub (Mod).

И последнее, раздел Zones в основном окне. Здесь указываются интервалы, на которых нужно повышать или понижать битрейты. Этот пункт очень удобно использовать на титрах. На них не обязательно сохранять полное качество, но полностью отрезать их мне не нравится.
При нажатии на кнопку "Add" добавится ещё один пункт в списке. Для того, что бы его отредактировать, нужно нажать на кнопку "Zone Options... ":
Сверху здесь указывается, с какого кадра начнётся действие этого раздела. Его действие идёт до следующего раздела, а если следующего раздела нет, то действие идёт до конца фильма. Номер кадра вводится вручную. Посмотреть, с какого кадра вам нужно делать раздел очень просто. Для этого в VirtualDub нужно перейти на нужный кадр (двигая слайдер мышью, а для точного позиционирования стрелками право-лево). Внизу отображается номер кадра, на котором вы остановились.
Вы можете просто выделить его и скопировать в буфер. После вставления этого номера в окошко "Start frame #" можно продолжать настройки для этого раздела. Всё, что вы настроите ниже, будет применено только для этого раздела.
Далее, в настройках интервалов, можно указать коэффициент битрейта или квантизер, с которым будет производится сжатие.
При выборе параметра "Weight" в окошке нужно указать коэффициент умножения битрейта (ставится вручную или ползунком). Если поставить 0,5, то битрейт снизится в 2 раза относительно расчётного значения. При выставлении в 1 с битрейтом ничего не произойдёт.
Если выбрать "Quantizer", то в окне нужно указать квантизер, с которым будет производиться сжатие. Это не очень удобно. Я пользуюсь снижением битрейта. Пожалуй, этот пункт можно использовать для того, что бы получить на каком-то промежутке предсказуемое качество. Для этого мы задаём на этом промежутке какой-то квантизер (например 10 - это довольно высокий квантизер, при котором практически все детали будут сохранены).

  • "Begin with keyframe" если вы поставите галочку в этом пункте, то первый кадр этого раздела будет сделан как I-frame (ключевой кадр). Это бывает очень удобно, когда вы хотите пометить начало какого-то момента.
  • "Greyscale encoding" включение этой функции переводит изображение в чёрно-белое.
  • "Chroma optimizer enabled" эта функция усредняет цвета на ярких/тёмных местах. Это приводит к более качественным краям. Я бы рекомендовал использовать этот режим только для мультфильмов.


Теперь немного расскажу, как можно просматривать фильмы, сжатые при помощи кодека Xvid... Если при кодировании Вы выставили FourCC в DivX или DX50, при воспроизведении у Вас запустится системный декодер DivX. Это наулучший случай. Если же Вы оставили FourCC XviD, тоже неплохо. Тогда может запуститься декодер XviD. Если же Вас не устраувает качество XviD-овского декодера, можно либо изменить FourCC в уже зажатом фильме при помощи спец. программ (напр. abcAVI Tag Editor), либо настроить декодер DivX 5, чтобы именно он запускался при проигрывании всех совместимых с ним кодеков. Для этого необходимо установить галочку напротив "Support Generic Mpeg-4":
Итак, я рассказал про все настройки кодека Xvid, что должно значительно облегчить вам жизнь при настройке этого кодека и последующем кодировании. Для некоторых параметров были даны рекомендации, для других Вы должны сами решить, как их настроить, вся информация для этого есть в статье. На этом я могу закончить статью о кодере Xvid.
Кодек x264

AVC/H.264 – это часть MPEG-4 стандарта, определяющая один из самых современных и технически совершенных форматов видео кодирования. Он был совместно завершён и специфицирован в 2003 году двумя группами: MPEG из Интернациональной Организации Стандартизации (ISO) и VCEG из Интернационального Телекоммуникационного Союза (ITU) Организации Объединённых Наций (UNO). AVC/H.264 стандарт был разработан Joint Video Team (JVT), которая включает экспертов из MPEG и VCEG. Со стороны MPEG, стандарт называется MPEG-4 Часть 10 (ISO 14496-10), а со стороны ITU – H.264. Под этим названием формат уже широко известен.

С выходом спецификации H.264 многие компании начали разрабатывать свои версии видеокодеков по этому стандарту. У всех этих кодеков есть по крайней мере один серьезный недостаток - их лицензионность, и, как следствие, небесплатность. Исключением является кодек x264, который начал развиваться как проект с открытым исходным кодом (open source). Над ним работает большое количество квалифицированных специалистов со всего мира, периодически выпуская обновления, исправляющие баги, увеличивающие скорость кодирования за счет оптимизации алгоритма, добавляя новые фичи. На сегодняшний день x264 является наилучшим среди AVC-кодеков по соотношению качество/скорость кодирования.

Однако, правильнее будет называть x264 не кодеком, а кодером, т.к. он не включает в себя декодера для проигрывания зажатого видеоматериала. Для просмотра видео, зажатого x264, придется установить декодер стороннего производителя. Так, например, для проигрывания AVC-видео, находящегося в контейнерах AVI или Matroska можно использовать декодер от VSS, либо ffdshow. А для контейнера MP4 лучше использовать декодер Nero Digital, устанавливающийся вместе с пакетом Nero Vision Express.

Версии кодека x264 выходят двух разновидностей:

  • VFW (Video for Windows)
  • CLI (Command line Interface)


Первая представляет собой привычный вариант кодека, устанавливаемый в систему, и доступный для большинства программ для кодирования видео (VirtualDub, FlaskMPEG, GordianKnot и т.п.).

Вторая представляет собой .exe-файл, запускаемый с определенными параметрами (местоположение исходного видео, параметры кодирования, имя выходного файла и т.п.), и дающий на выходе видеофайл в контейнере mp4.

В данной статье будут рассмотрены настройки кодека x264 в версии VFW.

Настройки кодека x264

Основное окно настройки кодека имеет следующий вид:
В большинстве случаев при кодировании достаточно произвести настройки только в этом окне, указав количество проходов и требуемый битрейт. Однако сразу после установки кодека (и в некоторых специфических случаях) не помешает полазить по некоторым расширенным опциям.

Закладка Rate Control:
  • Keyframe boost на средних битрейтах можете попробовать 20%. На очень низких битрейтах лучше сбросить в 0%.
  • B-frame reduction (если Вы решили использовать B-кадры) зависит от используемого битрейта. В большинстве случаев вполне подходит значение 30%, используемое по умолчанию. Однако, в случае кодирования анимированного видео (мультипликации) рекомендуется использовать 50% B-frame reduction.
  • Опция Bitrate variability определяет, насколько сильно поток данных может изменяться с течением времени. Т.е., если Вы планируете кодировать с битрейтом 500kbps и устанавливаете значение Bitrate variability в 40%, максимальное значение битрейта на более сложных сценах будет составлять 700kbps. Соответственно, чем ниже это значение, тем лучше будут выглядеть статичные сцены, а динамичные сцены более смазаны и невыразительны. Чем выше Вы установите это значение, тем большей стабильности качества всего видео Вы достигнете: статичные сцены будут выглядеть чуть хуже, чем при низком значении, но динамичные будут выглядеть гораздо лучше. Другими словами, если исходное видео насышено частыми переходами от спокойных сцен к динамичным и назад, устанавливайте более высокое значение. Если видео более постоянно по динамике сцен, можете понизить.
  • Scene Cut Threshhold на средних битрейтах можете попробовать 45%. На очень низких битрейтах лучше сбросить в 0%.


Закладка MBs & Frames:
  • Max Ref. frames: вполне достаточно установить значение 4-5. Если же Вас не смущает небольшое увеличение времени кодирования, можете использовать 8. Для достижения максимально возможного качества можете использовать 16 (максимально возможное значение): качество немного возрастет, но за это придется расплачиваться временем кодирования.
  • В разделе Partitions включаем все галочки, как показано на рисунке.
  • В разделе B-Frames указываем параметры B-кадров:
  • Max consecutive - количество последовательных B-кадров. Выставляете 2-4 для высокобитрейтного кодирования (на 2 CD), 1 - для кодирования анимации и на низких битрейтах (на 1 CD или меньше). Не используйте вообще B-frames для Очень Низких битрейтов.
  • Галка Use as references позволяет использовать B-frames как Reference Frames, что может немного увеличить качество. Однако, включение этой опции может привести к глюкам как кодера, так и декодера. Поэтому ее включение не рекомендуется.
  • Включаете Adaptive и Weighted biprediction.
  • Bias оставляете равным 0.


Закладка More:
  • Partition decision выбираем 6 (RDO), т.к. это заметно повлияет на качество выходного видео.
  • Method - алгоритм анализа движения. Для сохранения приемлемой скорости кодирования рекомендуется использовать Hexagonal Search. Однако, если у Вас достаточно сложное исходное видео, или Вы хотите достичь абсолютного максимума качаства, можете попробовать Exhausive Search (что значительно снизит скорость кодирования).
  • Range - диапазон поиска при анализе движения. Значение по умолчанию (16) вполне удовлетворительно. Но для достижения максимального качества можете попробовать 32 (что значительно снизит скорость кодирования). Значения выше 32 использовать не рекомендуется, т.к. это может привести к ухудшению качества. Вообще, значение Range зависит от частоты кадров исходного видео. Для меньшего Framerate требуются бОльшие значения Range.
  • Sample AR - пропорции видео. Имеет смысл использовать при использовании контейнеров MKV или MP4 (т.к. они позволяют хранить информацию о пропорциях видео потока). А вообще, лучше оставить 1:1.
  • FourCC оставляете H264.
  • Обязательно включаете CABAC.
  • Включаете Deblocking filter, но значения Strength и Threshold оставляете нулевыми.

Что такое матрицы распределения квантов и с чем их едят.

Несмотря на то, что популярность стремительно набирают кодеки нового поколения, старому доброму XviD ещё жить и жить, пока люди не повыбрасывают на помойку свои старые консервные видео проигрыватели. Это ещё боюсь не год и не два. В общем дело вкуса, лично я сам давно для себя определил формат коллекции - AVC.
Тем не менее, XviD не так мало может, как может показаться на первый взгляд и у него есть одно неоcпоримое преимущество перед AVC(помимо консервной совместимости):

XviD - кодек, проверенный временем, стабильный и надёжный

Вот решил немного поделиться опытом кодирования с помощью XviD и ввести ещё несведущих в азы видеокомпресии. Если вы ничего не знаете о том, как работают видеокодеки - дальше лучше не читать, будет туго и бессмысленно.
Всем кому интересно - добро пожаловать. Материал собран с использованием информации, собранной по крупицам с doom9, моих комметнариев и дополнений. За подробные исследования respect Sharktooth, Didee, Dark Shikari и прочим мега кодерам с doom9
Приступим...
Что такое макроблоки? Плохо если вы не в курсе. Каждый фрейм mpeg4 поток состоит из типичных макроблоков размером 16x16 или 32x32. Каждый из макроблоков состоит в свою очередь из блоков 8x8, вокруг которых и пляшет алгоритм видеокомпрессии.
Самое ценное в видеокомпрессии - коэффициент сжатия, поэтому вместо того, чтобы хранить блоки в виде растрового изображения, макроблок хранится в виде сложной формулы, которая имитирует оригинальное изображение настолько точно, насколько это возможно в отведённые для конкретного макроблока биты.
Человеческий глаз наиболее чувствителен к изменениями в яркости изображения, чем к искажениям в цветах. Поэтому в mpeg4 заложено изначально резервировать больше битрейта для точной передачи яркости, чем для достоверной передачи цветов.
Каждый блок 8x8 представляется не в виде пикселей, а в виде единственной величины, которая передаёт среднее значение яркости или цвета в массиве 8x8, а все остальные значения представляют собой математические зависимости, в которых находится исходный блок от заданной величины яркости и цвета.
Другими словами, для конкретного макроблока задаётся некое значение, из которого путём математических преобразований восстанавливается блок целиком таким образом, чтобы он максимально был похож на исходный.
Всё остальное место занимают пиксели, точнее то, что мы привыкли называть пикселями, а на самом деле просто данные, которые передают геометрические детали изображения.
Присмотримся к блоку повнимательнее:
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X
X X X X X X X X
Значение в верхнем левом углу передаёт среднее значение макроблока. Т.е. если макроблок описывает кусочек неба, то грубо говоря в этом углу будет храниться среднее значение голубого цвета.
Вправо и вниз от этого угла расходятся значения отклонений от заданной величины.
Сверху вниз или справа налево в блоке по нарастающей описываются детали.
Если обратиться к исходному блоку 8x8, то детали трансформируются в значения в зависимости от частоты конкретной детали. Понятие частоты ту имеет несколько иной смысл. Чем тоньше деталь, тем выше частота, которая её описывает.
Таким образом, чем правее позиция в блоке, тем выше частота и соответсвенно более точно передаётся конкретная деталь.
Например:
В блоке 8x8 с кусочком неба почти нет деталей, поэтому частота в этом блоке очень низкая.
В блоке 8x8 в который попали 5 или 6 спичек появляется больше деталей, но не так много, поэтому частота такого блока находится на среднем уровне.
Блок 8x8, в который попали волосы крупным планом или трава или кусты, насыщен мелкими деталями, поэтому его частота высока.
Как видно, значение в блоках передают горизонтальные и вертикальные частоты деталей исходной картинки.
Формула, которая преобразует детали в частоты макроблока, называется Дискретная Косинусоидальная Трансформация (по англ. Discrete Cosine Transformation или DCT)
Теперь посмотрим на макроблок с учётом того, что мы уже о нём знаем.

Код:

Среднее значение цвета и яркости всего блока
                        I
                        I   Низкие частоты (крупные детали)
                        I   I
                        I   I     Средние частоты (обычные детали)
                        I   I      I
                        I   I      I
                        I   I      I         Высокие частоты (самые мелкие детали)
                        I   I      I         I
                        X--X--X--X--X--X--X--X
                        X--\--X--X--X--X--X--X
Низкие частоты -------- X--X--\--X--X--X--X--X
                        X--X--X--\--X--X--X--X
Средние частоты ------- X--X--X--X--\--X--X--X
                        X--X--X--X--X--\--X--X
                        X--X--X--X--X--X--\--X
Высокие частоты --------X--X--X--X--X--X--X--A
                                             I
                                             I
                           Математическое описание самой смой тонкой
                           детали по горизонтали и вертикали
Всё, с блоками надеюсь всё понятно, теперь перейдём к главному: квантовым матрицам.
Матрица распределения квантов (МРК) выглядит примерно так :

Код:

08 16 19 22 26 27 29 34
16 16 22 24 27 29 34 37
19 22 26 27 29 34 34 38
22 22 26 27 29 34 37 40
22 26 27 29 32 35 40 48
26 27 29 32 35 40 48 58
26 27 29 34 38 46 56 69
27 29 35 38 46 56 69 83

Теперь попробуем описать в простых словах всю сложность процесса. Для начала разберёмся что такое в принципе распределение квантов. Распределение квантов - это процесс выборочного уничтожения информации из первоисходника с как можно меньшими изменениями в визуальных ощущениях от просмотра. Каждое значение в МРК это порог для DCT формулы для преобразования описания детали в частоту. Т.е. МРК описывает на какой частоте детализации стоит выкинуть исходный материал из процесса компрессии. Все детали ниже этого порога будут просто проигнорированы при кодировании и бесследно потеряны. В этом и состоит суть компрессии с потерями. Детали просто теряются при компрессии, до того порога детализации, который указан в МРК. Как видно по матрице в примере, чем правее и ниже, тем выше порог потери детализации. Чем мельче деталь, тем больше места она займёт в видеопотоке, в противном случае она просто будет безвозвратно утеряна.
Чтобы приблизиться к пониманию процесса, опустимся до абстракции:
Представим себе блондинку с длинными волосами, стоящую перед светло-серой стеной за 2 прутьями тюремной решётки.
Представим, что это изображение помещается в блок 8x8
Блондинка и светлая стена будут близки по контрасту, поэтому разница между средними значениями яркости и контраста и их максимальными значениями будет невелика.
Значения в блоке будут ниже и практически могут не преодолеть порога потери детализации. Это значит, что разница между участками будет минимальной и картинка превосходно будет поддаваться компресии.
Если бы стена была чёрной, контраст был бы намного больше и разница между средними значениями и максимальными будет зашкаливать. Если в такой блок не попадёт достаточно высокий порог из значений МРК, то либо блондинка может оказаться брюнеткой за счёт стены за ней, либо стена из чёрной станет серой, а скорее всего обе потеряют свой первоначальный цвет. В любом случае при более высоком контрасте через порог DCT пройдёт значительно больше деталей и попадут дальше в конвеер видеокомпрессора, который уже будет думать как же это всё запаковать поуютнее.
Тюремные прутья перед девушкой - детали, но совсем не мелкие, они пойдут в макроблок по низкой частоте.
(По крайней мере, если они будут отличаться цветом от блондинки)
Мы забыли, что у девушки есть волосы и разумеется волосы имеют сложную текстуру. Поэтому волосы пойдут в макроблок по высокой частоте.
Как видно по МРК, порог для высоких частот намного выше, чем для низких. Поэтому, чтобы волосы попали в видеопоток, они должны значительно отличаться от среднего значение цвета, иначе, могут просто слиться со средним фоном. Поэтому если разница со средним значением невелика (как в этом случае), детализация волос просто пропадёт на этом этапе. Ситуацию могут спасти разноцветные ленточки в волосах, которые увеличат контраст. Таким образом, чтобы детали на выходе получились чётким и резким, контраст деталей должен быть как можно дальше от среднего значения, иначе чёрная кошка утонет в чёрной комнате. Это упрощённое представление процесса видеокомпрессии. Для полноты картины надо добавить, что всё, вышесказанное справедливо для I-фреймов. МРК к p- b- фреймам применяется не напрямую, а после распределения векторов направления движения, что должно учитываться при составлении матриц.
Теперь подбираемся к главному. XviD кодек (забудем про DivX вообще, для меня он умер ) по умолчанию использует либо H.263 матрицу либо MPEG. H.263 даёт на выходе более размытую картинку с более точными значениями яркости/цветов, а MPEG передаёт больше деталей, но теряет больше параметров яркость-цвет. Эти матрицы по-умолчанию хороши в среднем для обычной штамповки. С помощью спец. подобранных матриц можно значительно улучшить результаты работы видеокомпрессора за счёт снижения сжимаемости картинки. Как видно, матрица в примере - как раз снижает сжимаемость, значение в среднем очень низкие.
Для чего могут использоваться квантовые матрицы:
Матрица для максимального сжатия устанавливает жёсткий порог деталей, чтобы битрейт расходовался более эффективно
В идеале можно разработать матрицы для конкретного типа видеоряда: космические баталии, мультики, аниме т.д.
С помощью матриц можно фильтровать шумы и артефакты, вычислив помеховые частоты можно добиться довольно точной фильтрации
В заключение, привожу матрицы, разработанные уважаемым г. Sharktooth, как на мой взгляд наиболее удачные в качестве исходного материала для экспериментов. Лёгкая подгонка этих матриц к конкретному фильму - и XviD будет творить чудеса.
EQM v3hr
Матрица для высоких битрейтов для кодирования DVD в полный анаромфный размер на битрейтах 1600Kbps+ (для фильмов со средним экншном)

Код:

8 10 10 10 11 11 13 15
10 10 10 10 11 12 14 16
10 10 11 11 13 14 16 18
10 10 11 13 15 17 19 23
11 11 13 15 19 22 26 29
11 12 14 17 22 28 34 41
13 14 16 19 26 34 44 55
15 16 18 23 29 41 55 72

15 15 15 15 16 17 19 22
15 15 15 15 16 18 20 23
15 15 16 17 19 20 23 27
15 15 17 19 22 25 29 33
16 16 19 22 28 32 38 43
17 18 20 25 32 41 50 60
19 20 23 29 38 50 66 81
22 23 27 33 43 60 81 106

EQM V3LR:
Матрица для низких битрейтов до 1500Kbps для кодирования DVD на полном анаморфном разрешении. На более высоких битрейтах - отличный выбор для фильмов насыщенных экшном.

Код:

8  14  14  14  15  15  18  21
14  14  14  14  15  16  19  22
14  14  15  15  17  19  22  25
14  14  15  18  21  23  27  31
15  15  17  21  26  30  35  40
15  16  19  23  30  38  46  56
18  19  22  27  35  46  61  76
21  22  25  31  40  56  76  99

19  19  19  19  20  21  24  28
19  19  19  19  20  22  26  29
19  19  20  21  23  26  29  34
19  19  21  24  28  31  36  42
20  20  23  28  35  41  48  55
21  22  26  31  41  51  63  76
24  26  29  36  48  63  83 103
28  29  34  42  55  76 103 134

EQM V3ULR
Матрица для очень низких битретов:
- уменьшает артефакты насколько это возможно сохраняя хорошую картинку на низких битрейтах
- Одна из лучших матриц для кодирования на 1CD

Код:

8  14  20  28  38  45  56  65
14  20  26  37  44  56  64  70
20  26  36  43  55  64  70  75
28  37  43  54  63  70  76  79
38  44  55  63  70  77  80  83
45  56  64  70  77  81  84  88
56  64  70  76  80  84  89  95
65  70  75  79  83  88  95 102

18  19  20  22  24  26  28  30
19  20  22  24  26  28  30  34
20  22  24  26  29  30  34  40
22  24  26  30  32  36  44  50
24  26  29  32  38  48  55  60
26  28  30  36  48  58  74  80
28  30  34  44  55  74  92 104
30  34  40  50  60  80 104 128

EQM V3UHR
Матрица для очень высоких битрейтов для кодирования DVD в полный анаморфный размер на очень высоких битрейтах. Точка насыщенности за счёт сжимаемости на 30% выше чем в матрице Didees 6of9

Код:

8  8  8  8  8  8  10  11
8  8  8  8  8  9  10  12
8  8  8  8  9  10  12  14
8  8  8  10  11  13  15  17
8  8  9  11  14  16  19  22
8  9  10  13  16  21  25  31
10  10  12  15  19  25  33  41
11  12  14  17  22  31  41  54

10  10  10  10  10  10  10  11
10  10  10  10  10  10  10  12
10  10  10  10  10  10  12  14
10  10  10  10  11  13  15  17
10  10  10  11  14  16  19  22
10  10  10  13  16  21  25  31
10  10  12  15  19  25  33  41
11  12  14  17  22  31  41  54

EQM V3EHR
Матрица для кодирования на повышенных битрейтах разработана для кодирования только в режиме постоянное качество. Сжимаемость вообще никакая по сравнению с другими матрицами, но на то есть причины.
Сфера применения: создание резервных копий исходника или HD, не прибегая к кодекам, работающим по принципу "без потерь"

Код:

8   8   9  11  13  13  14  17
  8   8  11  12  13  14  17  18
  9  11  13  13  14  17  17  16
11  11  13  13  13  17  18  20
11  13  13  13  16  17  20  24
13  13  13  16  17  20  24  29
13  12  13  17  19  23  28  34
12  13  17  19  23  28  34  41

  8   8   8   8   8   8   8   8
  8   8   8   8   8   8   8   8
  8   8   8   8   8   8   8   8
  8   8   8   8   8   8   8   8
  8   8   8   8   8   8   8   8
  8   8   8   8   8   8   8   8
  8   8   8   8   8   8   8   8
  8   8   8   8   8   8   8   8

Автор: shellgen

Авторы: Странник, dvdtocd
info [Профиль]  [ЛС] 

PNYKLR

Пол: Пол:Муж

Стаж: 15 лет

Сообщений: 1933

Россия
Рейтинг

post 21-Ноя-2010 21:52 (спустя 1 минута) [-]0[+]

[Цитировать] 

Будут вопросы, задавайте, попытаюсь ответить.

_________________
.
info [Профиль]  [ЛС] 

JohnKox

Пол: Пол:Муж

Стаж: 12 лет

Сообщений: 212

Россия
Рейтинг

post 18-Ноя-2011 23:03 (спустя 11 месяцев 27 дней) [-]-5[+]

[Цитировать] 

Цитата:

Если при этом Video Type имеет значение FILM или FILM с процентным числом больше или равным 95%
это в этапе четвертом, два раза FILM повторяется.
Установлен плеер Light Alloy, скачанный с офф сайта, нужно ли заморачиваться мне с удаление каких-либо кодеков?

_________________
info [Профиль]  [ЛС] 
Показать сообщения:    
Ответить на тему

Текущее время: 28-Мар 23:18

Часовой пояс: GMT + 4



Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы