mirror of
https://github.com/mpv-player/mpv
synced 2024-12-23 15:22:09 +00:00
554cee6997
r21079: Add a new MPEG encoding example using lavf git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21150 b3059339-0415-0410-9bf9-f77b7e298cf2
4910 lines
221 KiB
XML
4910 lines
221 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- synced with r21078 -->
|
||
<!-- **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/1001 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> and
|
||
<option>mplayer -vf help</option> to see what is available
|
||
(grep for "deint"), read Michael's Niedermayer
|
||
<ulink url="http://guru.multimedia.cx/deinterlacing-filters/">Deinterlacing filters comparison</ulink>,
|
||
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 yadif -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>
|