2006-11-07 12:31:37 +00:00
|
|
|
|
<?xml version="1.0" encoding="utf-8"?>
|
2006-12-05 19:49:19 +00:00
|
|
|
|
<!-- synced with r21508 -->
|
2006-11-07 12:31:37 +00:00
|
|
|
|
<!-- **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>,
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<systemitem class="library">Xvid</systemitem>
|
2006-11-07 12:31:37 +00:00
|
|
|
|
и <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 также есть определённое подобие чёрных полос на
|
2006-12-05 19:49:19 +00:00
|
|
|
|
краях. Если Вы их оставите, это может <emphasis>сильно</emphasis>
|
|
|
|
|
повредить качество несколькими путями.
|
2006-11-07 12:31:37 +00:00
|
|
|
|
</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, Вам нужно будет уменьшить размер
|
|
|
|
|
фильма при постоянном битпотоке, заданном размере и длине фильма.
|
2006-11-13 19:24:02 +00:00
|
|
|
|
С MPEG-4 ASP кодеками, такими как <systemitem class="library">Xvid</systemitem>
|
2006-11-07 12:31:37 +00:00
|
|
|
|
и <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>
|
|
|
|
|
и
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<link linkend="menc-feat-xvid-example-settings"><systemitem class="library">Xvid</systemitem></link>
|
2006-11-07 12:31:37 +00:00
|
|
|
|
должны сделать возможным получение того же качества с 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 или
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<systemitem class="library">Xvid</systemitem>.
|
2006-11-07 12:31:37 +00:00
|
|
|
|
(Опытные разработчики кодеков могут быть заинтересованы в
|
|
|
|
|
ознакомлении с точкой зрения Михаэля Найдермауэра (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 и
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<systemitem class="library">Xvid</systemitem>)
|
2006-11-07 12:31:37 +00:00
|
|
|
|
(Осторожно: обычно поддерживаются не все возможности MPEG-4 ASP).
|
|
|
|
|
Пожалуйста, обратитесь к технической спецификации Вашего плеера
|
|
|
|
|
(если она доступна) или к гугл (google) для детальной информации.
|
|
|
|
|
</para></listitem>
|
|
|
|
|
|
|
|
|
|
<listitem><para>
|
|
|
|
|
<emphasis role="bold">Лучшее соотношение качества и времени кодирования</emphasis>:
|
|
|
|
|
Кодеки, уже использующиеся определённое время (например,
|
|
|
|
|
<systemitem class="library">libavcodec</systemitem> MPEG-4 и
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<systemitem class="library">Xvid</systemitem>) обычно сильно
|
2006-11-07 12:31:37 +00:00
|
|
|
|
оптимизированы всевозможными остроумными алгоритмами и
|
|
|
|
|
ассемблерным SIMD кодом. Поэтому они обладают тенденцией
|
|
|
|
|
достижения лучшего соотношения качества к времени кодирования.
|
|
|
|
|
Однако, у них могут быть некоторые очень продвинутые опции,
|
|
|
|
|
которые, будучи включенными, сделают кодирование очень медленным
|
|
|
|
|
ради несущественного выигрыша.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
Если Вам нужна высокая скорость, примерно придерживайтесь настроек
|
|
|
|
|
видеокодека по умолчанию (хотя Вам стоит попробовать другие опции,
|
|
|
|
|
упоминаемые в иных разделах данного руководства).
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
|
|
|
|
Вы так же можете рассмотреть вариант использования многопоточного
|
|
|
|
|
кодека, хотя это полезно только для пользователей машин с
|
|
|
|
|
несколькими процессорами.
|
|
|
|
|
<systemitem class="library">libavcodec</systemitem> MPEG-4 позволяет
|
|
|
|
|
это, но выигрыш в скорости ограничен и есть небольшой отрицательный
|
|
|
|
|
эффект для качества картинки.
|
2006-11-13 19:24:02 +00:00
|
|
|
|
Многопоточное кодирование <systemitem class="library">Xvid</systemitem>,
|
2006-11-07 12:31:37 +00:00
|
|
|
|
включаемое опцией <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 в течении лет, в то время
|
|
|
|
|
как новые кодеки уже творят чудеса, другие люди предпочитают
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<systemitem class="library">Xvid</systemitem> или
|
2006-11-07 12:31:37 +00:00
|
|
|
|
<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>
|
2006-11-18 17:25:25 +00:00
|
|
|
|
When looking at individual frames formed from 60000/1001 fields per
|
2006-11-07 12:31:37 +00:00
|
|
|
|
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
|
2006-11-21 19:37:58 +00:00
|
|
|
|
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
|
2006-11-30 16:08:43 +00:00
|
|
|
|
<ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html">
|
2006-11-07 12:31:37 +00:00
|
|
|
|
MPlayer mailing lists</ulink> to find many discussions about the
|
2006-11-21 19:37:58 +00:00
|
|
|
|
various filters.
|
|
|
|
|
Again, the framerate is not changing, so no
|
2006-11-07 12:31:37 +00:00
|
|
|
|
<option>-ofps</option>. Also, deinterlacing should be done after
|
|
|
|
|
cropping <link linkend="menc-feat-telecine-footnotes">[1]</link> and
|
|
|
|
|
before scaling.
|
|
|
|
|
|
2006-11-21 19:37:58 +00:00
|
|
|
|
<screen>mencoder dvd://1 -oac copy -vf yadif -ovc lavc</screen>
|
2006-11-07 12:31:37 +00:00
|
|
|
|
</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>
|
2006-11-13 19:24:02 +00:00
|
|
|
|
ISO standard MPEG-4 (DivX, Xvid compatible)
|
2006-11-07 12:31:37 +00:00
|
|
|
|
</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">
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<title>Encoding with the <systemitem class="library">Xvid</systemitem>
|
2006-11-07 12:31:37 +00:00
|
|
|
|
codec</title>
|
|
|
|
|
<para>
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<systemitem class="library">Xvid</systemitem> is a free library for
|
2006-11-07 12:31:37 +00:00
|
|
|
|
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
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<systemitem class="library">Xvid</systemitem> section of
|
2006-11-07 12:31:37 +00:00
|
|
|
|
<application>MPlayer</application>'s man page.
|
|
|
|
|
This section is intended to be a supplement to the man page.
|
|
|
|
|
</para>
|
|
|
|
|
<para>
|
2006-11-13 19:24:02 +00:00
|
|
|
|
The Xvid default settings are already a good tradeoff between
|
2006-11-07 12:31:37 +00:00
|
|
|
|
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">
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<title>Encoding options of <systemitem class="library">Xvid</systemitem></title>
|
2006-11-07 12:31:37 +00:00
|
|
|
|
|
|
|
|
|
<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.
|
2006-11-13 19:24:02 +00:00
|
|
|
|
<systemitem class="library">Xvid</systemitem>'s GMC is more
|
2006-11-07 12:31:37 +00:00
|
|
|
|
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>
|
2006-11-13 19:24:02 +00:00
|
|
|
|
Xvid supports encoding profiles through the <option>profile</option> option,
|
|
|
|
|
which are used to impose restrictions on the properties of the Xvid video
|
2006-11-07 12:31:37 +00:00
|
|
|
|
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>
|