mirror of
https://github.com/mpv-player/mpv
synced 2025-03-07 22:57:42 +00:00
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21700 b3059339-0415-0410-9bf9-f77b7e298cf2
5037 lines
237 KiB
XML
5037 lines
237 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<!-- synced with r21612 -->
|
||
<!-- **Partially** translated -->
|
||
<chapter id="encoding-guide">
|
||
<title>Кодирование с <application>MEncoder</application></title>
|
||
|
||
<sect1 id="menc-feat-dvd-mpeg4">
|
||
<title>Создание высококачественного MPEG-4 ("DivX") рипа из DVD фильма</title>
|
||
|
||
<para>
|
||
Одним часто задаваемым вопросом является "Как мне сделать рип самого высокого
|
||
качества для заданного размера?". Другой вопрос "Как мне создать DVD рип с самым
|
||
высоким возможным качеством? Я не беспокоюсь о размере файла, мне нужно лишь
|
||
наилучшее качество.".
|
||
</para>
|
||
|
||
<para>
|
||
Последний вопрос, похоже, отчасти неверно сформулирован. В конце концов, если
|
||
Вы не беспокоитесь о размере файла, почему бы просто не скопировать весь MPEG-2
|
||
видео поток с DVD? Конечно, ваш AVI файл будет занимать около 5GB,
|
||
но если Вы желате наилучшее качество и не волнуетесь о размере, то это,
|
||
несомненно, лучшее решение.
|
||
</para>
|
||
|
||
<para>
|
||
В действительности, причиной, по которой Вы хотите перекодировать DVD в MPEG-4,
|
||
является именно Ваше <emphasis role="bold">беспокойство</emphasis>
|
||
о размере файла.
|
||
</para>
|
||
|
||
<para>
|
||
Сложно дать универсальный рецепт о создании DVD рипа очень высокого
|
||
качества. Необходимо рассмотреть несколько факторов, и Вы должны
|
||
понимать эти детали, иначе Вы, скорее всего, разочаруетесь своими
|
||
результатами. Ниже мы исследуем некоторые из этих вопросов, а затем
|
||
рассмотрим пример. Мы предполагаем, что Вы используете
|
||
<systemitem class="library">libavcodec</systemitem> для кодирования видео,
|
||
хотя теория также применима и к другим кодекам.
|
||
</para>
|
||
|
||
<para>
|
||
Если это кажется для Вас слишком сложным, то Вам, пожалуй, следует использовать
|
||
один из многочисленных неплохих фронтендов, указанных в
|
||
<ulink url="http://www.mplayerhq.hu/design7/projects.html#mencoder_frontends">разделе MEncoder</ulink>
|
||
нашей страницы родственных проектов.
|
||
Так Вы должны получить высококачественные рипы без особых размышлений,
|
||
поскольку большинство этих утилит разработаны для принятия умных решений за Вас.
|
||
</para>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-preparing-encode">
|
||
<title>Подготовка к кодированию: Идентификация исходного материала и кадровой
|
||
частоты</title>
|
||
<para>
|
||
Прежде, чем даже задумываться о кодировании фильма, Вам необходимо выполнить
|
||
некоторые предварительные действия.
|
||
</para>
|
||
|
||
<para>
|
||
Первым и наиболее важным шагом перед кодированием должно быть опеределение
|
||
типа содержимого, с которым Вы работате.
|
||
Если источником Ваших исходных материалов является DVD или
|
||
широковещательное/кабельное/спутниковое TV, оно будет содержаться в одном из
|
||
двух форматов: NTSC для Северной Америки и Японии, PAL для Европы и т.д..
|
||
Однако, важно понимать, что это только форматирование для показа на
|
||
телевидении, и оно часто
|
||
<emphasis role="bold">не</emphasis> соответствует
|
||
исходному формату фильма.
|
||
Опыт показывает, что NTSC материал существенно более сложен для кодирования,
|
||
т.к. в нём содержится больше элементов, которые нужно идентифицировать.
|
||
Для проведения удачного кодирования, Вам необходимо знать исходный формат.
|
||
Отказ от принятия этого во внимание приведёт к различным дефектам в Вашем
|
||
кодировании, включая безобразные гребешки (артефакты череcстрочной развёртки)
|
||
и повторяющиеся или даже потерянные кадры.
|
||
Кроме ухудщения картинки, артефакты так же уменьшают эффективность кодирования:
|
||
Вы получите худшее качество на единицу битпотока.
|
||
</para>
|
||
|
||
|
||
<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-fps">
|
||
<title>Определение кадровой чатоты источника</title>
|
||
<para>
|
||
Вот список, содержащий общие типы исходных материалов, где,
|
||
преимущественно, можно найти и их свойства:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
<emphasis role="bold">Стандартный фильм</emphasis>: Производятся
|
||
для театральных показов на 24 fps [кадр/сек].
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">PAL видео</emphasis>: Записывается с помощью
|
||
PAL видеокамеры при 50 полях в секунду.
|
||
Поле состоит только из чётных или нечётных линий кадра.
|
||
Телевидение было разработано для обновления этих полей попеременно,
|
||
что используется как вид дешёвого аналогового сжатия.
|
||
Человеческий глаз, предположительно, компенсирует это, но однажды
|
||
поняв чересстрочную развёртку, Вы научитесь видеть её и на TV и
|
||
Вам больше никогда не понравится телевидение.
|
||
Два поля <emphasis role="bold">не</emphasis> составляют
|
||
целый кадр, поскольку они снимаются с задержкой в 1/50 секунды
|
||
и, следовательно, не формируют одно изображение, за исключением случая
|
||
полного отсутсвия движения.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">NTSC видео</emphasis>: Записывается с помощью
|
||
NTSC видеокамеры при 60000/1001 полях в секунду, или 60 полях в секунду
|
||
в эпоху чёрно-белого TV.
|
||
В других отношениях аналогично PAL.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">Анимация</emphasis>: Обычно рисуется на 24 fps,
|
||
но также существуют разновидности со смешанной кадровой частотой.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">Компьютерныя графика (CG)</emphasis>: Может
|
||
быть с любой частотой кадров, но некоторые встречаются чаще остальных;
|
||
24 и 30 кадров в секунду типичны для NTSC, и 25 fps типично для PAL.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">Старый фильм</emphasis>: Различные низкие
|
||
кадровые частоты.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-dvd-mpeg4-preparing-encode-material">
|
||
<title>Идентификация исходного материала</title>
|
||
|
||
<para>
|
||
Фильмы, состоящие из кадров, называются фильмами с построчной (или прогрессивной)
|
||
развёрткой, а состоящие из независимых полей — фильмами с чересстрочной
|
||
развёрткой или просто видео; однако, последний термин двусмысленный.
|
||
</para>
|
||
|
||
<para>
|
||
Из-за дальнейших усложнений, некоторые фильмы будут смесью
|
||
нескольких, указанных выше.
|
||
</para>
|
||
|
||
<para>
|
||
Наиболее важным различием между всеми этими форматами является
|
||
то, что одни из них основаны на кадрах, а другие — на полях.
|
||
<emphasis role="bold">Любой</emphasis> фильм, подготовленный для
|
||
просмотра на телевидении (включая DVD), преобразуется в формат,
|
||
основанный на полях.
|
||
<!-- FIXME: Существует ли лучший *краткий* (1-2 слова) перевод для
|
||
терминов pulldown и telecine? В литературе, которую я нашёл,
|
||
используют или указанные мной, по сути дела, транслитерации,
|
||
или так и оставляют английские названия.
|
||
А точный перевод можно выполнить только целым предложением
|
||
(т.е. определением), что совершенно неуместно в контексте
|
||
данного документа, где эти термины часто встречаются. -->
|
||
Различные методы, с помощью которых это может быть сделано, совокупно
|
||
называются "телесин" (англ. telecine), одним из вариантов которого
|
||
является отвратительный NTSC "3:2 пулдаун" (англ. pulldown).
|
||
За исключением случаев, когда формат исходного материала был
|
||
также основан на полях (и с такой же частотой полей), Вы получите
|
||
фильм в формате отличном от исходного.
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<title>Существует несколько общих типов пулдауна:</title>
|
||
<listitem><para>
|
||
<emphasis role="bold">PAL 2:2 пулдаун</emphasis>: Наилучший из всех.
|
||
Каждый кадр показывается за время длительности двух полей путем
|
||
извлечения чётных и нечётных строк и их попременного показа.
|
||
Если в исходном материале 24 fps, то это ускоряет воспроизведение фильма
|
||
на 4%.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">PAL 2:2:2:2:2:2:2:2:2:2:2:3 пулдаун</emphasis>:
|
||
Каждый 12-й кадр показывается за время длительности трёх полей,
|
||
вместо двух.
|
||
Это помогает избежать проблемы 4%-го ускорения, но делает обращение
|
||
процесса существенно более сложным.
|
||
Такие вещи обычно наблюдаются в музыкальных произведениях, где
|
||
изменение скорости на 4% существенно повредит музыкальную партитуру.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">NTSC 3:2 телесин</emphasis>: Кадры показываются
|
||
попеременно за время длительности 3-х полей или 2-х полей.
|
||
Это даёт частоту полей в 2.5 раза больше исходной частоты кадров.
|
||
Результат также очень незначительно замедляется от 60 до 60000/1001
|
||
полей в секунду для поддержания частоты полей NTSC.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">NTSC 2:2 пулдаун</emphasis>: Используется
|
||
для отображения материала с 30 fps на NTSC.
|
||
Так же мил, как и 2:2 PAL пулдаун.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
Так же существуют методы для преобразования между NTSC и PAL видео,
|
||
но подобные темы выходят за рамки данного руководства.
|
||
Если Вам попался такой фильм, и Вы хотите кодировать его,
|
||
лучшим решением будет найти копию в исходном формате.
|
||
Преобразование между этими двумя форматами вносит большие потери
|
||
и не может быть точно обращено, так что Ваше кодирование
|
||
существенно пострадает, если оно делается из преобразованного
|
||
источника.
|
||
</para>
|
||
|
||
<para>
|
||
Когда видео находится на DVD, последовательные пары полей
|
||
группируются как кадр, даже если они не предназначены для
|
||
одновременного отображения.
|
||
Стандарт MPEG-2, используемый на DVD и цифровом TV предоставляет
|
||
возможность одновременно кодировать исходные кадры с построчной
|
||
развёрткой и сохранять число полей, в течении которых кадр
|
||
должен быть показан, в его заголовке.
|
||
Если был использован такой метод, фильм часто будет называться
|
||
как "мягкий телесин", т.к. процесс только указывает DVD-плееру
|
||
о необходимости применения пулдауна к фильму, не изменяя при этом
|
||
сам фильм.
|
||
Этот случай существенно предпочтителен, т.к. он может быть легко обращён
|
||
(в действительности, проигнорирован) кодером и т.к. он сохраняет
|
||
максимальное качество.
|
||
Однако, многие широковещательные и DVD студии не используют
|
||
надлежащую технологию кодирования и вместо этого производят
|
||
фильмы с "жёстким телесином", где поля в действительности
|
||
повторяются в кодированном MPEG-2.
|
||
</para>
|
||
|
||
<para>
|
||
Порядок действия в таких случаях будет описан
|
||
<link linkend="menc-feat-telecine">позже в данном руководстве</link>.
|
||
Сейчас мы дадим Вам несколько советов по идентификации типа
|
||
материала, с которым Вы работаете:
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<title>Области NTSC:</title>
|
||
<listitem><para>
|
||
Если при просмотре Вашего фильма <application>MPlayer</application>
|
||
выводит, что частота кадров была изменена до 24000/1001 и она
|
||
никогда не меняется обратно, то это почти наверняка содержимое
|
||
с построчной развёрткой, которое было подвергнуто
|
||
"мягкому телесину".
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если <application>MPlayer</application> отображает попеременные
|
||
переключения частоты кадров между 24000/1001 и 30000/1001, и Вы
|
||
иногда видите "гребешки", есть несколько возможностей.
|
||
Сегменты с 24000/1001 fps почти наверняка являются "мягко
|
||
телесиненным" содержимым с построчной развёрткой, но части с
|
||
30000/1001 fps могут быть как "жёстко телесиненым" содержимым
|
||
с 24000/1001 fps, так и NTSC видео с 60000/1001 полями в секунду.
|
||
Испольуйте два нижеследующих руководства для определения того,
|
||
с каким случаем вы имеете дело.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если <application>MPlayer</application> никогда не показывает
|
||
изменения кадровой частоты и каждый отдельный кадр, где есть
|
||
движение, оказывается гребёнкой, Ваш фильм есть NTSC видео с
|
||
60000/1001 полями в секунду.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если <application>MPlayer</application> никогда не показывает
|
||
изменения кадровой частоты и два кадра из каждых пяти оказываются
|
||
гребёнкой, Ваш фильм представляет собой "жёстко телесиненное"
|
||
содержимое с 24000/1001 fps.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
|
||
<itemizedlist>
|
||
<title>Области PAL:</title>
|
||
<listitem><para>
|
||
Если Вы не видите никакой гребёнки, Ваш фильм есть 2:2 пулдаун.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если Вы видите попеременную гребёнку каждые полсекунды,
|
||
Ваш фильм представляет собой 2:2:2:2:2:2:2:2:2:2:2:3 пулдаун.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Если Вы всегда видите гребёшки во время движения, значит Ваш
|
||
фильм является PAL видео с 50 полями в секунду.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
|
||
<note><title>Подсказка:</title>
|
||
<para>
|
||
<application>MPlayer</application> может замедлить воспроизведение
|
||
фильма с опцией -speed или воспроизводить его покадрово.
|
||
Попробуйте использовать опцию <option>-speed 0.2</option> для
|
||
очень медленного просмотра фильма или несколько раз нажмите
|
||
клавишу "<keycap>.</keycap>" для воспроизведения одного кадра
|
||
за раз и идетнифицируйте образец, если не можете его увидеть на
|
||
полной скорости.
|
||
</para>
|
||
</note>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-2pass">
|
||
<title>Постоянный квантователь против многопроходности</title>
|
||
|
||
<para>
|
||
Возможно кодировать Ваш фильм, широко варьируя качество.
|
||
С современными видеокодерами и небольшим сжатием перед кодированием
|
||
(уменьшением размера и шумов) возможно достичь очень хорошего
|
||
качества при размере 700 МБ для 90-110-минутного широкоэкранного фильма.
|
||
Более того, всё, кроме самых длинных фильмов, может быть кодировано
|
||
с почти безупречным качеством на 1400 МБ.
|
||
</para>
|
||
|
||
<para>
|
||
Есть три подхода при кодировании видео: постоянный битпоток (CBR),
|
||
постоянный квантователь и многопроходность (ABR или усреднённый битпоток).
|
||
</para>
|
||
|
||
<para>
|
||
Сложность кадров фильма и, таким образом, число битов, нужных для их
|
||
сжатия может существенно отличаться от одной сцены к другой.
|
||
Современные видеокодеры могут подстраиваться под это в процессе
|
||
работы и варьировать битпоток.
|
||
Однако, в таких простых режимах как CBR кодеры не знают загруженность
|
||
битпотока в последующих сценах и т.о. не могут превысить затребованный
|
||
битпоток для больших промежутков времени.
|
||
Более продвинутые режимы, такие как многопроходный режим, могут
|
||
учитывать статистику предыдущих проходов; это решает проблему,
|
||
упомянутую выше.
|
||
</para>
|
||
|
||
<note><title>Замечание:</title>
|
||
<para>
|
||
Большинство кодеков, поддерживающих ABR кодирование, поддерживают
|
||
только двупроходный режим, в то время как некоторые другие, такие
|
||
как <systemitem class="library">x264</systemitem>,
|
||
<systemitem class="library">Xvid</systemitem>
|
||
и <systemitem class="library">libavcodec</systemitem> поддерживают
|
||
многопроходность, несколько улучшающую качество на каждом проходе,
|
||
однако, это улучшение не измеримо и не заметно после 4-го прохода
|
||
или около того.
|
||
Поэтому, в данном разделе дву- и многопроходность будут
|
||
использоваться взаимозаменяемо.
|
||
</para>
|
||
</note>
|
||
|
||
<para>
|
||
В каждом из этих режимов видеокодек (такой как
|
||
<systemitem class="library">libavcodec</systemitem>)
|
||
разбивает видеокадр на макроблоки размером 16х16 пикселей и потом
|
||
применяет квантователь к каждому макроблоку. Чем меньше квантоваль,
|
||
тем лучше качество и выше битпоток.
|
||
Метод, используемый видео кодером для определения того, какой
|
||
квантователь использовать для данного макроблока, варьируется и
|
||
подлежит тонкой настройке. (Это крайнее упрощение реального
|
||
процесса, но основная концепция полезна для понимания.)
|
||
</para>
|
||
|
||
<para>
|
||
Когда Вы указываете постоянный битпоток, видеокодек будет кодировать
|
||
видео, отбрасывая детали столько, сколько необходимо и настолько мало,
|
||
насколько это возможно с целью оставаться ниже заданного битпотока.
|
||
Если Вас действительно не волнует размер файла, Вы можете также
|
||
использовать CBR и указать бесконечный битпоток. (На практике это
|
||
означает значение, достаточно большое для обозначения отсутствия
|
||
предела, например, 10000 Кбит.) В результате, без реального ограничения
|
||
битпотока, кодек использует наименьший возможный квантователь для
|
||
каждого макроблока (как указано опцией
|
||
<option>vqmin</option> для
|
||
<systemitem class="library">libavcodec</systemitem>, равной 2 по умолчанию).
|
||
Как только Вы укажите настолько низкий битпоток, что кодек будет
|
||
вынужден использовать более высокий квантователь, Вы почти наверняка
|
||
испортите качество Вашего видео.
|
||
Чтобы избежать этого, Вам, вероятно, придётся уменьшить размеры
|
||
Вашего видео, согласно методу, описанному далее в этом руководстве.
|
||
В общих чертах, Вам следует избегать CBR совсем, если Вы заботитесь
|
||
о качестве.
|
||
</para>
|
||
|
||
<para>
|
||
С постоянным квантователем кодек использует для всех макроблоков
|
||
один и тот же квантователь, указанный в опции
|
||
<option>vqscale</option> (для
|
||
<systemitem class="library">libavcodec</systemitem>).
|
||
Если Вы хотите рип наивысшего возможного качества, снова не взирая
|
||
на битпоток, Вы можете использовать
|
||
<option>vqscale=2</option>.
|
||
Это приведёт к тому же битпотоку и PSNR (пику отношения сигнала к шуму),
|
||
что и CBR с
|
||
<option>vbitrate</option>=бесконечности и значением по умолчанию
|
||
<option>vqmin</option>, равным 2.
|
||
</para>
|
||
|
||
<para>
|
||
Проблема с постоянным квантованием заключается в том, что кодек использует
|
||
заданный квантователь вне зависимости от того, требуется это для
|
||
макроблока или нет. То есть возможно использование большего квантователя
|
||
для макроблока без ухудшения видимого качества. Зачем тратить биты на
|
||
излишне низкий квантователь? У Вашего процессора есть столько тактов,
|
||
сколько есть времени, но имеется лишь ограниченное число битов на
|
||
жёстком диске.
|
||
</para>
|
||
|
||
<para>
|
||
При двупроходном кодировании первый проход создаст рип фильма так,
|
||
как будто это был CBR, но сохранит лог свойств для каждого кадра.
|
||
Эта информация затем будет использована во время второго прохода
|
||
для принятия интеллектуальных решений о том, какой квантователь
|
||
следует использовать. Во время быстрого движения или сцен с
|
||
высокой детализацией с большой веротностью будут использованы
|
||
бОльшие квантователи, а во время медленного движения или сцен
|
||
с низкой детализацией — меньшие.
|
||
Обычно количество движения играет существенно более важную роль,
|
||
чем количество деталей.
|
||
</para>
|
||
|
||
<para>
|
||
Если Вы используете <option>vqscale=2</option>, то Вы теряете биты.
|
||
Если Вы используете <option>vqscale=3</option>, то Вы не получаете
|
||
рип наивысшего качества. Предположим, вы делаете рип DVD, используя
|
||
<option>vqscale=3</option>, результат получается 1800 Кбит.
|
||
Если Вы сделаете двупроходное кодирование с
|
||
<option>vbitrate=1800</option>, получившееся видео быдет обладать
|
||
<emphasis role="bold">лучшим качеством</emphasis> для
|
||
<emphasis role="bold">того же битпотока</emphasis>.
|
||
</para>
|
||
|
||
<para>
|
||
После того, как Вы сейчас убедились, что два прохода — это путь
|
||
к действию, возникает вопрос о том, какой битпоток использовать?
|
||
Ответ таков, что нет единого ответа. В идеале, Вы хотите выбрать
|
||
битпоток, при котором достигается наилучший баланс между качеством
|
||
и размером файла. Здесь возможны вариации в зависимости от
|
||
исходного видеоматериала.
|
||
</para>
|
||
|
||
<para>
|
||
Если размер не важен, хорошей отправной точкой для рипа очень высокого
|
||
качества будет 2000 Кбит +/- 200 Кбит.
|
||
Для видеоматериала с быстрым движением или высокой детализацией
|
||
или просто если у Вас очень разборчивый глаз, Вы можете использовать
|
||
2400 или 2600.
|
||
Для некоторых DVD Вы не заметите разницы на 1400 Кбит. Хорошей идеей
|
||
является экспериментирование со сценами на разных битпотоках, чтобы
|
||
почувствовать разницу.
|
||
</para>
|
||
|
||
<para>
|
||
Если Вашей целью является определённый размер, Вам нужно как-нибудь
|
||
вычислить битпоток. Но перед этим, Вам нужно знать, сколько места
|
||
нужно зарезервировать по аудио дорожку(и), так что Вам необходимо
|
||
<link linkend="menc-feat-dvd-mpeg4-audio">извлечь их</link> сперва.
|
||
Вы можете расчитать битпоток с помощью следующей формулы:
|
||
<systemitem>битпоток = (конечный_размер_в_МБайт - размер_звука_в_МБайт) *
|
||
1024 * 1024 / длительность_в_секундах * 8 / 1000</systemitem>.
|
||
Например, для сжатия двухчасового фильма в 702 МБ CD, с 60 МБ
|
||
аудио дорожкой, битпоток видео должен составлять:
|
||
<systemitem>(702 - 60) * 1024 * 1024 / (120*60) * 8 / 1000
|
||
= 740 кбит/сек</systemitem>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-constraints">
|
||
<title>Ограничения для эффективного кодирования</title>
|
||
|
||
<para>
|
||
Из-за особенностей MPEG-подобного сжатия, существуют различные
|
||
ограничения, которым Вы должны следовать для достижения
|
||
максимального качества.
|
||
MPEG разбивает видео на квадраты 16х16, называемые макроблоками.
|
||
Каждый макроблок состоит из 4 блоков 8х8 с информацией о люме
|
||
(интенсивности) и двух блоков 8х8 с информацией о хроме (цвете)
|
||
половинного разрешения (один для красно-бирюзовой оси и другой
|
||
для жёлто-голубой оси).
|
||
Даже если ширина и высота Вашего фильма не кратны 16, кодер
|
||
всё равно использует нужное количество макроблоков 16х16 для покрытия
|
||
всей области картинки, дополнительная область будет впустую потрачена.
|
||
Так что в интересах максимизации качества при фиксированном размере
|
||
файла, не стоит использовать размеры, не кратные 16.
|
||
</para>
|
||
|
||
<para>
|
||
У большинства DVD также есть определённое подобие чёрных полос на
|
||
краях. Если Вы их оставите, это может <emphasis>сильно</emphasis>
|
||
повредить качество несколькими путями.
|
||
</para>
|
||
|
||
<orderedlist>
|
||
<listitem>
|
||
<para>
|
||
MPEG-подобное сжатие также очень чувствительно к преобразованиям
|
||
частотных интервалов, в частности, к дискретному косинусному
|
||
преобразованию (DCT), которое аналогично преобразованию Фурье.
|
||
Этот вид сжатия эффективен для представления образов и сглаженных
|
||
переходов, но у него возникают проблемы с острыми краями.
|
||
<!-- FIXME: для слова ringing я тоже не нашёл краткого однозначного
|
||
перевода; лучшее, что приходит на ум - это "размывание краёв",
|
||
ясное дело, что причиной является отбрасывание малых гармоник,
|
||
в результате чего вместо точки возникает затухающая окружность,
|
||
но вот как это кратко выразить... -->
|
||
Для кодирования последних Вам нужно гораздо больше битов, а иначе
|
||
у вас появится артефакт, известный как размывание краёв
|
||
(англ. ringing).
|
||
</para>
|
||
|
||
<para>
|
||
Частотные преобразования (DCT) выполняются независимо для каждого
|
||
макроблока (на самом деле, для каждого блока), так что эта проблема
|
||
возникает только в случае попадания острого края внутрь блока.
|
||
Если Ваши чёрные поля возникают точно на границах, кратных 16
|
||
пикселям, это не проблема.
|
||
Однако, чёрные полосы на DVD редко хорошо расположены, так что
|
||
на практике Вам всегда придётся усекать стороны для избежания
|
||
этих проблем.
|
||
</para>
|
||
</listitem>
|
||
</orderedlist>
|
||
|
||
<para>
|
||
В дополнение к преобразованиям частотных интервалов, MPEG-подобное
|
||
сжатие использует векторы движения для отображения изменений от
|
||
одного кадра к другому. Векторы движения, естественно, работают
|
||
существенно менее эффективно для новых объектов, идущих от
|
||
краёв картинки, поскольку они отсутсвуют в предыдущих кадрах.
|
||
Пока картинка простирается вплоть до края кодируемой области,
|
||
у векторов движения не возникает проблем с движением объектов
|
||
за пределы картинки. Однако, при наличии черных полей
|
||
могут возникнуть проблемы:
|
||
</para>
|
||
|
||
<orderedlist continuation="continues">
|
||
<listitem>
|
||
<para>
|
||
Для каждого макроблока MPEG-подобное сжатие сохраняет вектор,
|
||
определяющий какая часть предыдущего кадра должна быть скопирована
|
||
в этот макроблок как основа для предсказания следующего кадра.
|
||
Кодированию подлежит только оставшаяся разность. Если макроблок
|
||
простирается до края картинки и содержит часть чёрной полосы,
|
||
то векторы движения других частей каритки перепишут чёрную полосу.
|
||
Это означает, что много битов нужно потратить либо на повторное
|
||
чернение переписанной полосы, либо (что более вероятно) вектор
|
||
движения не будет использован вовсе и все изменения для этого
|
||
макроблока будут явно кодированы. Другими словами, эффективность
|
||
кодирования существенно уменьшается.
|
||
</para>
|
||
|
||
<para>
|
||
Ещё раз, эта проблема возникает только в случае, если чёрные полосы
|
||
не укладываются в границы, кратные 16.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
Наконец, предположим, что у нас есть находящийся внутри картинки
|
||
макроблок и объект движется в этот блок от края изображения.
|
||
MPEG-подобное кодирование не может сказать "скопируй ту часть,
|
||
что внутри картинки, но не чёрную полосу". Так что чёрная полоса
|
||
также быдет скопирована внутрь, в результате чего масса битов
|
||
будет потрачена на кодирование части изображения, которое должно
|
||
быть на месте полосы.
|
||
</para>
|
||
|
||
<para>
|
||
Для случаев, когда всё изображение движется к краю кодируемой
|
||
области, у MPEG есть специальные оптимизации для многократного
|
||
копирования пикселей на край картинки, когда вектор движения
|
||
идёт извне области кодирования. Эта возможность становится
|
||
бесполезной, если у фильма есть чёрные полосы. В отличии от
|
||
случаев 1 и 2, выравнивание границ до кратности 16 здесь
|
||
не поможет.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>
|
||
Несмотря на то, что границы полностью чёрные и никогда не изменяются,
|
||
существуют, как минимум, определённые накладные расходы, связанные
|
||
с наличием большего числа макроблоков.
|
||
</para></listitem>
|
||
</orderedlist>
|
||
|
||
<para>
|
||
Благодаря всем этим причинам, рекомендуется полностью урезать
|
||
чёрные полосы. Более того, если есть области шумов/искажений
|
||
на краях картинки, то их урезание также поспособствует улучшению
|
||
качества кодирования. Видеофилы, желающие сохранить оригинал как
|
||
можно более точно, могут возражать против такого усечения; но
|
||
если Вы не планируете кодировать при постоянном квантователе,
|
||
качество, полученное при усечении, существенно превысит потери
|
||
информации на краях.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-crop">
|
||
<title>Усечение и масштабирование</title>
|
||
|
||
<para>
|
||
Вспомните из предыдущего раздела, что конечный размер картинки,
|
||
подлежащей кодированию, должен быть кратен 16 (как высота,так
|
||
и ширина). Это может быть достигнуто усечением, масштабированием
|
||
или комбинацией того и другого.
|
||
</para>
|
||
|
||
<para>
|
||
Есть несколько рекомендаций для усечения, которым необходимо следовать
|
||
для избежания повреждения фильма.
|
||
Обычный формат YUV, 4:2:0, сохраняет хрому (информацию о цвете)
|
||
половинной дискретизации, т.е. хрома сохраняется в два раза реже
|
||
в каждом направлении, чем люма (информация об интенсивности).
|
||
Рассмотрите следующую диаграмму, где L обозначает точки дискретизации
|
||
люмы и C — хромы.
|
||
</para>
|
||
|
||
<informaltable>
|
||
<?dbhtml table-width="40%" ?>
|
||
<?dbfo table-width="40%" ?>
|
||
<tgroup cols="8" align="center">
|
||
<colspec colnum="1" colname="col1"/>
|
||
<colspec colnum="2" colname="col2"/>
|
||
<colspec colnum="3" colname="col3"/>
|
||
<colspec colnum="4" colname="col4"/>
|
||
<colspec colnum="5" colname="col5"/>
|
||
<colspec colnum="6" colname="col6"/>
|
||
<colspec colnum="7" colname="col7"/>
|
||
<colspec colnum="8" colname="col8"/>
|
||
<spanspec spanname="spa1-2" namest="col1" nameend="col2"/>
|
||
<spanspec spanname="spa3-4" namest="col3" nameend="col4"/>
|
||
<spanspec spanname="spa5-6" namest="col5" nameend="col6"/>
|
||
<spanspec spanname="spa7-8" namest="col7" nameend="col8"/>
|
||
<tbody>
|
||
<row>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
</row>
|
||
<row>
|
||
<entry spanname="spa1-2">C</entry>
|
||
<entry spanname="spa3-4">C</entry>
|
||
<entry spanname="spa5-6">C</entry>
|
||
<entry spanname="spa7-8">C</entry>
|
||
</row>
|
||
<row>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
</row>
|
||
<row>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
</row>
|
||
<row>
|
||
<entry spanname="spa1-2">C</entry>
|
||
<entry spanname="spa3-4">C</entry>
|
||
<entry spanname="spa5-6">C</entry>
|
||
<entry spanname="spa7-8">C</entry>
|
||
</row>
|
||
<row>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>
|
||
Как Вы видите, строки и столбцы изображения естественным образом
|
||
идут в парах. Поэтому смещения и размеры усечения
|
||
<emphasis>должны</emphasis> быть чётными числами.
|
||
Иначе хрома перестанет правильно соответствовать люме.
|
||
Теоретически возможно усечение с нечётными смещениями, но оно
|
||
потребует преобразования хромы, что потенциально является
|
||
операцией с потерей качества и не поддерживается фильтром
|
||
усечения сторон crop.
|
||
</para>
|
||
|
||
<para>
|
||
Далее, видео с чересстрочной развёрткой дискретизируется следующим образом:
|
||
</para>
|
||
|
||
<informaltable>
|
||
<?dbhtml table-width="80%" ?>
|
||
<?dbfo table-width="80%" ?>
|
||
<tgroup cols="16" align="center">
|
||
<colspec colnum="1" colname="col1"/>
|
||
<colspec colnum="2" colname="col2"/>
|
||
<colspec colnum="3" colname="col3"/>
|
||
<colspec colnum="4" colname="col4"/>
|
||
<colspec colnum="5" colname="col5"/>
|
||
<colspec colnum="6" colname="col6"/>
|
||
<colspec colnum="7" colname="col7"/>
|
||
<colspec colnum="8" colname="col8"/>
|
||
<colspec colnum="9" colname="col9"/>
|
||
<colspec colnum="10" colname="col10"/>
|
||
<colspec colnum="11" colname="col11"/>
|
||
<colspec colnum="12" colname="col12"/>
|
||
<colspec colnum="13" colname="col13"/>
|
||
<colspec colnum="14" colname="col14"/>
|
||
<colspec colnum="15" colname="col15"/>
|
||
<colspec colnum="16" colname="col16"/>
|
||
<spanspec spanname="spa1-2" namest="col1" nameend="col2"/>
|
||
<spanspec spanname="spa3-4" namest="col3" nameend="col4"/>
|
||
<spanspec spanname="spa5-6" namest="col5" nameend="col6"/>
|
||
<spanspec spanname="spa7-8" namest="col7" nameend="col8"/>
|
||
<spanspec spanname="spa9-10" namest="col9" nameend="col10"/>
|
||
<spanspec spanname="spa11-12" namest="col11" nameend="col12"/>
|
||
<spanspec spanname="spa13-14" namest="col13" nameend="col14"/>
|
||
<spanspec spanname="spa15-16" namest="col15" nameend="col16"/>
|
||
<tbody>
|
||
<row>
|
||
<entry namest="col1" nameend="col8">Верхнее поле</entry>
|
||
<entry namest="col9" nameend="col16">Нижнее поле</entry>
|
||
</row>
|
||
<row>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry spanname="spa1-2">C</entry>
|
||
<entry spanname="spa3-4">C</entry>
|
||
<entry spanname="spa5-6">C</entry>
|
||
<entry spanname="spa7-8">C</entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
</row>
|
||
<row>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry spanname="spa9-10">C</entry>
|
||
<entry spanname="spa11-12">C</entry>
|
||
<entry spanname="spa13-14">C</entry>
|
||
<entry spanname="spa15-16">C</entry>
|
||
</row>
|
||
<row>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
</row>
|
||
<row>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry spanname="spa1-2">C</entry>
|
||
<entry spanname="spa3-4">C</entry>
|
||
<entry spanname="spa5-6">C</entry>
|
||
<entry spanname="spa7-8">C</entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
</row>
|
||
<row>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry spanname="spa9-10">C</entry>
|
||
<entry spanname="spa11-12">C</entry>
|
||
<entry spanname="spa13-14">C</entry>
|
||
<entry spanname="spa15-16">C</entry>
|
||
</row>
|
||
<row>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry></entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
<entry>L</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>
|
||
Как Вы видите, структура повторяется только после 4 строк.
|
||
Так что для чересстрочного видео Ваше y-смещение и высота
|
||
усечения должны быть кратны 4.
|
||
</para>
|
||
|
||
<para>
|
||
Естественные разрешения DVD составляют 720x480 для NTSC и 720x576
|
||
для PAL, но существует флаг соотношения сторон, который указывает
|
||
является ли видео полноэкранным (4:3) или широкоэкранным (16:9).
|
||
Многие (если не большинство) широкоэкранных DVD не точно соответсвуют
|
||
<!-- FIXME: Есть ли перевод названия формата cinescope (он же CinemaScope) ?? -->
|
||
формату 16:9 и он может быть как 1.85:1, так и 2.35:1 (формат cinescope).
|
||
Это означает, что в видео будут чёрные полосы, которые нужно усечь.
|
||
</para>
|
||
|
||
<para>
|
||
<application>MPlayer</application> предоставляет фильтр обнаружения
|
||
усечения, который определяет прямоугольник, до которго нужно усечь
|
||
(<option>-vf cropdetect</option>).
|
||
Запустите <application>MPlayer</application> с
|
||
<option>-vf cropdetect</option> и он выдаст настройки
|
||
усечения для удаления полей.
|
||
С целью получения точных параметров усечения, Вы должны проигрывать
|
||
фильм достаточно долго для того, чтоб была использована вся область
|
||
изображения.
|
||
</para>
|
||
|
||
<para>
|
||
Затем проверьте значения, полученные с помощью
|
||
<application>MPlayer</application>, используя командную строку,
|
||
выведенную <option>cropdetect</option>, и подстройте прямоугольник
|
||
при необходимости.
|
||
Фильтр <option>rectangle</option> может быть полезен, позволив
|
||
Вам интерактивно менять прямоугольник усечения для Вашего фильма.
|
||
Не забывайте следовать указанным выше руководствам по делимости,
|
||
чтобы не испортить выравнивание хромы.
|
||
</para>
|
||
|
||
<para>
|
||
В ряде случаев масштабирование может быть нежелательным.
|
||
Масштабирование по вертикальному направлению затруднено для
|
||
чересстрочного видео, и если Вы хотите сохранить чересстрочность,
|
||
Вам в большинстве случаев будет необходимо воздерживаться от
|
||
масштабирования.
|
||
Если Вы не будете масштабировать, но всё ещё желаете размеры,
|
||
кратные 16, то Вам придётся проводить излишнее усечение.
|
||
Не проводите неполное усечение, поскольку чёрные полосы очень
|
||
плохи для кодирования!
|
||
</para>
|
||
|
||
<para>
|
||
Посокльку MPEG-4 использует макроблоки 16х16, Вы должны убедиться,
|
||
что каждое измерение кодируемого видео кратно 16; иначе Вы ухудшите
|
||
качество, особенно на малых битпотоках. Вы можете сделать это,
|
||
округлив ширину и высоту прямоугольника усечения до ближайшего
|
||
меньшего целого, кратного 16.
|
||
Учитывая установленное ранее, при усечении Вы можете захотеть увеличить
|
||
смещение по Y на половину разности старой и новой высоты, так что
|
||
полученное видео будет браться из центра кадра.
|
||
|
||
И из-за способа дискретизации DVD видео, убедитесь, что смещение
|
||
есть чётное число. (Фактически, возьмите за правило никогда не
|
||
использовать нечётные величины для любых параметров усечения или
|
||
масштабирования видео.) Если Вы беспокоитесь из-за нескольких
|
||
излишне отброшенных битов, возможно, Вы предпочтёте взамен
|
||
масштабировать видео.
|
||
В действительности, Вы можете доверить фильтру
|
||
<option>cropdetect</option> сделать для Вас всё вышеупомянутое,
|
||
т.к. у него есть необязательный параметр округления
|
||
<option>round</option>, равный 16 по умолчанию.
|
||
</para>
|
||
|
||
<para>
|
||
Также будьте осторожны с "полутёмными" пикселями на краях. Убедитесь,
|
||
что они тоже отрезаются, иначе Вы будете тратить биты, которым есть
|
||
лучшее применение.
|
||
</para>
|
||
|
||
<para>
|
||
После всего выше сказанного и сделанного, Вы, вероятно, получите
|
||
видео не точно формата 1:85.1 или 2.35:1, а с чем-то близким
|
||
к этому. Вы можете вычислить новый коэффициент соотношения
|
||
сторон вручную, но <application>MEncoder</application>
|
||
предоставляет опцию для <systemitem class="library">libavcodec</systemitem>,
|
||
называемую <option>autoaspect</option>, которая сделает это для
|
||
Вас. Ни в коем случае не увеличивайте размер этого видео с целью
|
||
квадратизации пикселей, если Вы не желаете впустую потратить
|
||
место на жёстком диске.
|
||
Масштабирование должно выполняться при воспроизведении, и плеер
|
||
использует коэффициент соотношения сторон, сохранённый в AVI, для
|
||
определения правильного разрешения.
|
||
К сожалению, не все плееры используют эту информацию автомасштабирования,
|
||
поэтому Вам всё ещё может быть необходимо перемасштабирование.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-resolution-bitrate">
|
||
<title>Выбор разрешения и битпотока</title>
|
||
|
||
<para>
|
||
Если Вы не собираетеся кодировать в режиме постоянного квантователя,
|
||
Вам нужно выбрать битпоток.
|
||
Понятие битпотока очень просто: это среднее число битов, которые
|
||
будут использованы для сохранения Вашего фильма, в секунду.
|
||
Обычно битпоток измеряется в килобитах (1000 бит) в секунду.
|
||
Размер Вашего фильма на диске есть битпоток, умноженный на
|
||
длительность фильма, плюс небольшие накладные расходы
|
||
(см. раздел
|
||
<link linkend="menc-feat-dvd-mpeg4-muxing-avi-limitations">контейнер AVI</link>
|
||
для примера).
|
||
Остальные параметры, такие как масштабирование, усечение и т.п.
|
||
<emphasis role="bold">не</emphasis> изменят размер файла, пока
|
||
Вы также не измените битпоток!
|
||
</para>
|
||
|
||
<para>
|
||
Битпоток изменяется <emphasis role="bold">не</emphasis>
|
||
пропорционально разрешению.
|
||
То есть файл разрешением 320х240 с 200 кбит/сек не будет
|
||
того же качества, что этот же фильм разрешением 640х480
|
||
и 800 кбит/сек!
|
||
Для этого есть две причины:
|
||
<orderedlist>
|
||
<listitem><para>
|
||
<emphasis role="bold">Восприятие</emphasis>: Вы сильнее
|
||
замечаете MPEG артефакты, если они больше!
|
||
Артефакты возникают на масштабе блоков (8х8).
|
||
Ваш глаз не увидит ошибки в 4800 маленьких блоков так же
|
||
легко, как и в 1200 больших блоков (предполагая
|
||
масштабирование обоих фильмов на полный экран).
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">Теоретическая</emphasis>: Когда Вы
|
||
уменьшаете размер изображения, но продолжаете использовать
|
||
блоки того же размера (8х8) для пространственных частотных
|
||
преобразований, Вы перемещаете больше данных в высокочастотные
|
||
полосы. Грубо говоря, каждый пиксель содержит больше деталей,
|
||
чем раньше.
|
||
Так что несмотря на то, что ваша картинка с уменьшенным
|
||
масштабом содержит 1/4 информации в пространственных направлениях,
|
||
она всё ещё может содержать большУю часть информации в
|
||
частотных интервалах (предполагая, что высокие частоты были
|
||
не использованы в оригинальном 640х480 изображении).
|
||
</para></listitem>
|
||
</orderedlist>
|
||
</para>
|
||
|
||
<para>
|
||
Последние руководства рекомендовали выбор битпотока и разрешения,
|
||
основываясь на приближении "бит на пиксель", но это обычно не
|
||
верно из-за упомянутых выше причин.
|
||
Похоже, лучшей оценкой является рост битпотока пропорционально
|
||
квадратному корню разрешения, так что 320х240 и 400 кбит/сек
|
||
должно быть сравнимо с 640х480 и 800 кбит/сек.
|
||
Однако, это не было строго проверено теоретически или эмпирически.
|
||
Кроме того, из-за существенного отличия фильмов по уровню шума,
|
||
деталей, степеней свободы и т.п., тщетно давать общие рекомендации
|
||
для "битов на длину диагонали" (аналог битов на пиксель, используя
|
||
квадратный корень).
|
||
</para>
|
||
|
||
<para>
|
||
Таким образом, мы обсудили сложность выбора битпотока и разрешения.
|
||
</para>
|
||
|
||
|
||
<sect3 id="menc-feat-dvd-mpeg4-resolution-bitrate-compute">
|
||
<title>Расчёт разрешения</title>
|
||
|
||
<para>
|
||
Следующие шаги помогут Вам расчитать разрешение для Вашего
|
||
кодирования без слишком сильного искажения видео, учитывая
|
||
некоторую информацию об исходном видео.
|
||
Прежде всего, Вам необходимо расчитать коэффициент соотношения
|
||
сторон для кодированного видео:
|
||
<systemitem>ARc = (Wc x (ARa / PRdvd )) / Hc</systemitem>
|
||
|
||
<itemizedlist>
|
||
<title>где:</title>
|
||
<listitem><para>
|
||
Wc и Hc — ширина и высота усечённого видео,
|
||
</para></listitem>
|
||
<listitem><para>
|
||
ARa — коэффициент соотношения сторон изображения, обычно 4/3 или 16/9,
|
||
</para></listitem>
|
||
<listitem><para>
|
||
PRdvd — отношение пикселей DVD, что равно 1.25=(720/576) для PAL
|
||
DVD и 1.5=(720/480) для NTSC DVD.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</para>
|
||
|
||
<para>
|
||
Затем Вы можете расчитать разрешение по X и Y, согласно определённому
|
||
фактору качества сжатия (CQ):
|
||
<systemitem>ResY = INT(SQRT( 1000*Битпоток/25/ARc/CQ )/16) * 16</systemitem>
|
||
и <systemitem>ResX = INT( ResY * ARc / 16) * 16</systemitem>.
|
||
</para>
|
||
|
||
<para>
|
||
Хорошо, но что такое CQ?
|
||
CQ соответсвует числу битов на пиксель и на кадр для кодирования.
|
||
Грубо говоря, чем больше CQ, тем меньше вероятность увидеть
|
||
артефакты кодирования.
|
||
Однако, если у Вас есть заданный размер для Вашего фильма
|
||
(например, 1 или 2 CD), есть ограниченное общее число битов,
|
||
которые Вы можете потратить; поэтому важно найти хороший
|
||
компромисс между сжимаемостью и качеством.
|
||
</para>
|
||
|
||
<para>
|
||
CQ зависит от битпотока, эффективности видеокодека и разрешения фильма.
|
||
Обычно, в целях увеличеиня CQ, Вам нужно будет уменьшить размер
|
||
фильма при постоянном битпотоке, заданном размере и длине фильма.
|
||
С MPEG-4 ASP кодеками, такими как <systemitem class="library">Xvid</systemitem>
|
||
и <systemitem class="library">libavcodec</systemitem>, CQ
|
||
меньше 0.18 обычно приводит к изображению с большим числом
|
||
сегментов "квадратиками", из-за недостаточного числа битов для
|
||
кодирования информации в каждом макроблоке.
|
||
(MPEG4, как и многие другие кодеки, группирует пиксели в блоки по
|
||
несколько пикселей для сжатия изображения; если битов не хватает,
|
||
границы этих блоков становятся заметными.)
|
||
Следовательно, благоразумно выбрать CQ в диапазоне от 0.20 до 0.22
|
||
для рипа на 1 CD и 0.26-0.28 для рипа на 2 CD при использовании
|
||
стандартных опций кодирования.
|
||
Более продвинутые опции кодирования, такие как указанные для
|
||
<link linkend="menc-feat-mpeg4-lavc-example-settings"><systemitem class="library">libavcodec</systemitem></link>
|
||
и
|
||
<link linkend="menc-feat-xvid-example-settings"><systemitem class="library">Xvid</systemitem></link>
|
||
должны сделать возможным получение того же качества с CQ в диапазоне
|
||
от 0.18 до 0.20 для рипа на 1 CD и 0.24-0.26 для рипа на 2 CD.
|
||
Используя MPEG-4 ASP кодеки, такие как
|
||
<systemitem class="library">x264</systemitem>, Вы можете использовать
|
||
CQ в диапазоне от 0.14 до 0.16 со стандартными опциями кодирования
|
||
и должны суметь достичь таких низких значений, как 0.10-0.12
|
||
с помощью
|
||
<link linkend="menc-feat-x264-example-settings">продвинутых опций кодирования <systemitem class="library">x264</systemitem></link>.
|
||
</para>
|
||
|
||
<para>
|
||
Пожалуйста, обратите внимание, что CQ — лишь показательная величина,
|
||
т.к. она зависит от кодируемого содержимого; CQ 0.18 может хорошо
|
||
смотреться для Бергмана (Bergman), в отличии от такого фильма как
|
||
Матрица (The Matrix), содержащего много сцен с быстрым движением.
|
||
С другой стороны, бесполезно увеличивать CQ выше 0.30, т.к. Вы
|
||
будете тратить биты без заметного увеличения качества.
|
||
Так же обратите внимание, что, как было указано выше в данном
|
||
руководстве, фильмам с низким разрешением (например, по сравнению с DVD)
|
||
необходим более высокий CQ для того, чтоб они выглядели хорошо.
|
||
</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-filtering">
|
||
<title>Фильтрация</title>
|
||
|
||
<para>
|
||
Изучение использования видео фильтров <application>MEncoder</application>
|
||
важно для получения хороших результатов кодирования.
|
||
Вся обработка видео выполняется посредством фильтров: усечение,
|
||
масштабирование, подстройка цвета, удаление шума, увеличение
|
||
чёткости, деинтерлейс (преобразование видео из чересстрочной
|
||
развёртки в построчную), телесин, обратный телесин и удаление
|
||
блочной сегментации — и это лишь некоторые из них.
|
||
Вместе с огромным количеством поддерживаемых входных форматов,
|
||
разнообразие фильтров, доступных в <application>MEncoder</application>,
|
||
является одним из его основных достоинств над другими аналогичными
|
||
программами.
|
||
</para>
|
||
|
||
<para>
|
||
Фильтры загружаются в цепочки с помощью опции -vf:
|
||
|
||
<screen>-vf фильтр1=опции,фильтр2=опции,...</screen>
|
||
|
||
Большинство фильтров используют численные значения опций,
|
||
разделённые двоеточиями, но синтаксис этих параметров различается
|
||
у разных фильтров, так что читайте мануал для детальной
|
||
информации о фильтрах, которые Вы желаете использовать.
|
||
</para>
|
||
|
||
<para>
|
||
Фильтры действуют на видео в порядке их загрузки.
|
||
Например, следующая цепочка:
|
||
|
||
<screen>-vf crop=688:464:12:4,scale=640:464</screen>
|
||
|
||
сперва усечёт область изображения до 688х464 с верхним левым
|
||
углом (12,4), а затем масштабирует результат до 640х464.
|
||
</para>
|
||
|
||
<para>
|
||
Некоторые фильтры нужно загружать в начале цепочки фильтров (или
|
||
рядом с ним) с целью получения преимущества от использования
|
||
информации после видеодекодера, которая будет потеряна или
|
||
искажена другими фильтрами.
|
||
Важнейшими примерами являются: <option>pp</option> (постобработка,
|
||
только при выполнении операций удаления блочной сегментации
|
||
(deblocking) или увеличения чёткости краёв (deringing)),
|
||
<option>spp</option> (другой фильтр постобработки, служащий для
|
||
удаления артефактов MPEG), <option>pullup</option> (обратный
|
||
телесин), и <option>softpulldown</option> (для преобразования
|
||
мягкого телесина в жёсткий).
|
||
</para>
|
||
|
||
<para>
|
||
В общем случае, Вам следует делать настолько мало фильтрации,
|
||
насколько это возможно, для того чтоб остаться близко к оригинальному
|
||
DVD источнику. Усечение часто необходимо (как описано выше), но
|
||
избегайте масштабирования видео. Несмотря на то, что уменьшение
|
||
размера иногда предпочтительно при использовании больших
|
||
квантователей, нужно избегать и того, и другого: помните,
|
||
что мы с самого начала решили обменять биты на качество.
|
||
</para>
|
||
|
||
<para>
|
||
Также не корректируйте гамму, контрастность, яркость и т.п.. То,
|
||
что хорошо выглядит на Вашем мониторе, может плохо выглядеть
|
||
на других. Коррекция должна выполняться только при воспроизведении.
|
||
</para>
|
||
|
||
<para>
|
||
Однако, есть одна вещь, которую Вы, быть может, захотите сделать —
|
||
это пропустить видео через очень слабый фильтр удаления шумов,
|
||
такой как <option>-vf hqdn3d=2:1:2</option>.
|
||
Ещё раз, причиной этому является то, что этим битам можно найти
|
||
лучшее применение: зачем тратить их, кодируя шум, если Вы просто
|
||
можете вернуть этот шум в процессе воспроизведения?
|
||
Увеличение параметров для <option>hqdn3d</option> дополнительно
|
||
улучшит сжимаемость, но увеличив значения слишком сильно, Вы рискуете
|
||
ухудшить различимость изображения.
|
||
Рекомендованные выше значения (<option>2:1:2</option>) слегка
|
||
консервативны; не бойтесь экспериментировать с более высокими
|
||
значениями и самостоятельно оценивать результаты.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-interlacing">
|
||
<title>Чересстрочная развёртка и телесин</title>
|
||
|
||
<para>
|
||
Почти все фильмы снимаются при 24 fps [кадр/сек]. Поскольку
|
||
в NTSC ниспользуется 30000/1001 fps, нужно выполнить некоторую
|
||
обработку для такого 24 fps видео, чтобы оно корректно
|
||
воспроизводилось при кадровой частоте NTSC. Этот процесс называется
|
||
3:2 пулдаун, обычно называемый телесин (поскольку пулдаун часто
|
||
применяется в процессе показа телевизионного фильма, англ. telecine);
|
||
и в упрощенном описании это работает путём замедления фильма до
|
||
24000/1001 fps и повтора каждого четвёртого кадра.
|
||
</para>
|
||
|
||
<para>
|
||
Однако, никакой специальной обработки не выполняется для видео
|
||
на PAL DVD, которое воспроизводится при 25 fps. (Технически PAL
|
||
может быть подверженым телесину, называемому 2:2 пулдаун, но на
|
||
практике это не применяется).
|
||
24 fps фильм просто проигрывается на 25 fps. В результате фильм
|
||
воспроизводится слегка быстрее, но если Вы не пришелец, то,
|
||
вероятно, не заметите разницы.
|
||
У большинства PAL DVD аудио корректируемо по высоте звука, так
|
||
что, воспроизводясь при 25 fps, оно звучит нормально, даже если
|
||
аудиодорожка (и, следовательно, весь фильм) проигрываются на
|
||
4% быстрее, чем NTSC DVD.
|
||
</para>
|
||
|
||
<para>
|
||
Поскольку видео на PAL DVD не переделывается, Вам не стоит
|
||
беспокоится о частоте кадров. У источника 25 fps и у Вашего
|
||
рипа будет 25 fps. Однако, если Вы делаете рип NTSC DVD фильма,
|
||
Вам, быть может, придётся выполнить обратный телесин.
|
||
</para>
|
||
|
||
<para>
|
||
Для фильмов, снятых на 24 fps, видео на NTSC DVD идёт либо с телесином
|
||
30000/1001, либо с построчной развёрткой 24000/1001 fps и
|
||
предназначается для телесина на лету с помощью DVD плеера.
|
||
С другой стороны, TV сериалы идут обычно только с чересстрочной развёрткой,
|
||
но без телесина. Это не строгое правило: есть сериалы с
|
||
чересстрочной развёрткой (например, Баффи, Убийца Вампиров
|
||
[Buffy the Vampire Slayer]), в то время как другие представляют
|
||
собой смесь построчной и чересстрочной развёртки (такие как
|
||
Ангел [Angel] или 24).
|
||
</para>
|
||
|
||
<para>
|
||
Настоятельно рекомендуется прочитать раздел о
|
||
<link linkend="menc-feat-telecine">работе с телесином и чересстрочной развёрткой в NTSC DVD</link>
|
||
для изучения способов обработки в разных ситуациях.
|
||
</para>
|
||
|
||
<para>
|
||
Однако, если Вы преимущественно делаете рипы фильмов, Вы, скорее
|
||
всего, имеете дело с 24 fps видео либо с построчной развёрткой,
|
||
либо с подвергнутым телесину; в последнем случае Вы можете использовать
|
||
<option>pullup</option> фильтр: <option>-vf
|
||
pullup,softskip</option>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-encoding-interlaced">
|
||
<title>Кодирование чересстрочного видео</title>
|
||
|
||
<para>
|
||
Если Вы желаете кодировать фильм с чересстрочной развёрткой
|
||
(NTSC или PAL видео), Вам нужно решить, будете ли Вы его
|
||
преобразовывать в построчную развёртку или нет.
|
||
Хотя такое преобразование (деинтерлейс) сделает Ваш фильм
|
||
пригодным для дисплеев с построчной развёрткой, таких как
|
||
компьютерные мониторы и проекторы, это будет иметь свою цену:
|
||
частота полей уменьшится вдвое от 50 или 60000/1001 до 25 или
|
||
30000/1001 поля в секунду, и примерно половина информации в
|
||
Вашем фильме будет потеряна в сценах со значительным движением.
|
||
</para>
|
||
|
||
<para>
|
||
Поэтому, если Вы кодируете для высококачественных архивных целей,
|
||
не рекомендуется делать деинтерлейс. Вы всегда можете преобразовать
|
||
развёртку фильма в процессе воспроизведения (при воспроизведении
|
||
на устройствах с построчной развёрткой).
|
||
Мощность современных компьютеров вынуждает плееры использовать
|
||
фильтр деинтерлейса, что слегка ухудшает качество изображения.
|
||
Но плееры будущего будут способны имитировать дисплей TV с
|
||
чересстрочной развёрткой, выполняя деинтерлейс на полной частоте
|
||
полей и интерполируя 50 или 60000/1001 кадров в секунду для
|
||
чересстрочного видео.
|
||
</para>
|
||
|
||
<para>
|
||
С чересстрочным видео нужно работать особым образом:
|
||
</para>
|
||
|
||
<orderedlist>
|
||
<listitem><para>
|
||
Высота усечения и смещение по оси y должны быть кратны 4.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Любое вертикальное масштабирование должно выполняться в режиме
|
||
чересстрочной развёртки.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Фильтры постобработки и удаления шума могут не работать как
|
||
ожидается, только если Вы особо не позаботитесь об их
|
||
одновременном применении на частоте полей, иначе они могут
|
||
повредить видео при неверном использовании.
|
||
</para></listitem>
|
||
</orderedlist>
|
||
|
||
<para>
|
||
Учитывая вышесказанное, вот наш первый пример:
|
||
<screen>
|
||
mencoder <replaceable>захват.avi</replaceable> -mc 0 -oac lavc -ovc lavc -lavcopts \
|
||
vcodec=mpeg2video:vbitrate=6000:ilme:ildct:acodec=mp2:abitrate=224
|
||
</screen>
|
||
Обратите внимание на опции <option>ilme</option> и <option>ildct</option>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-av-sync">
|
||
<title>Замечания об аудио/видео синхронизации</title>
|
||
|
||
<para>
|
||
Алгоритмы аудио/видео (A/V) синхронизации <application>MEncoder</application>
|
||
были разработаны с целью восстановления файлов с повреждённой
|
||
синхронизацией.
|
||
Однако, в ряде случаев они могут привести к ненужному пропуску
|
||
или повторению кадров и, возможно, к лёгкой A/V десинхронизации
|
||
корректных входных данных (конечно, проблемы A/V синхронизации
|
||
возникают только при обработке или копировании аудиотрека при
|
||
кодировании видео, что настоятельно рекомендуется).
|
||
Поэтому Вы можете переключиться на базовую A/V синхронизацию
|
||
с помощью опции <option>-mc 0</option> или разместить это в
|
||
конфигурационном файле <systemitem>~/.mplayer/mencoder</systemitem>,
|
||
если Вы работаете только с хорошими источниками (DVD, TV-захват,
|
||
высококачественные MPEG-4 рипы и т.п.), а не с повреждёнными
|
||
файлами ASF/RM/MOV.
|
||
</para>
|
||
|
||
<para>
|
||
Если Вы хотите дополнительно защититься от странных пропусков
|
||
и повторений кадров, вы можете одновременно использовать опции
|
||
<option>-mc 0</option> и <option>-noskip</option>.
|
||
Это предотвратит <emphasis>любую</emphasis> A/V коррекцию, и
|
||
будет копировать кадры один в один, так что Вы не сможете это
|
||
использовать, если будете применять какие-либо фильтры, которые
|
||
непредсказуемо добавляют или отбрасывают кадры, либо если у
|
||
Вашего входного файла переменный битопоток!
|
||
Поэтому использование <option>-noskip</option> в общем случае не
|
||
рекомендуется.
|
||
</para>
|
||
|
||
<para>
|
||
Сообщалось о том, что так называемое трёхпроходное аудиокодирование,
|
||
поддерживаемое <application>MEncoder</application>, вызывало
|
||
A/V десинхронизацию.
|
||
Это наверняка произойдёт при использовании совместно с некоторыми
|
||
фильтрами, поэтому сейчас <emphasis>не</emphasis> рекомендуется
|
||
использовать трёхпроходный аудио режим.
|
||
Эта возможность оставлена только для совместимости и для опытных
|
||
пользователей, понимающих когда это безопасно, а когда нет.
|
||
Если Вы ранее никогда не слышали о трёхпроходном режиме, забудьте
|
||
даже о том, что мы его упоминали!
|
||
</para>
|
||
|
||
<para>
|
||
Также были сообщения об A/V десинхронизации при кодировании
|
||
со стандартного ввода (stdin) с помощью <application>MEncoder</application>.
|
||
Не делайте этого! Всегда взамен используйте файл или CD/DVD и т.п.
|
||
устройство.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-codec">
|
||
<title>Выбор видеокодека</title>
|
||
|
||
<para>
|
||
То, какой видеокодек лучше выбрать, зависит от нескольких
|
||
факторов, таких как размер, качество, устойчивость к ошибкам,
|
||
практичность и распостранённость, многие из которых сильно
|
||
зависят от личных предпочтений и технических ограничений.
|
||
</para>
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
<emphasis role="bold">Эффективность сжатия</emphasis>:
|
||
Достаточно очевидно, что большинство кодеков нового поколения
|
||
разработаны для увеличения качества и степени сжатия.
|
||
Поэтому, авторы данного руководства и многие другие люди полагают,
|
||
что Вы не можете ошибиться
|
||
<footnote id='fn-menc-feat-dvd-mpeg4-codec-cpu'><para>
|
||
Несмотря на это, будьте осторожны: для декодирования MPEG-4 AVC
|
||
видео с DVD разрешением необходима быстрая машина (например,
|
||
Pentium 4 свыше 1.5 ГГц или Pentium M свыше 1 ГГц).
|
||
</para></footnote>,
|
||
выбирая MPEG-4 AVC кодеки (например,
|
||
<systemitem class="library">x264</systemitem>)
|
||
вместо таких MPEG-4 ASP кодеков, как
|
||
<systemitem class="library">libavcodec</systemitem> MPEG-4 или
|
||
<systemitem class="library">Xvid</systemitem>.
|
||
(Опытные разработчики кодеков могут быть заинтересованы в
|
||
ознакомлении с точкой зрения Михаэля Найдермауэра (Michael
|
||
Niedermayer)
|
||
"<ulink url="http://guru.multimedia.cx/?p=10">почему MPEG4-ASP отстой</ulink>".)
|
||
Аналогично, Вы должны получить лучшее качество с MPEG-4 ASP, по
|
||
сравнению с MPEG-2 кодеками.
|
||
</para>
|
||
|
||
<para>
|
||
Однако, новые кодеки, находящиеся в интенсивной разработке,
|
||
могут страдать от ещё не замеченных ошибок, которые могут
|
||
испортить кодирование. Просто это плата за использование
|
||
передовых технологий.
|
||
</para>
|
||
|
||
<para>
|
||
Более существенно то, что для начала использования нового кодека
|
||
необходимо потратить время на изучение его опций так, чтобы Вы
|
||
знали, что нужно подстраивать для достижения заданного качества
|
||
изображения.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>
|
||
<emphasis role="bold">Аппаратная совместимость</emphasis>:
|
||
Обычно необходимо длительное время для включения поддержки
|
||
последних видеокодеков в автономные видеоплееры.
|
||
В итоге, большинство поддерживает только MPEG-1 (наподобие
|
||
VCD, XVCD и KVCD), MPEG-2 (например, DVD, SVCD и KVCD) и MPEG-4
|
||
ASP (например, DivX,
|
||
<systemitem class="library">libavcodec</systemitem> LMP4 и
|
||
<systemitem class="library">Xvid</systemitem>)
|
||
(Осторожно: обычно поддерживаются не все возможности MPEG-4 ASP).
|
||
Пожалуйста, обратитесь к технической спецификации Вашего плеера
|
||
(если она доступна) или к гугл (google) для детальной информации.
|
||
</para></listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<emphasis role="bold">Лучшее соотношение качества и времени кодирования</emphasis>:
|
||
Кодеки, уже использующиеся определённое время (например,
|
||
<systemitem class="library">libavcodec</systemitem> MPEG-4 и
|
||
<systemitem class="library">Xvid</systemitem>) обычно сильно
|
||
оптимизированы всевозможными остроумными алгоритмами и
|
||
ассемблерным SIMD кодом. Поэтому они обладают тенденцией
|
||
достижения лучшего соотношения качества к времени кодирования.
|
||
Однако, у них могут быть некоторые очень продвинутые опции,
|
||
которые, будучи включенными, сделают кодирование очень медленным
|
||
ради несущественного выигрыша.
|
||
</para>
|
||
|
||
<para>
|
||
Если Вам нужна высокая скорость, примерно придерживайтесь настроек
|
||
видеокодека по умолчанию (хотя Вам стоит попробовать другие опции,
|
||
упоминаемые в иных разделах данного руководства).
|
||
</para>
|
||
|
||
<para>
|
||
Вы так же можете рассмотреть вариант использования многопоточного
|
||
кодека, хотя это полезно только для пользователей машин с
|
||
несколькими процессорами.
|
||
<systemitem class="library">libavcodec</systemitem> MPEG-4 позволяет
|
||
это, но выигрыш в скорости ограничен и есть небольшой отрицательный
|
||
эффект для качества картинки.
|
||
Многопоточное кодирование <systemitem class="library">Xvid</systemitem>,
|
||
включаемое опцией <option>threads</option>, может использоваться для
|
||
ускорения кодирования (на примерно 40-60% в типичных случаях)
|
||
с небольшим ухудшением картинки или вообще без него.
|
||
<systemitem class="library">x264</systemitem> также позволяет
|
||
многопоточное кодирование, что обычно ускоряет процесс на 15-30%
|
||
(в зависимости от настроек кодирования) с уменьшением PSNR примерно
|
||
на 0.05 дБ.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<emphasis role="bold">Личные предпочтения</emphasis>:
|
||
Здесь всё становится почти неразумным: из-за тех же причин, по
|
||
которым одни придерживаются DivX 3 в течении лет, в то время
|
||
как новые кодеки уже творят чудеса, другие люди предпочитают
|
||
<systemitem class="library">Xvid</systemitem> или
|
||
<systemitem class="library">libavcodec</systemitem> MPEG-4
|
||
использованиию <systemitem class="library">x264</systemitem>.
|
||
</para>
|
||
|
||
<para>
|
||
Вам нужно принимать решение самостоятельно; не слушайте советов
|
||
людей, признающих только один кодек.
|
||
Сделайте несколько образцов клипов из искомых источников и
|
||
сравните разные опции кодирования и кодеки, с целью выбора
|
||
того, что Вам наиболее подходит.
|
||
Лучший кодек — это тот, которым Вы сами овладели, и
|
||
который выглядит лучше всего для Ваших глаз на Вашем дисплее
|
||
<footnote id='fn-menc-feat-dvd-mpeg4-codec-playback'><para>
|
||
Один и тот же результат кодирования может не выглядеть таким же
|
||
на чьём-либо другом мониторе или при воспроизведении с помощью
|
||
другого декодера, так что проверяйте Ваши результаты кодирования
|
||
на жизнеспособность, воспроизводя их в разных начальных условиях.
|
||
</para></footnote>!
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>
|
||
Пожалуйста, обратитесь к разделу
|
||
<link linkend="menc-feat-selecting-codec">выбор кодеков и форматов контейнера</link>
|
||
для получения списка поддерживаемых кодеков.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-audio">
|
||
<title>Аудио</title>
|
||
|
||
<para>
|
||
Аудио — это гораздо более простая проблема: если Вы
|
||
беспокоитесь о качестве, просто оставьте всё как есть.
|
||
Даже потоки AC3 5.1 не более чем 448 Кбит/с и они стоят каждого
|
||
бита. Вы можете соблазниться перекодированием аудио в
|
||
высококачественный Vorbis (он же ogg формат), но лишь то, что
|
||
у Вас сегодня нет A/V приёмника для пропускания AC3, не означает,
|
||
что у Вас не будет его завтра. Для жизнеспособности Ваших DVD
|
||
рипов в будущем, сохраняйте поток AC3.
|
||
Вы можете сохранить поток AC3, копируя его непосредственно в
|
||
видеопоток <link linkend="menc-feat-mpeg4">в процессе кодирования</link>.
|
||
Вы также можете извлечь AC3 поток с целью мультиплексирования его
|
||
в контейнеры наподобие NUT или Matroska (Матрёшка).
|
||
<screen>
|
||
mplayer <replaceable>файл_источника.vob</replaceable> -aid 129 -dumpaudio -dumpfile <replaceable>звук.ac3</replaceable></screen>
|
||
сохранит в файл <replaceable>звук.ac3</replaceable> аудиодорожку
|
||
с номером 129 из файла
|
||
<replaceable>файл_источника.vob</replaceable> (Обратите внимание:
|
||
DVD VOB файлы обычно импользуют нумерацию аудио, отличную от
|
||
стандартной, что означает, что аудиодорожка VOB 129 — это вторая
|
||
аудиодорожка файла).
|
||
</para>
|
||
|
||
<para>
|
||
Но иногда у Вас действительно нет иного выбора, чем далее сжимать
|
||
звук для того, чтоб больше битов могло быть потрачено на видео.
|
||
Большинство людей предпочитают сжимать звук с помощью MP3 или
|
||
Vorbis аудиокодеков.
|
||
Последний является очень эффективным, но MP3 лучше поддерживается
|
||
аппаратными плеерами, хотя эта тенденция меняется.
|
||
</para>
|
||
|
||
<para>
|
||
<emphasis>Не</emphasis> используйте <option>-nosound</option> при
|
||
кодировании файла с аудио, даже если Вы будете позже кодировать и
|
||
мультеплексировать аудио отдельно.
|
||
Хотя это может работать в идеальных случаях, использование
|
||
<option>-nosound</option> обычно скрывает ряд проблем в Ваших
|
||
настройках кодирования в командной строке.
|
||
Другими словами, наличие звуковой дорожки в процессе кодирования
|
||
гарантирует Вам, что в случае отсутствия сообщений, подобных
|
||
<quote>Слишком много аудиопакетов в буфере</quote>, у Вас будет
|
||
получена правильная синхронизация.
|
||
</para>
|
||
|
||
<para>
|
||
Вам необходим <application>MEncoder</application> для обработки
|
||
звука.
|
||
Например, Вы можете копировать исходную звуковую дорожку в
|
||
процессе кодирования с помощью <option>-oac copy</option> или
|
||
преобразовать её в "лёгкий" 4 кГц моно WAV PCM с помощью
|
||
<option>-oac pcm -channels 1 -srate 4000</option>.
|
||
Иначе, в ряде случаев, будет создаваться видео файл,
|
||
десинхронизированный с аудио.
|
||
Такие случаи происходят, когда число кадров видео исходного файла
|
||
не совпадает с полной длиной кадров аудио, или когда были
|
||
разрывы/сшивания потока, где появились пропущенные или излишние
|
||
аудиокадры.
|
||
Правильным решением подобных проблем является вставка тишины или
|
||
усечение аудио в таких точках.
|
||
Однако, <application>MPlayer</application> не может это сделать
|
||
и если Вы демультиплексируете AC3 аудио и кодируете его отдельным
|
||
приложением (или создаёте дамп в PCM с помощью
|
||
<application>MPlayer</application>), сшивания останутся
|
||
нескорректированными и единственный испособ их исправить —
|
||
пропускать/дублировать видеокадры в местах сшивки.
|
||
Пока <application>MEncoder</application> видит аудио при
|
||
кодировании видео, он может выполнять этот пропуск/дублирование
|
||
(что обычно не вызывыет проблем, т.к. происходит при полностью
|
||
чёрных кадрах или при смене сцен), но если
|
||
<application>MEncoder</application> не доступно аудио, он просто
|
||
будет обрабатывать все кадры "как есть" и они не будут совпадать
|
||
с окончательным аудиопотоком, когда Вы, например, объедините
|
||
аудио и видео дорожки в Matroska файл.
|
||
</para>
|
||
|
||
<para>
|
||
Прежде всего, Вам необходимо преобразовать DVD звук в WAV файл,
|
||
который может использоваться аудиокодеком в качестве входных
|
||
данных. Например:
|
||
<screen>
|
||
mplayer <replaceable>исходный_файл.vob</replaceable> -ao pcm:file=<replaceable>звук.wav</replaceable>
|
||
-vc dummy -aid 1 -vo null
|
||
</screen>
|
||
сохранит вторую аудиодорожку из файла
|
||
<replaceable>исходный_файл.vob</replaceable> в файл
|
||
<replaceable>звук.wav</replaceable>.
|
||
Возможно, Вы захотите нормализировать звук перед кодированием,
|
||
поскольку аудиодорожки DVD обычно записываются с маленькой
|
||
громкостью.
|
||
Вы можете использовать, например, утилиту <application>normalize</application>,
|
||
доступную в большинстве дистрибутивов.
|
||
Если вы пользуетесь Window$, утилита <application>BeSweet</application>
|
||
делает то же самое.
|
||
Вы можете сжать в Vorbis или MP3. Например:
|
||
<screen>oggenc -q1 <replaceable>звук.wav</replaceable></screen>
|
||
кодирует <replaceable>звук.wav</replaceable> с качеством 1,
|
||
что примерно эквивалентно 80 Кб/с и является минимальным качеством,
|
||
при котором Вам нужно кодировать, если Вы заботитесь о качестве.
|
||
Пожалуйста, обратите внимание, что <application>MEncoder</application>
|
||
на данный момент не поддерживает мультиплексирование аудиопотоков
|
||
Vorbis в выходной файл, поскольку он поддерживает только AVI и
|
||
MPEG контейнеры для выходных файлов, использование каждого из
|
||
которых может привести к проблемам A/V синхронизации с
|
||
некоторыми плеерами, в случае когда AVI файл содержит VBR
|
||
аудиопотоки наподобие Vorbis.
|
||
Не беспокойтесь, в данном документе будет рассказано как Вы
|
||
можете это сделать с помощью сторонних программ.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-muxing">
|
||
<title>Мультиплексирование</title>
|
||
|
||
<para>
|
||
Теперь, после того как Вы кодировали видео, скорее всего, Вы
|
||
захотите мультиплексировать его с одним или несколькими
|
||
аудиопотоками в такие видео контейнеры как AVI, MPEG,
|
||
Matroska или NUT.
|
||
На данный момент встроенная поддержка вывода аудио и видео в
|
||
<application>MEncoder</application> есть только для форматов
|
||
контейнеров MPEG и AVI.
|
||
Например:
|
||
<screen>
|
||
mencoder -oac copy -ovc copy -o <replaceable>выходной_фильм.avi</replaceable> \
|
||
-audiofile <replaceable>исходный_звук.mp2</replaceable> <replaceable>исходное_видео.avi</replaceable>
|
||
</screen>
|
||
Это объединит видеофайл <replaceable>исходное_видео.avi</replaceable>
|
||
и аудиофайл <replaceable>исходный_звук.mp2</replaceable>
|
||
в AVI файл <replaceable>выходной_фильм.avi</replaceable>.
|
||
Эта команда работает с MPEG-1 слой I, II и III (более
|
||
известный как MP3) аудио, WAV, а также с некоторыми иными
|
||
форматами аудио.
|
||
</para>
|
||
|
||
<para>
|
||
<application>MEncoder</application>
|
||
обладает экспериментальной поддержкой
|
||
<systemitem class="library">libavformat</systemitem> —
|
||
библиотеки из проекта FFmpeg, поддерживающей мультиплексирование
|
||
и демультиплексирование множества контейнеров.
|
||
Например:
|
||
<screen>
|
||
mencoder -oac copy -ovc copy -o <replaceable>выходной_фильм.asf</replaceable> \
|
||
-audiofile <replaceable>исходный_звук.mp2</replaceable> <replaceable>исходное_видео.avi</replaceable> \
|
||
-of lavf -lavfopts format=asf
|
||
</screen>
|
||
Это сделает то же самое, что и предыдущий пример, но выходным
|
||
контейнером будет ASF.
|
||
Пожалуйста, обратите внимание, что эта поддержка весьма
|
||
экспериментальна (но становится лучше c каждым днём), и будет
|
||
работать только в случае компиляции <application>MPlayer</application>
|
||
с включенной поддержкой
|
||
<systemitem class="library">libavformat</systemitem> (что означает,
|
||
что в большинстве случаев бинарная версия из пакетов не будет
|
||
работать).
|
||
</para>
|
||
|
||
|
||
<sect3 id="menc-feat-dvd-mpeg4-muxing-filter-issues">
|
||
<title>Улучшение мультиплексирования и надёжности A/V синхронизации</title>
|
||
|
||
<para>
|
||
Вы можете столкнуться с некоторыми серьёзными проблемами A/V
|
||
синхронизации при попытке мультиплексирования вашего видео
|
||
с некоторыми аудиодорожками, где, как бы Вы не подбирали задержку
|
||
аудио, никогда не получается правильная синхронизация.
|
||
Это может происходить при использовании некоторых видеофильтров,
|
||
пропускающих или дублирующих некоторые кадры, например фильтров
|
||
обратного телесина.
|
||
Настоятельно рекомендуется добавлять видеофильтр
|
||
<option>harddup</option> в конце цепочки фильтров для избежания
|
||
подобных проблем.
|
||
</para>
|
||
|
||
<para>
|
||
Без опции <option>harddup</option>, в случае когда
|
||
<application>MEncoder</application> хочет дублировать кадр, он
|
||
полагается на то, что мультиплексор расположит отметку в
|
||
контейнере таким образом, что последний кадр будет повторен для
|
||
достижения синхронизации без реальной записи кадра.
|
||
С опцией <option>harddup</option>, <application>MEncoder</application>
|
||
вместо этого просто ещё раз поместит последний кадр в цепочку
|
||
фильтров.
|
||
Это означает, что кодер получит <emphasis>точно</emphasis>
|
||
такой же кадр дважды и сожмёт его.
|
||
Это приведёт у несколько большему файлу, но избавит от проблем
|
||
при демультиплексировании или ремультиплексировании с другими
|
||
форматами контейнеров.
|
||
</para>
|
||
|
||
<para>
|
||
Также у Вас может не быть иного выбора, как использовать
|
||
<option>harddup</option> с форматами контейнеров, которые
|
||
не слишком плотно связаны с
|
||
<application>MEncoder</application>, например, с форматами,
|
||
поддерживаемыми с помощью
|
||
<systemitem class="library">libavformat</systemitem>,
|
||
которые могут не поддерживать дублирование кадров на уровне
|
||
контейнера.
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-dvd-mpeg4-muxing-avi-limitations">
|
||
<title>Ограничения контейнера AVI</title>
|
||
|
||
<para>
|
||
Хотя это самый широко распостранённый формат контейнера после
|
||
MPEG-1, он также обладает некоторыми существенными недостатками.
|
||
Пожалуй, они наиболее очевидны в его избыточности.
|
||
Для каждой цепочки AVI файла теряется 24 байта на заголовки и
|
||
индекс.
|
||
Это приводит к чуть более 5 МБ/час или 1.0-2.5% избыточности
|
||
для 700 МБ фильма. Это не кажется большим, но может означать
|
||
разницу между возможностью использования 700 кбит/сек или
|
||
714 кбит/сек в случаях, когда каждый бит на счету.
|
||
</para>
|
||
|
||
<para>
|
||
В дополнение к малой эффективности, AVI также обладает следующими
|
||
серьёзными ограничениями:
|
||
</para>
|
||
|
||
<orderedlist>
|
||
<listitem><para>
|
||
Может быть сохранено только содержимое с фиксированной частотой
|
||
кадров. В частности, это особенно ограничивает, когда Ваш
|
||
исходный материал смешанного содержимого: например, является
|
||
смесью NTSC видео и киноматериала.
|
||
В действительности, есть хаки, позволяющие сохранять содержимое
|
||
с переменным fps в AVI, но они увеличивают (и без того большую)
|
||
избыточность впятеро или более того и поэтому непрактичны.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Аудио в AVI файлах должно быть или с постоянным битпотоком (CBR)
|
||
или с постоянным размером кадра (т.е. все кадры декодируются
|
||
в одно и то же число выборок).
|
||
К сожалению, самый эффективный кодек, Vorbis, не удовлетворяет
|
||
ни одному из данных требований.
|
||
Поэтому, если Вы планируете сохранять Ваш фильм в AVI, Вы должны
|
||
использовать менее эффективный кодек, такой как MP3 или AC3.
|
||
</para></listitem>
|
||
</orderedlist>
|
||
|
||
<para>
|
||
Сказав всё это, отметим, что <application>MEncoder</application>
|
||
на данный момент не поддерживает вывод с переменным fps или
|
||
Vorbis кодирование.
|
||
Поэтому Вы можете не рассматривать всё это как ограничения, если
|
||
<application>MEncoder</application> — это единственный
|
||
инструмент, который Вы используете для кодирования.
|
||
Однако, возможно использовать <application>MEncoder</application>
|
||
только для кодирования видео и затем использовать внешние
|
||
утилиты для кодирования аудио и мультиплексирования его в
|
||
контейнер другого формата.
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-dvd-mpeg4-muxing-matroska">
|
||
<title>Мультиплексирование в контейнер Matroska (Матрёшка)</title>
|
||
|
||
<para>
|
||
Matroska — это свободный, открытый стандарт формата
|
||
контейнера, нацеленный на предоставление большого количества
|
||
продвинутых возможностей, которые старые контейнеры (наподобие
|
||
AVI) не поддерживают.
|
||
Например, Matroska поддерживает аудиосодержимое с переменным
|
||
битпотоком (VBR), переменные частоты кадров (VFR), разделы,
|
||
файловые вложения, код обнаружения ошибок (EDC) и современные
|
||
A/V кодеки, такие как "Продвинутое Аудио Кодирование" ("Advanced
|
||
Audio Coding", AAC), "Vorbis" или "MPEG-4 AVC" (H.264), также
|
||
не поддерживаемые AVI.
|
||
</para>
|
||
|
||
<para>
|
||
Утилиты, необходимые для создания Matroska файлов, сообща
|
||
называются <application>mkvtoolnix</application>, и доступны
|
||
для большиства Unix платформ, так же как и для Window$.
|
||
Поскольку Matroska — открытый формат, Вы можете найти
|
||
иные утилиты, которые лучше Вам подходят, но поскольку
|
||
<application>mkvtoolnix</application> — наиболее общие
|
||
и поддерживаются самой командой разработчиков Matroska, мы
|
||
будем обсуждать только их использование.
|
||
</para>
|
||
|
||
<para>
|
||
Возможно, самым простым способом начать использовать Matroska
|
||
является использование <application>MMG</application>,
|
||
графической оболочки, поставляемой с
|
||
<application>mkvtoolnix</application>. Следуйте
|
||
<ulink url="http://www.bunkus.org/videotools/mkvtoolnix/doc/mkvmerge-gui.html">руководству к mkvmerge GUI (mmg)</ulink>.
|
||
</para>
|
||
|
||
<para>
|
||
Также Вы можете мультиплексировать аудио и видео файлы используя
|
||
командную строку:
|
||
<screen>
|
||
mkvmerge -o <replaceable>выходной_файл.mkv</replaceable> <replaceable>входное_видео.avi</replaceable> <replaceable>входное_аудио1.mp3</replaceable> <replaceable>входное_аудио2.ac3</replaceable>
|
||
</screen>
|
||
Это объединит видеофайл <replaceable>входное_видео.avi</replaceable>
|
||
и два аудиофайла <replaceable>входное_аудио1.mp3</replaceable>
|
||
и <replaceable>входное_аудио2.ac3</replaceable> в Matroska
|
||
файл <replaceable>выходной_файл.mkv</replaceable>.
|
||
Как было отмечено ранее, Matroska способна реализовать гораздо
|
||
большее, например, множественные аудиодорожки (включая тонкую
|
||
настройку аудио/видео синхронизации), разделы, субтитры,
|
||
разбиение и т.д..
|
||
Пожалуйста, обратитесь к документации на эти приложения для
|
||
деталей.
|
||
</para>
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="menc-feat-telecine">
|
||
<title>How to deal with telecine and interlacing within NTSC DVDs</title>
|
||
|
||
<sect2 id="menc-feat-telecine-intro">
|
||
<title>Introduction</title>
|
||
|
||
<formalpara>
|
||
<title>What is telecine?</title>
|
||
<para>
|
||
If you do not understand much of what is written in this document,
|
||
read the
|
||
<ulink url="http://en.wikipedia.org/wiki/Telecine">Wikipedia entry on telecine</ulink>.
|
||
It is an understandable and reasonably comprehensive
|
||
description of what telecine is.
|
||
</para></formalpara>
|
||
|
||
<formalpara>
|
||
<title>A note about the numbers.</title>
|
||
<para>
|
||
Many documents, including the guide linked above, refer to the fields
|
||
per second value of NTSC video as 59.94 and the corresponding frames
|
||
per second values as 29.97 (for telecined and interlaced) and 23.976
|
||
(for progressive). For simplicity, some documents even round these
|
||
numbers to 60, 30, and 24.
|
||
</para></formalpara>
|
||
|
||
<para>
|
||
Strictly speaking, all those numbers are approximations. Black and
|
||
white NTSC video was exactly 60 fields per second, but 60000/1001
|
||
was later chosen to accomodate color data while remaining compatible
|
||
with contemporary black and white televisions. Digital NTSC video
|
||
(such as on a DVD) is also 60000/1001 fields per second. From this,
|
||
interlaced and telecined video are derived to be 30000/1001 frames
|
||
per second; progressive video is 24000/1001 frames per second.
|
||
</para>
|
||
|
||
<para>
|
||
Older versions of the <application>MEncoder</application> documentation
|
||
and many archived mailing list posts refer to 59.94, 29.97, and 23.976.
|
||
All <application>MEncoder</application> documentation has been updated
|
||
to use the fractional values, and you should use them too.
|
||
</para>
|
||
|
||
<para>
|
||
<option>-ofps 23.976</option> is incorrect.
|
||
<option>-ofps 24000/1001</option> should be used instead.
|
||
</para>
|
||
|
||
<formalpara>
|
||
<title>How telecine is used.</title>
|
||
<para>
|
||
All video intended to be displayed on an NTSC
|
||
television set must be 60000/1001 fields per second. Made-for-TV movies 4
|
||
and shows are often filmed directly at 60000/1001 fields per second, but
|
||
the majority of cinema is filmed at 24 or 24000/1001 frames per
|
||
second. When cinematic movie DVDs are mastered, the video is then
|
||
converted for television using a process called telecine.
|
||
</para></formalpara>
|
||
|
||
<para>
|
||
On a DVD, the video is never actually stored as 60000/1001 fields per
|
||
second. For video that was originally 60000/1001, each pair of fields is
|
||
combined to form a frame, resulting in 30000/1001 frames per
|
||
second. Hardware DVD players then read a flag embedded in the video
|
||
stream to determine whether the odd- or even-numbered lines should
|
||
form the first field.
|
||
</para>
|
||
|
||
<para>
|
||
Usually, 24000/1001 frames per second content stays as it is when
|
||
encoded for a DVD, and the DVD player must perform telecining
|
||
on-the-fly. Sometimes, however, the video is telecined
|
||
<emphasis>before</emphasis> being stored on the DVD; even though it
|
||
was originally 24000/1001 frames per second, it becomes 60000/1001 fields per
|
||
second. When it is stored on the DVD, pairs of fields are combined to form
|
||
30000/1001 frames per second.
|
||
</para>
|
||
|
||
<para>
|
||
When looking at individual frames formed from 60000/1001 fields per
|
||
second video, telecined or otherwise, interlacing is clearly visible
|
||
wherever there is any motion, because one field (say, the
|
||
even-numbered lines) represents a moment in time 1/(60000/1001)
|
||
seconds later than the other. Playing interlaced video on a computer
|
||
looks ugly both because the monitor is higher resolution and because
|
||
the video is shown frame-after-frame instead of field-after-field.
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<title>Notes:</title>
|
||
<listitem><para>
|
||
This section only applies to NTSC DVDs, and not PAL.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
The example <application>MEncoder</application> lines throughout the
|
||
document are <emphasis role="bold">not</emphasis> intended for
|
||
actual use. They are simply the bare minimum required to encode the
|
||
pertaining video category. How to make good DVD rips or fine-tune
|
||
<systemitem class="library">libavcodec</systemitem> for maximal
|
||
quality is not within the scope of this document.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
There are a couple footnotes specific to this guide, linked like this:
|
||
<link linkend="menc-feat-telecine-footnotes">[1]</link>
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-telecine-ident">
|
||
<title>How to tell what type of video you have</title>
|
||
|
||
<sect3 id="menc-feat-telecine-ident-progressive">
|
||
<title>Progressive</title>
|
||
|
||
<para>
|
||
Progressive video was originally filmed at 24000/1001 fps, and stored
|
||
on the DVD without alteration.
|
||
</para>
|
||
|
||
<para>
|
||
When you play a progressive DVD in <application>MPlayer</application>,
|
||
<application>MPlayer</application> will print the following line as
|
||
soon as the movie begins to play:
|
||
<screen>
|
||
demux_mpg: 24000/1001 fps progressive NTSC content detected, switching framerate.
|
||
</screen>
|
||
From this point forward, demux_mpg should never say it finds
|
||
"30000/1001 fps NTSC content."
|
||
</para>
|
||
|
||
<para>
|
||
When you watch progressive video, you should never see any
|
||
interlacing. Beware, however, because sometimes there is a tiny bit
|
||
of telecine mixed in where you would not expect. I have encountered TV
|
||
show DVDs that have one second of telecine at every scene change, or
|
||
at seemingly random places. I once watched a DVD that had a
|
||
progressive first half, and the second half was telecined. If you
|
||
want to be <emphasis>really</emphasis> thorough, you can scan the
|
||
entire movie:
|
||
<screen>mplayer dvd://1 -nosound -vo null -benchmark</screen>
|
||
Using <option>-benchmark</option> makes
|
||
<application>MPlayer</application> play the movie as quickly as it
|
||
possibly can; still, depending on your hardware, it can take a
|
||
while. Every time demux_mpg reports a framerate change, the line
|
||
immediately above will show you the time at which the change
|
||
occurred.
|
||
</para>
|
||
|
||
<para>
|
||
Sometimes progressive video on DVDs is referred to as
|
||
"soft-telecine" because it is intended to
|
||
be telecined by the DVD player.
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-ident-telecined">
|
||
<title>Telecined</title>
|
||
|
||
<para>
|
||
Telecined video was originally filmed at 24000/1001, but was telecined
|
||
<emphasis>before</emphasis> it was written to the DVD.
|
||
</para>
|
||
|
||
<para>
|
||
<application>MPlayer</application> does not (ever) report any
|
||
framerate changes when it plays telecined video.
|
||
</para>
|
||
|
||
<para>
|
||
Watching a telecined video, you will see interlacing artifacts that
|
||
seem to "blink": they repeatedly appear and disappear.
|
||
You can look closely at this by
|
||
<orderedlist>
|
||
<listitem><screen>mplayer dvd://1</screen></listitem>
|
||
<listitem><para>
|
||
Seek to a part with motion.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Use the <keycap>.</keycap> key to step forward one frame at a time.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Look at the pattern of interlaced-looking and progressive-looking
|
||
frames. If the pattern you see is PPPII,PPPII,PPPII,... then the
|
||
video is telecined. If you see some other pattern, then the video
|
||
may have been telecined using some non-standard method;
|
||
<application>MEncoder</application> cannot losslessly convert
|
||
non-standard telecine to progressive. If you do not see any
|
||
pattern at all, then it is most likely interlaced.
|
||
</para></listitem>
|
||
</orderedlist>
|
||
</para>
|
||
|
||
<para>
|
||
Sometimes telecined video on DVDs is referred to as
|
||
"hard-telecine". Since hard-telecine is already 60000/1001 fields
|
||
per second, the DVD player plays the video without any manipulation.
|
||
</para>
|
||
|
||
<para>
|
||
Another way to tell if your source is telecined or not is to play
|
||
the source with the <option>-vf pullup</option> and <option>-v</option>
|
||
command line options to see how <option>pullup</option> matches frames.
|
||
If the source is telecined, you should see on the console a 3:2 pattern
|
||
with <systemitem>0+.1.+2</systemitem> and <systemitem>0++1</systemitem>
|
||
alternating.
|
||
This technique has the advantage that you do not need to watch the
|
||
source to identify it, which could be useful if you wish to automate
|
||
the encoding procedure, or to carry out said procedure remotely via
|
||
a slow connection.
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-ident-interlaced">
|
||
<title>Interlaced</title>
|
||
|
||
<para>
|
||
Interlaced video was originally filmed at 60000/1001 fields per second,
|
||
and stored on the DVD as 30000/1001 frames per second. The interlacing effect
|
||
(often called "combing") is a result of combining pairs of
|
||
fields into frames. Each field is supposed to be 1/(60000/1001) seconds apart,
|
||
and when they are displayed simultaneously the difference is apparent.
|
||
</para>
|
||
|
||
<para>
|
||
As with telecined video, <application>MPlayer</application> should
|
||
not ever report any framerate changes when playing interlaced content.
|
||
</para>
|
||
|
||
<para>
|
||
When you view an interlaced video closely by frame-stepping with the
|
||
<keycap>.</keycap> key, you will see that every single frame is interlaced.
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-ident-mixedpt">
|
||
<title>Mixed progressive and telecine</title>
|
||
|
||
<para>
|
||
All of a "mixed progressive and telecine" video was originally
|
||
24000/1001 frames per second, but some parts of it ended up being telecined.
|
||
</para>
|
||
|
||
<para>
|
||
When <application>MPlayer</application> plays this category, it will
|
||
(often repeatedly) switch back and forth between "30000/1001 fps NTSC"
|
||
and "24000/1001 fps progressive NTSC". Watch the bottom of
|
||
<application>MPlayer</application>'s output to see these messages.
|
||
</para>
|
||
|
||
<para>
|
||
You should check the "30000/1001 fps NTSC" sections to make sure
|
||
they are actually telecine, and not just interlaced.
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-ident-mixedpi">
|
||
<title>Mixed progressive and interlaced</title>
|
||
|
||
<para>
|
||
In "mixed progressive and interlaced" content, progressive
|
||
and interlaced video have been spliced together.
|
||
</para>
|
||
|
||
<para>
|
||
This category looks just like "mixed progressive and telecine",
|
||
until you examine the 30000/1001 fps sections and see that they do not have the
|
||
telecine pattern.
|
||
</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-telecine-encode">
|
||
<title>How to encode each category</title>
|
||
|
||
<para>
|
||
As I mentioned in the beginning, example <application>MEncoder</application>
|
||
lines below are <emphasis role="bold">not</emphasis> meant to actually be used;
|
||
they only demonstrate the minimum parameters to properly encode each category.
|
||
</para>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-encode-progressive">
|
||
<title>Progressive</title>
|
||
|
||
<para>
|
||
Progressive video requires no special filtering to encode. The only
|
||
parameter you need to be sure to use is
|
||
<option>-ofps 24000/1001</option>. Otherwise, <application>MEncoder</application>
|
||
will try to encode at 30000/1001 fps and will duplicate frames.
|
||
</para>
|
||
|
||
<para>
|
||
<screen>mencoder dvd://1 -oac copy -ovc lavc -ofps 24000/1001</screen>
|
||
</para>
|
||
|
||
<para>
|
||
It is often the case, however, that a video that looks progressive
|
||
actually has very short parts of telecine mixed in. Unless you are
|
||
sure, it is safest to treat the video as
|
||
<link linkend="menc-feat-telecine-encode-mixedpt">mixed progressive and telecine</link>.
|
||
The performance loss is small
|
||
<link linkend="menc-feat-telecine-footnotes">[3]</link>.
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-encode-telecined">
|
||
<title>Telecined</title>
|
||
|
||
<para>
|
||
Telecine can be reversed to retrieve the original 24000/1001 content,
|
||
using a process called inverse-telecine.
|
||
<application>MPlayer</application> contains several filters to
|
||
accomplish this; the best filter, <option>pullup</option>, is described
|
||
in the <link linkend="menc-feat-telecine-encode-mixedpt">mixed
|
||
progressive and telecine</link> section.
|
||
</para>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-encode-interlaced">
|
||
<title>Interlaced</title>
|
||
|
||
<para>
|
||
For most practical cases it is not possible to retrieve a complete
|
||
progressive video from interlaced content. The only way to do so
|
||
without losing half of the vertical resolution is to double the
|
||
framerate and try to "guess" what ought to make up the
|
||
corresponding lines for each field (this has drawbacks - see method 3).
|
||
</para>
|
||
|
||
<orderedlist>
|
||
<listitem><para>
|
||
Encode the video in interlaced form. Normally, interlacing wreaks
|
||
havoc with the encoder's ability to compress well, but
|
||
<systemitem class="library">libavcodec</systemitem> has two
|
||
parameters specifically for dealing with storing interlaced video a
|
||
bit better: <option> ildct</option> and <option>ilme</option>. Also,
|
||
using <option>mbd=2</option> is strongly recommended
|
||
<link linkend="menc-feat-telecine-footnotes">[2] </link> because it
|
||
will encode macroblocks as non-interlaced in places where there is
|
||
no motion. Note that <option>-ofps</option> is NOT needed here.
|
||
<screen>mencoder dvd://1 -oac copy -ovc lavc -lavcopts ildct:ilme:mbd=2</screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Use a deinterlacing filter before encoding. There are several of
|
||
these filters available to choose from, each with its own advantages
|
||
and disadvantages. Consult <option>mplayer -pphelp</option> and
|
||
<option>mplayer -vf help</option> to see what is available
|
||
(grep for "deint"), read Michael's Niedermayer
|
||
<ulink url="http://guru.multimedia.cx/deinterlacing-filters/">Deinterlacing filters comparison</ulink>,
|
||
and search the
|
||
<ulink url="http://www.mplayerhq.hu/design7/mailing_lists.html">
|
||
MPlayer mailing lists</ulink> to find many discussions about the
|
||
various filters.
|
||
Again, the framerate is not changing, so no
|
||
<option>-ofps</option>. Also, deinterlacing should be done after
|
||
cropping <link linkend="menc-feat-telecine-footnotes">[1]</link> and
|
||
before scaling.
|
||
<screen>mencoder dvd://1 -oac copy -vf yadif -ovc lavc</screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
Unfortunately, this option is buggy with
|
||
<application>MEncoder</application>; it ought to work well with
|
||
<application>MEncoder G2</application>, but that is not here yet. You
|
||
might experience crahes. Anyway, the purpose of <option> -vf
|
||
tfields</option> is to create a full frame out of each field, which
|
||
makes the framerate 60000/1001. The advantage of this approach is that no
|
||
data is ever lost; however, since each frame comes from only one
|
||
field, the missing lines have to be interpolated somehow. There are
|
||
no very good methods of generating the missing data, and so the
|
||
result will look a bit similar to when using some deinterlacing
|
||
filters. Generating the missing lines creates other issues, as well,
|
||
simply because the amount of data doubles. So, higher encoding
|
||
bitrates are required to maintain quality, and more CPU power is
|
||
used for both encoding and decoding. tfields has several different
|
||
options for how to create the missing lines of each frame. If you
|
||
use this method, then Reference the manual, and chose whichever
|
||
option looks best for your material. Note that when using
|
||
<option>tfields</option> you
|
||
<emphasis role="bold">have to</emphasis> specify both
|
||
<option>-fps</option> and <option>-ofps</option> to be twice the
|
||
framerate of your original source.
|
||
<screen>
|
||
mencoder dvd://1 -oac copy -vf tfields=2 -ovc lavc \
|
||
-fps 60000/1001 -ofps 60000/1001<!--
|
||
--></screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
If you plan on downscaling dramatically, you can extract and encode
|
||
only one of the two fields. Of course, you will lose half the vertical
|
||
resolution, but if you plan on downscaling to at most 1/2 of the
|
||
original, the loss will not matter much. The result will be a
|
||
progressive 30000/1001 frames per second file. The procedure is to use
|
||
<option>-vf field</option>, then crop
|
||
<link linkend="menc-feat-telecine-footnotes">[1]</link> and scale
|
||
appropriately. Remember that you will have to adjust the scale to
|
||
compensate for the vertical resolution being halved.
|
||
<screen>mencoder dvd://1 -oac copy -vf field=0 -ovc lavc</screen>
|
||
</para></listitem>
|
||
</orderedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-encode-mixedpt">
|
||
<title>Mixed progressive and telecine</title>
|
||
|
||
<para>
|
||
In order to turn mixed progressive and telecine video into entirely
|
||
progressive video, the telecined parts have to be
|
||
inverse-telecined. There are three ways to accomplish this,
|
||
described below. Note that you should
|
||
<emphasis role="bold">always</emphasis> inverse-telecine before any
|
||
rescaling; unless you really know what you are doing,
|
||
inverse-telecine before cropping, too
|
||
<link linkend="menc-feat-telecine-footnotes">[1]</link>.
|
||
<option>-ofps 24000/1001</option> is needed here because the output video
|
||
will be 24000/1001 frames per second.
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
<option>-vf pullup</option> is designed to inverse-telecine
|
||
telecined material while leaving progressive data alone. In order to
|
||
work properly, <option>pullup</option> <emphasis role="bold">must</emphasis>
|
||
be followed by the <option>softskip</option> filter or
|
||
else <application>MEncoder</application> will crash.
|
||
<option>pullup</option> is, however, the cleanest and most
|
||
accurate method available for encoding both telecine and
|
||
"mixed progressive and telecine".
|
||
<screen>
|
||
mencoder dvd://1 -oac copy -vf pullup,softskip \
|
||
-ovc lavc -ofps 24000/1001<!--
|
||
--></screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
An older method
|
||
is to, rather than inverse-telecine the telecined parts, telecine
|
||
the non-telecined parts and then inverse-telecine the whole
|
||
video. Sound confusing? softpulldown is a filter that goes through
|
||
a video and makes the entire file telecined. If we follow
|
||
softpulldown with either <option>detc</option> or
|
||
<option>ivtc</option>, the final result will be entirely
|
||
progressive. <option>-ofps 24000/1001</option> is needed.
|
||
<screen>
|
||
mencoder dvd://1 -oac copy -vf softpulldown,ivtc=1 -ovc lavc -ofps 24000/1001
|
||
</screen>
|
||
</para></listitem>
|
||
<listitem><para>
|
||
I have not used <option>-vf filmdint</option> myself, but here is what
|
||
D Richard Felker III has to say:
|
||
|
||
<blockquote><para>It is OK, but IMO it tries to deinterlace rather
|
||
than doing inverse telecine too often (much like settop DVD
|
||
players & progressive TVs) which gives ugly flickering and
|
||
other artifacts. If you are going to use it, you at least need to
|
||
spend some time tuning the options and watching the output first
|
||
to make sure it is not messing up.
|
||
</para></blockquote>
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
|
||
|
||
<sect3 id="menc-feat-telecine-encode-mixedpi">
|
||
<title>Mixed progressive and interlaced</title>
|
||
|
||
<para>
|
||
There are two options for dealing with this category, each of
|
||
which is a compromise. You should decide based on the
|
||
duration/location of each type.
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>
|
||
Treat it as progressive. The interlaced parts will look interlaced,
|
||
and some of the interlaced fields will have to be dropped, resulting
|
||
in a bit of uneven jumpiness. You can use a postprocessing filter if
|
||
you want to, but it may slightly degrade the progressive parts.
|
||
</para>
|
||
|
||
<para>
|
||
This option should definitely not be used if you want to eventually
|
||
display the video on an interlaced device (with a TV card, for
|
||
example). If you have interlaced frames in a 24000/1001 frames per
|
||
second video, they will be telecined along with the progressive
|
||
frames. Half of the interlaced "frames" will be displayed for three
|
||
fields' duration (3/(60000/1001) seconds), resulting in a flicking
|
||
"jump back in time" effect that looks quite bad. If you
|
||
even attempt this, you <emphasis role="bold">must</emphasis> use a
|
||
deinterlacing filter like <option>lb</option> or
|
||
<option>l5</option>.
|
||
</para>
|
||
|
||
<para>
|
||
It may also be a bad idea for progressive display, too. It will drop
|
||
pairs of consecutive interlaced fields, resulting in a discontinuity
|
||
that can be more visible than with the second method, which shows
|
||
some progressive frames twice. 30000/1001 frames per second interlaced
|
||
video is already a bit choppy because it really should be shown at
|
||
60000/1001 fields per second, so the duplicate frames do not stand out as
|
||
much.
|
||
</para>
|
||
|
||
<para>
|
||
Either way, it is best to consider your content and how you intend to
|
||
display it. If your video is 90% progressive and you never intend to
|
||
show it on a TV, you should favor a progressive approach. If it is
|
||
only half progressive, you probably want to encode it as if it is all
|
||
interlaced.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><para>
|
||
Treat it as interlaced. Some frames of the progressive parts will
|
||
need to be duplicated, resulting in uneven jumpiness. Again,
|
||
deinterlacing filters may slightly degrade the progressive parts.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-telecine-footnotes">
|
||
<title>Footnotes</title>
|
||
|
||
<orderedlist>
|
||
<listitem>
|
||
<formalpara>
|
||
<title>About cropping:</title>
|
||
<para>
|
||
Video data on DVDs are stored in a format called YUV 4:2:0. In YUV
|
||
video, luma ("brightness") and chroma ("color")
|
||
are stored separately. Because the human eye is somewhat less
|
||
sensitive to color than it is to brightness, in a YUV 4:2:0 picture
|
||
there is only one chroma pixel for every four luma pixels. In a
|
||
progressive picture, each square of four luma pixels (two on each
|
||
side) has one common chroma pixel. You must crop progressive YUV
|
||
4:2:0 to even resolutions, and use even offsets. For example,
|
||
<option>crop=716:380:2:26</option> is OK but
|
||
<option>crop=716:380:3:26 </option> is not.
|
||
</para>
|
||
</formalpara>
|
||
|
||
<para>
|
||
When you are dealing with interlaced YUV 4:2:0, the situation is a
|
||
bit more complicated. Instead of every four luma pixels in the
|
||
<emphasis>frame</emphasis> sharing a chroma pixel, every four luma
|
||
pixels in each <emphasis> field</emphasis> share a chroma
|
||
pixel. When fields are interlaced to form a frame, each scanline is
|
||
one pixel high. Now, instead of all four luma pixels being in a
|
||
square, there are two pixels side-by-side, and the other two pixels
|
||
are side-by-side two scanlines down. The two luma pixels in the
|
||
intermediate scanline are from the other field, and so share a
|
||
different chroma pixel with two luma pixels two scanlines away. All
|
||
this confusion makes it necessary to have vertical crop dimensions
|
||
and offsets be multiples of four. Horizontal can stay even.
|
||
</para>
|
||
|
||
<para>
|
||
For telecined video, I recommend that cropping take place after
|
||
inverse telecining. Once the video is progressive you only need to
|
||
crop by even numbers. If you really want to gain the slight speedup
|
||
that cropping first may offer, you must crop vertically by multiples
|
||
of four or else the inverse-telecine filter will not have proper data.
|
||
</para>
|
||
|
||
<para>
|
||
For interlaced (not telecined) video, you must always crop
|
||
vertically by multiples of four unless you use <option>-vf
|
||
field</option> before cropping.
|
||
</para>
|
||
</listitem>
|
||
|
||
<listitem><formalpara>
|
||
<title>About encoding parameters and quality:</title>
|
||
<para>
|
||
Just because I recommend <option>mbd=2</option> here does not mean it
|
||
should not be used elsewhere. Along with <option>trell</option>,
|
||
<option>mbd=2</option> is one of the two
|
||
<systemitem class="library">libavcodec</systemitem> options that
|
||
increases quality the most, and you should always use at least those
|
||
two unless the drop in encoding speed is prohibitive (e.g. realtime
|
||
encoding). There are many other options to
|
||
<systemitem class="library">libavcodec</systemitem> that increase
|
||
encoding quality (and decrease encoding speed) but that is beyond
|
||
the scope of this document.
|
||
</para>
|
||
</formalpara></listitem>
|
||
|
||
<listitem><formalpara>
|
||
<title>About the performance of pullup:</title>
|
||
<para>
|
||
It is safe to use <option>pullup</option> (along with <option>softskip
|
||
</option>) on progressive video, and is usually a good idea unless
|
||
the source has been definitively verified to be entirely progressive.
|
||
The performace loss is small for most cases. On a bare-minimum encode,
|
||
<option>pullup</option> causes <application>MEncoder</application> to
|
||
be 50% slower. Adding sound processing and advanced <option>lavcopts
|
||
</option> overshadows that difference, bringing the performance
|
||
decrease of using <option>pullup</option> down to 2%.
|
||
</para>
|
||
</formalpara></listitem>
|
||
</orderedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="menc-feat-enc-libavcodec">
|
||
<title>Кодирование семейством кодеков <systemitem class="library">libavcodec</systemitem>
|
||
</title>
|
||
|
||
<para>
|
||
<link linkend="ffmpeg"><systemitem class="library">libavcodec</systemitem></link>
|
||
предоставляет возможность простого кодирования в множество интересных видео и
|
||
аудио форматов. Вы можете кодировать следующими кодеками (более или менее
|
||
свежий список):
|
||
</para>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-enc-libavcodec-video-codecs">
|
||
<title>Видео кодеки <systemitem class="library">libavcodec</systemitem></title>
|
||
|
||
<para>
|
||
<informaltable frame="all">
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row><entry>Название видео кодека</entry><entry>Описание</entry></row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>mjpeg</entry>
|
||
<entry>Motion JPEG</entry>
|
||
</row>
|
||
<row>
|
||
<entry>ljpeg</entry>
|
||
<entry>JPEG без потери качества</entry>
|
||
</row>
|
||
<row>
|
||
<entry>h261</entry>
|
||
<entry>H.261</entry>
|
||
</row>
|
||
<row>
|
||
<entry>h263</entry>
|
||
<entry>H.263</entry>
|
||
</row>
|
||
<row>
|
||
<entry>h263p</entry>
|
||
<entry>H.263+</entry>
|
||
</row>
|
||
<row>
|
||
<entry>mpeg4</entry>
|
||
<entry>ISO стандарт MPEG-4 (DivX, Xvid совместимый)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>msmpeg4</entry>
|
||
<entry>вариант пре-стандарта MPEG-4 от MS, v3 (он же DivX3)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>msmpeg4v2</entry>
|
||
<entry>вариант пре-стандарта MPEG-4 от MS, v2 (используемый в старых ASF
|
||
файлах)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>wmv1</entry>
|
||
<entry>Windows Media Video, версия 1 (он же WMV7)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>wmv2</entry>
|
||
<entry>Windows Media Video, версия 2 (он же 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 видео</entry>
|
||
</row>
|
||
<row>
|
||
<entry>mpeg2video</entry>
|
||
<entry>MPEG-2 видео</entry>
|
||
</row>
|
||
<row>
|
||
<entry>huffyuv</entry>
|
||
<entry>сжатие без потерь</entry>
|
||
</row>
|
||
<row>
|
||
<entry>asv1</entry>
|
||
<entry>ASUS Видео v1</entry>
|
||
</row>
|
||
<row>
|
||
<entry>asv2</entry>
|
||
<entry>ASUS Видео v2</entry>
|
||
</row>
|
||
<row>
|
||
<entry>ffv1</entry>
|
||
<entry>видео кодек без потерь из FFmpeg</entry>
|
||
</row>
|
||
<row>
|
||
<entry>svq1</entry>
|
||
<entry>Sorenson видео 1</entry>
|
||
</row>
|
||
<row>
|
||
<entry>flv</entry>
|
||
<entry>Sorenson H.263 используемый в Flash Видео</entry>
|
||
</row>
|
||
<row>
|
||
<entry>dvvideo</entry>
|
||
<entry>Sony Digital Video</entry>
|
||
</row>
|
||
<row>
|
||
<entry>snow</entry>
|
||
<entry>экспериментальный кодек FFmpeg, основанный на вейвлетах</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
Первый столбец содержит названия кодеков, которые следует указывать после
|
||
<literal>vcodec</literal> опции, например:
|
||
<option>-lavcopts vcodec=msmpeg4</option>
|
||
</para>
|
||
|
||
<informalexample><para>
|
||
Пример с MJPEG сжатием:
|
||
<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></title>
|
||
<para>
|
||
<informaltable frame="all">
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row><entry>Название аудио кодека</entry><entry>Описание</entry></row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>mp2</entry>
|
||
<entry>MPEG Layer 2</entry>
|
||
</row>
|
||
<row>
|
||
<entry>ac3</entry>
|
||
<entry>AC3, он же Dolby Digital</entry>
|
||
</row>
|
||
<row>
|
||
<entry>adpcm_ima_wav</entry>
|
||
<entry>IMA адаптивный PCM (4 бита на сэмпл, сжатие 4:1)</entry>
|
||
</row>
|
||
<row>
|
||
<entry>sonic</entry>
|
||
<entry>экспериментальный кодек с сжатием с/без потерь</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
Первый столбец содержит названия кодеков, которые следует указывать после
|
||
<literal>acodec</literal> опции, например: <option>-lavcopts acodec=ac3</option>
|
||
</para>
|
||
|
||
<informalexample><para>
|
||
Пример с AC3 сжатием:
|
||
<screen>
|
||
mencoder dvd://2 -o title2.avi -oac lavc -lavcopts acodec=ac3 -ovc copy
|
||
</screen>
|
||
</para></informalexample>
|
||
|
||
<para>
|
||
В отличие от видео кодеков <systemitem class="library">libavcodec</systemitem>,
|
||
ее аудио кодеки не очень разумно используют отданные им биты, в силу
|
||
неудачной реализации некоторой минимальной психоакустической модели (если она
|
||
вообще есть), которая является характерной чертой большинства остальных реализаций кодеков.
|
||
Однако заметьте, что все эти аудио кодеки очень быстры и работают прямо из
|
||
коробки везде, где <application>MEncoder</application> скомпилирован с
|
||
<systemitem class="library">libavcodec</systemitem> (а почти всегда так оно и
|
||
есть), и не зависят от внешних библиотек.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-dvd-mpeg4-lavc-encoding-options">
|
||
<title>Опции кодирования libavcodec</title>
|
||
|
||
<para>
|
||
В идеале, вы, наверное, хотели бы иметь возможность просто сказать кодировщику
|
||
переключиться на "высокое качество" и начать кодирование.
|
||
Это было бы замечательно, но, к сожалению, трудно реализуемо, поскольку
|
||
различные опции кодирования, в зависимости от исходного материала, дают в результате
|
||
различное качество.
|
||
Так происходит потому, что сжатие зависит от визуальных свойств видео.
|
||
Например, аниме и живая съемка имеют сильно отличающиеся свойства и,
|
||
поэтому, требуют разные опции для получения оптимального результата.
|
||
Хорошая новость состоит в том, что некоторые опции, такие как
|
||
<option>mbd=2</option>, <option>trell</option>, и <option>v4mv</option> могут
|
||
быть опущены.
|
||
Детальное описание основных опций кодирования смотрите ниже.
|
||
</para>
|
||
|
||
<itemizedlist>
|
||
<title>Опции для настройки:</title>
|
||
<listitem><para>
|
||
<emphasis role="bold">vmax_b_frames</emphasis>: хороши 1 или 2, в зависимости
|
||
от фильма.
|
||
Заметьте, если хотите, чтобы ваш фильм декодировался DivX5, вы должны
|
||
активировать поддержку закрытых GOP, используя опцию <option>cgop</option>
|
||
<systemitem class="library">libavcodec</systemitem>, но также должны деактивировать
|
||
определение сцен, что не является хорошей идеей, поскольку несколько вредит
|
||
эффективности.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">vb_strategy=1</emphasis>: помогает в высокодинамичных
|
||
сценах.
|
||
Для некоторых видео файлов vmax_b_frames может повредить качеству, но vmax_b_frames=2
|
||
вместе с vb_strategy=1 поможет в этом случае.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">dia</emphasis>: диапазон поиска движения. Большие
|
||
значения лучше и медленнее.
|
||
Отрицательные значения - это совершенно другая шкала.
|
||
Хорошими значениями являются -1 для быстрого кодирования или 2-4 - для
|
||
медленного.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">predia</emphasis>: предпроход поиска движения.
|
||
Не так важен, как dia. Хорошими являются значения от 1 (по-умолчанию) до 4.
|
||
Требует preme=2, чтобы быть действительно полезным.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">cmp, subcmp, precmp</emphasis>: Функция сравнения для
|
||
поиска движения.
|
||
Поэкспериментируйте со значениями 0 (по-умолчанию), 2 (hadamard), 3 (dct), и 6
|
||
(соотношение сигнал-шум).
|
||
0 - самый быстрый и достаточен для precmp.
|
||
В случае cmp и subcmp 2 является хорошим для аниме, а 3 для живой съемки.
|
||
6 может оказаться лучше, а может и нет, но он медленнее.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">last_pred</emphasis>: Количество предсказателей
|
||
движения, берущихся из предыдущего кадра.
|
||
1-3 или около того помогут вам ценой небольшой потери в скорости.
|
||
Большие значения медленны и не дают дополнительного улучшения.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">cbp, mv0</emphasis>: Контролирует выбор макроблоков.
|
||
Незначительное снижение скорости с небольшим приростом в качестве.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">qprd</emphasis>: адаптивное квантование, основанное на
|
||
сложности макроблока.
|
||
Может сделать лучше или хуже в зависимости от видео и других опций.
|
||
Она также может привести к появлению артефактов, если вы не установите vqmax в
|
||
некоторое разумно малое значение
|
||
(хорошо - 6, может быть даже 4); vqmin=1 также может помочь.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">qns</emphasis>: очень медленно, особенно в комбинации с qprd.
|
||
Эта опция укажет кодировщику минимизировать шум от артефактов сжатия вместо
|
||
создания закодированного видео, полностью идентичного исходному.
|
||
Не используйте ее, если только не перепробовали настроить все, что было
|
||
возможно, а результат все таки недостаточно хорош.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">vqcomp</emphasis>: Настраивает управление битпотоком.
|
||
Какие значения являются хорошими зависит от фильма.
|
||
Если хотите, можете без опаски оставить значение по-умолчанию.
|
||
Уменьшение vqcomp отдает больше бит в сцены с низкой сложностью, увеличение
|
||
его передает биты в очень сложные сцены (по-умолчанию: 0.5, диапазон: 0-1.
|
||
рекомендуемый диапазон: 0.5-0.7).
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">vlelim, vcelim</emphasis>: Устанавливает порог
|
||
отбрасывания одиночного коэффициента для яркостной и цветностной плоскостей.
|
||
Они кодируются независимо во всех MPEG-похожих алгоритмах.
|
||
Идея этих опций заключается в использованию некоторой хорошей эвристики для
|
||
определения момента, когда изменения в блоке ниже указанного вами порога, и что его
|
||
стоит кодировать как "блок без изменений".
|
||
Это сохраняет быти и, возможно, ускоряет кодирование.
|
||
vlelim=-4 и vcelim=9 выглядят неплохими для живой съемки, но, скорее всего, не
|
||
помогут для аниме; при кодировании анимации вам, возможно, следует оставить
|
||
эту опцию неизменной.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">qpel</emphasis>: Четверьтпиксельная оценка движения.
|
||
По-умолчанию, MPEG-4 использует полупиксельную точность для оценки движения,
|
||
следовательно, эта опция вносит дополнительные накладные рахсоды, поскольку
|
||
сохраняет больше информации в закодированном файле.
|
||
Улучшение/ухудшение степени сжатия зависит от фильма, но обычно эта опция не
|
||
очень эффективна для аниме.
|
||
qpel всегда вносит значительный вклад в CPU время декодирования (+25% на
|
||
практике).
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">psnr</emphasis>: не влияет на сам процесс кодирования,
|
||
но выводит в файл тип/размер/качество каждого кадра, а также итоговый
|
||
PSNR (Peak Signal to Noise Ratio, пиковое отношения сигнала к шуму) в конце
|
||
прцесса.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
|
||
<itemizedlist>
|
||
<title>Опции, с которыми играть не стоит:</title>
|
||
<listitem><para>
|
||
<emphasis role="bold">vme</emphasis>: Значение по-умолчанию является лучшим.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">lumi_mask, dark_mask</emphasis>: Психовизуальное
|
||
адаптивное квантование.
|
||
Не стоит играть с этими опциями, если заботитесь о качестве.
|
||
Разумные значения могут быть эффективными в вашем случае, но имейте в виду,
|
||
что это весьма субъективно.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">scplx_mask</emphasis>: Пытается предотвратить появление
|
||
квадратиков, но постобработка делает это лучше.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-mpeg4-lavc-example-settings">
|
||
<title>Примеры настроек кодирования</title>
|
||
|
||
<para>
|
||
Следующие настройки - это примеры различных комбинаций опций кодирования,
|
||
которые влияют на соотношение скорость-качество при той же величине целевого
|
||
биптотока.
|
||
</para>
|
||
|
||
<para>
|
||
Все настройки кодирования проверялись на тестовом видео 720x448 @30000/1001 fps
|
||
с целевым битпотоком 900кбит/сек, на машине AMD-64 3400+ с 2400 МГц и 64 битном режиме.
|
||
Для каждой настройки кодирования указаны измеренная скорость кодирования (в
|
||
кадрах в секунду) и потеря PSNR (в дБ) по сравнению с настройкой "очень высокое
|
||
качество". Поймите, пожалуйста, что в зависимости от вашего материала, типа
|
||
машины, прогресса разработки вы можете получить сильно отличающиеся результаты.
|
||
</para>
|
||
|
||
<para>
|
||
<informaltable frame="all">
|
||
<tgroup cols="4">
|
||
<thead>
|
||
<row>
|
||
<entry>Описание</entry>
|
||
<entry>Опции кодирования</entry>
|
||
<entry>скорость (в fps)</entry>
|
||
<entry>Относительная потеря PSNR (в дБ)</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>Очень высокое качество</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>Высокое качество</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>Быстрое</entry>
|
||
<entry><option>vcodec=mpeg4:mbd=2:trell:v4mv:turbo</option></entry>
|
||
<entry>42fps</entry>
|
||
<entry>-0.74dB</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Реального времени</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>Нестандартные inter/intra матрицы</title>
|
||
|
||
<para>
|
||
С этой возможностью
|
||
<link linkend="ffmpeg"><systemitem
|
||
class="library">libavcodec</systemitem></link>,
|
||
вы можете установить нестандартные inter (I-кадры/ключевые) и intra
|
||
(P-кадры/предсказанные) матрицы. Это поддерживается многими кодеками:
|
||
В <systemitem>mpeg1video</systemitem> и <systemitem>mpeg2video</systemitem>
|
||
также заявлена поддержка.
|
||
</para>
|
||
|
||
<para>
|
||
Обычное использовани этой опции - установить матрицы, предпочитаемые
|
||
спецификациями <ulink url="http://www.kvcd.net/">KVCD</ulink>.
|
||
</para>
|
||
|
||
<para>
|
||
<emphasis role="bold">KVCD Матрица Квантования "Notch":</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>
|
||
Использование:
|
||
<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>Пример</title>
|
||
|
||
<para>
|
||
Итак, вы только что купили новенькую, блестящую копию фильма "Гарри Поттер и Тайная
|
||
Комната" (в широкоэкранном формате, конечно) и хотите сделать рип этого DVD так,
|
||
чтобы добавить его к Домашнему кинотеатру на PC. Это DVD первого региона,
|
||
поэтому NTSC. Пример ниже также применим и для PAL, за исключением того, что
|
||
надо будет опустить <option>-ofps 24000/1001</option> (поскольку частота кадров
|
||
на выходе такая же, как и на входе), и, конечно, границы обрезания будут
|
||
другими.
|
||
</para>
|
||
|
||
<para>
|
||
После запуска <option>mplayer dvd://1</option> мы следуем процессу, детально
|
||
описанному в разделе <link linkend="menc-feat-telecine">Как работать с телесином
|
||
и черезстрочностью в NTSC DVD</link>, и выясняем, что это 24000/1001 fps
|
||
прогрессивное видео, а значит использовать фильтры обратного телесина,
|
||
такие как <option>pullup</option> или <option>filmdint</option> не нужно.
|
||
</para>
|
||
|
||
<para>
|
||
Далее, мы хотим определить верные границы обрезания, поэтому используем фильтр
|
||
cropdetect:
|
||
<screen>mplayer dvd://1 -vf cropdetect</screen>
|
||
Убедитесь, что переместились к полностью заполненному кадру (например,
|
||
к светлой сцене), вы должны увидеть в консоли <application>MPlayer</application>:
|
||
<screen>crop area: X: 0..719 Y: 57..419 (-vf crop=720:362:0:58)</screen>
|
||
Затем снова воспроизводим фильм с этим фильтром для проверки его корректности:
|
||
<screen>mplayer dvd://1 -vf crop=720:362:0:58</screen>
|
||
И убеждаемся, что все выглядит прекрасно. Далее, проверяем, что ширина и высота
|
||
делятся на 16. С шириной все в порядке, а с высотой - нет.
|
||
Поскольку мы не заваливали математику в 7-ом классе, то знаем, что ближайшее
|
||
целое, меньшее 362 и кратное 16, равно 352.
|
||
</para>
|
||
|
||
<para>
|
||
Мы могли бы просто использовать <option>crop=720:352:0:58</option>, но будет
|
||
лучше отрезать понемногу от верха и низа, чтобы центр остался на месте.
|
||
Мы уменьшили высоту на 10 пикселов, но не хотим увеличивать смещение по y на 5,
|
||
поскольку это нечетное число и отрицательно скажется на качестве.
|
||
Вместо этого, мы увеличим y на 4:
|
||
<screen>mplayer dvd://1 -vf crop=720:352:0:62</screen>
|
||
Другая причина, по которой мы урезаем пикселы сверху и снизу, заключаемся в том,
|
||
что мы хотим убедиться, что удалены все наполовину черные пикселы, если они есть.
|
||
Если ваше видео телесиненное, убедитесь, что фильтр <option>pullup</option> (или
|
||
любой другой фильтр обратного телесина, который вы решили использовать)
|
||
находится в цепочке до фильтра crop.
|
||
Если оно черезстрочное, то перед обрезкой проведите деинтерлейсинг.
|
||
(Если решили сохранить черезстрочность видео, убедитесь, что вертикальный сдвиг
|
||
обрезания кратен 4.)
|
||
</para>
|
||
|
||
<para>
|
||
Если вас действительно заботит потеря этих 10 пикселов, вы можете
|
||
вместо этого отмасштабировать фильм, уменьшив размерности до ближайших
|
||
кратных 16 значений.
|
||
Цепочка фильтров будет выглядеть примерно так:
|
||
<screen>-vf crop=720:362:0:58,scale=720:352</screen>
|
||
Подобное уменьшение изображения будет означать потерю небольшого количества
|
||
деталей, хотя это, возможно, окажется незаметным. Масштабирование изображения в
|
||
сторону увеличения даст худшее качество (если вы не увеличиваете битпоток).
|
||
Обрезка же полностью выбросит те пикселы. Это компромисс, идти на который или нет,
|
||
придется решать в каждом частном случае. Например, если DVD видео было создано
|
||
для телевидения, вы можете захотеть избежать вертикального масштабирования,
|
||
поскольки частота строчной развертки [line sampling] соответствует тому, как содержимое
|
||
изначально записывалось.
|
||
</para>
|
||
|
||
<para>
|
||
При проверке видим, что наш фильм имеет немного движения и большое количество
|
||
деталей, так что выбираем для битпотока значение 2400Кбит/сек.
|
||
</para>
|
||
|
||
<para>
|
||
Теперь мы готовы произвести двухпроходное кодирование. Проход первый:
|
||
<screen>
|
||
mencoder dvd://1 -ofps 24000/1001 -oac copy -o <replaceable>Harry_Potter_2.avi</replaceable> -ovc lavc \
|
||
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=1 \
|
||
-vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2
|
||
</screen>
|
||
И второй проход с теми же параметрами, за исключением <option>vpass=2</option>:
|
||
<screen>
|
||
mencoder dvd://1 -ofps 24000/1001 -oac copy -o <replaceable>Harry_Potter_2.avi</replaceable> -ovc lavc \
|
||
-lavcopts vcodec=mpeg4:vbitrate=2400:v4mv:mbd=2:trell:cmp=3:subcmp=3:mbcmp=3:autoaspect:vpass=2 \
|
||
-vf pullup,softskip,crop=720:352:0:62,hqdn3d=2:1:2
|
||
</screen>
|
||
</para>
|
||
|
||
<para>
|
||
Опции <option>v4mv:mbd=2:trell</option> значительно улучшат качество ценой
|
||
времени кодирования. Нет никаких оснований отключать эти
|
||
опции, когда главным критерием является качество. Опции
|
||
<option>cmp=3:subcmp=3:mbcmp=3</option> выбирают функцию сравнения, дающую
|
||
лучшее качество, чем стандартная. Вы можете поэкспериментировать с этим параметром
|
||
(возможные значения смотрите на man странице), поскольку разные функции могут
|
||
давать разный прирост в качестве в зависимости от исходного материала.
|
||
Например, если вы замечаете, что <systemitem class="library">libavcodec</systemitem>
|
||
производит слишком много блочных артефактов (квадратиков), то можете попытаться
|
||
выбрать экспериментальный NSSE в качестве функции сравнения при помощи опциеи <option>*cmp=10</option>.
|
||
</para>
|
||
|
||
<para>
|
||
Для этого фильма полученный AVI будет 138 минут длинной и рамером около 3Гб.
|
||
И, поскольку вы сказали, что размер файла значения не имеет, это вполне
|
||
приемлемый результат. Однако, если все-таки хотите получить меньший размер файла,
|
||
можете попробовать уменьшить битпоток. Увеличение битпотока имеет снижающийся эффект,
|
||
поэтому, хотя мы можем ясно видеть улучшение от 1800Кбит/сек до 20000Кбит/сек, оно
|
||
может быть не столь заметно выше 20000Кбит/сек.
|
||
</para>
|
||
|
||
<para>
|
||
Так как мы пропустили исходное видео через фильтр удаления шума, то, возможно,
|
||
захочется вернуть какую-то его часть во время воспроизведения.
|
||
Это, совместпно с фильтром постобработки <option>spp</option>, существенно
|
||
улучшит воспринимаемое качество и поможет избежать блочных артефактов в видео.
|
||
Опцией <option>autoq</option> <application>MPlayer</application>'а вы можете
|
||
изменять величину производимой фильтром spp постобработки в зависимости от
|
||
доступных ресурсов CPU. Вдобавок, на этом этапе вы можете захотеть применить
|
||
коррекцию гаммы и/или цвета для лучшего соответствия вашему монитору. Например:
|
||
<screen>
|
||
mplayer <replaceable>Harry_Potter_2.avi</replaceable> -vf spp,noise=9ah:5ah,eq2=1.2 -autoq 3
|
||
</screen>
|
||
</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="menc-feat-xvid">
|
||
<title>Кодирование кодеком <systemitem class="library">Xvid</systemitem></title>
|
||
|
||
<para>
|
||
<systemitem class="library">Xvid</systemitem> - это свободная библиотека для
|
||
кодирования MPEG-4 ASP видео потоков.
|
||
Перед тем, как начать кодирование, вам потребуется <link linkend="xvid">
|
||
настроить <application>MEncoder</application> для его поддержки</link>.
|
||
</para>
|
||
|
||
<para>
|
||
Это руководство в основном нацелено на особенности применения тех же методов,
|
||
что описаны в руководстве по кодированию с помощью x264.
|
||
Поэтому, сначала прочтите, пожалуйста,
|
||
<link linkend="menc-feat-x264-encoding-options-intro">первую часть</link>
|
||
того руководства.
|
||
</para>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-xvid-intro">
|
||
<title>Какие опции следует использовать для получения лучших резудьтатов?</title>
|
||
|
||
<para>
|
||
Пожалуйста, начните с просмотра раздела
|
||
<systemitem class="library">Xvid</systemitem> man страницы
|
||
<application>MPlayer</application>.
|
||
Этот раздел предполагается как дополнение к man странице.
|
||
</para>
|
||
|
||
<para>
|
||
Настройки по-умолчанию Xvid уже являются хорошим выбором между скоростью и
|
||
качеством, поэтому вы можете без опасений придерживаться их, если следующий
|
||
раздел вас озадачивает.
|
||
</para>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-xvid-encoding-options">
|
||
<title>Опции кодирования <systemitem class="library">Xvid</systemitem></title>
|
||
|
||
<itemizedlist>
|
||
<listitem><para>
|
||
<emphasis role="bold">vhq</emphasis>
|
||
Эта опция влияет на алгоритм принятия решений о макроблоке, чем выше значение, тем
|
||
мудрее будут решения.
|
||
Значение по-умолчанию можно без опаски использовать для любого кодирования, в
|
||
то время, как более высокие значения улучшат PSNR, но будут работать значительно
|
||
медленнее.
|
||
Заметье, пожалуйста, что лучший PSNR не обязательно означает лучше выглядящую
|
||
картинку, но говорит, что она ближе к оригиналу.
|
||
Отключение этой опции заметно ускоряет кодирование; это может быть достойным
|
||
компромиссом, если скорость вам критична.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">bvhq</emphasis>
|
||
То же, что и vhq, но для B-кадров.
|
||
Имеет незначительное влияние на скорость и слегка улучшает качество (около
|
||
+0.1дБ).
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">max_bframes</emphasis>
|
||
Большее число допустимых последовательных B-кадров обычно улучшает
|
||
сжимаемость, хотя оно может также привести к большему количеству блочных
|
||
артефактов (квадратиков).
|
||
Значение по-умолчанию - хороший выбор между сжимаемостью и качеством, но вы
|
||
можете увеличить его до 3, если стеснены величиной битпотока.
|
||
Вы также можете уменьшить это значение до 1 или 0, если печетесь об отличном качестве,
|
||
впрочем в этом случае вы должны убедиться, что целевой битпоток достаточно высок,
|
||
дабы кодировщик не увеличивал значение квантователя, сохраняя нужную величину
|
||
битпотока.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">bf_threshold</emphasis>
|
||
Управляет чувствительностью кодировщика к B-кадрам, где большие значения
|
||
приводят к использованию большиего количество B-кадров (и наоборот).
|
||
Опция должна использоваться совместно с <option>max_bframes</option>;
|
||
если вы стеснены величиной битпотока, то должны увеличить и
|
||
<option>max_bframes</option>, и <option>bf_threshold</option>,
|
||
в том время как увеличение <option>max_bframes</option> и уменьшение
|
||
<option>bf_threshold</option> позволят кодировщику использовать больше
|
||
B-кадров в местах, где это <emphasis role="bold">действительно</emphasis>
|
||
необходимо.
|
||
Низкое количество <option>max_bframes</option> и высокое значение
|
||
<option>bf_threshold</option> - это, возможно, не самое мудрое решение,
|
||
поскольку оно принудит кодировщик размещать B-кадры в местах, которые никак не
|
||
выиграют от этого, тем самым ухудшая визуальное качество.
|
||
Однако, если вам требуется совместимость с аппаратными
|
||
проигрывателями, поддерживающими только старые DivX профили (которые
|
||
поддерживают только 1 последовательный B-кадр), это единственный способ
|
||
увеличить сжимаемость при помощи B-кадров.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">trellis</emphasis>
|
||
Оптимизирует процесс квантования для получения оптимального
|
||
соотношения между PSNR и битпотоком, что позволяет существенно экономить биты.
|
||
Эти биты впоследствии будут потрачены на другие части видео, что приведет к
|
||
увеличению общего качества.
|
||
Следует всегда оставлять эту опцию включенной, поскольку ее влияние на
|
||
качество огромно. Даже если вы заботитесь о скорости, не отключайте ее до тех
|
||
пор, пока не выставили <option>vhq</option> и остальные более CPU-прожорливые
|
||
опции на минимум.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">hq_ac</emphasis>
|
||
Активирует более точный метод оценки стоимости коэффициентов, что
|
||
уменьшает размер файла примерно на 0.15 - 0.19% (соответствует увеличению
|
||
PSNR меньше, чем на 0.01дБ), имея несущественное влияние на скорость.
|
||
Поэтому, рекомендуется всегда держать эту опцию включенной.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">cartoon</emphasis>
|
||
Разработана для лучшего кодирования мультфильмов и не влияет на скорость,
|
||
поскольку всего-лишь настраивает эвристики принятия решений о режимах для
|
||
этого типа содержимого.
|
||
</para></listitem>
|
||
<listitem>
|
||
<para>
|
||
<emphasis role="bold">me_quality</emphasis>
|
||
Это опция для настройки точности оценки движения.
|
||
Чем выше <option>me_quality</option>, тем точнее будет оценка оригинального
|
||
|
||
движения и тем лучше получающийся отрывок будет фиксировать оригинальное движение.
|
||
</para>
|
||
|
||
<para>
|
||
Настройка по-умолчанию лучше во всех случаях, поэтому не рекомендуется ее
|
||
выключать, если только вы действительно не гонитесь за скоростью, поскольку
|
||
биты, сэкономленные хорошей оценкой движения, могут быть использованы
|
||
где-нибудь еще, увеличивая общее качество.
|
||
Таким образом, не используйте значения ниже 5, да и его - только в крайнем
|
||
случае.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">chroma_me</emphasis>
|
||
Улучшает оценку движения, дополнительно принимая во внимание информацию о
|
||
цвете, тогда как одна <option>me_quality</option> использует только яркость.
|
||
Это замедляет кодирование на 5-10%, но несколько улучшает визуальное качество,
|
||
уменьшая эффект блочности и сокращая размер файла примерно на 1.3%.
|
||
Если вас интересует скорость, следует попробовать отключить эту опцию, прежде
|
||
чем решите уменьшать значение <option>me_quality</option>.
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">chroma_opt</emphasis>
|
||
Эта опция служит для увеличения качества цветного изображения вокруг чисто черных/белых
|
||
краниц вместо улучшения сжатия. Она также может помочь против
|
||
эффекта красных ступенек ["red stairs" effect].
|
||
</para></listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">lumi_mask</emphasis>
|
||
Пытается отдать меньший битпоток областям изображения, которые
|
||
человеческий глаз не в состоянии цвидеть достаточно хорошо, что
|
||
позволит кодировщику потратить сэкономленные биты на более важные
|
||
части картинки. Качество закодированного материала, привнесенное этой
|
||
опцией, сильно зависит от личных предпочтений и от типа и настроек монитора,
|
||
использовавшегося для просмотра (обычно результат выглядит не очень хорошо,
|
||
если он яркий, или является TFT монитором).
|
||
</para></listitem>
|
||
<listitem>
|
||
<para>
|
||
<emphasis role="bold">qpel</emphasis>
|
||
Увеличивает количество предполагаемых векторов движения, повышая точность
|
||
оценки движения с полупиксельной до четверьтпиксельной.
|
||
Идея состоит в том, чтобы найти лучшие векторы движения, которые взамен
|
||
уменьшат битпоток (тем самым увеличивая качество).
|
||
Однако, векторы движения с четверьтпиксельной точностью требуют большего
|
||
количества дополнительных бит для кодирования, а векторы-кандидаты не всегда
|
||
дают (значительно) лучшие результаты.
|
||
Почти всегда кодек тратит дополнительные биты на повышенную точность
|
||
впустую, а в взамен получает или вообще ничего, или небольшое увеличение качества.
|
||
К сожалению, нет способа предсказать возможные улучшения от <option>qpel</option>,
|
||
так что вам пирдется сделать кодирование с ней и без нее, чтобы знать
|
||
наверняка.
|
||
</para>
|
||
|
||
<para>
|
||
<option>qpel</option> может привести к удвоенному времени кодирования и
|
||
требует, как минимум, на 25% большей мощности при декодировании.
|
||
Она поддерживается не всеми аппаратными проигрывателями.
|
||
</para>
|
||
</listitem>
|
||
<listitem><para>
|
||
<emphasis role="bold">gmc</emphasis>
|
||
Пытается сэкономить биты в сценах с приближением, используя один вектор
|
||
движения для всего кадра. Это почти всегда увеличивает PSNR, но заметно
|
||
замедляет кодирования (так же как и декодирование).
|
||
Поэтому вас следует использовать ее, только когда вы включили
|
||
<option>vhq</option> на максимум.
|
||
GMC <systemitem class="library">Xvid</systemitem>'а является более сложным,
|
||
чем у DivX'а, но поддерживается только некоторыми аппаратными проигрывателями.
|
||
</para></listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-xvid-encoding-profiles">
|
||
<title>Профили кодирования</title>
|
||
|
||
<para>
|
||
Xvid поддерживает профили кодирования через опцию <option>profile</option>,
|
||
которая используется для накладиывания ограничений на значения видео потока Xvid таким
|
||
образом, что он будет воспроизводиться на всем, что поддерживает выбранный
|
||
профиль.
|
||
Ограничения относятся к разрешению, битпотоку и некоторым возможностям MPEG-4.
|
||
Следующая таблица показывает, что поддерживает тот или иной профиль.
|
||
</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">Простой</entry>
|
||
<entry spanname="spa6-11">Расширенный простой</entry>
|
||
<entry spanname="spa12-17">DivX</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Название профиля</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>Портативный NTSC</entry>
|
||
<entry>Портативный PAL</entry>
|
||
<entry>Домашний кинотеатр NTSC</entry>
|
||
<entry>Домашний кинотеатр PAL</entry>
|
||
<entry>HDTV</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Ширина [пикселов]</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>Высота [пикселов]</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>Частота кадров [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>Максимальный средний битпоток [кбит/сек]</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>Пиковое значение средней величины битпотока за 3 секунды [кбит/сек]</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>Макс. B-кадров</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 квантование</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>Адаптивное квантование</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>Черезстрочное кодирование</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>Четвертьпиксельная точность</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>Примеры настроек кодирования</title>
|
||
|
||
<para>
|
||
Последующие настройки - это примеры различных комбинаций опций кодирования,
|
||
которые влияют на соотношения скорость-качество при той же величине целевого
|
||
битпотока.
|
||
</para>
|
||
|
||
<para>
|
||
Все настройки кодирования проверялись на тестовом видео 720x448 @30000/1001 fps
|
||
с целевым битпотоком 900кбит/сек, на машине AMD-64 3400+ с 2400 МГц и 64 битном режиме.
|
||
Для каждой настройки кодирования указаны измеренная скорость кодирования (в
|
||
кадрах в секунду) и потеря PSNR (в дБ) по сравнению с настройкой "очень высокое
|
||
качество". Поймите, пожалуйста, что в зависимости от вашего материала, типа
|
||
машины, прогресса разработки вы можете получить сильно отличающиеся результаты.
|
||
</para>
|
||
|
||
<informaltable frame="all">
|
||
<tgroup cols="4">
|
||
<thead>
|
||
<row><entry>Описание</entry><entry>Опции кодирования</entry><entry>скорость
|
||
(в fps)</entry><entry>Относительная потеря PSNR (в дБ)</entry></row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>Очень высокое качество</entry>
|
||
<entry><option>chroma_opt:vhq=4:bvhq=1:quant_type=mpeg</option></entry>
|
||
<entry>16fps</entry>
|
||
<entry>0dB</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Высокое качество</entry>
|
||
<entry><option>vhq=2:bvhq=1:chroma_opt:quant_type=mpeg</option></entry>
|
||
<entry>18fps</entry>
|
||
<entry>-0.1dB</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Быстрое</entry>
|
||
<entry><option>turbo:vhq=0</option></entry>
|
||
<entry>28fps</entry>
|
||
<entry>-0.69dB</entry>
|
||
</row>
|
||
<row>
|
||
<entry>Реального времени</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>
|
||
</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>
|
||
|
||
<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>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
|
||
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
|
||
|
||
|
||
<sect1 id="menc-feat-video-for-windows">
|
||
<title>
|
||
Кодирование семейством кодеков <systemitem class="library">Video For Windows</systemitem>
|
||
</title>
|
||
|
||
<para>
|
||
Video for Windows предоставляет простое кодирование в смысле бинарных видео
|
||
кодеков. Вы можете кодировать следующими кодеками (если у вас есть другие,
|
||
сообщите нам!)
|
||
</para>
|
||
|
||
<para>
|
||
Имейте в виду, что поддержка этой возможности очень экспериментальная и
|
||
некоторые кодеки могут не работать корректно. Некоторые кодеки могут работать
|
||
только в определенных пространствах цветов, попробуйте
|
||
<option>-vf format=bgr24</option> и <option>-vf format=yuy2</option>,
|
||
если кодек выдает ошибку или кодирует неверно.
|
||
</para>
|
||
|
||
<!-- ********** -->
|
||
|
||
<sect2 id="menc-feat-enc-vfw-video-codecs">
|
||
<title>поддерживаемые кодеки Video for Windows</title>
|
||
|
||
<para>
|
||
<informaltable frame="all">
|
||
<tgroup cols="4">
|
||
<thead>
|
||
<row>
|
||
<entry>Имя файла с видео кодеком</entry>
|
||
<entry>Описание (FourCC)</entry>
|
||
<entry>md5sum</entry>
|
||
<entry>Комментарий</entry>
|
||
</row>
|
||
</thead>
|
||
<tbody>
|
||
<row>
|
||
<entry>aslcodec_vfw.dll</entry>
|
||
<entry>Alparysoft 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 (без потерь) (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 в 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>крах в Linux</entry>
|
||
</row>
|
||
<row>
|
||
<entry>vp7vfw.dll</entry>
|
||
<entry>On2 VP7 Personal Codec (VP70)</entry>
|
||
<entry>cb4cc3d4ea7c94a35f1d81c3d750bc8d</entry>
|
||
<entry>неверный FourCC?</entry>
|
||
</row>
|
||
<row>
|
||
<entry>ViVD2.dll</entry>
|
||
<entry>SoftMedia ViVD V2 VfW кодек (GXVE)</entry>
|
||
<entry>a7b4bf5cac630bb9262c3f80d8a773a1</entry>
|
||
<entry></entry>
|
||
</row>
|
||
<row>
|
||
<entry>msulvc06.DLL</entry>
|
||
<entry>MSU кодек без потерь (MSUD)</entry>
|
||
<entry>294bf9288f2f127bb86f00bfcc9ccdda</entry>
|
||
<entry>
|
||
Может декодироваться <application>Window Media Player</application>,
|
||
но не <application>MPlayer</application> (пока).
|
||
</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>
|
||
|
||
Первый столбец содержит имена кодекво, которые должны указываться после
|
||
<literal>codec</literal> параметра,
|
||
например: <option>-xvfwopts codec=divx.dll</option>
|
||
FourCC код, используемый каждым кодеком, указан в скобках.
|
||
</para>
|
||
<informalexample>
|
||
<para>
|
||
Пример сжатия с помощью VP3:
|
||
<screen>
|
||
mencoder dvd://2 -o <replaceable>title2.avi</replaceable> -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>
|
||
<listitem><para>
|
||
<emphasis role="bold">vtrict</emphasis>:
|
||
<option>vstrict</option>=0 should be used to create DVDs.
|
||
Without this option, <application>MEncoder</application> creates a
|
||
stream that cannot be correctly decoded by some standalone DVD
|
||
players.
|
||
</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:vstrict=0: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:vstrict=0
|
||
</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:vstrict=0: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:vstrict=0: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 -ofps 25 \
|
||
-lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:\
|
||
keyint=15:vstrict=0:aspect=16/9 -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:vstrict=0: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>
|