Mercurial > mplayer.hg
changeset 20725:873f7484ccdd
Initial (partially, about 40%) translation.
Patch from Andrew Savchenko birkoph at list ru
with small fixes.
Translated sections:
menc-feat-dvd-mpeg4
Sections to translate:
menc-feat-telecine
menc-feat-enc-libavcodec
menc-feat-xvid
menc-feat-x264
menc-feat-video-for-windows
menc-feat-vcd-dvd
author | voroshil |
---|---|
date | Tue, 07 Nov 2006 12:31:37 +0000 |
parents | b8fe18a742ce |
children | feaa7c25738f |
files | DOCS/xml/ru/encoding-guide.xml |
diffstat | 1 files changed, 4905 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/xml/ru/encoding-guide.xml Tue Nov 07 12:31:37 2006 +0000 @@ -0,0 +1,4905 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- synced with r20683 --> +<!-- **Partially** translated --> +<chapter id="encoding-guide"> +<title>Кодирование с <application>MEncoder</application></title> + +<sect1 id="menc-feat-dvd-mpeg4"> +<title>Создание высококачественного MPEG-4 ("DivX") рипа из DVD фильма</title> + +<para> + Одним часто задаваемым вопросом является "Как мне сделать рип самого высокого + качества для заданного размера?". Другой вопрос "Как мне создать DVD рип с самым + высоким возможным качеством? Я не беспокоюсь о размере файла, мне нужно лишь + наилучшее качество.". +</para> + +<para> + Последний вопрос, похоже, отчасти неверно сформулирован. В конце концов, если + Вы не беспокоитесь о размере файла, почему бы просто не скопировать весь MPEG-2 + видео поток с DVD? Конечно, ваш AVI файл будет занимать около 5GB, + но если Вы желате наилучшее качество и не волнуетесь о размере, то это, + несомненно, лучшее решение. +</para> + +<para> + В действительности, причиной, по которой Вы хотите перекодировать DVD в MPEG-4, + является именно Ваше <emphasis role="bold">беспокойство</emphasis> + о размере файла. +</para> + +<para> + Сложно дать универсальный рецепт о создании DVD рипа очень высокого + качества. Необходимо рассмотреть несколько факторов, и Вы должны + понимать эти детали, иначе Вы, скорее всего, разочаруетесь своими + результатами. Ниже мы исследуем некоторые из этих вопросов, а затем + рассмотрим пример. Мы предполагаем, что Вы используете + <systemitem class="library">libavcodec</systemitem> для кодирования видео, + хотя теория также применима и к другим кодекам. +</para> + +<para> + Если это кажется для Вас слишком сложным, то Вам, пожалуй, следует использовать + один из многочисленных неплохих фронтендов, указанных в + <ulink url="http://www.mplayerhq.hu/design7/projects.html#mencoder_frontends">разделе MEncoder</ulink> + нашей страницы родственных проектов. + Так Вы должны получить высококачественные рипы без особых размышлений, + поскольку большинство этих утилит разработаны для принятия умных решений за Вас. +</para> + +<sect2 id="menc-feat-dvd-mpeg4-preparing-encode"> +<title>Подготовка к кодированию: Идентификация исходного материала и кадровой + частоты</title> +<para> + Прежде, чем даже задумываться о кодировании фильма, Вам необходимо выполнить + некоторые предварительные действия. +</para> + +<para> + Первым и наиболее важным шагом перед кодированием должно быть опеределение + типа содержимого, с которым Вы работате. + Если источником Ваших исходных материалов является DVD или + широковещательное/кабельное/спутниковое TV, оно будет содержаться в одном из + двух форматов: NTSC для Северной Америки и Японии, PAL для Европы и т.д.. + Однако, важно понимать, что это только форматирование для показа на + телевидении, и оно часто + <emphasis role="bold">не</emphasis> соответствует + исходному формату фильма. + Опыт показывает, что NTSC материал существенно более сложен для кодирования, + т.к. в нём содержится больше элементов, которые нужно идентифицировать. + Для проведения удачного кодирования, Вам необходимо знать исходный формат. + Отказ от принятия этого во внимание приведёт к различным дефектам в Вашем + кодировании, включая безобразные гребешки (артефакты череcстрочной развёртки) + и повторяющиеся или даже потерянные кадры. + Кроме ухудщения картинки, артефакты так же уменьшают эффективность кодирования: + Вы получите худшее качество на единицу битпотока. +</para> + +<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-fps"> +<title>Определение кадровой чатоты источника</title> +<para> + Вот список, содержащий общие типы исходных материалов, где, + преимущественно, можно найти и их свойства: +</para> +<itemizedlist> +<listitem><para> + <emphasis role="bold">Стандартный фильм</emphasis>: Производятся + для театральных показов на 24 fps [кадр/сек]. +</para></listitem> +<listitem><para> + <emphasis role="bold">PAL видео</emphasis>: Записывается с помощью + PAL видеокамеры при 50 полях в секунду. + Поле состоит только из чётных или нечётных линий кадра. + Телевидение было разработано для обновления этих полей попеременно, + что используется как вид дешёвого аналогового сжатия. + Человеческий глаз, предположительно, компенсирует это, но однажды + поняв чересстрочную развёртку, Вы научитесь видеть её и на TV и + Вам больше никогда не понравится телевидение. + Два поля <emphasis role="bold">не</emphasis> составляют + целый кадр, поскольку они снимаются с задержкой в 1/50 секунды + и, следовательно, не формируют одно изображение, за исключением случая + полного отсутсвия движения. +</para></listitem> +<listitem><para> + <emphasis role="bold">NTSC видео</emphasis>: Записывается с помощью + NTSC видеокамеры при 60000/1001 полях в секунду, или 60 полях в секунду + в эпоху чёрно-белого TV. + В других отношениях аналогично PAL. +</para></listitem> +<listitem><para> + <emphasis role="bold">Анимация</emphasis>: Обычно рисуется на 24 fps, + но также существуют разновидности со смешанной кадровой частотой. +</para></listitem> +<listitem><para> + <emphasis role="bold">Компьютерныя графика (CG)</emphasis>: Может + быть с любой частотой кадров, но некоторые встречаются чаще остальных; + 24 и 30 кадров в секунду типичны для NTSC, и 25 fps типично для PAL. +</para></listitem> +<listitem><para> + <emphasis role="bold">Старый фильм</emphasis>: Различные низкие + кадровые частоты. +</para></listitem> +</itemizedlist> +</sect3> + +<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-material"> +<title>Идентификация исходного материала</title> +<para> + Фильмы, состоящие из кадров, называются фильмами с построчной (или прогрессивной) + развёрткой, а состоящие из независимых полей — фильмами с чересстрочной + развёрткой или просто видео; однако, последний термин двусмысленный. +</para> +<para> + Из-за дальнейших усложнений, некоторые фильмы будут смесью + нескольких, указанных выше. +</para> +<para> + Наиболее важным различием между всеми этими форматами является + то, что одни из них основаны на кадрах, а другие — на полях. + <emphasis role="bold">Любой</emphasis> фильм, подготовленный для + просмотра на телевидении (включая DVD), преобразуется в формат, + основанный на полях. + +<!-- FIXME: Существует ли лучший *краткий* (1-2 слова) перевод для + терминов pulldown и telecine? В литературе, которую я нашёл, + используют или указанные мной, по сути дела, транслитерации, + или так и оставляют английские названия. + А точный перевод можно выполнить только целым предложением + (т.е. определением), что совершенно неуместно в контексте + данного документа, где эти термины часто встречаются. --> + + Различные методы, с помощью которых это может быть сделано, совокупно + называются "телесин" (англ. telecine), одним из вариантов которого + является отвратительный NTSC "3:2 пулдаун" (англ. pulldown). + За исключением случаев, когда формат исходного материала был + также основан на полях (и с такой же частотой полей), Вы получите + фильм в формате отличном от исходного. +</para> + +<itemizedlist> +<title>Существует несколько общих типов пулдауна:</title> +<listitem><para> + <emphasis role="bold">PAL 2:2 пулдаун</emphasis>: Наилучший из всех. + Каждый кадр показывается за время длительности двух полей путем + извлечения чётных и нечётных строк и их попременного показа. + Если в исходном материале 24 fps, то это ускоряет воспроизведение фильма + на 4%. +</para></listitem> +<listitem><para> + <emphasis role="bold">PAL 2:2:2:2:2:2:2:2:2:2:2:3 пулдаун</emphasis>: + Каждый 12-й кадр показывается за время длительности трёх полей, + вместо двух. + Это помогает избежать проблемы 4%-го ускорения, но делает обращение + процесса существенно более сложным. + Такие вещи обычно наблюдаются в музыкальных произведениях, где + изменение скорости на 4% существенно повредит музыкальную партитуру. +</para></listitem> +<listitem><para> + <emphasis role="bold">NTSC 3:2 телесин</emphasis>: Кадры показываются + попеременно за время длительности 3-х полей или 2-х полей. + Это даёт частоту полей в 2.5 раза больше исходной частоты кадров. + Результат также очень незначительно замедляется от 60 до 60000/1001 + полей в секунду для поддержания частоты полей NTSC. +</para></listitem> +<listitem><para> + <emphasis role="bold">NTSC 2:2 пулдаун</emphasis>: Используется + для отображения материала с 30 fps на NTSC. + Так же мил, как и 2:2 PAL пулдаун. +</para></listitem> +</itemizedlist> + +<para> + Так же существуют методы для преобразования между NTSC и PAL видео, + но подобные темы выходят за рамки данного руководства. + Если Вам попался такой фильм, и Вы хотите кодировать его, + лучшим решением будет найти копию в исходном формате. + Преобразование между этими двумя форматами вносит большие потери + и не может быть точно обращено, так что Ваше кодирование + существенно пострадает, если оно делается из преобразованного + источника. +</para> +<para> + Когда видео находится на DVD, последовательные пары полей + группируются как кадр, даже если они не предназначены для + одновременного отображения. + Стандарт MPEG-2, используемый на DVD и цифровом TV предоставляет + возможность одновременно кодировать исходные кадры с построчной + развёрткой и сохранять число полей, в течении которых кадр + должен быть показан, в его заголовке. + Если был использован такой метод, фильм часто будет называться + как "мягкий телесин", т.к. процесс только указывает DVD-плееру + о необходимости применения пулдауна к фильму, не изменяя при этом + сам фильм. + Этот случай существенно предпочтителен, т.к. он может быть легко обращён + (в действительности, проигнорирован) кодером и т.к. он сохраняет + максимальное качество. + Однако, многие широковещательные и DVD студии не используют + надлежащую технологию кодирования и вместо этого производят + фильмы с "жёстким телесином", где поля в действительности + повторяются в кодированном MPEG-2. +</para> +<para> + Порядок действия в таких случаях будет описан + <link linkend="menc-feat-telecine">позже в данном руководстве</link>. + Сейчас мы дадим Вам несколько советов по идентификации типа + материала, с которым Вы работаете: +</para> + +<itemizedlist> +<title>Области NTSC:</title> +<listitem><para> + Если при просмотре Вашего фильма <application>MPlayer</application> + выводит, что частота кадров была изменена до 24000/1001 и она + никогда не меняется обратно, то это почти наверняка содержимое + с построчной развёрткой, которое было подвергнуто + "мягкому телесину". +</para></listitem> +<listitem><para> + Если <application>MPlayer</application> отображает попеременные + переключения частоты кадров между 24000/1001 и 30000/1001, и Вы + иногда видите "гребешки", есть несколько возможностей. + Сегменты с 24000/1001 fps почти наверняка являются "мягко + телесиненным" содержимым с построчной развёрткой, но части с + 30000/1001 fps могут быть как "жёстко телесиненым" содержимым + с 24000/1001 fps, так и NTSC видео с 60000/1001 полями в секунду. + Испольуйте два нижеследующих руководства для определения того, + с каким случаем вы имеете дело. +</para></listitem> +<listitem><para> + Если <application>MPlayer</application> никогда не показывает + изменения кадровой частоты и каждый отдельный кадр, где есть + движение, оказывается гребёнкой, Ваш фильм есть NTSC видео с + 60000/1001 полями в секунду. +</para></listitem> +<listitem><para> + Если <application>MPlayer</application> никогда не показывает + изменения кадровой частоты и два кадра из каждых пяти оказываются + гребёнкой, Ваш фильм представляет собой "жёстко телесиненное" + содержимое с 24000/1001 fps. +</para></listitem> +</itemizedlist> + +<itemizedlist> +<title>Области PAL:</title> +<listitem><para> + Если Вы не видите никакой гребёнки, Ваш фильм есть 2:2 пулдаун. +</para></listitem> +<listitem><para> + Если Вы видите попеременную гребёнку каждые полсекунды, + Ваш фильм представляет собой 2:2:2:2:2:2:2:2:2:2:2:3 пулдаун. +</para></listitem> +<listitem><para> + Если Вы всегда видите гребёшки во время движения, значит Ваш + фильм является PAL видео с 50 полями в секунду. +</para></listitem> +</itemizedlist> + +<note><title>Подсказка:</title> +<para> + <application>MPlayer</application> может замедлить воспроизведение + фильма с опцией -speed или воспроизводить его покадрово. + Попробуйте использовать опцию <option>-speed 0.2</option> для + очень медленного просмотра фильма или несколько раз нажмите + клавишу "<keycap>.</keycap>" для воспроизведения одного кадра + за раз и идетнифицируйте образец, если не можете его увидеть на + полной скорости. +</para> +</note> +</sect3> +</sect2> + +<sect2 id="menc-feat-dvd-mpeg4-2pass"> +<title>Постоянный квантователь против многопроходности</title> + +<para> + Возможно кодировать Ваш фильм, широко варьируя качество. + С современными видеокодерами и небольшим сжатием перед кодированием + (уменьшением размера и шумов) возможно достичь очень хорошего + качества при размере 700 МБ для 90-110-минутного широкоэкранного фильма. + Более того, всё, кроме самых длинных фильмов, может быть кодировано + с почти безупречным качеством на 1400 МБ. +</para> + +<para> + Есть три подхода при кодировании видео: постоянный битпоток (CBR), + постоянный квантователь и многопроходность (ABR или усреднённый битпоток). +</para> + +<para> + Сложность кадров фильма и, таким образом, число битов, нужных для их + сжатия может существенно отличаться от одной сцены к другой. + Современные видеокодеры могут подстраиваться под это в процессе + работы и варьировать битпоток. + Однако, в таких простых режимах как CBR кодеры не знают загруженность + битпотока в последующих сценах и т.о. не могут превысить затребованный + битпоток для больших промежутков времени. + Более продвинутые режимы, такие как многопроходный режим, могут + учитывать статистику предыдущих проходов; это решает проблему, + упомянутую выше. +</para> + +<note><title>Замечание:</title> +<para> + Большинство кодеков, поддерживающих ABR кодирование, поддерживают + только двупроходный режим, в то время как некоторые другие, такие + как <systemitem class="library">x264</systemitem>, + <systemitem class="library">XviD</systemitem> + и <systemitem class="library">libavcodec</systemitem> поддерживают + многопроходность, несколько улучшающую качество на каждом проходе, + однако, это улучшение не измеримо и не заметно после 4-го прохода + или около того. + Поэтому, в данном разделе дву- и многопроходность будут + использоваться взаимозаменяемо. +</para> +</note> + +<para> + В каждом из этих режимов видеокодек (такой как + <systemitem class="library">libavcodec</systemitem>) + разбивает видеокадр на макроблоки размером 16х16 пикселей и потом + применяет квантователь к каждому макроблоку. Чем меньше квантоваль, + тем лучше качество и выше битпоток. + Метод, используемый видео кодером для определения того, какой + квантователь использовать для данного макроблока, варьируется и + подлежит тонкой настройке. (Это крайнее упрощение реального + процесса, но основная концепция полезна для понимания.) +</para> + +<para> + Когда Вы указываете постоянный битпоток, видеокодек будет кодировать + видео, отбрасывая детали столько, сколько необходимо и настолько мало, + насколько это возможно с целью оставаться ниже заданного битпотока. + Если Вас действительно не волнует размер файла, Вы можете также + использовать CBR и указать бесконечный битпоток. (На практике это + означает значение, достаточно большое для обозначения отсутствия + предела, например, 10000 Кбит.) В результате, без реального ограничения + битпотока, кодек использует наименьший возможный квантователь для + каждого макроблока (как указано опцией + <option>vqmin</option> для + <systemitem class="library">libavcodec</systemitem>, равной 2 по умолчанию). + Как только Вы укажите настолько низкий битпоток, что кодек будет + вынужден использовать более высокий квантователь, Вы почти наверняка + испортите качество Вашего видео. + Чтобы избежать этого, Вам, вероятно, придётся уменьшить размеры + Вашего видео, согласно методу, описанному далее в этом руководстве. + В общих чертах, Вам следует избегать CBR совсем, если Вы заботитесь + о качестве. +</para> + +<para> + С постоянным квантователем кодек использует для всех макроблоков + один и тот же квантователь, указанный в опции + <option>vqscale</option> (для + <systemitem class="library">libavcodec</systemitem>). + Если Вы хотите рип наивысшего возможного качества, снова не взирая + на битпоток, Вы можете использовать + <option>vqscale=2</option>. + Это приведёт к тому же битпотоку и PSNR (пику отношения сигнала к шуму), + что и CBR с + <option>vbitrate</option>=бесконечности и значением по умолчанию + <option>vqmin</option>, равным 2. +</para> + +<para> + Проблема с постоянным квантованием заключается в том, что кодек использует + заданный квантователь вне зависимости от того, требуется это для + макроблока или нет. То есть возможно использование большего квантователя + для макроблока без ухудшения видимого качества. Зачем тратить биты на + излишне низкий квантователь? У Вашего процессора есть столько тактов, + сколько есть времени, но имеется лишь ограниченное число битов на + жёстком диске. +</para> + +<para> + При двупроходном кодировании первый проход создаст рип фильма так, + как будто это был CBR, но сохранит лог свойств для каждого кадра. + Эта информация затем будет использована во время второго прохода + для принятия интеллектуальных решений о том, какой квантователь + следует использовать. Во время быстрого движения или сцен с + высокой детализацией с большой веротностью будут использованы + бОльшие квантователи, а во время медленного движения или сцен + с низкой детализацией — меньшие. + Обычно количество движения играет существенно более важную роль, + чем количество деталей. +</para> + +<para> + Если Вы используете <option>vqscale=2</option>, то Вы теряете биты. + Если Вы используете <option>vqscale=3</option>, то Вы не получаете + рип наивысшего качества. Предположим, вы делаете рип DVD, используя + <option>vqscale=3</option>, результат получается 1800 Кбит. + Если Вы сделаете двупроходное кодирование с + <option>vbitrate=1800</option>, получившееся видео быдет обладать + <emphasis role="bold">лучшим качеством</emphasis> для + <emphasis role="bold">того же битпотока</emphasis>. +</para> + +<para> + После того, как Вы сейчас убедились, что два прохода — это путь + к действию, возникает вопрос о том, какой битпоток использовать? + Ответ таков, что нет единого ответа. В идеале, Вы хотите выбрать + битпоток, при котором достигается наилучший баланс между качеством + и размером файла. Здесь возможны вариации в зависимости от + исходного видеоматериала. +</para> + +<para> + Если размер не важен, хорошей отправной точкой для рипа очень высокого + качества будет 2000 Кбит +/- 200 Кбит. + Для видеоматериала с быстрым движением или высокой детализацией + или просто если у Вас очень разборчивый глаз, Вы можете использовать + 2400 или 2600. + Для некоторых DVD Вы не заметите разницы на 1400 Кбит. Хорошей идеей + является экспериментирование со сценами на разных битпотоках, чтобы + почувствовать разницу. +</para> + +<para> + Если Вашей целью является определённый размер, Вам нужно как-нибудь + вычислить битпоток. Но перед этим, Вам нужно знать, сколько места + нужно зарезервировать по аудио дорожку(и), так что Вам необходимо + <link linkend="menc-feat-dvd-mpeg4-audio">извлечь их</link> сперва. + Вы можете расчитать битпоток с помощью следующей формулы: + <systemitem>битпоток = (конечный_размер_в_МБайт - размер_звука_в_МБайт) * + 1024 * 1024 / длительность_в_секундах * 8 / 1000</systemitem>. + Например, для сжатия двухчасового фильма в 702 МБ CD, с 60 МБ + аудио дорожкой, битпоток видео должен составлять: + <systemitem>(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000 + = 740 кбит/сек</systemitem>. +</para> + +</sect2> + + +<sect2 id="menc-feat-dvd-mpeg4-constraints"> +<title>Ограничения для эффективного кодирования</title> + +<para> + Из-за особенностей MPEG-подобного сжатия, существуют различные + ограничения, которым Вы должны следовать для достижения + максимального качества. + MPEG разбивает видео на квадраты 16х16, называемые макроблоками. + Каждый макроблок состоит из 4 блоков 8х8 с информацией о люме + (интенсивности) и двух блоков 8х8 с информацией о хроме (цвете) + половинного разрешения (один для красно-бирюзовой оси и другой + для жёлто-голубой оси). + Даже если ширина и высота Вашего фильма не кратны 16, кодер + всё равно использует нужное количество макроблоков 16х16 для покрытия + всей области картинки, дополнительная область будет впустую потрачена. + Так что в интересах максимизации качества при фиксированном размере + файла, не стоит использовать размеры, не кратные 16. +</para> + +<para> + У большинства DVD также есть определённое подобие чёрных полос на + краях. Если Вы их оставите, это может повредить качество несколькими + путями. +</para> + +<orderedlist> +<listitem> +<para> + MPEG-подобное сжатие также очень чувствительно к преобразованиям + частотных интервалов, в частности, к дискретному косинусному + преобразованию (DCT), которое аналогично преобразованию Фурье. + Этот вид сжатия эффективен для представления образов и сглаженных + переходов, но у него возникают проблемы с острыми краями. +<!-- FIXME: для слова ringing я тоже не нашёл краткого однозначного + перевода; лучшее, что приходит на ум - это "размывание краёв", + ясное дело, что причиной является отбрасывание малых гармоник, + в результате чего вместо точки возникает затухающая окружность, + но вот как это кратко выразить... --> + Для кодирования последних Вам нужно гораздо больше битов, а иначе + у вас появится артефакт, известный как размывание краёв + (англ. ringing). +</para> + +<para> + Частотные преобразования (DCT) выполняются независимо для каждого + макроблока (на самом деле, для каждого блока), так что эта проблема + возникает только в случае попадания острого края внутрь блока. + Если Ваши чёрные поля возникают точно на границах, кратных 16 + пикселям, это не проблема. + Однако, чёрные полосы на DVD редко хорошо расположены, так что + на практике Вам всегда придётся усекать стороны для избежания + этих проблем. +</para> +</listitem> +</orderedlist> + +<para> + В дополнение к преобразованиям частотных интервалов, MPEG-подобное + сжатие использует векторы движения для отображения изменений от + одного кадра к другому. Векторы движения, естественно, работают + существенно менее эффективно для новых объектов, идущих от + краёв картинки, поскольку они отсутсвуют в предыдущих кадрах. + Пока картинка простирается вплоть до края кодируемой области, + у векторов движения не возникает проблем с движением объектов + за пределы картинки. Однако, при наличии черных полей + могут возникнуть проблемы: +</para> + +<orderedlist continuation="continues"> +<listitem> +<para> + Для каждого макроблока MPEG-подобное сжатие сохраняет вектор, + определяющий какая часть предыдущего кадра должна быть скопирована + в этот макроблок как основа для предсказания следующего кадра. + Кодированию подлежит только оставшаяся разность. Если макроблок + простирается до края картинки и содержит часть чёрной полосы, + то векторы движения других частей каритки перепишут чёрную полосу. + Это означает, что много битов нужно потратить либо на повторное + чернение переписанной полосы, либо (что более вероятно) вектор + движения не будет использован вовсе и все изменения для этого + макроблока будут явно кодированы. Другими словами, эффективность + кодирования существенно уменьшается. +</para> + +<para> + Ещё раз, эта проблема возникает только в случае, если чёрные полосы + не укладываются в границы, кратные 16. +</para> +</listitem> + +<listitem> +<para> + Наконец, предположим, что у нас есть находящийся внутри картинки + макроблок и объект движется в этот блок от края изображения. + MPEG-подобное кодирование не может сказать "скопируй ту часть, + что внутри картинки, но не чёрную полосу". Так что чёрная полоса + также быдет скопирована внутрь, в результате чего масса битов + будет потрачена на кодирование части изображения, которое должно + быть на месте полосы. +</para> + +<para> + Для случаев, когда всё изображение движется к краю кодируемой + области, у MPEG есть специальные оптимизации для многократного + копирования пикселей на край картинки, когда вектор движения + идёт извне области кодирования. Эта возможность становится + бесполезной, если у фильма есть чёрные полосы. В отличии от + случаев 1 и 2, выравнивание границ до кратности 16 здесь + не поможет. +</para> +</listitem> + +<listitem> +<para> + Несмотря на то, что границы полностью чёрные и никогда не изменяются, + существуют, как минимум, определённые накладные расходы, связанные + с наличием большего числа макроблоков. +</para> +</listitem> +</orderedlist> + +<para> + Благодаря всем этим причинам, рекомендуется полностью урезать + чёрные полосы. Более того, если есть области шумов/искажений + на краях картинки, то их урезание также поспособствует улучшению + качества кодирования. Видеофилы, желающие сохранить оригинал как + можно более точно, могут возражать против такого усечения; но + если Вы не планируете кодировать при постоянном квантователе, + качество, полученное при усечении, существенно превысит потери + информации на краях. +</para> +</sect2> + + +<sect2 id="menc-feat-dvd-mpeg4-crop"> +<title>Усечение и масштабирование</title> + +<para> + Вспомните из предыдущего раздела, что конечный размер картинки, + подлежащей кодированию, должен быть кратен 16 (как высота,так + и ширина). Это может быть достигнуто усечением, масштабированием + или комбинацией того и другого. +</para> + +<para> + Есть несколько рекомендаций для усечения, которым необходимо следовать + для избежания повреждения фильма. + Обычный формат YUV, 4:2:0, сохраняет хрому (информацию о цвете) + половинной дискретизации, т.е. хрома сохраняется в два раза реже + в каждом направлении, чем люма (информация об интенсивности). + Рассмотрите следующую диаграмму, где L обозначает точки дискретизации + люмы и C — хромы. +</para> + +<informaltable> +<?dbhtml table-width="40%" ?> +<?dbfo table-width="40%" ?> +<tgroup cols="8" align="center"> +<colspec colnum="1" colname="col1"/> +<colspec colnum="2" colname="col2"/> +<colspec colnum="3" colname="col3"/> +<colspec colnum="4" colname="col4"/> +<colspec colnum="5" colname="col5"/> +<colspec colnum="6" colname="col6"/> +<colspec colnum="7" colname="col7"/> +<colspec colnum="8" colname="col8"/> +<spanspec spanname="spa1-2" namest="col1" nameend="col2"/> +<spanspec spanname="spa3-4" namest="col3" nameend="col4"/> +<spanspec spanname="spa5-6" namest="col5" nameend="col6"/> +<spanspec spanname="spa7-8" namest="col7" nameend="col8"/> + <tbody> + <row> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + </row> + <row> + <entry spanname="spa1-2">C</entry> + <entry spanname="spa3-4">C</entry> + <entry spanname="spa5-6">C</entry> + <entry spanname="spa7-8">C</entry> + </row> + <row> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + </row> + <row> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + </row> + <row> + <entry spanname="spa1-2">C</entry> + <entry spanname="spa3-4">C</entry> + <entry spanname="spa5-6">C</entry> + <entry spanname="spa7-8">C</entry> + </row> + <row> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + </row> + </tbody> +</tgroup> +</informaltable> + +<para> + Как Вы видите, строки и столбцы изображения естественным образом + идут в парах. Поэтому смещения и размеры усечения + <emphasis>должны</emphasis> быть чётными числами. + Иначе хрома перестанет правильно соответствовать люме. + Теоретически возможно усечение с нечётными смещениями, но оно + потребует преобразования хромы, что потенциально является + операцией с потерей качества и не поддерживается фильтром + усечения сторон crop. +</para> + +<para> + Далее, видео с чересстрочной развёрткой дискретизируется следующим + образом: +</para> + +<informaltable> +<?dbhtml table-width="80%" ?> +<?dbfo table-width="80%" ?> +<tgroup cols="16" align="center"> +<colspec colnum="1" colname="col1"/> +<colspec colnum="2" colname="col2"/> +<colspec colnum="3" colname="col3"/> +<colspec colnum="4" colname="col4"/> +<colspec colnum="5" colname="col5"/> +<colspec colnum="6" colname="col6"/> +<colspec colnum="7" colname="col7"/> +<colspec colnum="8" colname="col8"/> +<colspec colnum="9" colname="col9"/> +<colspec colnum="10" colname="col10"/> +<colspec colnum="11" colname="col11"/> +<colspec colnum="12" colname="col12"/> +<colspec colnum="13" colname="col13"/> +<colspec colnum="14" colname="col14"/> +<colspec colnum="15" colname="col15"/> +<colspec colnum="16" colname="col16"/> +<spanspec spanname="spa1-2" namest="col1" nameend="col2"/> +<spanspec spanname="spa3-4" namest="col3" nameend="col4"/> +<spanspec spanname="spa5-6" namest="col5" nameend="col6"/> +<spanspec spanname="spa7-8" namest="col7" nameend="col8"/> +<spanspec spanname="spa9-10" namest="col9" nameend="col10"/> +<spanspec spanname="spa11-12" namest="col11" nameend="col12"/> +<spanspec spanname="spa13-14" namest="col13" nameend="col14"/> +<spanspec spanname="spa15-16" namest="col15" nameend="col16"/> + <tbody> + <row> + <entry namest="col1" nameend="col8">Верхнее поле</entry> + <entry namest="col9" nameend="col16">Нижнее поле</entry> + </row> + <row> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + <row> + <entry spanname="spa1-2">C</entry> + <entry spanname="spa3-4">C</entry> + <entry spanname="spa5-6">C</entry> + <entry spanname="spa7-8">C</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + <row> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + </row> + <row> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + <row> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry spanname="spa9-10">C</entry> + <entry spanname="spa11-12">C</entry> + <entry spanname="spa13-14">C</entry> + <entry spanname="spa15-16">C</entry> + </row> + <row> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + </row> + <row> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + <row> + <entry spanname="spa1-2">C</entry> + <entry spanname="spa3-4">C</entry> + <entry spanname="spa5-6">C</entry> + <entry spanname="spa7-8">C</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + <row> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + </row> + <row> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + <row> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry spanname="spa9-10">C</entry> + <entry spanname="spa11-12">C</entry> + <entry spanname="spa13-14">C</entry> + <entry spanname="spa15-16">C</entry> + </row> + <row> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + <entry>L</entry> + </row> + </tbody> +</tgroup> +</informaltable> + +<para> + Как Вы видите, структура повторяется только после 4 строк. + Так что для чересстрочного видео Ваше y-смещение и высота + усечения должны быть кратны 4. +</para> + +<para> + Естественные разрешения DVD составляют 720x480 для NTSC и 720x576 + для PAL, но существует флаг соотношения сторон, который указывает + является ли видео полноэкранным (4:3) или широкоэкранным (16:9). + Многие (если не большинство) широкоэкранных DVD не точно соответсвуют +<!-- FIXME: Есть ли перевод названия формата cinescope (он же CinemaScope) ?? --> + формату 16:9 и он может быть как 1.85:1, так и 2.35:1 (формат cinescope). + Это означает, что в видео будут чёрные полосы, которые нужно усечь. +</para> + +<para> + <application>MPlayer</application> предоставляет фильтр обнаружения + усечения, который определяет прямоугольник, до которго нужно усечь + (<option>-vf cropdetect</option>). + Запустите <application>MPlayer</application> с + <option>-vf cropdetect</option> и он выдаст настройки + усечения для удаления полей. + С целью получения точных параметров усечения, Вы должны проигрывать + фильм достаточно долго для того, чтоб была использована вся область + изображения. +</para> + +<para> + Затем проверьте значения, полученные с помощью + <application>MPlayer</application>, используя командную строку, + выведенную <option>cropdetect</option>, и подстройте прямоугольник + при необходимости. + Фильтр <option>rectangle</option> может быть полезен, позволив + Вам интерактивно менять прямоугольник усечения для Вашего фильма. + Не забывайте следовать указанным выше руководствам по делимости, + чтобы не испортить выравнивание хромы. +</para> + +<para> + В ряде случаев масштабирование может быть нежелательным. + Масштабирование по вертикальному направлению затруднено для + чересстрочного видео, и если Вы хотите сохранить чересстрочность, + Вам в большинстве случаев будет необходимо воздерживаться от + масштабирования. + Если Вы не будете масштабировать, но всё ещё желаете размеры, + кратные 16, то Вам придётся проводить излишнее усечение. + Не проводите неполное усечение, поскольку чёрные полосы очень + плохи для кодирования! +</para> + +<para> + Посокльку MPEG-4 использует макроблоки 16х16, Вы должны убедиться, + что каждое измерение кодируемого видео кратно 16; иначе Вы ухудшите + качество, особенно на малых битпотоках. Вы можете сделать это, + округлив ширину и высоту прямоугольника усечения до ближайшего + меньшего целого, кратного 16. + Учитывая установленное ранее, при усечении Вы можете захотеть увеличить + смещение по Y на половину разности старой и новой высоты, так что + полученное видео будет браться из центра кадра. + + И из-за способа дискретизации DVD видео, убедитесь, что смещение + есть чётное число. (Фактически, возьмите за правило никогда не + использовать нечётные величины для любых параметров усечения или + масштабирования видео.) Если Вы беспокоитесь из-за нескольких + излишне отброшенных битов, возможно, Вы предпочтёте взамен + масштабировать видео. + В действительности, Вы можете доверить фильтру + <option>cropdetect</option> сделать для Вас всё вышеупомянутое, + т.к. у него есть необязательный параметр округления + <option>round</option>, равный 16 по умолчанию. +</para> + +<para> + Также будьте осторожны с "полутёмными" пикселями на краях. Убедитесь, + что они тоже отрезаются, иначе Вы будете тратить биты, которым есть + лучшее применение. +</para> + +<para> + После всего выше сказанного и сделанного, Вы, вероятно, получите + видео не точно формата 1:85.1 или 2.35:1, а с чем-то близким + к этому. Вы можете вычислить новый коэффициент соотношения + сторон вручную, но <application>MEncoder</application> + предоставляет опцию для <systemitem class="library">libavcodec</systemitem>, + называемую <option>autoaspect</option>, которая сделает это для + Вас. Ни в коем случае не увеличивайте размер этого видео с целью + квадратизации пикселей, если Вы не желаете впустую потратить + место на жёстком диске. + Масштабирование должно выполняться при воспроизведении, и плеер + использует коэффициент соотношения сторон, сохранённый в AVI, для + определения правильного разрешения. + К сожалению, не все плееры используют эту информацию автомасштабирования, + поэтому Вам всё ещё может быть необходимо перемасштабирование. +</para> +</sect2> + + +<sect2 id="menc-feat-dvd-mpeg4-resolution-bitrate"> +<title>Выбор разрешения и битпотока</title> + +<para> + Если Вы не собираетеся кодировать в режиме постоянного квантователя, + Вам нужно выбрать битпоток. + Понятие битпотока очень просто: это среднее число битов, которые + будут использованы для сохранения Вашего фильма, в секунду. + Обычно битпоток измеряется в килобитах (1000 бит) в секунду. + Размер Вашего фильма на диске есть битпоток, умноженный на + длительность фильма, плюс небольшие накладные расходы + (см. раздел + <link linkend="menc-feat-dvd-mpeg4-muxing-avi-limitations">контейнер AVI</link> + для примера). + Остальные параметры, такие как масштабирование, усечение и т.п. + <emphasis role="bold">не</emphasis> изменят размер файла, пока + Вы также не измените битпоток! +</para> +<para> + Битпоток изменяется <emphasis role="bold">не</emphasis> + пропорционально разрешению. + То есть файл разрешением 320х240 с 200 кбит/сек не будет + того же качества, что этот же фильм разрешением 640х480 + и 800 кбит/сек! + Для этого есть две причины: +<orderedlist> + <listitem><para> + <emphasis role="bold">Восприятие</emphasis>: Вы сильнее + замечаете MPEG артефакты, если они больше! + Артефакты возникают на масштабе блоков (8х8). + Ваш глаз не увидит ошибки в 4800 маленьких блоков так же + легко, как и в 1200 больших блоков (предполагая + масштабирование обоих фильмов на полный экран). + </para></listitem> + <listitem><para> + <emphasis role="bold">Теоретическая</emphasis>: Когда Вы + уменьшаете размер изображения, но продолжаете использовать + блоки того же размера (8х8) для пространственных частотных + преобразований, Вы перемещаете больше данных в высокочастотные + полосы. Грубо говоря, каждый пиксель содержит больше деталей, + чем раньше. + Так что несмотря на то, что ваша картинка с уменьшенным + масштабом содержит 1/4 информации в пространственных направлениях, + она всё ещё может содержать большУю часть информации в + частотных интервалах (предполагая, что высокие частоты были + не использованы в оригинальном 640х480 изображении). + </para></listitem> + </orderedlist> +</para> +<para> + Последние руководства рекомендовали выбор битпотока и разрешения, + основываясь на приближении "бит на пиксель", но это обычно не + верно из-за упомянутых выше причин. + Похоже, лучшей оценкой является рост битпотока пропорционально + квадратному корню разрешения, так что 320х240 и 400 кбит/сек + должно быть сравнимо с 640х480 и 800 кбит/сек. + Однако, это не было строго проверено теоретически или эмпирически. + Кроме того, из-за существенного отличия фильмов по уровню шума, + деталей, степеней свободы и т.п., тщетно давать общие рекомендации + для "битов на длину диагонали" (аналог битов на пиксель, используя + квадратный корень). +</para> +<para> + Таким образом, мы обсудили сложность выбора битпотока и разрешения. +</para> + + +<sect3 id="menc-feat-dvd-mpeg4-resolution-bitrate-compute"> +<title>Расчёт разрешения</title> +<para> + Следующие шаги помогут Вам расчитать разрешение для Вашего + кодирования без слишком сильного искажения видео, учитывая + некоторую информацию об исходном видео. + Прежде всего, Вам необходимо расчитать коэффициент соотношения + сторон для кодированного видео: + <systemitem>ARc = (Wc x (ARa / PRdvd )) / Hc</systemitem> +<itemizedlist> +<title>где:</title> +<listitem><para> + Wc и Hc — ширина и высота усечённого видео, +</para></listitem> +<listitem><para> + ARa — коэффициент соотношения сторон изображения, обычно 4/3 или 16/9, +</para></listitem> +<listitem><para> + PRdvd — отношение пикселей DVD, что равно 1.25=(720/576) для PAL + DVD и 1.5=(720/480) для NTSC DVD. +</para></listitem> +</itemizedlist> +</para> + +<para> + Затем Вы можете расчитать разрешение по X и Y, согласно определённому + фактору качества сжатия (CQ): + <systemitem>ResY = INT(SQRT( 1000*Битпоток/25/ARc/CQ )/16) * 16</systemitem> + и <systemitem>ResX = INT( ResY * ARc / 16) * 16</systemitem>. +</para> + +<para> + Хорошо, но что такое CQ? + CQ соответсвует числу битов на пиксель и на кадр для кодирования. + Грубо говоря, чем больше CQ, тем меньше вероятность увидеть + артефакты кодирования. + Однако, если у Вас есть заданный размер для Вашего фильма + (например, 1 или 2 CD), есть ограниченное общее число битов, + которые Вы можете потратить; поэтому важно найти хороший + компромисс между сжимаемостью и качеством. +</para> + +<para> + CQ зависит от битпотока, эффективности видеокодека и разрешения фильма. + Обычно, в целях увеличеиня CQ, Вам нужно будет уменьшить размер + фильма при постоянном битпотоке, заданном размере и длине фильма. + С MPEG-4 ASP кодеками, такими как <systemitem class="library">XviD</systemitem> + и <systemitem class="library">libavcodec</systemitem>, CQ + меньше 0.18 обычно приводит к изображению с большим числом + сегментов "квадратиками", из-за недостаточного числа битов для + кодирования информации в каждом макроблоке. + (MPEG4, как и многие другие кодеки, группирует пиксели в блоки по + несколько пикселей для сжатия изображения; если битов не хватает, + границы этих блоков становятся заметными.) + Следовательно, благоразумно выбрать CQ в диапазоне от 0.20 до 0.22 + для рипа на 1 CD и 0.26-0.28 для рипа на 2 CD при использовании + стандартных опций кодирования. + Более продвинутые опции кодирования, такие как указанные для + <link linkend="menc-feat-mpeg4-lavc-example-settings"><systemitem class="library">libavcodec</systemitem></link> + и +<link linkend="menc-feat-xvid-example-settings"><systemitem class="library">XviD</systemitem></link> + должны сделать возможным получение того же качества с CQ в диапазоне + от 0.18 до 0.20 для рипа на 1 CD и 0.24-0.26 для рипа на 2 CD. + Используя MPEG-4 ASP кодеки, такие как + <systemitem class="library">x264</systemitem>, Вы можете использовать + CQ в диапазоне от 0.14 до 0.16 со стандартными опциями кодирования + и должны суметь достичь таких низких значений, как 0.10-0.12 + с помощью + <link linkend="menc-feat-x264-example-settings">продвинутых опций кодирования <systemitem class="library">x264</systemitem></link>. +</para> + +<para> + Пожалуйста, обратите внимание, что CQ — лишь показательная величина, + т.к. она зависит от кодируемого содержимого; CQ 0.18 может хорошо + смотреться для Бергмана (Bergman), в отличии от такого фильма как + Матрица (The Matrix), содержащего много сцен с быстрым движением. + С другой стороны, бесполезно увеличивать CQ выше 0.30, т.к. Вы + будете тратить биты без заметного увеличения качества. + Так же обратите внимание, что, как было указано выше в данном + руководстве, фильмам с низким разрешением (например, по сравнению с DVD) + необходим более высокий CQ для того, чтоб они выглядели хорошо. +</para> +</sect3> + +</sect2> + +<sect2 id="menc-feat-dvd-mpeg4-filtering"> +<title>Фильтрация</title> + +<para> + Изучение использования видео фильтров <application>MEncoder</application> + важно для получения хороших результатов кодирования. + Вся обработка видео выполняется посредством фильтров: усечение, + масштабирование, подстройка цвета, удаление шума, увеличение + чёткости, деинтерлейс (преобразование видео из чересстрочной + развёртки в построчную), телесин, обратный телесин и удаление + блочной сегментации — и это лишь некоторые из них. + Вместе с огромным количеством поддерживаемых входных форматов, + разнообразие фильтров, доступных в <application>MEncoder</application>, + является одним из его основных достоинств над другими аналогичными + программами. +</para> + +<para> + Фильтры загружаются в цепочки с помощью опции -vf: + + <screen>-vf фильтр1=опции,фильтр2=опции,...</screen> + + Большинство фильтров используют численные значения опций, + разделённые двоеточиями, но синтаксис этих параметров различается + у разных фильтров, так что читайте мануал для детальной + информации о фильтрах, которые Вы желаете использовать. +</para> + +<para> + Фильтры действуют на видео в порядке их загрузки. + Например, следующая цепочка: + + <screen>-vf crop=688:464:12:4,scale=640:464</screen> + + сперва усечёт область изображения до 688х464 с верхним левым + углом (12,4), а затем масштабирует результат до 640х464. +</para> + +<para> + Некоторые фильтры нужно загружать в начале цепочки фильтров (или + рядом с ним) с целью получения преимущества от использования + информации после видеодекодера, которая будет потеряна или + искажена другими фильтрами. + Важнейшими примерами являются: <option>pp</option> (постобработка, + только при выполнении операций удаления блочной сегментации + (deblocking) или увеличения чёткости краёв (deringing)), + <option>spp</option> (другой фильтр постобработки, служащий для + удаления артефактов MPEG), <option>pullup</option> (обратный + телесин), и <option>softpulldown</option> (для преобразования + мягкого телесина в жёсткий). +</para> + +<para> + В общем случае, Вам следует делать настолько мало фильтрации, + насколько это возможно, для того чтоб остаться близко к оригинальному + DVD источнику. Усечение часто необходимо (как описано выше), но + избегайте масштабирования видео. Несмотря на то, что уменьшение + размера иногда предпочтительно при использовании больших + квантователей, нужно избегать и того, и другого: помните, + что мы с самого начала решили обменять биты на качество. +</para> + +<para> + Также не корректируйте гамму, контрастность, яркость и т.п.. То, + что хорошо выглядит на Вашем мониторе, может плохо выглядеть + на других. Коррекция должна выполняться только при воспроизведении. +</para> + +<para> + Однако, есть одна вещь, которую Вы, быть может, захотите сделать — + это пропустить видео через очень слабый фильтр удаления шумов, + такой как <option>-vf hqdn3d=2:1:2</option>. + Ещё раз, причиной этому является то, что этим битам можно найти + лучшее применение: зачем тратить их, кодируя шум, если Вы просто + можете вернуть этот шум в процессе воспроизведения? + Увеличение параметров для <option>hqdn3d</option> дополнительно + улучшит сжимаемость, но увеличив значения слишком сильно, Вы рискуете + ухудшить различимость изображения. + Рекомендованные выше значения (<option>2:1:2</option>) слегка + консервативны; не бойтесь экспериментировать с более высокими + значениями и самостоятельно оценивать результаты. +</para> + +</sect2> + + +<sect2 id="menc-feat-dvd-mpeg4-interlacing"> +<title>Чересстрочная развёртка и телесин</title> + +<para> + Почти все фильмы снимаются при 24 fps [кадр/сек]. Поскольку + в NTSC ниспользуется 30000/1001 fps, нужно выполнить некоторую + обработку для такого 24 fps видео, чтобы оно корректно + воспроизводилось при кадровой частоте NTSC. Этот процесс называется + 3:2 пулдаун, обычно называемый телесин (поскольку пулдаун часто + применяется в процессе показа телевизионного фильма, англ. telecine); + и в упрощенном описании это работает путём замедления фильма до + 24000/1001 fps и повтора каждого четвёртого кадра. +</para> + +<para> + Однако, никакой специальной обработки не выполняется для видео + на PAL DVD, которое воспроизводится при 25 fps. (Технически PAL + может быть подверженым телесину, называемому 2:2 пулдаун, но на + практике это не применяется). + 24 fps фильм просто проигрывается на 25 fps. В результате фильм + воспроизводится слегка быстрее, но если Вы не пришелец, то, + вероятно, не заметите разницы. + У большинства PAL DVD аудио корректируемо по высоте звука, так + что, воспроизводясь при 25 fps, оно звучит нормально, даже если + аудиодорожка (и, следовательно, весь фильм) проигрываются на + 4% быстрее, чем NTSC DVD. +</para> + +<para> + Поскольку видео на PAL DVD не переделывается, Вам не стоит + беспокоится о частоте кадров. У источника 25 fps и у Вашего + рипа будет 25 fps. Однако, если Вы делаете рип NTSC DVD фильма, + Вам, быть может, придётся выполнить обратный телесин. +</para> + +<para> + Для фильмов, снятых на 24 fps, видео на NTSC DVD идёт либо с телесином + 30000/1001, либо с построчной развёрткой 24000/1001 fps и + предназначается для телесина на лету с помощью DVD плеера. + С другой стороны, TV сериалы идут обычно только с чересстрочной развёрткой, + но без телесина. Это не строгое правило: есть сериалы с + чересстрочной развёрткой (например, Баффи, Убийца Вампиров + [Buffy the Vampire Slayer]), в то время как другие представляют + собой смесь построчной и чересстрочной развёртки (такие как + Ангел [Angel] или 24). +</para> + +<para> + Настоятельно рекомендуется прочитать раздел о + <link linkend="menc-feat-telecine">работе с телесином и чересстрочной развёрткой в NTSC DVD</link> + для изучения способов обработки в разных ситуациях. +</para> + +<para> + Однако, если Вы преимущественно делаете рипы фильмов, Вы, скорее + всего, имеете дело с 24 fps видео либо с построчной развёрткой, + либо с подвергнутым телесину; в последнем случае Вы можете использовать + <option>pullup</option> фильтр: <option>-vf + pullup,softskip</option>. +</para> + +</sect2> + +<sect2 id="menc-feat-dvd-mpeg4-encoding-interlaced"> +<title>Кодирование чересстрочного видео</title> + +<para> + Если Вы желаете кодировать фильм с чересстрочной развёрткой + (NTSC или PAL видео), Вам нужно решить, будете ли Вы его + преобразовывать в построчную развёртку или нет. + Хотя такое преобразование (деинтерлейс) сделает Ваш фильм + пригодным для дисплеев с построчной развёрткой, таких как + компьютерные мониторы и проекторы, это будет иметь свою цену: + частота полей уменьшится вдвое от 50 или 60000/1001 до 25 или + 30000/1001 поля в секунду, и примерно половина информации в + Вашем фильме будет потеряна в сценах со значительным движением. +</para> + +<para> + Поэтому, если Вы кодируете для высококачественных архивных целей, + не рекомендуется делать деинтерлейс. Вы всегда можете преобразовать + развёртку фильма в процессе воспроизведения (при воспроизведении + на устройствах с построчной развёрткой). + Мощность современных компьютеров вынуждает плееры использовать + фильтр деинтерлейса, что слегка ухудшает качество изображения. + Но плееры будущего будут способны имитировать дисплей TV с + чересстрочной развёрткой, выполняя деинтерлейс на полной частоте + полей и интерполируя 50 или 60000/1001 кадров в секунду для + чересстрочного видео. +</para> + +<para> + С чересстрочным видео нужно работать особым образом: +</para> + +<orderedlist> +<listitem><para> + Высота усечения и смещение по оси y должны быть кратны 4. +</para></listitem> +<listitem><para> + Любое вертикальное масштабирование должно выполняться в режиме + чересстрочной развёртки. +</para></listitem> +<listitem><para> + Фильтры постобработки и удаления шума могут не работать как + ожидается, только если Вы особо не позаботитесь об их + одновременном применении на частоте полей, иначе они могут + повредить видео при неверном использовании. +</para></listitem> +</orderedlist> + +<para> + Учитывая вышесказанное, вот наш первый пример: +</para> +<screen> + mencoder <replaceable>захват.avi</replaceable> -mc 0 -oac lavc -ovc lavc -lavcopts \ + vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224 +</screen> +<para> + Обратите внимание на опции <option>ilme</option> и <option>ildct</option>. +</para> +</sect2> + + +<sect2 id="menc-feat-dvd-mpeg4-av-sync"> +<title>Замечания об аудио/видео синхронизации</title> + +<para> + Алгоритмы аудио/видео (A/V) синхронизации <application>MEncoder</application> + были разработаны с целью восстановления файлов с повреждённой + синхронизацией. + Однако, в ряде случаев они могут привести к ненужному пропуску + или повторению кадров и, возможно, к лёгкой A/V десинхронизации + корректных входных данных (конечно, проблемы A/V синхронизации + возникают только при обработке или копировании аудиотрека при + кодировании видео, что настоятельно рекомендуется). + Поэтому Вы можете переключиться на базовую A/V синхронизацию + с помощью опции <option>-mc 0</option> или разместить это в + конфигурационном файле <systemitem>~/.mplayer/mencoder</systemitem>, + если Вы работаете только с хорошими источниками (DVD, TV-захват, + высококачественные MPEG-4 рипы и т.п.), а не с повреждёнными + файлами ASF/RM/MOV. +</para> +<para> + Если Вы хотите дополнительно защититься от странных пропусков + и повторений кадров, вы можете одновременно использовать опции + <option>-mc 0</option> и <option>-noskip</option>. + Это предотвратит <emphasis>любую</emphasis> A/V коррекцию, и + будет копировать кадры один в один, так что Вы не сможете это + использовать, если будете применять какие-либо фильтры, которые + непредсказуемо добавляют или отбрасывают кадры, либо если у + Вашего входного файла переменный битопоток! + Поэтому использование <option>-noskip</option> в общем случае не + рекомендуется. +</para> +<para> + Сообщалось о том, что так называемое трёхпроходное аудиокодирование, + поддерживаемое <application>MEncoder</application>, вызывало + A/V десинхронизацию. + Это наверняка произойдёт при использовании совместно с некоторыми + фильтрами, поэтому сейчас <emphasis>не</emphasis> рекомендуется + использовать трёхпроходный аудио режим. + Эта возможность оставлена только для совместимости и для опытных + пользователей, понимающих когда это безопасно, а когда нет. + Если Вы ранее никогда не слышали о трёхпроходном режиме, забудьте + даже о том, что мы его упоминали! +</para> +<para> + Также были сообщения об A/V десинхронизации при кодировании + со стандартного ввода (stdin) с помощью <application>MEncoder</application>. + Не делайте этого! Всегда взамен используйте файл или CD/DVD и т.п. + устройство. +</para> +</sect2> + +<sect2 id="menc-feat-dvd-mpeg4-codec"> +<title>Выбор видеокодека</title> + +<para> + То, какой видеокодек лучше выбрать, зависит от нескольких + факторов, таких как размер, качество, устойчивость к ошибкам, + практичность и распостранённость, многие из которых сильно + зависят от личных предпочтений и технических ограничений. +</para> +<itemizedlist> + <listitem><para> + <emphasis role="bold">Эффективность сжатия</emphasis>: + Достаточно очевидно, что большинство кодеков нового поколения + разработаны для увеличения качества и степени сжатия. + Поэтому, авторы данного руководства и многие другие люди полагают, + что Вы не можете ошибиться + <footnote id='fn-menc-feat-dvd-mpeg4-codec-cpu'> + <para> + Несмотря на это, будьте осторожны: для декодирования MPEG-4 AVC + видео с DVD разрешением необходима быстрая машина (например, + Pentium 4 свыше 1.5 ГГц или Pentium M свыше 1 ГГц). + </para></footnote>, + выбирая MPEG-4 AVC кодеки (например, + <systemitem class="library">x264</systemitem>) + вместо таких MPEG-4 ASP кодеков, как + <systemitem class="library">libavcodec</systemitem> MPEG-4 или + <systemitem class="library">XviD</systemitem>. + (Опытные разработчики кодеков могут быть заинтересованы в + ознакомлении с точкой зрения Михаэля Найдермауэра (Michael + Niedermayer) + "<ulink url="http://guru.multimedia.cx/?p=10">почему MPEG4-ASP отстой</ulink>".) + Аналогично, Вы должны получить лучшее качество с MPEG-4 ASP, по + сравнению с MPEG-2 кодеками. + </para> + <para> + Однако, новые кодеки, находящиеся в интенсивной разработке, + могут страдать от ещё не замеченных ошибок, которые могут + испортить кодирование. Просто это плата за использование + передовых технологий. + </para> + <para> + Более существенно то, что для начала использования нового кодека + необходимо потратить время на изучение его опций так, чтобы Вы + знали, что нужно подстраивать для достижения заданного качества + изображения. + </para></listitem> + + <listitem><para> + <emphasis role="bold">Аппаратная совместимость</emphasis>: + Обычно необходимо длительное время для включения поддержки + последних видеокодеков в автономные видеоплееры. + В итоге, большинство поддерживает только MPEG-1 (наподобие + VCD, XVCD и KVCD), MPEG-2 (например, DVD, SVCD и KVCD) и MPEG-4 + ASP (например, DivX, + <systemitem class="library">libavcodec</systemitem> LMP4 и + <systemitem class="library">XviD</systemitem>) + (Осторожно: обычно поддерживаются не все возможности MPEG-4 ASP). + Пожалуйста, обратитесь к технической спецификации Вашего плеера + (если она доступна) или к гугл (google) для детальной информации. + </para></listitem> + + <listitem><para> + <emphasis role="bold">Лучшее соотношение качества и времени кодирования</emphasis>: + Кодеки, уже использующиеся определённое время (например, + <systemitem class="library">libavcodec</systemitem> MPEG-4 и + <systemitem class="library">XviD</systemitem>) обычно сильно + оптимизированы всевозможными остроумными алгоритмами и + ассемблерным SIMD кодом. Поэтому они обладают тенденцией + достижения лучшего соотношения качества к времени кодирования. + Однако, у них могут быть некоторые очень продвинутые опции, + которые, будучи включенными, сделают кодирование очень медленным + ради несущественного выигрыша. + </para> + <para> + Если Вам нужна высокая скорость, примерно придерживайтесь настроек + видеокодека по умолчанию (хотя Вам стоит попробовать другие опции, + упоминаемые в иных разделах данного руководства). + </para> + <para> + Вы так же можете рассмотреть вариант использования многопоточного + кодека, хотя это полезно только для пользователей машин с + несколькими процессорами. + <systemitem class="library">libavcodec</systemitem> MPEG-4 позволяет + это, но выигрыш в скорости ограничен и есть небольшой отрицательный + эффект для качества картинки. + Многопоточное кодирование <systemitem class="library">XviD</systemitem>, + включаемое опцией <option>threads</option>, может использоваться для + ускорения кодирования (на примерно 40-60% в типичных случаях) + с небольшим ухудшением картинки или вообще без него. + <systemitem class="library">x264</systemitem> также позволяет + многопоточное кодирование, что обычно ускоряет процесс на 15-30% + (в зависимости от настроек кодирования) с уменьшением PSNR примерно + на 0.05 дБ. + </para></listitem> + + <listitem><para> + <emphasis role="bold">Личные предпочтения</emphasis>: + Здесь всё становится почти неразумным: из-за тех же причин, по + которым одни придерживаются DivX 3 в течении лет, в то время + как новые кодеки уже творят чудеса, другие люди предпочитают + <systemitem class="library">XviD</systemitem> или + <systemitem class="library">libavcodec</systemitem> MPEG-4 + использованиию <systemitem class="library">x264</systemitem>. + </para> + <para> + Вам нужно принимать решение самостоятельно; не слушайте советов + людей, признающих только один кодек. + Сделайте несколько образцов клипов из искомых источников и + сравните разные опции кодирования и кодеки, с целью выбора + того, что Вам наиболее подходит. + Лучший кодек — это тот, которым Вы сами овладели, и + который выглядит лучше всего для Ваших глаз на Вашем дисплее + <footnote id='fn-menc-feat-dvd-mpeg4-codec-playback'> + <para> + Один и тот же результат кодирования может не выглядеть таким же + на чьём-либо другом мониторе или при воспроизведении с помощью + другого декодера, так что проверяйте Ваши результаты кодирования + на жизнеспособность, воспроизводя их в разных начальных условиях. + </para></footnote>! + </para></listitem> +</itemizedlist> +<para> + Пожалуйста, обратитесь к разделу + <link linkend="menc-feat-selecting-codec">выбор кодеков и форматов контейнера</link> + для получения списка поддерживаемых кодеков. +</para> +</sect2> + +<sect2 id="menc-feat-dvd-mpeg4-audio"> +<title>Аудио</title> + +<para> + Аудио — это гораздо более простая проблема: если Вы + беспокоитесь о качестве, просто оставьте всё как есть. + Даже потоки AC3 5.1 не более чем 448 Кбит/с и они стоят каждого + бита. Вы можете соблазниться перекодированием аудио в + высококачественный Vorbis (он же ogg формат), но лишь то, что + у Вас сегодня нет A/V приёмника для пропускания AC3, не означает, + что у Вас не будет его завтра. Для жизнеспособности Ваших DVD + рипов в будущем, сохраняйте поток AC3. + Вы можете сохранить поток AC3, копируя его непосредственно в + видеопоток <link linkend="menc-feat-mpeg4">в процессе кодирования</link>. + Вы также можете извлечь AC3 поток с целью мультиплексирования его + в контейнеры наподобие NUT или Matroska (Матрёшка). + <screen> + mplayer <replaceable>файл_источника.vob</replaceable> -aid 129 -dumpaudio -dumpfile <replaceable>звук.ac3</replaceable></screen> + сохранит в файл <replaceable>звук.ac3</replaceable> аудиодорожку + с номером 129 из файла + <replaceable>файл_источника.vob</replaceable> (Обратите внимание: + DVD VOB файлы обычно импользуют нумерацию аудио, отличную от + стандартной, что означает, что аудиодорожка VOB 129 — это вторая + аудиодорожка файла). +</para> + +<para> + Но иногда у Вас действительно нет иного выбора, чем далее сжимать + звук для того, чтоб больше битов могло быть потрачено на видео. + Большинство людей предпочитают сжимать звук с помощью MP3 или + Vorbis аудиокодеков. + Последний является очень эффективным, но MP3 лучше поддерживается + аппаратными плеерами, хотя эта тенденция меняется. +</para> + +<para> + <emphasis>Не</emphasis> используйте <option>-nosound</option> при + кодировании файла с аудио, даже если Вы будете позже кодировать и + мультеплексировать аудио отдельно. + Хотя это может работать в идеальных случаях, использование + <option>-nosound</option> обычно скрывает ряд проблем в Ваших + настройках кодирования в командной строке. + Другими словами, наличие звуковой дорожки в процессе кодирования + гарантирует Вам, что в случае отсутствия сообщений, подобных + <quote>Слишком много аудиопакетов в буфере</quote>, у Вас будет + получена правильная синхронизация. +</para> + +<para> + Вам необходим <application>MEncoder</application> для обработки + звука. + Например, Вы можете копировать исходную звуковую дорожку в + процессе кодирования с помощью <option>-oac copy</option> или + преобразовать её в "лёгкий" 4 кГц моно WAV PCM с помощью + <option>-oac pcm -channels 1 -srate 4000</option>. + Иначе, в ряде случаев, будет создаваться видео файл, + десинхронизированный с аудио. + Такие случаи происходят, когда число кадров видео исходного файла + не совпадает с полной длиной кадров аудио, или когда были + разрывы/сшивания потока, где появились пропущенные или излишние + аудиокадры. + Правильным решением подобных проблем является вставка тишины или + усечение аудио в таких точках. + Однако, <application>MPlayer</application> не может это сделать + и если Вы демультиплексируете AC3 аудио и кодируете его отдельным + приложением (или создаёте дамп в PCM с помощью + <application>MPlayer</application>), сшивания останутся + нескорректированными и единственный испособ их исправить — + пропускать/дублировать видеокадры в местах сшивки. + Пока <application>MEncoder</application> видит аудио при + кодировании видео, он может выполнять этот пропуск/дублирование + (что обычно не вызывыет проблем, т.к. происходит при полностью + чёрных кадрах или при смене сцен), но если + <application>MEncoder</application> не доступно аудио, он просто + будет обрабатывать все кадры "как есть" и они не будут совпадать + с окончательным аудиопотоком, когда Вы, например, объедините + аудио и видео дорожки в Matroska файл. +</para> + +<para> + Прежде всего, Вам необходимо преобразовать DVD звук в WAV файл, + который может использоваться аудиокодеком в качестве входных + данных. Например: + <screen> + mplayer <replaceable>исходный_файл.vob</replaceable> \ + -ao pcm:file=<replaceable>звук.wav</replaceable> -vc dummy -aid 1 -vo null</screen> + сохранит вторую аудиодорожку из файла + <replaceable>исходный_файл.vob</replaceable> в файл + <replaceable>звук.wav</replaceable>. + Возможно, Вы захотите нормализировать звук перед кодированием, + поскольку аудиодорожки DVD обычно записываются с маленькой + громкостью. + Вы можете использовать, например, утилиту <application>normalize</application>, + доступную в большинстве дистрибутивов. + Если вы пользуетесь Window$, утилита <application>BeSweet</application> + делает то же самое. + Вы можете сжать в Vorbis или MP3. Например: + <screen>oggenc -q1 <replaceable>звук.wav</replaceable></screen> + кодирует <replaceable>звук.wav</replaceable> с качеством 1, + что примерно эквивалентно 80 Кб/с и является минимальным качеством, + при котором Вам нужно кодировать, если Вы заботитесь о качестве. + Пожалуйста, обратите внимание, что <application>MEncoder</application> + на данный момент не поддерживает мультиплексирование аудиопотоков + Vorbis в выходной файл, поскольку он поддерживает только AVI и + MPEG контейнеры для выходных файлов, использование каждого из + которых может привести к проблемам A/V синхронизации с + некоторыми плеерами, в случае когда AVI файл содержит VBR + аудиопотоки наподобие Vorbis. + Не беспокойтесь, в данном документе будет рассказано как Вы + можете это сделать с помощью сторонних программ. +</para> + +</sect2> + + +<sect2 id="menc-feat-dvd-mpeg4-muxing"> +<title>Мультиплексирование</title> +<para> + Теперь, после того как Вы кодировали видео, скорее всего, Вы + захотите мультиплексировать его с одним или несколькими + аудиопотоками в такие видео контейнеры как AVI, MPEG, + Matroska или NUT. + На данный момент встроенная поддержка вывода аудио и видео в + <application>MEncoder</application> есть только для форматов + контейнеров MPEG и AVI. + Например: + <screen> + mencoder -oac copy -ovc copy -o <replaceable>выходной_фильм.avi</replaceable> \ + -audiofile <replaceable>исходный_звук.mp2</replaceable> <replaceable>исходное_видео.avi</replaceable></screen> + Это объединит видеофайл <replaceable>исходное_видео.avi</replaceable> + и аудиофайл <replaceable>исходный_звук.mp2</replaceable> + в AVI файл <replaceable>выходной_фильм.avi</replaceable>. + Эта команда работает с MPEG-1 слой I, II и III (более + известный как MP3) аудио, WAV, а также с некоторыми иными + форматами аудио. +</para> + +<para> + <application>MEncoder</application> + обладает экспериментальной поддержкой + <systemitem class="library">libavformat</systemitem> — + библиотеки из проекта FFmpeg, поддерживающей мультиплексирование + и демультиплексирование множества контейнеров. + Например: + <screen> + mencoder -oac copy -ovc copy -o <replaceable>выходной_фильм.asf</replaceable> \ + -audiofile <replaceable>исходный_звук.mp2</replaceable> <replaceable>исходное_видео.avi</replaceable> \ + -of lavf -lavfopts format=asf</screen> + Это сделает то же самое, что и предыдущий пример, но выходным + контейнером будет ASF. + Пожалуйста, обратите внимание, что эта поддержка весьма + экспериментальна (но становится лучше c каждым днём), и будет + работать только в случае компиляции <application>MPlayer</application> + с включенной поддержкой + <systemitem class="library">libavformat</systemitem> (что означает, + что в большинстве случаев бинарная версия из пакетов не будет + работать). +</para> + + +<sect3 id="menc-feat-dvd-mpeg4-muxing-filter-issues"> +<title>Улучшение мультиплексирования и надёжности A/V синхронизации</title> +<para> + Вы можете столкнуться с некоторыми серьёзными проблемами A/V + синхронизации при попытке мультиплексирования вашего видео + с некоторыми аудиодорожками, где, как бы Вы не подбирали задержку + аудио, никогда не получается правильная синхронизация. + Это может происходить при использовании некоторых видеофильтров, + пропускающих или дублирующих некоторые кадры, например фильтров + обратного телесина. + Настоятельно рекомендуется добавлять видеофильтр + <option>harddup</option> в конце цепочки фильтров для избежания + подобных проблем. +</para> + +<para> + Без опции <option>harddup</option>, в случае когда + <application>MEncoder</application> хочет дублировать кадр, он + полагается на то, что мультиплексор расположит отметку в + контейнере таким образом, что последний кадр будет повторен для + достижения синхронизации без реальной записи кадра. + С опцией <option>harddup</option>, <application>MEncoder</application> + вместо этого просто ещё раз поместит последний кадр в цепочку + фильтров. + Это означает, что кодер получит <emphasis>точно</emphasis> + такой же кадр дважды и сожмёт его. + Это приведёт у несколько большему файлу, но избавит от проблем + при демультиплексировании или ремультиплексировании с другими + форматами контейнеров. +</para> + +<para> + Также у Вас может не быть иного выбора, как использовать + <option>harddup</option> с форматами контейнеров, которые + не слишком плотно связаны с + <application>MEncoder</application>, например, с форматами, + поддерживаемыми с помощью + <systemitem class="library">libavformat</systemitem>, + которые могут не поддерживать дублирование кадров на уровне + контейнера. +</para> +</sect3> + + +<sect3 id="menc-feat-dvd-mpeg4-muxing-avi-limitations"> +<title>Ограничения контейнера AVI</title> +<para> + Хотя это самый широко распостранённый формат контейнера после + MPEG-1, он также обладает некоторыми существенными недостатками. + Пожалуй, они наиболее очевидны в его избыточности. + Для каждой цепочки AVI файла теряется 24 байта на заголовки и + индекс. + Это приводит к чуть более 5 МБ/час или 1.0-2.5% избыточности + для 700 МБ фильма. Это не кажется большим, но может означать + разницу между возможностью использования 700 кбит/сек или + 714 кбит/сек в случаях, когда каждый бит на счету. +</para> + +<para> + В дополнение к малой эффективности, AVI также обладает следующими + серьёзными ограничениями: +</para> + +<orderedlist> +<listitem> +<para> + Может быть сохранено только содержимое с фиксированной частотой + кадров. В частности, это особенно ограничивает, когда Ваш + исходный материал смешанного содержимого: например, является + смесью NTSC видео и киноматериала. + В действительности, есть хаки, позволяющие сохранять содержимое + с переменным fps в AVI, но они увеличивают (и без того большую) + избыточность впятеро или более того и поэтому непрактичны. +</para> +</listitem> +<listitem> +<para> + Аудио в AVI файлах должно быть или с постоянным битпотоком (CBR) + или с постоянным размером кадра (т.е. все кадры декодируются + в одно и то же число выборок). + К сожалению, самый эффективный кодек, Vorbis, не удовлетворяет + ни одному из данных требований. + Поэтому, если Вы планируете сохранять Ваш фильм в AVI, Вы должны + использовать менее эффективный кодек, такой как MP3 или AC3. +</para> +</listitem> +</orderedlist> + +<para> + Сказав всё это, отметим, что <application>MEncoder</application> + на данный момент не поддерживает вывод с переменным fps или + Vorbis кодирование. + Поэтому Вы можете не рассматривать всё это как ограничения, если + <application>MEncoder</application> — это единственный + инструмент, который Вы используете для кодирования. + Однако, возможно использовать <application>MEncoder</application> + только для кодирования видео и затем использовать внешние + утилиты для кодирования аудио и мультиплексирования его в + контейнер другого формата. +</para> +</sect3> + +<sect3 id="menc-feat-dvd-mpeg4-muxing-matroska"> +<title>Мультиплексирование в контейнер Matroska (Матрёшка)</title> +<para> + Matroska — это свободный, открытый стандарт формата + контейнера, нацеленный на предоставление большого количества + продвинутых возможностей, которые старые контейнеры (наподобие + AVI) не поддерживают. + Например, Matroska поддерживает аудиосодержимое с переменным + битпотоком (VBR), переменные частоты кадров (VFR), разделы, + файловые вложения, код обнаружения ошибок (EDC) и современные + A/V кодеки, такие как "Продвинутое Аудио Кодирование" ("Advanced + Audio Coding", AAC), "Vorbis" или "MPEG-4 AVC" (H.264), также + не поддерживаемые AVI. +</para> + +<para> + Утилиты, необходимые для создания Matroska файлов, сообща + называются <application>mkvtoolnix</application>, и доступны + для большиства Unix платформ, так же как и для Window$. + Поскольку Matroska — открытый формат, Вы можете найти + иные утилиты, которые лучше Вам подходят, но поскольку + <application>mkvtoolnix</application> — наиболее общие + и поддерживаются самой командой разработчиков Matroska, мы + будем обсуждать только их использование. +</para> + +<para> + Возможно, самым простым способом начать использовать Matroska + является использование <application>MMG</application>, + графической оболочки, поставляемой с + <application>mkvtoolnix</application>. Следуйте + <ulink url="http://www.bunkus.org/videotools/mkvtoolnix/doc/mkvmerge-gui.html">руководству к mkvmerge GUI (mmg)</ulink>. +</para> + +<para> + Также Вы можете мультиплексировать аудио и видео файлы используя + командную строку: + <screen> + mkvmerge -o <replaceable>выходной_файл.mkv</replaceable> <replaceable>входное_видео.avi</replaceable> \ + <replaceable>входное_аудио1.mp3</replaceable> <replaceable>входное_аудио2.ac3</replaceable></screen> + Это объединит видеофайл <replaceable>входное_видео.avi</replaceable> + и два аудиофайла <replaceable>входное_аудио1.mp3</replaceable> + и <replaceable>входное_аудио2.ac3</replaceable> в Matroska + файл <replaceable>выходной_файл.mkv</replaceable>. + Как было отмечено ранее, Matroska способна реализовать гораздо + большее, например, множественные аудиодорожки (включая тонкую + настройку аудио/видео синхронизации), разделы, субтитры, + разбиение и т.д.. + Пожалуйста, обратитесь к документации на эти приложения для + деталей. +</para> + +</sect3> + +</sect2> + +</sect1> + +<sect1 id="menc-feat-telecine"> +<title>How to deal with telecine and interlacing within NTSC DVDs</title> + +<sect2 id="menc-feat-telecine-intro"> +<title>Introduction</title> +<formalpara> +<title>What is telecine?</title> +<para> + If you do not understand much of what is written in this document, + read the + <ulink url="http://en.wikipedia.org/wiki/Telecine">Wikipedia entry on telecine</ulink>. + It is an understandable and reasonably comprehensive + description of what telecine is. +</para></formalpara> + +<formalpara> +<title>A note about the numbers.</title> +<para> + Many documents, including the guide linked above, refer to the fields + per second value of NTSC video as 59.94 and the corresponding frames + per second values as 29.97 (for telecined and interlaced) and 23.976 + (for progressive). For simplicity, some documents even round these + numbers to 60, 30, and 24. +</para></formalpara> + +<para> + Strictly speaking, all those numbers are approximations. Black and + white NTSC video was exactly 60 fields per second, but 60000/1001 + was later chosen to accomodate color data while remaining compatible + with contemporary black and white televisions. Digital NTSC video + (such as on a DVD) is also 60000/1001 fields per second. From this, + interlaced and telecined video are derived to be 30000/1001 frames + per second; progressive video is 24000/1001 frames per second. +</para> + +<para> + Older versions of the <application>MEncoder</application> documentation + and many archived mailing list posts refer to 59.94, 29.97, and 23.976. + All <application>MEncoder</application> documentation has been updated + to use the fractional values, and you should use them too. +</para> + +<para> + <option>-ofps 23.976</option> is incorrect. + <option>-ofps 24000/1001</option> should be used instead. +</para> + +<formalpara> +<title>How telecine is used.</title> +<para> + All video intended to be displayed on an NTSC + television set must be 60000/1001 fields per second. Made-for-TV movies +4 and shows are often filmed directly at 60000/1001 fields per second, but + the majority of cinema is filmed at 24 or 24000/1001 frames per + second. When cinematic movie DVDs are mastered, the video is then + converted for television using a process called telecine. +</para></formalpara> + +<para> + On a DVD, the video is never actually stored as 60000/1001 fields per + second. For video that was originally 60000/1001, each pair of fields is + combined to form a frame, resulting in 30000/1001 frames per + second. Hardware DVD players then read a flag embedded in the video + stream to determine whether the odd- or even-numbered lines should + form the first field. +</para> + +<para> + Usually, 24000/1001 frames per second content stays as it is when + encoded for a DVD, and the DVD player must perform telecining + on-the-fly. Sometimes, however, the video is telecined + <emphasis>before</emphasis> being stored on the DVD; even though it + was originally 24000/1001 frames per second, it becomes 60000/1001 fields per + second. When it is stored on the DVD, pairs of fields are combined to form + 30000/1001 frames per second. +</para> + +<para> + When looking at individual frames formed from 60000/10001 fields per + second video, telecined or otherwise, interlacing is clearly visible + wherever there is any motion, because one field (say, the + even-numbered lines) represents a moment in time 1/(60000/1001) + seconds later than the other. Playing interlaced video on a computer + looks ugly both because the monitor is higher resolution and because + the video is shown frame-after-frame instead of field-after-field. +</para> + +<itemizedlist> +<title>Notes:</title> +<listitem><para> + This section only applies to NTSC DVDs, and not PAL. + </para></listitem> +<listitem><para> + The example <application>MEncoder</application> lines throughout the + document are <emphasis role="bold">not</emphasis> intended for + actual use. They are simply the bare minimum required to encode the + pertaining video category. How to make good DVD rips or fine-tune + <systemitem class="library">libavcodec</systemitem> for maximal + quality is not within the scope of this document. + </para></listitem> +<listitem><para> + There are a couple footnotes specific to this guide, linked like this: + <link linkend="menc-feat-telecine-footnotes">[1]</link> + </para></listitem> +</itemizedlist> +</sect2> + +<sect2 id="menc-feat-telecine-ident"> +<title>How to tell what type of video you have</title> + +<sect3 id="menc-feat-telecine-ident-progressive"> +<title>Progressive</title> +<para> + Progressive video was originally filmed at 24000/1001 fps, and stored + on the DVD without alteration. +</para> + +<para> + When you play a progressive DVD in <application>MPlayer</application>, + <application>MPlayer</application> will print the following line as + soon as the movie begins to play: + + <screen> demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.</screen> + + From this point forward, demux_mpg should never say it finds + "30000/1001 fps NTSC content." +</para> + +<para> + When you watch progressive video, you should never see any + interlacing. Beware, however, because sometimes there is a tiny bit + of telecine mixed in where you would not expect. I have encountered TV + show DVDs that have one second of telecine at every scene change, or + at seemingly random places. I once watched a DVD that had a + progressive first half, and the second half was telecined. If you + want to be <emphasis>really</emphasis> thorough, you can scan the + entire movie: + + <screen>mplayer dvd://1 -nosound -vo null -benchmark</screen> + + Using <option>-benchmark</option> makes + <application>MPlayer</application> play the movie as quickly as it + possibly can; still, depending on your hardware, it can take a + while. Every time demux_mpg reports a framerate change, the line + immediately above will show you the time at which the change + occurred. +</para> + +<para> + Sometimes progressive video on DVDs is referred to as + "soft-telecine" because it is intended to + be telecined by the DVD player. +</para> +</sect3> + +<sect3 id="menc-feat-telecine-ident-telecined"> +<title>Telecined</title> +<para> + Telecined video was originally filmed at 24000/1001, but was telecined + <emphasis>before</emphasis> it was written to the DVD. +</para> + +<para> + <application>MPlayer</application> does not (ever) report any + framerate changes when it plays telecined video. +</para> + +<para> + Watching a telecined video, you will see interlacing artifacts that + seem to "blink": they repeatedly appear and disappear. + You can look closely at this by + <orderedlist> + <listitem> + <screen>mplayer dvd://1</screen> + </listitem> + <listitem><para> + Seek to a part with motion. + </para></listitem> + <listitem><para> + Use the <keycap>.</keycap> key to step forward one frame at a time. + </para></listitem> + <listitem><para> + Look at the pattern of interlaced-looking and progressive-looking + frames. If the pattern you see is PPPII,PPPII,PPPII,... then the + video is telecined. If you see some other pattern, then the video + may have been telecined using some non-standard method; + <application>MEncoder</application> cannot losslessly convert + non-standard telecine to progressive. If you do not see any + pattern at all, then it is most likely interlaced. + </para></listitem> + </orderedlist> +</para> + +<para> + Sometimes telecined video on DVDs is referred to as + "hard-telecine". Since hard-telecine is already 60000/1001 fields + per second, the DVD player plays the video without any manipulation. +</para> + +<para> + Another way to tell if your source is telecined or not is to play + the source with the <option>-vf pullup</option> and <option>-v</option> + command line options to see how <option>pullup</option> matches frames. + If the source is telecined, you should see on the console a 3:2 pattern + with <systemitem>0+.1.+2</systemitem> and <systemitem>0++1</systemitem> + alternating. + This technique has the advantage that you do not need to watch the + source to identify it, which could be useful if you wish to automate + the encoding procedure, or to carry out said procedure remotely via + a slow connection. +</para> + +</sect3> + +<sect3 id="menc-feat-telecine-ident-interlaced"> +<title>Interlaced</title> +<para> + Interlaced video was originally filmed at 60000/1001 fields per second, + and stored on the DVD as 30000/1001 frames per second. The interlacing effect + (often called "combing") is a result of combining pairs of + fields into frames. Each field is supposed to be 1/(60000/1001) seconds apart, + and when they are displayed simultaneously the difference is apparent. +</para> + +<para> + As with telecined video, <application>MPlayer</application> should + not ever report any framerate changes when playing interlaced content. +</para> + +<para> + When you view an interlaced video closely by frame-stepping with the + <keycap>.</keycap> key, you will see that every single frame is interlaced. +</para> +</sect3> + +<sect3 id="menc-feat-telecine-ident-mixedpt"> +<title>Mixed progressive and telecine</title> +<para> + All of a "mixed progressive and telecine" video was originally + 24000/1001 frames per second, but some parts of it ended up being telecined. +</para> + +<para> + When <application>MPlayer</application> plays this category, it will + (often repeatedly) switch back and forth between "30000/1001 fps NTSC" + and "24000/1001 fps progressive NTSC". Watch the bottom of + <application>MPlayer</application>'s output to see these messages. +</para> + +<para> + You should check the "30000/1001 fps NTSC" sections to make sure + they are actually telecine, and not just interlaced. +</para> +</sect3> + +<sect3 id="menc-feat-telecine-ident-mixedpi"> +<title>Mixed progressive and interlaced</title> +<para> + In "mixed progressive and interlaced" content, progressive + and interlaced video have been spliced together. +</para> + +<para> + This category looks just like "mixed progressive and telecine", + until you examine the 30000/1001 fps sections and see that they do not have the + telecine pattern. +</para> +</sect3> + +</sect2> + +<sect2 id="menc-feat-telecine-encode"> +<title>How to encode each category</title> +<para> + As I mentioned in the beginning, example <application>MEncoder</application> + lines below are <emphasis role="bold">not</emphasis> meant to actually be used; + they only demonstrate the minimum parameters to properly encode each category. +</para> + +<sect3 id="menc-feat-telecine-encode-progressive"> +<title>Progressive</title> +<para> + Progressive video requires no special filtering to encode. The only + parameter you need to be sure to use is + <option>-ofps 24000/1001</option>. Otherwise, <application>MEncoder</application> + will try to encode at 30000/1001 fps and will duplicate frames. +</para> + +<para> + <screen>mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001</screen> +</para> + +<para> + It is often the case, however, that a video that looks progressive + actually has very short parts of telecine mixed in. Unless you are + sure, it is safest to treat the video as + <link linkend="menc-feat-telecine-encode-mixedpt">mixed progressive and telecine</link>. + The performance loss is small + <link linkend="menc-feat-telecine-footnotes">[3]</link>. +</para> +</sect3> + +<sect3 id="menc-feat-telecine-encode-telecined"> +<title>Telecined</title> +<para> + Telecine can be reversed to retrieve the original 24000/1001 content, + using a process called inverse-telecine. + <application>MPlayer</application> contains several filters to + accomplish this; the best filter, <option>pullup</option>, is described + in the <link linkend="menc-feat-telecine-encode-mixedpt">mixed + progressive and telecine</link> section. +</para> +</sect3> + +<sect3 id="menc-feat-telecine-encode-interlaced"> +<title>Interlaced</title> +<para> + For most practical cases it is not possible to retrieve a complete + progressive video from interlaced content. The only way to do so + without losing half of the vertical resolution is to double the + framerate and try to "guess" what ought to make up the + corresponding lines for each field (this has drawbacks - see method + 3). +</para> + +<orderedlist> +<listitem><para> + + Encode the video in interlaced form. Normally, interlacing wreaks + havoc with the encoder's ability to compress well, but + <systemitem class="library">libavcodec</systemitem> has two + parameters specifically for dealing with storing interlaced video a + bit better: <option> ildct</option> and <option>ilme</option>. Also, + using <option>mbd=2</option> is strongly recommended + <link linkend="menc-feat-telecine-footnotes">[2] </link> because it + will encode macroblocks as non-interlaced in places where there is + no motion. Note that <option>-ofps</option> is NOT needed here. + + <screen>mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2</screen> + </para></listitem> +<listitem><para> + Use a deinterlacing filter before encoding. There are several of + these filters available to choose from, each with its own advantages + and disadvantages. Consult <option>mplayer -pphelp</option> to see + what is available (grep for "deint"), and search the + <ulink url="http://www.mplayerhq.hu/design7/info.html#mailing_lists"> + MPlayer mailing lists</ulink> to find many discussions about the + various filters. Again, the framerate is not changing, so no + <option>-ofps</option>. Also, deinterlacing should be done after + cropping <link linkend="menc-feat-telecine-footnotes">[1]</link> and + before scaling. + + <screen>mencoder dvd://1 -oac copy -vf pp=lb -ovc lavc</screen> + </para></listitem> +<listitem><para> + Unfortunately, this option is buggy with + <application>MEncoder</application>; it ought to work well with + <application>MEncoder G2</application>, but that is not here yet. You + might experience crahes. Anyway, the purpose of <option> -vf + tfields</option> is to create a full frame out of each field, which + makes the framerate 60000/1001. The advantage of this approach is that no + data is ever lost; however, since each frame comes from only one + field, the missing lines have to be interpolated somehow. There are + no very good methods of generating the missing data, and so the + result will look a bit similar to when using some deinterlacing + filters. Generating the missing lines creates other issues, as well, + simply because the amount of data doubles. So, higher encoding + bitrates are required to maintain quality, and more CPU power is + used for both encoding and decoding. tfields has several different + options for how to create the missing lines of each frame. If you + use this method, then Reference the manual, and chose whichever + option looks best for your material. Note that when using + <option>tfields</option> you + <emphasis role="bold">have to</emphasis> specify both + <option>-fps</option> and <option>-ofps</option> to be twice the + framerate of your original source. + + <screen>mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc -fps 60000/1001 -ofps 60000/1001</screen> + </para></listitem> +<listitem><para> + If you plan on downscaling dramatically, you can extract and encode + only one of the two fields. Of course, you will lose half the vertical + resolution, but if you plan on downscaling to at most 1/2 of the + original, the loss will not matter much. The result will be a + progressive 30000/1001 frames per second file. The procedure is to use + <option>-vf field</option>, then crop + <link linkend="menc-feat-telecine-footnotes">[1]</link> and scale + appropriately. Remember that you will have to adjust the scale to + compensate for the vertical resolution being halved. + <screen>mencoder dvd://1 -oac copy -vf field=0 -ovc lavc</screen> + </para></listitem> +</orderedlist> +</sect3> + +<sect3 id="menc-feat-telecine-encode-mixedpt"> +<title>Mixed progressive and telecine</title> +<para> + In order to turn mixed progressive and telecine video into entirely + progressive video, the telecined parts have to be + inverse-telecined. There are three ways to accomplish this, + described below. Note that you should + <emphasis role="bold">always</emphasis> inverse-telecine before any + rescaling; unless you really know what you are doing, + inverse-telecine before cropping, too + <link linkend="menc-feat-telecine-footnotes">[1]</link>. + <option>-ofps 24000/1001</option> is needed here because the output video + will be 24000/1001 frames per second. +</para> + +<itemizedlist> +<listitem><para> + <option>-vf pullup</option> is designed to inverse-telecine + telecined material while leaving progressive data alone. In order to + work properly, <option>pullup</option> <emphasis role="bold">must</emphasis> + be followed by the <option>softskip</option> filter or + else <application>MEncoder</application> will crash. + <option>pullup</option> is, however, the cleanest and most + accurate method available for encoding both telecine and + "mixed progressive and telecine". + + <screen>mencoder dvd://1 -oac copy -vf pullup,softskip -ovc lavc -ofps 24000/1001</screen> + </para> + + + </listitem> + <listitem><para> + An older method + is to, rather than inverse-telecine the telecined parts, telecine + the non-telecined parts and then inverse-telecine the whole + video. Sound confusing? softpulldown is a filter that goes through + a video and makes the entire file telecined. If we follow + softpulldown with either <option>detc</option> or + <option>ivtc</option>, the final result will be entirely + progressive. <option>-ofps 24000/1001</option> is needed. + + <screen>mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001</screen> + </para> + </listitem> + +<listitem><para> + I have not used <option>-vf filmdint</option> myself, but here is what + D Richard Felker III has to say: + + <blockquote><para>It is OK, but IMO it tries to deinterlace rather + than doing inverse telecine too often (much like settop DVD + players & progressive TVs) which gives ugly flickering and + other artifacts. If you are going to use it, you at least need to + spend some time tuning the options and watching the output first + to make sure it is not messing up.</para></blockquote> + </para></listitem> +</itemizedlist> +</sect3> + +<sect3 id="menc-feat-telecine-encode-mixedpi"> +<title>Mixed progressive and interlaced</title> +<para> + There are two options for dealing with this category, each of + which is a compromise. You should decide based on the + duration/location of each type. +</para> + +<itemizedlist> +<listitem><para> + Treat it as progressive. The interlaced parts will look interlaced, + and some of the interlaced fields will have to be dropped, resulting + in a bit of uneven jumpiness. You can use a postprocessing filter if + you want to, but it may slightly degrade the progressive parts. + </para> + + <para> + This option should definitely not be used if you want to eventually + display the video on an interlaced device (with a TV card, for + example). If you have interlaced frames in a 24000/1001 frames per + second video, they will be telecined along with the progressive + frames. Half of the interlaced "frames" will be displayed for three + fields' duration (3/(60000/1001) seconds), resulting in a flicking + "jump back in time" effect that looks quite bad. If you + even attempt this, you <emphasis role="bold">must</emphasis> use a + deinterlacing filter like <option>lb</option> or + <option>l5</option>. + </para> + + <para> + It may also be a bad idea for progressive display, too. It will drop + pairs of consecutive interlaced fields, resulting in a discontinuity + that can be more visible than with the second method, which shows + some progressive frames twice. 30000/1001 frames per second interlaced + video is already a bit choppy because it really should be shown at + 60000/1001 fields per second, so the duplicate frames do not stand out as + much. + </para> + + <para> + Either way, it is best to consider your content and how you intend to + display it. If your video is 90% progressive and you never intend to + show it on a TV, you should favor a progressive approach. If it is + only half progressive, you probably want to encode it as if it is all + interlaced. + </para> + </listitem> + +<listitem><para> + Treat it as interlaced. Some frames of the progressive parts will + need to be duplicated, resulting in uneven jumpiness. Again, + deinterlacing filters may slightly degrade the progressive parts. + </para></listitem> + +</itemizedlist> +</sect3> + +</sect2> + +<sect2 id="menc-feat-telecine-footnotes"> +<title>Footnotes</title> +<orderedlist> +<listitem><formalpara> + <title>About cropping:</title> + <para> + Video data on DVDs are stored in a format called YUV 4:2:0. In YUV + video, luma ("brightness") and chroma ("color") + are stored separately. Because the human eye is somewhat less + sensitive to color than it is to brightness, in a YUV 4:2:0 picture + there is only one chroma pixel for every four luma pixels. In a + progressive picture, each square of four luma pixels (two on each + side) has one common chroma pixel. You must crop progressive YUV + 4:2:0 to even resolutions, and use even offsets. For example, + <option>crop=716:380:2:26</option> is OK but + <option>crop=716:380:3:26 </option> is not. + </para> + </formalpara> + + <para> + When you are dealing with interlaced YUV 4:2:0, the situation is a + bit more complicated. Instead of every four luma pixels in the + <emphasis>frame</emphasis> sharing a chroma pixel, every four luma + pixels in each <emphasis> field</emphasis> share a chroma + pixel. When fields are interlaced to form a frame, each scanline is + one pixel high. Now, instead of all four luma pixels being in a + square, there are two pixels side-by-side, and the other two pixels + are side-by-side two scanlines down. The two luma pixels in the + intermediate scanline are from the other field, and so share a + different chroma pixel with two luma pixels two scanlines away. All + this confusion makes it necessary to have vertical crop dimensions + and offsets be multiples of four. Horizontal can stay even. + </para> + + <para> + For telecined video, I recommend that cropping take place after + inverse telecining. Once the video is progressive you only need to + crop by even numbers. If you really want to gain the slight speedup + that cropping first may offer, you must crop vertically by multiples + of four or else the inverse-telecine filter will not have proper data. + </para> + + <para> + For interlaced (not telecined) video, you must always crop + vertically by multiples of four unless you use <option>-vf + field</option> before cropping. + </para> + </listitem> + +<listitem><formalpara> + <title>About encoding parameters and quality:</title> + <para> + Just because I recommend <option>mbd=2</option> here does not mean it + should not be used elsewhere. Along with <option>trell</option>, + <option>mbd=2</option> is one of the two + <systemitem class="library">libavcodec</systemitem> options that + increases quality the most, and you should always use at least those + two unless the drop in encoding speed is prohibitive (e.g. realtime + encoding). There are many other options to + <systemitem class="library">libavcodec</systemitem> that increase + encoding quality (and decrease encoding speed) but that is beyond + the scope of this document. + </para> + </formalpara> + </listitem> + +<listitem><formalpara> + <title>About the performance of pullup:</title> + <para> + It is safe to use <option>pullup</option> (along with <option>softskip + </option>) on progressive video, and is usually a good idea unless + the source has been definitively verified to be entirely progressive. + The performace loss is small for most cases. On a bare-minimum encode, + <option>pullup</option> causes <application>MEncoder</application> to + be 50% slower. Adding sound processing and advanced <option>lavcopts + </option> overshadows that difference, bringing the performance + decrease of using <option>pullup</option> down to 2%. + </para> + </formalpara> + </listitem> + +</orderedlist> + +</sect2> + +</sect1> + + +<sect1 id="menc-feat-enc-libavcodec"> +<title>Encoding with the <systemitem class="library">libavcodec</systemitem> + codec family</title> + +<para> +<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link> +provides simple encoding to a lot of interesting video and audio formats. +You can encode to the following codecs (more or less up to date): +</para> + +<sect2 id="menc-feat-enc-libavcodec-video-codecs"> +<title><systemitem class="library">libavcodec</systemitem>'s video codecs</title> + +<para> +<informaltable frame="all"> +<tgroup cols="2"> +<thead> +<row><entry>Video codec name</entry><entry>Description</entry></row> +</thead> +<tbody> +<row><entry>mjpeg</entry><entry> + Motion JPEG + </entry></row> +<row><entry>ljpeg</entry><entry> + lossless JPEG + </entry></row> +<row><entry>h261</entry><entry> + H.261 + </entry></row> +<row><entry>h263</entry><entry> + H.263 + </entry></row> +<row><entry>h263p</entry><entry> + H.263+ + </entry></row> +<row><entry>mpeg4</entry><entry> + ISO standard MPEG-4 (DivX, XviD compatible) + </entry></row> +<row><entry>msmpeg4</entry><entry> + pre-standard MPEG-4 variant by MS, v3 (AKA DivX3) + </entry></row> +<row><entry>msmpeg4v2</entry><entry> + pre-standard MPEG-4 by MS, v2 (used in old ASF files) + </entry></row> +<row><entry>wmv1</entry><entry> + Windows Media Video, version 1 (AKA WMV7) + </entry></row> +<row><entry>wmv2</entry><entry> + Windows Media Video, version 2 (AKA WMV8) + </entry></row> +<row><entry>rv10</entry><entry> + RealVideo 1.0 + </entry></row> +<row><entry>rv20</entry><entry> + RealVideo 2.0 + </entry></row> +<row><entry>mpeg1video</entry><entry> + MPEG-1 video + </entry></row> +<row><entry>mpeg2video</entry><entry> + MPEG-2 video + </entry></row> +<row><entry>huffyuv</entry><entry> + lossless compression + </entry></row> +<row><entry>asv1</entry><entry> + ASUS Video v1 + </entry></row> +<row><entry>asv2</entry><entry> + ASUS Video v2 + </entry></row> +<row><entry>ffv1</entry><entry> + FFmpeg's lossless video codec + </entry></row> +<row><entry>svq1</entry><entry> + Sorenson video 1 + </entry></row> +<row><entry>flv</entry><entry> + Sorenson H.263 used in Flash Video + </entry></row> +<row><entry>dvvideo</entry><entry> + Sony Digital Video + </entry></row> +<row><entry>snow</entry><entry> + FFmpeg's experimental wavelet-based codec + </entry></row> +</tbody> +</tgroup> +</informaltable> + +The first column contains the codec names that should be passed after the +<literal>vcodec</literal> config, like: <option>-lavcopts vcodec=msmpeg4</option> +</para> +<informalexample> +<para> +An example with MJPEG compression: +<screen>mencoder dvd://2 -o title2.avi -ovc lavc -lavcopts vcodec=mjpeg -oac copy</screen> +</para> +</informalexample> +</sect2> + +<sect2 id="menc-feat-enc-libavcodec-audio-codecs"> +<title><systemitem class="library">libavcodec</systemitem>'s audio codecs</title> +<para> +<informaltable frame="all"> +<tgroup cols="2"> +<thead> +<row><entry>Audio codec name</entry><entry>Description</entry></row> +</thead> +<tbody> + <row> + <entry>mp2</entry> + <entry>MPEG Layer 2</entry> + </row> + <row> + <entry>ac3</entry> + <entry>AC3, AKA Dolby Digital</entry> + </row> + <row> + <entry>adpcm_ima_wav</entry> + <entry>IMA adaptive PCM (4 bits per sample, 4:1 compression)</entry> + </row> + <row> + <entry>sonic</entry> + <entry>experimental lossy/lossless codec</entry> + </row> +</tbody> +</tgroup> +</informaltable> + +The first column contains the codec names that should be passed after the +<literal>acodec</literal> option, like: <option>-lavcopts acodec=ac3</option> +</para> + +<informalexample> +<para> +An example with AC3 compression: +<screen>mencoder dvd://2 -o title2.avi -oac lavc -lavcopts acodec=ac3 -ovc copy</screen> +</para> +</informalexample> + +<para> + Contrary to <systemitem class="library">libavcodec</systemitem>'s video + codecs, its audio codecs do not make a wise usage of the bits they are + given as they lack some minimal psychoacoustic model (if at all) + which most other codec implementations feature. + However, note that all these audio codecs are very fast and work + out-of-the-box everywhere <application>MEncoder</application> has been + compiled with <systemitem class="library">libavcodec</systemitem> (which + is the case most of time), and do not depend on external libraries. +</para> +</sect2> + + +<sect2 id="menc-feat-dvd-mpeg4-lavc-encoding-options"> +<title>Encoding options of libavcodec</title> + +<para> + Ideally, you would probably want to be able to just tell the encoder to switch + into "high quality" mode and move on. + That would probably be nice, but unfortunately hard to implement as different + encoding options yield different quality results depending on the source material. + That is because compression depends on the visual properties of the video + in question. + For example, anime and live action have very different properties and + thus require different options to obtain optimum encoding. + The good news is that some options should never be left out, like + <option>mbd=2</option>, <option>trell</option>, and <option>v4mv</option>. + See below for a detailed description of common encoding options. +</para> + + +<itemizedlist> +<title>Options to adjust:</title> +<listitem><para> + <emphasis role="bold">vmax_b_frames</emphasis>: 1 or 2 is good, depending on + the movie. + Note that if you need to have your encode be decodable by DivX5, you + need to activate closed GOP support, using + <systemitem class="library">libavcodec</systemitem>'s <option>cgop</option> + option, but you need to deactivate scene detection, which + is not a good idea as it will hurt encode efficiency a bit. +</para></listitem> + +<listitem><para> + <emphasis role="bold">vb_strategy=1</emphasis>: helps in high-motion scenes. + On some videos, vmax_b_frames may hurt quality, but vmax_b_frames=2 along + with vb_strategy=1 helps. +</para></listitem> + +<listitem><para> + <emphasis role="bold">dia</emphasis>: motion search range. Bigger is better + and slower. + Negative values are a completely different scale. + Good values are -1 for a fast encode, or 2-4 for slower. +</para></listitem> + +<listitem><para> + <emphasis role="bold">predia</emphasis>: motion search pre-pass. + Not as important as dia. Good values are 1 (default) to 4. Requires preme=2 + to really be useful. +</para></listitem> + +<listitem><para> + <emphasis role="bold">cmp, subcmp, precmp</emphasis>: Comparison function for + motion estimation. + Experiment with values of 0 (default), 2 (hadamard), 3 (dct), and 6 (rate + distortion). + 0 is fastest, and sufficient for precmp. + For cmp and subcmp, 2 is good for anime, and 3 is good for live action. + 6 may or may not be slightly better, but is slow. +</para></listitem> + +<listitem><para> + <emphasis role="bold">last_pred</emphasis>: Number of motion predictors to + take from the previous frame. + 1-3 or so help at little speed cost. + Higher values are slow for no extra gain. +</para></listitem> + +<listitem><para> + <emphasis role="bold">cbp, mv0</emphasis>: Controls the selection of macroblocks. + Small speed cost for small quality gain. +</para></listitem> + +<listitem><para> + <emphasis role="bold">qprd</emphasis>: adaptive quantization based on the + macroblock's complexity. + May help or hurt depending on the video and other options. + This can cause artifacts unless you set vqmax to some reasonably small value + (6 is good, maybe as low as 4); vqmin=1 should also help. +</para></listitem> + +<listitem><para> + <emphasis role="bold">qns</emphasis>: very slow, especially when combined + with qprd. + This option will make the encoder minimize noise due to compression + artifacts instead of making the encoded video strictly match the source. + Do not use this unless you have already tweaked everything else as far as it + will go and the results still are not good enough. +</para></listitem> + +<listitem><para> + <emphasis role="bold">vqcomp</emphasis>: Tweak ratecontrol. + What values are good depends on the movie. + You can safely leave this alone if you want. + Reducing vqcomp puts more bits on low-complexity scenes, increasing it puts + them on high-complexity scenes (default: 0.5, range: 0-1. recommended range: + 0.5-0.7). +</para></listitem> + +<listitem><para> + <emphasis role="bold">vlelim, vcelim</emphasis>: Sets the single coefficient + elimination threshold for luminance and chroma planes. + These are encoded separately in all MPEG-like algorithms. + The idea behind these options is to use some good heuristics to determine + when the change in a block is less than the threshold you specify, and in + such a case, to just encode the block as "no change". + This saves bits and perhaps speeds up encoding. vlelim=-4 and vcelim=9 + seem to be good for live movies, but seem not to help with anime; + when encoding animation, you should probably leave them unchanged. +</para></listitem> + +<listitem><para> + <emphasis role="bold">qpel</emphasis>: Quarter pixel motion estimation. + MPEG-4 uses half pixel precision for its motion search by default, + therefore this option comes with an overhead as more information will be + stored in the encoded file. + The compression gain/loss depends on the movie, but it is usually not very + effective on anime. + qpel always incurs a significant cost in CPU decode time (+25% in + practice). +</para></listitem> + +<listitem><para> + <emphasis role="bold">psnr</emphasis>: does not affect the actual encoding, + but writes a log file giving the type/size/quality of each frame, and + prints a summary of PSNR (Peak Signal to Noise Ratio) at the end. +</para></listitem> + +</itemizedlist> + +<itemizedlist> +<title>Options not recommended to play with:</title> +<listitem><para> + <emphasis role="bold">vme</emphasis>: The default is best. +</para></listitem> + +<listitem><para> + <emphasis role="bold">lumi_mask, dark_mask</emphasis>: Psychovisual adaptive + quantization. + You do not want to play with those options if you care about quality. + Reasonable values may be effective in your case, but be warned this is very + subjective. +</para></listitem> + +<listitem><para> + <emphasis role="bold">scplx_mask</emphasis>: Tries to prevent blocky + artifacts, but postprocessing is better. +</para></listitem> +</itemizedlist> +</sect2> + +<sect2 id="menc-feat-mpeg4-lavc-example-settings"> +<title>Encoding setting examples</title> + +<para> + The following settings are examples of different encoding + option combinations that affect the speed vs quality tradeoff + at the same target bitrate. +</para> + +<para> + All the encoding settings were tested on a 720x448 @30000/1001 fps + video sample, the target bitrate was 900kbps, and the machine was an + AMD-64 3400+ at 2400 MHz in 64 bits mode. + Each encoding setting features the measured encoding speed (in + frames per second) and the PSNR loss (in dB) compared to the "very + high quality" setting. + Please understand that depending on your source, your machine type + and development advancements, you may get very different results. +</para> + +<para> +<informaltable frame="all"> +<tgroup cols="4"> +<thead> +<row><entry>Description</entry><entry>Encoding options</entry><entry>speed (in fps)</entry><entry>Relative PSNR loss (in dB)</entry></row> +</thead> +<tbody> +<row> + <entry>Very high quality</entry> + <entry><option>vcodec=mpeg4:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2</option></entry> + <entry>6fps</entry> + <entry>0dB</entry> +</row> +<row> + <entry>High quality</entry> + <entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:last_pred=2:dia=-1:vmax_b_frames=2:vb_strategy=1:cmp=3:subcmp=3:precmp=0:vqcomp=0.6:turbo</option></entry> + <entry>15fps</entry> + <entry>-0.5dB</entry> +</row> +<row> + <entry>Fast</entry> + <entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:turbo</option></entry> + <entry>42fps</entry> + <entry>-0.74dB</entry> +</row> +<row> + <entry>Realtime</entry> + <entry><option>vcodec=mpeg4:mbd=2:turbo</option></entry> + <entry>54fps</entry> + <entry>-1.21dB</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</para> +</sect2> + +<sect2 id="custommatrices"><title>Custom inter/intra matrices</title> + +<para> +With this feature of +<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link> +you are able to set custom inter (I-frames/keyframes) and intra +(P-frames/predicted frames) matrices. It is supported by many of the codecs: +<systemitem>mpeg1video</systemitem> and <systemitem>mpeg2video</systemitem> +are reported as working. +</para> + +<para> +A typical usage of this feature is to set the matrices preferred by the +<ulink url="http://www.kvcd.net/">KVCD</ulink> specifications. +</para> + +<para> +The <emphasis role="bold">KVCD "Notch" Quantization Matrix:</emphasis> +</para> + +<para> +Intra: +<screen> + 8 9 12 22 26 27 29 34 + 9 10 14 26 27 29 34 37 +12 14 18 27 29 34 37 38 +22 26 27 31 36 37 38 40 +26 27 29 36 39 38 40 48 +27 29 34 37 38 40 48 58 +29 34 37 38 40 48 58 69 +34 37 38 40 48 58 69 79 +</screen> + +Inter: +<screen> +16 18 20 22 24 26 28 30 +18 20 22 24 26 28 30 32 +20 22 24 26 28 30 32 34 +22 24 26 30 32 32 34 36 +24 26 28 32 34 34 36 38 +26 28 30 32 34 36 38 40 +28 30 32 34 36 38 42 42 +30 32 34 36 38 40 42 44 +</screen> +</para> + +<para> +Usage: +<screen> +$ mencoder <replaceable>input.avi</replaceable> -o <replaceable>output.avi</replaceable> -oac copy -ovc lavc -lavcopts inter_matrix=...:intra_matrix=... +</screen> +</para> + +<para> +<screen> +$ mencoder <replaceable>input.avi</replaceable> -ovc lavc -lavcopts +vcodec=mpeg2video:intra_matrix=8,9,12,22,26,27,29,34,9,10,14,26,27,29,34,37, +12,14,18,27,29,34,37,38,22,26,27,31,36,37,38,40,26,27,29,36,39,38,40,48,27, +29,34,37,38,40,48,58,29,34,37,38,40,48,58,69,34,37,38,40,48,58,69,79 +:inter_matrix=16,18,20,22,24,26,28,30,18,20,22,24,26,28,30,32,20,22,24,26, +28,30,32,34,22,24,26,30,32,32,34,36,24,26,28,32,34,34,36,38,26,28,30,32,34, +36,38,40,28,30,32,34,36,38,42,42,30,32,34,36,38,40,42,44 -oac copy -o svcd.mpg +</screen> +</para> +</sect2> + + +<sect2 id="menc-feat-dvd-mpeg4-example"> +<title>Example</title> + +<para> + So, you have just bought your shiny new copy of Harry Potter and the Chamber + of Secrets (widescreen edition, of course), and you want to rip this DVD + so that you can add it to your Home Theatre PC. This is a region 1 DVD, + so it is NTSC. The example below will still apply to PAL, except you will + omit <option>-ofps 24000/1001</option> (because the output framerate is the + same as the input framerate), and of course the crop dimensions will be + different. +</para> + +<para> + After running <option>mplayer dvd://1</option>, we follow the process + detailed in the section <link linkend="menc-feat-telecine">How to deal + with telecine and interlacing in NTSC DVDs</link> and discover that it is + 24000/1001 fps progressive video, which means that we need not use an inverse + telecine filter, such as <option>pullup</option> or + <option>filmdint</option>. +</para> + +<para> + Next, we want to determine the appropriate crop rectangle, so we use the + cropdetect filter: + + <screen>mplayer dvd://1 -vf cropdetect</screen> + + Make sure you seek to a fully filled frame (such as a bright scene), and + you will see in <application>MPlayer</application>'s console output: + + <screen>crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)</screen> + + We then play the movie back with this filter to test its correctness: + + <screen>mplayer dvd://1 -vf crop=720:362:0:58</screen> + + And we see that it looks perfectly fine. Next, we ensure the width and + height are a multiple of 16. The width is fine, however the height is + not. Since we did not fail 7th grade math, we know that the nearest + multiple of 16 lower than 362 is 352. +</para> + +<para> + We could just use <option>crop=720:352:0:58</option>, but it would be nice + to take a little off the top and a little off the bottom so that we + retain the center. We have shrunk the height by 10 pixels, but we do not + want to increase the y-offset by 5-pixels since that is an odd number and + will adversely affect quality. Instead, we will increase the y-offset by + 4 pixels: + + <screen>mplayer dvd://1 -vf crop=720:352:0:62</screen> + + Another reason to shave pixels from both the top and the bottom is that we + ensure we have eliminated any half-black pixels if they exist. Note that if + your video is telecined, make sure the <option>pullup</option> filter (or + whichever inverse telecine filter you decide to use) appears in the filter + chain before you crop. If it is interlaced, deinterlace before cropping. + (If you choose to preserve the interlaced video, then make sure your + vertical crop offset is a multiple of 4.) +</para> + +<para> + If you are really concerned about losing those 10 pixels, you might + prefer instead to scale the dimensions down to the nearest multiple of 16. + The filter chain would look like: + + <screen>-vf crop=720:362:0:58,scale=720:352</screen> + + Scaling the video down like this will mean that some small amount of + detail is lost, though it probably will not be perceptible. Scaling up will + result in lower quality (unless you increase the bitrate). Cropping + discards those pixels altogether. It is a tradeoff that you will want to + consider for each circumstance. For example, if the DVD video was made + for television, you might want to avoid vertical scaling, since the line + sampling corresponds to the way the content was originally recorded. +</para> + +<para> + On inspection, we see that our movie has a fair bit of action and high + amounts of detail, so we pick 2400Kbit for our bitrate. +</para> + +<para> + We are now ready to do the two pass encode. Pass one: + + <screen>mencoder dvd://1 -ofps 24000/1001 -oac copy -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \ +-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 \ +-o Harry_Potter_2.avi</screen> + + And pass two is the same, except that we specify <option>vpass=2</option>: + + <screen>mencoder dvd://1 -ofps 24000/1001 -oac copy -vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2 -ovc lavc \ +-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=2 \ +-o Harry_Potter_2.avi</screen> +</para> + +<para> + The options <option>v4mv:mbd=2:trell</option> will greatly increase the + quality at the expense of encoding time. There is little reason to leave + these options out when the primary goal is quality. The options + <option>cmp=3:subcmp=3:mbcmp=3</option> select a comparison function that + yields higher quality than the defaults. You might try experimenting with + this parameter (refer to the man page for the possible values) as + different functions can have a large impact on quality depending on the + source material. For example, if you find + <systemitem class="library">libavcodec</systemitem> produces too much + blocky artifacting, you could try selecting the experimental NSSE as + comparison function via <option>*cmp=10</option>. +</para> + +<para> + For this movie, the resulting AVI will be 138 minutes long and nearly + 3GB. And because you said that file size does not matter, this is a + perfectly acceptable size. However, if you had wanted it smaller, you + could try a lower bitrate. Increasing bitrates have diminishing + returns, so while we might clearly see an improvement from 1800Kbit to + 2000Kbit, it might not be so noticeable above 2000Kbit. Feel + free to experiment until you are happy. +</para> + +<para> + Because we passed the source video through a denoise filter, you may want + to add some of it back during playback. This, along with the + <option>spp</option> post-processing filter, drastically improves the + perception of quality and helps eliminate blocky artifacts in the video. + With <application>MPlayer</application>'s <option>autoq</option> option, + you can vary the amount of post-processing done by the spp filter + depending on available CPU. Also, at this point, you may want to apply + gamma and/or color correction to best suit your display. For example: + + <screen>mplayer Harry_Potter_2.avi -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3</screen> + +</para> +</sect2> +</sect1> + + +<sect1 id="menc-feat-xvid"> +<title>Encoding with the <systemitem class="library">XviD</systemitem> +codec</title> +<para> + <systemitem class="library">XviD</systemitem> is a free library for + encoding MPEG-4 ASP video streams. + Before starting to encode, you need to <link linkend="xvid"> + set up <application>MEncoder</application> to support it</link>. +</para> +<para> + This guide mainly aims at featuring the same kind of information + as x264's encoding guide. + Therefore, please begin by reading + <link linkend="menc-feat-x264-encoding-options-intro">the first part</link> + of that guide. +</para> + + +<sect2 id="menc-feat-xvid-intro"> +<title>What options should I use to get the best results?</title> + +<para> + Please begin by reviewing the + <systemitem class="library">XviD</systemitem> section of + <application>MPlayer</application>'s man page. + This section is intended to be a supplement to the man page. +</para> +<para> + The XviD default settings are already a good tradeoff between + speed and quality, therefore you can safely stick to them if + the following section puzzles you. +</para> +</sect2> + +<sect2 id="menc-feat-xvid-encoding-options"> +<title>Encoding options of <systemitem class="library">XviD</systemitem></title> + +<itemizedlist> +<listitem><para> + <emphasis role="bold">vhq</emphasis> + This setting affects the macroblock decision algorithm, where the + higher the setting, the wiser the decision. + The default setting may be safely used for every encode, while + higher settings always help PSNR but are significantly slower. + Please note that a better PSNR does not necessarily mean + that the picture will look better, but tells you that it is + closer to the original. + Turning it off will noticeably speed up encoding; if speed is + critical for you, the tradeoff may be worth it. +</para></listitem> + +<listitem><para> + <emphasis role="bold">bvhq</emphasis> + This does the same job as vhq, but does it on B-frames. + It has a negligible impact on speed, and slightly improves quality + (around +0.1dB PSNR). +</para></listitem> + +<listitem><para> + <emphasis role="bold">max_bframes</emphasis> + A higher number of consecutive allowed B-frames usually improves + compressibility, although it may also lead to more blocking artifacts. + The default setting is a good tradeoff between compressibility and + quality, but you may increase it up to 3 if you are bitrate-starved. + You may also decrease it to 1 or 0 if you are aiming at perfect + quality, though in that case you should make sure your + target bitrate is high enough to ensure that the encoder does not + have to increase quantizers to reach it. +</para></listitem> + +<listitem><para> + <emphasis role="bold">bf_threshold</emphasis> + This controls the B-frame sensitivity of the encoder, where a higher + value leads to more B-frames being used (and vice versa). + This setting is to be used together with <option>max_bframes</option>; + if you are bitrate-starved, you should increase both + <option>max_bframes</option> and <option>bf_threshold</option>, + while you may increase <option>max_bframes</option> and reduce + <option>bf_threshold</option> so that the encoder may use more + B-frames in places that only <emphasis role="bold">really</emphasis> + need them. + A low number of <option>max_bframes</option> and a high value of + <option>bf_threshold</option> is probably not a wise choice as it + will force the encoder to put B-frames in places that would not + benefit from them, therefore reducing visual quality. + However, if you need to be compatible with standalone players that + only support old DivX profiles (which only supports up to 1 + consecutive B-frame), this would be your only way to + increase compressibility through using B-frames. +</para></listitem> + +<listitem><para> + <emphasis role="bold">trellis</emphasis> + Optimizes the quantization process to get an optimal tradeoff + between PSNR and bitrate, which allows significant bit saving. + These bits will in return be spent elsewhere on the video, + raising overall visual quality. + You should always leave it on as its impact on quality is huge. + Even if you are looking for speed, do not disable it until you + have turned down <option>vhq</option> and all other more + CPU-hungry options to the minimum. +</para></listitem> + +<listitem><para> + <emphasis role="bold">hq_ac</emphasis> + Activates a better coefficient cost estimation method, which slightly + reduces filesize by around 0.15 to 0.19% (which corresponds to less + than 0.01dB PSNR increase), while having a negligible impact on speed. + It is therefore recommended to always leave it on. +</para></listitem> + +<listitem><para> + <emphasis role="bold">cartoon</emphasis> + Designed to better encode cartoon content, and has no impact on + speed as it just tunes the mode decision heuristics for this type + of content. +</para></listitem> + +<listitem><para> + <emphasis role="bold">me_quality</emphasis> + This setting is to control the precision of the motion estimation. + The higher <option>me_quality</option>, the more + precise the estimation of the original motion will be, and the + better the resulting clip will capture the original motion. + </para> + <para> + The default setting is best in all cases; + thus it is not recommended to turn it down unless you are + really looking for speed, as all the bits saved by a good motion + estimation would be spent elsewhere, raising overall quality. + Therefore, do not go any lower than 5, and even that only as a last + resort. +</para></listitem> + +<listitem><para> + <emphasis role="bold">chroma_me</emphasis> + Improves motion estimation by also taking the chroma (color) + information into account, whereas <option>me_quality</option> + alone only uses luma (grayscale). + This slows down encoding by 5-10% but improves visual quality + quite a bit by reducing blocking effects and reduces filesize by + around 1.3%. + If you are looking for speed, you should disable this option before + starting to consider reducing <option>me_quality</option>. +</para></listitem> + +<listitem><para> + <emphasis role="bold">chroma_opt</emphasis> + Is intended to increase chroma image quality around pure + white/black edges, rather than improving compression. + This can help to reduce the "red stairs" effect. +</para></listitem> + +<listitem><para> + <emphasis role="bold">lumi_mask</emphasis> + Tries to give less bitrate to part of the picture that the + human eye cannot see very well, which should allow the encoder + to spend the saved bits on more important parts of the picture. + The quality of the encode yielded by this option highly depends + on personal preferences and on the type and monitor settings + used to watch it (typically, it will not look as good if it is + bright or if it is a TFT monitor). +</para></listitem> + +<listitem><para> + <emphasis role="bold">qpel</emphasis> + Raise the number of candidate motion vectors by increasing + the precision of the motion estimation from halfpel to + quarterpel. + The idea is to find better motion vectors which will in return + reduce bitrate (hence increasing quality). + However, motion vectors with quarterpel precision require a + few extra bits to code, but the candidate vectors do not always + give (much) better results. + Quite often, the codec still spends bits on the extra precision, + but little or no extra quality is gained in return. + Unfortunately, there is no way to foresee the possible gains of + <option>qpel</option>, so you need to actually encode with and + without it to know for sure. + </para><para> + <option>qpel</option> can be almost double encoding time, and + requires as much as 25% more processing power to decode. + It is not supported by all standalone players. +</para></listitem> + +<listitem><para> + <emphasis role="bold">gmc</emphasis> + Tries to save bits on panning scenes by using a single motion + vector for the whole frame. + This almost always raises PSNR, but significantly slows down + encoding (as well as decoding). + Therefore, you should only use it when you have turned + <option>vhq</option> to the maximum. + <systemitem class="library">XviD</systemitem>'s GMC is more + sophisticated than DivX's, but is only supported by few + standalone players. +</para></listitem> + +</itemizedlist> +</sect2> + +<sect2 id="menc-feat-xvid-encoding-profiles"> +<title>Encoding profiles</title> +<para> + XviD supports encoding profiles through the <option>profile</option> option, + which are used to impose restrictions on the properties of the XviD video + stream such that it will be playable on anything which supports the + chosen profile. + The restrictions relate to resolutions, bitrates and certain MPEG-4 + features. + The following table shows what each profile supports. +</para> +<informaltable> +<tgroup cols="16" align="center"> +<colspec colnum="1" colname="col1"/> +<colspec colnum="2" colname="col2"/> +<colspec colnum="3" colname="col3"/> +<colspec colnum="4" colname="col4"/> +<colspec colnum="5" colname="col5"/> +<colspec colnum="6" colname="col6"/> +<colspec colnum="7" colname="col7"/> +<colspec colnum="8" colname="col8"/> +<colspec colnum="9" colname="col9"/> +<colspec colnum="10" colname="col10"/> +<colspec colnum="11" colname="col11"/> +<colspec colnum="12" colname="col12"/> +<colspec colnum="13" colname="col13"/> +<colspec colnum="14" colname="col14"/> +<colspec colnum="15" colname="col15"/> +<colspec colnum="16" colname="col16"/> +<colspec colnum="17" colname="col17"/> +<spanspec spanname="spa2-5" namest="col2" nameend="col5"/> +<spanspec spanname="spa6-11" namest="col6" nameend="col11"/> +<spanspec spanname="spa12-17" namest="col12" nameend="col17"/> + <tbody> + <row> + <entry></entry> + <entry spanname="spa2-5">Simple</entry> + <entry spanname="spa6-11">Advanced Simple</entry> + <entry spanname="spa12-17">DivX</entry> + </row> + <row> + <entry>Profile name</entry> + <entry>0</entry> + <entry>1</entry> + <entry>2</entry> + <entry>3</entry> + <entry>0</entry> + <entry>1</entry> + <entry>2</entry> + <entry>3</entry> + <entry>4</entry> + <entry>5</entry> + <entry>Handheld</entry> + <entry>Portable NTSC</entry> + <entry>Portable PAL</entry> + <entry>Home Theater NTSC</entry> + <entry>Home Theater PAL</entry> + <entry>HDTV</entry> + </row> + <row> + <entry>Width [pixels]</entry> + <entry>176</entry> + <entry>176</entry> + <entry>352</entry> + <entry>352</entry> + <entry>176</entry> + <entry>176</entry> + <entry>352</entry> + <entry>352</entry> + <entry>352</entry> + <entry>720</entry> + <entry>176</entry> + <entry>352</entry> + <entry>352</entry> + <entry>720</entry> + <entry>720</entry> + <entry>1280</entry> + </row> + <row> + <entry>Height [pixels]</entry> + <entry>144</entry> + <entry>144</entry> + <entry>288</entry> + <entry>288</entry> + <entry>144</entry> + <entry>144</entry> + <entry>288</entry> + <entry>288</entry> + <entry>576</entry> + <entry>576</entry> + <entry>144</entry> + <entry>240</entry> + <entry>288</entry> + <entry>480</entry> + <entry>576</entry> + <entry>720</entry> + </row> + <row> + <entry>Frame rate [fps]</entry> + <entry>15</entry> + <entry>15</entry> + <entry>15</entry> + <entry>15</entry> + <entry>30</entry> + <entry>30</entry> + <entry>15</entry> + <entry>30</entry> + <entry>30</entry> + <entry>30</entry> + <entry>15</entry> + <entry>30</entry> + <entry>25</entry> + <entry>30</entry> + <entry>25</entry> + <entry>30</entry> + </row> + <row> + <entry>Max average bitrate [kbps]</entry> + <entry>64</entry> + <entry>64</entry> + <entry>128</entry> + <entry>384</entry> + <entry>128</entry> + <entry>128</entry> + <entry>384</entry> + <entry>768</entry> + <entry>3000</entry> + <entry>8000</entry> + <entry>537.6</entry> + <entry>4854</entry> + <entry>4854</entry> + <entry>4854</entry> + <entry>4854</entry> + <entry>9708.4</entry> + </row> + <row> + <entry>Peak average bitrate over 3 secs [kbps]</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>800</entry> + <entry>8000</entry> + <entry>8000</entry> + <entry>8000</entry> + <entry>8000</entry> + <entry>16000</entry> + </row> + <row> + <entry>Max. B-frames</entry> + <entry>0</entry> + <entry>0</entry> + <entry>0</entry> + <entry>0</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>0</entry> + <entry>1</entry> + <entry>1</entry> + <entry>1</entry> + <entry>1</entry> + <entry>2</entry> + </row> + <row> + <entry>MPEG quantization</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + <row> + <entry>Adaptive quantization</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + </row> + <row> + <entry>Interlaced encoding</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + </row> + <row> + <entry>Quaterpixel</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + <row> + <entry>Global motion compensation</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry>X</entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + <entry></entry> + </row> + </tbody> +</tgroup> +</informaltable> +</sect2> + +<sect2 id="menc-feat-xvid-example-settings"> +<title>Encoding setting examples</title> + +<para> + The following settings are examples of different encoding + option combinations that affect the speed vs quality tradeoff + at the same target bitrate. +</para> + +<para> + All the encoding settings were tested on a 720x448 @30000/1001 fps + video sample, the target bitrate was 900kbps, and the machine was an + AMD-64 3400+ at 2400 MHz in 64 bits mode. + Each encoding setting features the measured encoding speed (in + frames per second) and the PSNR loss (in dB) compared to the "very + high quality" setting. + Please understand that depending on your source, your machine type + and development advancements, you may get very different results. +</para> + +<para> +<informaltable frame="all"> +<tgroup cols="4"> +<thead> +<row><entry>Description</entry><entry>Encoding options</entry><entry>speed (in fps)</entry><entry>Relative PSNR loss (in dB)</entry></row> +</thead> +<tbody> +<row> + <entry>Very high quality</entry> + <entry><option>chroma_opt:vhq=4:bvhq=1:quant_type=mpeg</option></entry> + <entry>16fps</entry> + <entry>0dB</entry> +</row> +<row> + <entry>High quality</entry> + <entry><option>vhq=2:bvhq=1:chroma_opt:quant_type=mpeg</option></entry> + <entry>18fps</entry> + <entry>-0.1dB</entry> +</row> +<row> + <entry>Fast</entry> + <entry><option>turbo:vhq=0</option></entry> + <entry>28fps</entry> + <entry>-0.69dB</entry> +</row> +<row> + <entry>Realtime</entry> + <entry><option>turbo:nochroma_me:notrellis:max_bframes=0:vhq=0</option></entry> + <entry>38fps</entry> + <entry>-1.48dB</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</para> +</sect2> + +</sect1> + +<sect1 id="menc-feat-x264"> +<title>Encoding with the <systemitem class="library">x264</systemitem> codec</title> +<para> + <systemitem class="library">x264</systemitem> is a free library for + encoding H.264/AVC video streams. + Before starting to encode, you need to <link linkend="codec-x264-encode"> + set up <application>MEncoder</application> to support it</link>. +</para> + +<sect2 id="menc-feat-x264-encoding-options"> +<title>Encoding options of x264</title> + +<para> + Please begin by reviewing the + <systemitem class="library">x264</systemitem> section of + <application>MPlayer</application>'s man page. + This section is intended to be a supplement to the man page. + Here you will find quick hints about which options are most + likely to interest most people. The man page is more terse, + but also more exhaustive, and it sometimes offers much better + technical detail. +</para> + +<sect3 id="menc-feat-x264-encoding-options-intro"> +<title>Introduction</title> +<para>This guide considers two major categories of encoding options:</para> + +<orderedlist> + <listitem><para>Options which mainly trade off encoding time vs. quality + </para></listitem> + <listitem><para>Options which may be useful for fulfilling various personal + preferences and special requirements</para></listitem> +</orderedlist> + +<para> + Ultimately, only you can decide which options are best for your + purposes. The decision for the first class of options is the simplest: + you only have to decide whether you think the quality differences + justify the speed differences. For the second class of options, + preferences may be far more subjective, and more factors may be + involved. Note that some of the "personal preferences and special + requirements" options can still have large impacts on speed or quality, + but that is not what they are primarily useful for. A couple of the + "personal preference" options may even cause changes that look better + to some people, but look worse to others. +</para> + +<para> + Before continuing, you need to understand that this guide uses only one + quality metric: global PSNR. + For a brief explanation of what PSNR is, see + <ulink url="http://en.wikipedia.org/wiki/PSNR">the Wikipedia article on PSNR</ulink>. + Global PSNR is the last PSNR number reported when you include + the <option>psnr</option> option in <option>x264encopts</option>. + Any time you read a claim about PSNR, one of the assumptions + behind the claim is that equal bitrates are used. +</para> + +<para> + Nearly all of this guide's comments assume you are using + two pass. + When comparing options, there are two major reasons for using + two pass encoding. + First, using two pass often gains around 1dB PSNR, which is a + very big difference. + Secondly, testing options by doing direct quality comparisons + with one pass encodes introduces a major confounding + factor: bitrate often varies significantly with each encode. + It is not always easy to tell whether quality changes are due + mainly to changed options, or if they mostly reflect essentially + random differences in the achieved bitrate. +</para> + +</sect3> + +<sect3 id="menc-feat-x264-encoding-options-speedvquality"> +<title>Options which primarily affect speed and quality</title> + +<itemizedlist> +<listitem><para> + <emphasis role="bold">subq</emphasis>: + Of the options which allow you to trade off speed for quality, + <option>subq</option> and <option>frameref</option> (see below) are usually + by far the most important. + If you are interested in tweaking either speed or quality, these + are the first options you should consider. + On the speed dimension, the <option>frameref</option> and + <option>subq</option> options interact with each other fairly + strongly. + Experience shows that, with one reference frame, + <option>subq=5</option> (the default setting) takes about 35% more time than + <option>subq=1</option>. + With 6 reference frames, the penalty grows to over 60%. + <option>subq</option>'s effect on PSNR seems fairly constant + regardless of the number of reference frames. + Typically, <option>subq=5</option> achieves 0.2-0.5 dB higher global + PSNR in comparison <option>subq=1</option>. + This is usually enough to be visible. +</para> +<para> + <option>subq=6</option> is the slowest, highest quality mode. + In comparison to <option>subq=5</option>, it usually gains 0.1-0.4 dB + global PSNR with speed costs varying from 25%-100%. + Unlike other levels of <option>subq</option>, the behavior of + <option>subq=6</option> does not depend much on <option>frameref</option> + and <option>me</option>. Instead, the effectiveness of <option>subq=6 + </option> depends mostly upon the number of B-frames used. In normal + usage, this means <option>subq=6</option> has a large impact on both speed + and quality in complex, high motion scenes, but it may not have much effect + in low-motion scenes. Note that it is still recommended to always set + <option>bframes</option> to something other than zero (see below). +</para></listitem> +<listitem><para> + <emphasis role="bold">frameref</emphasis>: + <option>frameref</option> is set to 1 by default, but this + should not be taken to imply that it is reasonable to set it + to 1. + Merely raising <option>frameref</option> to 2 gains around + 0.15dB PSNR with a 5-10% speed penalty; this seems like a + good tradeoff. + <option>frameref=3</option> gains around 0.25dB PSNR over + <option>frameref=1</option>, which should be a visible + difference. + <option>frameref=3</option> is around 15% slower than + <option>frameref=1</option>. + Unfortunately, diminishing returns set in rapidly. + <option>frameref=6</option> can be expected to gain only + 0.05-0.1 dB over <option>frameref=3</option> at an additional + 15% speed penalty. + Above <option>frameref=6</option>, the quality gains are + usually very small (although you should keep in mind throughout + this whole discussion that it can vary quite a lot depending on + your source). + In a fairly typical case, <option>frameref=12</option> + will improve global PSNR by a tiny 0.02dB over + <option>frameref=6</option>, at a speed cost of 15%-20%. + At such high <option>frameref</option> values, the only really + good thing that can be said is that increasing it even further will + almost certainly never <emphasis role="bold">harm</emphasis> + PSNR, but the additional quality benefits are barely even + measurable, let alone perceptible. +</para> +<note><title>Note:</title> +<para> + Raising <option>frameref</option> to unnecessarily high values + <emphasis role="bold">can</emphasis> and + <emphasis role="bold">usually does</emphasis> + hurt coding efficiency if you turn CABAC off. + With CABAC on (the default behavior), the possibility of setting + <option>frameref</option> "too high" currently seems too remote + to even worry about, and in the future, optimizations may remove + the possibility altogether. +</para> +</note> +<para> + If you care about speed, a reasonable compromise is to use low + <option>subq</option> and <option>frameref</option> values on + the first pass, and then raise them on the second pass. + Typically, this has a negligible negative effect on the final + quality: You will probably lose well under 0.1dB PSNR, which + should be much too small of a difference to see. + However, different values of <option>frameref</option> can + occasionally affect frametype decision. + Most likely, these are rare outlying cases, but if you want to + be pretty sure, consider whether your video has either + fullscreen repetitive flashing patterns or very large temporary + occlusions which might force an I-frame. + Adjust the first-pass <option>frameref</option> so it is large + enough to contain the duration of the flashing cycle (or occlusion). + For example, if the scene flashes back and forth between two images + over a duration of three frames, set the first pass + <option>frameref</option> to 3 or higher. + This issue is probably extremely rare in live action video material, + but it does sometimes come up in video game captures. +</para></listitem> + +<listitem><para> + <emphasis role="bold">me</emphasis>: + This option is for choosing the motion estimation search method. + Altering this option provides a straightforward quality-vs-speed + tradeoff. <option>me=dia</option> is only a few percent faster than + the default search, at a cost of under 0.1dB global PSNR. The + default setting (<option>me=hex</option>) is a reasonable tradeoff + between speed and quality. <option>me=umh</option> gains a little under + 0.1dB global PSNR, with a speed penalty that varies depending on + <option>frameref</option>. At high values of + <option>frameref</option> (e.g. 12 or so), <option>me=umh</option> + is about 40% slower than the default <option> me=hex</option>. With + <option>frameref=3</option>, the speed penalty incurred drops to + 25%-30%. +</para> +<para> + <option>me=esa</option> uses an exhaustive search that is too slow for + practical use. +</para> +</listitem> + +<listitem><para> + <emphasis role="bold">partitions=all</emphasis>: + This option enables the use of 8x4, 4x8 and 4x4 subpartitions in + predicted macroblocks (in addition to the default partitions). + Enabling it results in a fairly consistent + 10%-15% loss of speed. This option is rather useless in source + containing only low motion, however in some high-motion source, + particularly source with lots of small moving objects, gains of + about 0.1dB can be expected. +</para> +</listitem> + +<listitem><para> + <emphasis role="bold">bframes</emphasis>: + If you are used to encoding with other codecs, you may have found + that B-frames are not always useful. + In H.264, this has changed: there are new techniques and block + types that are possible in B-frames. + Usually, even a naive B-frame choice algorithm can have a + significant PSNR benefit. + It is interesting to note that using B-frames usually speeds up + the second pass somewhat, and may also speed up a single + pass encode if adaptive B-frame decision is turned off. +</para> +<para> + With adaptive B-frame decision turned off + (<option>x264encopts</option>'s <option>nob_adapt</option>), + the optimal value for this setting is usually no more than + <option>bframes=1</option>, or else high-motion scenes can suffer. + With adaptive B-frame decision on (the default behavior), it is + safe to use higher values; the encoder will reduce the use of + B-frames in scenes where they would hurt compression. + The encoder rarely chooses to use more than 3 or 4 B-frames; + setting this option any higher will have little effect. +</para></listitem> + +<listitem><para> + <emphasis role="bold">b_adapt</emphasis>: + Note: This is on by default. +</para> +<para> + With this option enabled, the encoder will use a reasonably fast + decision process to reduce the number of B-frames used in scenes that + might not benefit from them as much. + You can use <option>b_bias</option> to tweak how B-frame-happy + the encoder is. + The speed penalty of adaptive B-frames is currently rather modest, + but so is the potential quality gain. + It usually does not hurt, however. + Note that this only affects speed and frametype decision on the + first pass. + <option>b_adapt</option> and <option>b_bias</option> have no + effect on subsequent passes. +</para></listitem> + +<listitem><para> + <emphasis role="bold">b_pyramid</emphasis>: + You might as well enable this option if you are using >=2 B-frames; + as the man page says, you get a little quality improvement at no + speed cost. + Note that these videos cannot be read by libavcodec-based decoders + older than about March 5, 2005. +</para></listitem> + +<listitem><para> + <emphasis role="bold">weight_b</emphasis>: + In typical cases, there is not much gain with this option. + However, in crossfades or fade-to-black scenes, weighted + prediction gives rather large bitrate savings. + In MPEG-4 ASP, a fade-to-black is usually best coded as a series + of expensive I-frames; using weighted prediction in B-frames + makes it possible to turn at least some of these into much smaller + B-frames. + Encoding time cost is minimal, as no extra decisions need to be made. + Also, contrary to what some people seem to guess, the decoder + CPU requirements are not much affected by weighted prediction, + all else being equal. +</para> +<para> + Unfortunately, the current adaptive B-frame decision algorithm + has a strong tendency to avoid B-frames during fades. + Until this changes, it may be a good idea to add + <option>nob_adapt</option> to your x264encopts, if you expect + fades to have a large effect in your particular video + clip. +</para></listitem> +</itemizedlist> +</sect3> + +<sect3 id="menc-feat-x264-encoding-options-misc-preferences"> +<title>Options pertaining to miscellaneous preferences</title> +<itemizedlist> +<listitem><para> + <emphasis role="bold">Two pass encoding</emphasis>: + Above, it was suggested to always use two pass encoding, but there + are still reasons for not using it. For instance, if you are capturing + live TV and encoding in realtime, you are forced to use single-pass. + Also, one pass is obviously faster than two passes; if you use the + exact same set of options on both passes, two pass encoding is almost + twice as slow. +</para> +<para> + Still, there are very good reasons for using two pass encoding. For + one thing, single pass ratecontrol is not psychic, and it often makes + unreasonable choices because it cannot see the big picture. For example, + suppose you have a two minute long video consisting of two distinct + halves. The first half is a very high-motion scene lasting 60 seconds + which, in isolation, requires about 2500kbps in order to look decent. + Immediately following it is a much less demanding 60-second scene + that looks good at 300kbps. Suppose you ask for 1400kbps on the theory + that this is enough to accomodate both scenes. Single pass ratecontrol + will make a couple of "mistakes" in such a case. First of all, it + will target 1400kbps in both segments. The first segment may end up + heavily overquantized, causing it to look unacceptably and unreasonably + blocky. The second segment will be heavily underquantized; it may look + perfect, but the bitrate cost of that perfection will be completely + unreasonable. What is even harder to avoid is the problem at the + transition between the two scenes. The first seconds of the low motion + half will be hugely over-quantized, because the ratecontrol is still + expecting the kind of bitrate requirements it met in the first half + of the video. This "error period" of heavily over-quantized low motion + will look jarringly bad, and will actually use less than the 300kbps + it would have taken to make it look decent. There are ways to + mitigate the pitfalls of single-pass encoding, but they may tend to + increase bitrate misprediction. +</para> +<para> + Multipass ratecontrol can offer huge advantages over a single pass. + Using the statistics gathered from the first pass encode, the encoder + can estimate, with reasonable accuracy, the "cost" (in bits) of + encoding any given frame, at any given quantizer. This allows for + a much more rational, better planned allocation of bits between the + expensive (high-motion) and cheap (low-motion) scenes. See + <option>qcomp</option> below for some ideas on how to tweak this + allocation to your liking. +</para> +<para> + Moreover, two passes need not take twice as long as one pass. You can + tweak the options in the first pass for higher speed and lower quality. + If you choose your options well, you can get a very fast first pass. + The resulting quality in the second pass will be slightly lower because size + prediction is less accurate, but the quality difference is normally much + too small to be visible. Try, for example, adding + <option>subq=1:frameref=1</option> to the first pass + <option>x264encopts</option>. Then, on the second pass, use slower, + higher-quality options: + <option>subq=6:frameref=15:partitions=all:me=umh</option> +</para></listitem> +<listitem><para> + <emphasis role="bold">Three pass encoding</emphasis>? + + x264 offers the ability to make an arbitrary number of consecutive + passes. If you specify <option>pass=1</option> on the first pass, + then use <option>pass=3</option> on a subsequent pass, the subsequent + pass will both read the statistics from the previous pass, and write + its own statistics. An additional pass following this one will have + a very good base from which to make highly accurate predictions of + framesizes at a chosen quantizer. In practice, the overall quality + gain from this is usually close to zero, and quite possibly a third + pass will result in slightly worse global PSNR than the pass before + it. In typical usage, three passes help if you get either bad bitrate + prediction or bad looking scene transitions when using only two passes. + This is somewhat likely to happen on extremely short clips. There are + also a few special cases in which three (or more) passes are handy + for advanced users, but for brevity, this guide omits discussing those + special cases. + +</para></listitem> +<listitem><para> + <emphasis role="bold">qcomp</emphasis>: + <option>qcomp</option> trades off the number of bits allocated + to "expensive" high-motion versus "cheap" low-motion frames. At + one extreme, <option>qcomp=0</option> aims for true constant + bitrate. Typically this would make high-motion scenes look completely + awful, while low-motion scenes would probably look absolutely + perfect, but would also use many times more bitrate than they + would need in order to look merely excellent. At the other extreme, + <option>qcomp=1</option> achieves nearly constant quantization parameter + (QP). Constant QP does not look bad, but most people think it is more + reasonable to shave some bitrate off of the extremely expensive scenes + (where the loss of quality is not as noticeable) and reallocate it to + the scenes that are easier to encode at excellent quality. + <option>qcomp</option> is set to 0.6 by default, which may be slightly + low for many peoples' taste (0.7-0.8 are also commonly used). +</para></listitem> +<listitem><para> + <emphasis role="bold">keyint</emphasis>: + <option>keyint</option> is solely for trading off file seekability against + coding efficiency. By default, <option>keyint</option> is set to 250. In + 25fps material, this guarantees the ability to seek to within 10 seconds + precision. If you think it would be important and useful to be able to + seek within 5 seconds of precision, set <option>keyint=125</option>; + this will hurt quality/bitrate slightly. If you care only about quality + and not about seekability, you can set it to much higher values + (understanding that there are diminishing returns which may become + vanishingly low, or even zero). The video stream will still have seekable + points as long as there are some scene changes. +</para></listitem> +<listitem><para> + <emphasis role="bold">deblock</emphasis>: + This topic is going to be a bit controversial. +</para> +<para> + H.264 defines a simple deblocking procedure on I-blocks that uses + pre-set strengths and thresholds depending on the QP of the block + in question. + By default, high QP blocks are filtered heavily, and low QP blocks + are not deblocked at all. + The pre-set strengths defined by the standard are well-chosen and + the odds are very good that they are PSNR-optimal for whatever + video you are trying to encode. + The <option>deblock</option> allow you to specify offsets to the preset deblocking + thresholds. +</para> +<para> + Many people seem to think it is a good idea to lower the deblocking + filter strength by large amounts (say, -3). + This is however almost never a good idea, and in most cases, + people who are doing this do not understand very well how + deblocking works by default. +</para> +<para> + The first and most important thing to know about the in-loop + deblocking filter is that the default thresholds are almost always + PSNR-optimal. + In the rare cases that they are not optimal, the ideal offset is + plus or minus 1. + Adjusting deblocking parameters by a larger amount is almost + guaranteed to hurt PSNR. + Strengthening the filter will smear more details; weakening the + filter will increase the appearance of blockiness. +</para> +<para> + It is definitely a bad idea to lower the deblocking thresholds if + your source is mainly low in spacial complexity (i.e., not a lot + of detail or noise). + The in-loop filter does a rather excellent job of concealing + the artifacts that occur. + If the source is high in spacial complexity, however, artifacts + are less noticeable. + This is because the ringing tends to look like detail or noise. + Human visual perception easily notices when detail is removed, + but it does not so easily notice when the noise is wrongly + represented. + When it comes to subjective quality, noise and detail are somewhat + interchangeable. + By lowering the deblocking filter strength, you are most likely + increasing error by adding ringing artifacts, but the eye does + not notice because it confuses the artifacts with detail. +</para> + +<para> + This <emphasis role="bold">still</emphasis> does not justify + lowering the deblocking filter strength, however. + You can generally get better quality noise from postprocessing. + If your H.264 encodes look too blurry or smeared, try playing with + <option>-vf noise</option> when you play your encoded movie. + <option>-vf noise=8a:4a</option> should conceal most mild + artifacting. + It will almost certainly look better than the results you + would have gotten just by fiddling with the deblocking filter. +</para></listitem> +</itemizedlist> +</sect3> +</sect2> + +<sect2 id="menc-feat-x264-example-settings"> +<title>Encoding setting examples</title> + +<para> + The following settings are examples of different encoding + option combinations that affect the speed vs quality tradeoff + at the same target bitrate. +</para> + +<para> + All the encoding settings were tested on a 720x448 @30000/1001 fps + video sample, the target bitrate was 900kbps, and the machine was an + AMD-64 3400+ at 2400 MHz in 64 bits mode. + Each encoding setting features the measured encoding speed (in + frames per second) and the PSNR loss (in dB) compared to the "very + high quality" setting. + Please understand that depending on your source, your machine type + and development advancements, you may get very different results. +</para> + +<para> +<informaltable frame="all"> +<tgroup cols="4"> +<thead> +<row><entry>Description</entry><entry>Encoding options</entry><entry>speed (in fps)</entry><entry>Relative PSNR loss (in dB)</entry></row> +</thead> +<tbody> +<row> + <entry>Very high quality</entry> + <entry><option>subq=6:partitions=all:8x8dct:me=umh:frameref=5:bframes=3:b_pyramid:weight_b</option></entry> + <entry>6fps</entry> + <entry>0dB</entry> +</row> +<row> + <entry>High quality</entry> + <entry><option>subq=5:8x8dct:frameref=2:bframes=3:b_pyramid:weight_b</option></entry> + <entry>13fps</entry> + <entry>-0.89dB</entry> +</row> +<row> + <entry>Fast</entry> + <entry><option>subq=4:bframes=2:b_pyramid:weight_b</option></entry> + <entry>17fps</entry> + <entry>-1.48dB</entry> +</row> +</tbody> +</tgroup> +</informaltable> +</para> +</sect2> + +</sect1> + +<sect1 id="menc-feat-video-for-windows"> +<title>Encoding with the <systemitem class="library">Video For Windows</systemitem> codec family</title> + +<para> +Video for Windows provides simple encoding by means of binary video codecs. +You can encode with the following codecs (if you have more, please tell us!) +</para> +<para> +Note that support for this is very experimental and some codecs may not work +correctly. Some codecs will only work in certain colorspaces, try +<option>-vf format=bgr24</option> and <option>-vf format=yuy2</option> +if a codec fails or gives wrong output. +</para> + +<sect2 id="menc-feat-enc-vfw-video-codecs"> +<title>Video for Windows supported codecs</title> + +<para> +<informaltable frame="all"> +<tgroup cols="4"> +<thead> +<row> +<entry>Video codec file name</entry> +<entry>Description (FourCC)</entry> +<entry>md5sum</entry> +<entry>Comment</entry> +</row> +</thead> +<tbody> +<row> + <entry>aslcodec_vfw.dll</entry> + <entry>Alparysoft lossless codec vfw (ASLC)</entry> + <entry>608af234a6ea4d90cdc7246af5f3f29a</entry> + <entry></entry> +</row> +<row> + <entry>avimszh.dll</entry> + <entry>AVImszh (MSZH)</entry> + <entry>253118fe1eedea04a95ed6e5f4c28878</entry> + <entry>needs <option>-vf format</option></entry> +</row> +<row> + <entry>avizlib.dll</entry> + <entry>AVIzlib (ZLIB)</entry> + <entry>2f1cc76bbcf6d77d40d0e23392fa8eda</entry> + <entry></entry> +</row> +<row> + <entry>divx.dll</entry> + <entry>DivX4Windows-VFW</entry> + <entry>acf35b2fc004a89c829531555d73f1e6</entry> + <entry></entry> +</row> +<row> + <entry>huffyuv.dll</entry> + <entry>HuffYUV (lossless) (HFYU)</entry> + <entry>b74695b50230be4a6ef2c4293a58ac3b</entry> + <entry></entry> +</row> +<row> + <entry>iccvid.dll</entry> + <entry>Cinepak Video (cvid)</entry> + <entry>cb3b7ee47ba7dbb3d23d34e274895133</entry> + <entry></entry> +</row> +<row> + <entry>icmw_32.dll</entry> + <entry>Motion Wavelets (MWV1)</entry> + <entry>c9618a8fc73ce219ba918e3e09e227f2</entry> + <entry></entry> +</row> +<row> + <entry>jp2avi.dll</entry> + <entry>ImagePower MJPEG2000 (IPJ2)</entry> + <entry>d860a11766da0d0ea064672c6833768b</entry> + <entry><option>-vf flip</option></entry> +</row> +<row> + <entry>m3jp2k32.dll</entry> + <entry>Morgan MJPEG2000 (MJ2C)</entry> + <entry>f3c174edcbaef7cb947d6357cdfde7ff</entry> + <entry></entry> +</row> +<row> + <entry>m3jpeg32.dll</entry> + <entry>Morgan Motion JPEG Codec (MJPG)</entry> + <entry>1cd13fff5960aa2aae43790242c323b1</entry> + <entry></entry> +</row> +<row> + <entry>mpg4c32.dll</entry> + <entry>Microsoft MPEG-4 v1/v2</entry> + <entry>b5791ea23f33010d37ab8314681f1256</entry> + <entry></entry> +</row> +<row> + <entry>tsccvid.dll</entry> + <entry>TechSmith Camtasia Screen Codec (TSCC)</entry> + <entry>8230d8560c41d444f249802a2700d1d5</entry> + <entry>shareware error on windows</entry> +</row> +<row> + <entry>vp31vfw.dll</entry> + <entry>On2 Open Source VP3 Codec (VP31)</entry> + <entry>845f3590ea489e2e45e876ab107ee7d2</entry> + <entry></entry> +</row> +<row> + <entry>vp4vfw.dll</entry> + <entry>On2 VP4 Personal Codec (VP40)</entry> + <entry>fc5480a482ccc594c2898dcc4188b58f</entry> + <entry></entry> +</row> +<row> + <entry>vp6vfw.dll</entry> + <entry>On2 VP6 Personal Codec (VP60)</entry> + <entry>04d635a364243013898fd09484f913fb</entry> + <entry>crashing on Linux</entry> +</row> +<row> + <entry>vp7vfw.dll</entry> + <entry>On2 VP7 Personal Codec (VP70)</entry> + <entry>cb4cc3d4ea7c94a35f1d81c3d750bc8d</entry> + <entry>wrong FourCC?</entry> +</row> +<row> + <entry>ViVD2.dll</entry> + <entry>SoftMedia ViVD V2 codec VfW (GXVE)</entry> + <entry>a7b4bf5cac630bb9262c3f80d8a773a1</entry> + <entry></entry> +</row> +<row> + <entry>msulvc06.DLL</entry> + <entry>MSU Lossless codec (MSUD)</entry> + <entry>294bf9288f2f127bb86f00bfcc9ccdda</entry> + <entry> + Decodable by <application>Window Media Player</application>, + not <application>MPlayer</application> (yet). + </entry> +</row> +<row> + <entry>camcodec.dll</entry> + <entry>CamStudio lossless video codec (CSCD)</entry> + <entry>0efe97ce08bb0e40162ab15ef3b45615</entry> + <entry>sf.net/projects/camstudio</entry> +</row> +</tbody> +</tgroup> +</informaltable> + +The first column contains the codec names that should be passed after the +<literal>codec</literal> parameter, like: <option>-xvfwopts codec=divx.dll</option> +The FourCC code used by each codec is given in the parentheses. +</para> +<informalexample> +<para> +An example with VP3 compression: +<screen>mencoder dvd://2 -o title2.avi -ovc vfw -xvfwopts codec=vp31vfw.dll -oac copy</screen> +</para> +</informalexample> +</sect2> +</sect1> + + +<sect1 id="menc-feat-vcd-dvd"> +<title>Using <application>MEncoder</application> to create VCD/SVCD/DVD-compliant files.</title> + +<sect2 id="menc-feat-vcd-dvd-constraints"> +<title>Format Constraints</title> +<para> + <application>MEncoder</application> is capable of creating VCD, SCVD + and DVD format MPEG files using the + <systemitem class="library">libavcodec</systemitem> library. + These files can then be used in conjunction with + <ulink url="http://www.gnu.org/software/vcdimager/vcdimager.html">vcdimager</ulink> + or + <ulink url="http://dvdauthor.sourceforge.net/">dvdauthor</ulink> + to create discs that will play on a standard set-top player. +</para> + +<para> + The DVD, SVCD, and VCD formats are subject to heavy constraints. + Only a small selection of encoded picture sizes and aspect ratios are + available. + If your movie does not already meet these requirements, you may have + to scale,crop or add black borders to the picture to make it + compliant. +</para> + +<sect3 id="menc-feat-vcd-dvd-constraints-resolution"> +<title>Format Constraints</title> + +<informaltable frame="all"> +<tgroup cols="9"> +<thead> + <row> + <entry>Format</entry> + <entry>Resolution</entry> + <entry>V. Codec</entry> + <entry>V. Bitrate</entry> + <entry>Sample Rate</entry> + <entry>A. Codec</entry> + <entry>A. Bitrate</entry> + <entry>FPS</entry> + <entry>Aspect</entry> + </row> +</thead> +<tbody> + <row> + <entry>NTSC DVD</entry> + <entry>720x480, 704x480, 352x480, 352x240</entry> + <entry>MPEG-2</entry> + <entry>9800 kbps</entry> + <entry>48000 Hz</entry> + <entry>AC3,PCM</entry> + <entry>1536 kbps (max)</entry> + <entry>30000/1001, 24000/1001</entry> + <entry>4:3, 16:9 (only for 720x480)</entry> + </row> + <row> + <entry>NTSC DVD</entry> + <entry>352x240<footnote id='fn-rare-resolutions'><para> + These resolutions are rarely used for DVDs because + they are fairly low quality.</para></footnote></entry> + <entry>MPEG-1</entry> + <entry>1856 kbps</entry> + <entry>48000 Hz</entry> + <entry>AC3,PCM</entry> + <entry>1536 kbps (max)</entry> + <entry>30000/1001, 24000/1001</entry> + <entry>4:3, 16:9</entry> + </row> + <row> + <entry>NTSC SVCD</entry> + <entry>480x480</entry> + <entry>MPEG-2</entry> + <entry>2600 kbps</entry> + <entry>44100 Hz</entry> + <entry>MP2</entry> + <entry>384 kbps (max)</entry> + <entry>30000/1001</entry> + <entry>4:3</entry> + </row> + <row> + <entry>NTSC VCD</entry> + <entry>352x240</entry> + <entry>MPEG-1</entry> + <entry>1150 kbps</entry> + <entry>44100 Hz</entry> + <entry>MP2</entry> + <entry>224 kbps</entry> + <entry>24000/1001, 30000/1001</entry> + <entry>4:3</entry> + </row> + <row> + <entry>PAL DVD</entry> + <entry>720x576, 704x576, 352x576, 352x288</entry> + <entry>MPEG-2</entry> + <entry>9800 kbps</entry> + <entry>48000 Hz</entry> + <entry>MP2,AC3,PCM</entry> + <entry>1536 kbps (max)</entry> + <entry>25</entry> + <entry>4:3, 16:9 (only for 720x576)</entry> + </row> + <row> + <entry>PAL DVD</entry> + <entry>352x288<footnoteref linkend='fn-rare-resolutions'/></entry> + <entry>MPEG-1</entry> + <entry>1856 kbps</entry> + <entry>48000 Hz</entry> + <entry>MP2,AC3,PCM</entry> + <entry>1536 kbps (max)</entry> + <entry>25</entry> + <entry>4:3, 16:9</entry> + </row> + <row> + <entry>PAL SVCD</entry> + <entry>480x576</entry> + <entry>MPEG-2</entry> + <entry>2600 kbps</entry> + <entry>44100 Hz</entry> + <entry>MP2</entry> + <entry>384 kbps (max)</entry> + <entry>25</entry> + <entry>4:3</entry> + </row> + <row> + <entry>PAL VCD</entry> + <entry>352x288</entry> + <entry>MPEG-1</entry> + <entry>1152 kbps</entry> + <entry>44100 Hz</entry> + <entry>MP2</entry> + <entry>224 kbps</entry> + <entry>25</entry> + <entry>4:3</entry> + </row> +</tbody> +</tgroup> +</informaltable> + +<para> + If your movie has 2.35:1 aspect (most recent action movies), you will + have to add black borders or crop the movie down to 16:9 to make a DVD + or VCD. + If you add black borders, try to align them at 16-pixel boundaries in + order to minimize the impact on encoding performance. + Thankfully DVD has sufficiently excessive bitrate that you do not have + to worry too much about encoding efficiency, but SVCD and VCD are + highly bitrate-starved and require effort to obtain acceptable quality. +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-constraints-gop"> +<title>GOP Size Constraints</title> +<para> + DVD, VCD, and SVCD also constrain you to relatively low + GOP (Group of Pictures) sizes. + For 30 fps material the largest allowed GOP size is 18. + For 25 or 24 fps, the maximum is 15. + The GOP size is set using the <option>keyint</option> option. +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-constraints-bitrate"> +<title>Bitrate Constraints</title> +<para> + VCD video is required to be CBR at 1152 kbps. + This highly limiting constraint also comes along with an extremly low vbv + buffer size of 327 kilobits. + SVCD allows varying video bitrates up to 2500 kbps, and a somewhat less + restrictive vbv buffer size of 917 kilobits is allowed. + DVD video bitrates may range anywhere up to 9800 kbps (though typical + bitrates are about half that), and the vbv buffer size is 1835 kilobits. +</para> +</sect3> +</sect2> + +<sect2 id="menc-feat-vcd-dvd-output"> +<title>Output Options</title> +<para> + <application>MEncoder</application> has options to control the output + format. + Using these options we can instruct it to create the correct type of + file. +</para> + +<para> + The options for VCD and SVCD are called xvcd and xsvcd, because they + are extended formats. + They are not strictly compliant, mainly because the output does not + contain scan offsets. + If you need to generate an SVCD image, you should pass the output file + to + <ulink url="http://www.gnu.org/software/vcdimager/vcdimager.html">vcdimager</ulink>. +</para> + +<para> + VCD: + <screen> + -of mpeg -mpegopts format=xvcd + </screen> +</para> + +<para> + SVCD: + <screen> + -of mpeg -mpegopts format=xsvcd + </screen> +</para> + +<para> + DVD (with timestamps on every frame, if possible): + <screen> + -of mpeg -mpegopts format=dvd:tsaf + </screen> +</para> + +<para> + DVD with NTSC Pullup: + <screen> + -of mpeg -mpegopts format=dvd:tsaf:telecine -ofps 24000/1001 + </screen> + This allows 24000/1001 fps progressive content to be encoded at 30000/1001 + fps whilst maintaing DVD-compliance. +</para> + +<sect3 id="menc-feat-vcd-dvd-output-aspect"> +<title>Aspect Ratio</title> +<para> + The aspect argument of <option>-lavcopts</option> is used to encode + the aspect ratio of the file. + During playback the aspect ratio is used to restore the video to the + correct size. +</para> + +<para> + 16:9 or "Widescreen" + <screen> + -lavcopts aspect=16/9 + </screen> +</para> + +<para> + 4:3 or "Fullscreen" + <screen> + -lavcopts aspect=4/3 + </screen> +</para> + +<para> + 2.35:1 or "Cinemascope" NTSC + <screen> + -vf scale=720:368,expand=720:480 -lavcopts aspect=16/9 + </screen> + To calculate the correct scaling size, use the expanded NTSC width of + 854/2.35 = 368 +</para> + +<para> + 2.35:1 or "Cinemascope" PAL + <screen> + -vf scale="720:432,expand=720:576 -lavcopts aspect=16/9 + </screen> + To calculate the correct scaling size, use the expanded PAL width of + 1024/2.35 = 432 +</para> + +</sect3> + +<sect3 id="menc-feat-vcd-dvd-a-v-sync"> +<title>Maintaining A/V sync</title> +<para> + In order to maintain audio/video synchronization throughout the encode, + <application>MEncoder</application> has to drop or duplicate frames. + This works rather well when muxing into an AVI file, but is almost + guaranteed to fail to maintain A/V sync with other muxers such as MPEG. + This is why it is necessary to append the + <option>harddup</option> video filter at the end of the filter chain + to avoid this kind of problem. + You can find more technical information about <option>harddup</option> + in the section + <link linkend="menc-feat-dvd-mpeg4-muxing-filter-issues">Improving muxing and A/V sync reliability</link> + or in the manual page. +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-output-srate"> +<title>Sample Rate Conversion</title> +<para> + If the audio sample rate in the original file is not the same as + required by the target format, sample rate conversion is required. + This is achieved using the <option>-srate</option> option and + the <option>-af lavcresample</option> audio filter together. + </para> + <para> + DVD: + <screen> + -srate 48000 -af lavcresample=48000 + </screen> +</para> +<para> + VCD and SVCD: + <screen> + -srate 44100 -af lavcresample=44100 + </screen> + </para> +</sect3> +</sect2> + +<sect2 id="menc-feat-vcd-dvd-lavc"> +<title>Using libavcodec for VCD/SVCD/DVD Encoding</title> + +<sect3 id="menc-feat-vcd-dvd-lavc-intro"> +<title>Introduction</title> +<para> + <systemitem class="library">libavcodec</systemitem> can be used to + create VCD/SVCD/DVD compliant video by using the appropriate options. +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-lavc-options"> +<title>lavcopts</title> +<para> + This is a list of fields in <option>-lavcopts</option> that you may + be required to change in order to make a complaint movie for VCD, SVCD, + or DVD: +</para> + +<itemizedlist> +<listitem><para> + <emphasis role="bold">acodec</emphasis>: + <option>mp2</option> for VCD, SVCD, or PAL DVD; + <option>ac3</option> is most commonly used for DVD. + PCM audio may also be used for DVD, but this is mostly a big waste of + space. + Note that MP3 audio is not compliant for any of these formats, but + players often have no problem playing it anyway. +</para></listitem> + +<listitem><para> + <emphasis role="bold">abitrate</emphasis>: + 224 for VCD; up to 384 for SVCD; up to 1536 for DVD, but commonly + used values range from 192 kbps for stereo to 384 kbps for 5.1 channel + sound. +</para></listitem> + +<listitem><para> + <emphasis role="bold">vcodec</emphasis>: + <option>mpeg1video</option> for VCD; + <option>mpeg2video</option> for SVCD; + <option>mpeg2video</option> is usually used for DVD but you may also use + <option>mpeg1video</option> for CIF resolutions. +</para></listitem> + +<listitem><para> + <emphasis role="bold">keyint</emphasis>: + Used to set the GOP size. + 18 for 30fps material, or 15 for 25/24 fps material. + Commercial producers seem to prefer keyframe intervals of 12. + It is possible to make this much larger and still retain compatibility + with most players. + A <option>keyint</option> of 25 should never cause any problems. +</para></listitem> + +<listitem><para> + <emphasis role="bold">vrc_buf_size</emphasis>: + 327 for VCD, 917 for SVCD, and 1835 for DVD. +</para></listitem> + +<listitem><para> + <emphasis role="bold">vrc_minrate</emphasis>: + 1152, for VCD. May be left alone for SVCD and DVD. +</para></listitem> + +<listitem><para> + <emphasis role="bold">vrc_maxrate</emphasis>: + 1152 for VCD; 2500 for SVCD; 9800 for DVD. + For SVCD and DVD, you might wish to use lower values depending on your + own personal preferences and requirements. +</para></listitem> + +<listitem><para> + <emphasis role="bold">vbitrate</emphasis>: + 1152 for VCD; + up to 2500 for SVCD; + up to 9800 for DVD. + For the latter two formats, vbitrate should be set based on personal + preference. + For instance, if you insist on fitting 20 or so hours on a DVD, you + could use vbitrate=400. + The resulting video quality would probably be quite bad. + If you are trying to squeeze out the maximum possible quality on a DVD, + use vbitrate=9800, but be warned that this could constrain you to less + than an hour of video on a single-layer DVD. +</para></listitem> +</itemizedlist> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-lavc-examples"> +<title>Examples</title> +<para> + This is a typical minimum set of <option>-lavcopts</option> for + encoding video: +</para> +<para> + VCD: + <screen> + -lavcopts vcodec=mpeg1video:vrc_buf_size=327:vrc_minrate=1152:\ + vrc_maxrate=1152:vbitrate=1152:keyint=15:acodec=mp2 + </screen> +</para> + +<para> + SVCD: + <screen> + -lavcopts vcodec=mpeg2video:vrc_buf_size=917:vrc_maxrate=2500:vbitrate=1800:\ + keyint=15:acodec=mp2 + </screen> +</para> + +<para> + DVD: + <screen> + -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\ + keyint=15:acodec=ac3 + </screen> +</para> + +</sect3> + +<sect3 id="menc-feat-vcd-dvd-lavc-advanced"> +<title>Advanced Options</title> +<para> + For higher quality encoding, you may also wish to add quality-enhancing + options to lavcopts, such as <option>trell</option>, + <option>mbd=2</option>, and others. + Note that <option>qpel</option> and <option>v4mv</option>, while often + useful with MPEG-4, are not usable with MPEG-1 or MPEG-2. + Also, if you are trying to make a very high quality DVD encode, it may + be useful to add <option>dc=10</option> to lavcopts. + Doing so may help reduce the appearance of blocks in flat-colored areas. + Putting it all together, this is an example of a set of lavcopts for a + higher quality DVD: +</para> + +<para> + <screen> + -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=8000:\ + keyint=15:trell:mbd=2:precmp=2:subcmp=2:cmp=2:dia=-10:predia=-10:cbp:mv0:\ + vqmin=1:lmin=1:dc=10 + </screen> +</para> + +</sect3> +</sect2> + +<sect2 id="menc-feat-vcd-dvd-audio"> +<title>Encoding Audio</title> +<para> + VCD and SVCD support MPEG-1 layer II audio, using one of + <systemitem class="library">toolame</systemitem>, + <systemitem class="library">twolame</systemitem>, + or <systemitem class="library">libavcodec</systemitem>'s MP2 encoder. + The libavcodec MP2 is far from being as good as the other two libraries, + however it should always be available to use. + VCD only supports constant bitrate audio (CBR) whereas SVCD supports + variable bitrate (VBR), too. + Be careful when using VBR because some bad standalone players might not + support it too well. +</para> + +<para> + For DVD audio, <systemitem class="library">libavcodec</systemitem>'s + AC3 codec is used. +</para> + +<sect3 id="menc-feat-vcd-dvd-audio-toolame"> +<title>toolame</title> +<para> + For VCD and SVCD: + <screen> + -oac toolame -toolameopts br=224 + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-audio-twolame"> +<title>twolame</title> +<para> + For VCD and SVCD: + <screen> + -oac twolame -twolameopts br=224 + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-audio-lavc"> +<title>libavcodec</title> +<para> + For DVD with 2 channel sound: + <screen> + -oac lavc -lavcopts acodec=ac3:abitrate=192 + </screen> +</para> +<para> + For DVD with 5.1 channel sound: + <screen> + -channels 6 -oac lavc -lavcopts acodec=ac3:abitrate=384 + </screen> +</para> +<para> + For VCD and SVCD: + <screen> + -oac lavc -lavcopts acodec=mp2:abitrate=224 + </screen> +</para> +</sect3> + +</sect2> + +<sect2 id="menc-feat-vcd-dvd-all"> +<title>Putting it all Together</title> +<para> + This section shows some complete commands for creating VCD/SVCD/DVD + compliant videos. +</para> + +<sect3 id="menc-feat-vcd-dvd-all-pal-dvd"> +<title>PAL DVD</title> +<para> + <screen> + mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,\ + harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\ + vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=15:acodec=ac3:\ + abitrate=192:aspect=16/9 -ofps 25 \ + -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-all-ntsc-dvd"> +<title>NTSC DVD</title> +<para> + <screen> + mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:480,\ + harddup -srate 48000 -af lavcresample=48000 -lavcopts vcodec=mpeg2video:\ + vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:acodec=ac3:\ + abitrate=192:aspect=16/9 -ofps 30000/1001 \ + -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-all-pal-ac3-copy"> +<title>PAL AVI Containing AC3 Audio to DVD</title> +<para> + If the source already has AC3 audio, use -oac copy instead of re-encoding it. + <screen> + mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -vf scale=720:576,\ + harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:\ + vbitrate=5000:keyint=15:aspect=16/9 -ofps 25 \ + -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-all-ntsc-ac3-copy"> +<title>NTSC AVI Containing AC3 Audio to DVD</title> +<para> + If the source already has AC3 audio, and is NTSC @ 24000/1001 fps: + <screen> + mencoder -oac copy -ovc lavc -of mpeg -mpegopts format=dvd:tsaf:telecine \ + -vf scale=720:480,harddup -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:\ + vrc_maxrate=9800:vbitrate=5000:keyint=15:aspect=16/9 -ofps 24000/1001 \ + -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-all-pal-svcd"> +<title>PAL SVCD</title> +<para> + <screen> + mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \ + scale=480:576,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ + vcodec=mpeg2video:mbd=2:keyint=15:vrc_buf_size=917:vrc_minrate=600:\ + vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 25 \ + -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-all-ntsc-svcd"> +<title>NTSC SVCD</title> +<para> + <screen> + mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xsvcd -vf \ + scale=480:480,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ + vcodec=mpeg2video:mbd=2:keyint=18:vrc_buf_size=917:vrc_minrate=600:\ + vbitrate=2500:vrc_maxrate=2500:acodec=mp2:abitrate=224 -ofps 30000/1001 \ + -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-all-pal-vcd"> +<title>PAL VCD</title> +<para> + <screen> + mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \ + scale=352:288,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ + vcodec=mpeg1video:keyint=15:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\ + vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 25 \ + -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> + </screen> +</para> +</sect3> + +<sect3 id="menc-feat-vcd-dvd-all-ntsc-vcd"> +<title>NTSC VCD</title> +<para> + <screen> + mencoder -oac lavc -ovc lavc -of mpeg -mpegopts format=xvcd -vf \ + scale=352:240,harddup -srate 44100 -af lavcresample=44100 -lavcopts \ + vcodec=mpeg1video:keyint=18:vrc_buf_size=327:vrc_minrate=1152:vbitrate=1152:\ + vrc_maxrate=1152:acodec=mp2:abitrate=224 -ofps 30000/1001 \ + -o <replaceable>movie.mpg</replaceable> <replaceable>movie.avi</replaceable> + </screen> +</para> +</sect3> + +</sect2> + +</sect1> + +</chapter>