Опции, относящиеся к различным предпочтениям

  • Двухпроходное кодирование: Выше советовалось всегда использовать кодирование в два прохода, но все же существуют причины этого не делать. Например, если Вы захватываете TV трансляцию и кодируете в реальном времени, придется использовать однопроходный режим. К тому же один проход очевидно быстрее, чем два; если Вы используете точно такой же набор опций в обоих случаях, двухпроходной режим медленнее почти вдвое.

    Все же существует очень хорошие причины использовать кодирование в два прохода. Во-первых, управление битпотоком однопроходного режима не является телепатом и часто делает необоснованный выбор, потому что не может видеть общую картину. Например, предположим, что Вы имеете двухминутное видео, состоящее из двух независимых частей. Первая половина — очень динамичная сцена, продолжающаяся 60 секунд и требующая сама по себе битпоток примерно 2500 кбит/сек, чтобы прилично выглядеть. Сразу за ней следует гораздо менее требовательная 60-секундная сцена, которая хорошо выглядит при 300 кбит/сек. Предположим, Вы запросили битпоток 1400 кбит/сек; в теории этого достаточно для удовлетворения потребностей обеих сцен. В этом случае управление битпотоком в однопроходном режиме сделает пару "ошибок". Во-первых, оно установит битпоток в 1400 кбит/сек для обеих частей. Первая часть может оказаться чрезмерно квантованной, что приведет к недопустимо выглядящему и неоправданно блочному изображению. Вторая часть будет существенно недостаточно квантованной; она может выглядеть отлично, но цена битпотока для этого качества будет полностью неоправданной. Чего намного труднее избежать, так это проблемы перехода между двумя сценами. В первых секундах малодинамичной части квантователь будет чрезвычайно превышен, потому что управление битпотоком все еще ожидает встретить такие же требования к битпотоку как и в первой части. Этот "ошибочный период" с чрезвычайно превышенным квантованием будет выглядеть раздражающе неприятно и использовать на самом деле меньше, чем 300 кбит/сек, требуемых ему для того, чтобы прилично выглядеть. Существуют способы смягчить эффект от подобных подводных камней однопроходного режима, но они могут иметь склонность к усилению неверного предсказания битпотока.

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

    Более того, два прохода занимают не двойное время по сравнению с одним. Вы можете настроить опции первого прохода на более быструю скорость и низкое качество. Если хорошо выберете опции, Вы получите очень быстрый первый проход. Полученное качество во втором проходе будет несколько ниже, потому что предсказание размера менее точно, но разница в качестве обычно слишком мала, чтобы быть заметной. Попробуйте, например, добавить subq=1:frameref=1 в x264encopts первого прохода. Затем, при втором проходе, используйте более медленные, с лучшим качеством опции: subq=6:frameref=15:partitions=all:me=umh

  • Кодирование в три прохода? x264 предоставляет возможность делать желаемое количество последовательных проходов. Если Вы указали pass=1 при первом проходе, используйте затем pass=3 в последующем проходе, этот проход будет одновременно читать статистику предыдущего прохода и записывать свою собственную. Дополнительный проход, следующий за этим, будет иметь очень хорошую основу для осуществления очень точных предсказаний размеров кадров при выбранном квантователе. На практике, общее улучшение качества от использования этого режима близко к нулю и, вполне возможно, третий проход приведет к немного худшему глобальному PSNR, чем у предыдущего прохода. При обычном использовании три прохода помогают, если Вы при двух проходах получаете либо плохое предсказание битпотока, либо плохо выглядящие переходы между сценами. Это отчасти то, что наверняка будет происходить на очень коротких клипах. Существуют также особые случаи, когда три (или более) проходом удобны для продвинутых пользователей, но, для краткости, это руководство не включает в себя описание этих особых случаев.

  • qcomp: qcomp управляет соотношением количества бит, отданных "дорогим" высокодинамичным и "дешевым" малодинамичным кадрам. Один крайний случай: qcomp=0, предназначен для истинно постоянного битпотока. Обычно это сделает высокодинамичные сцены выглядящими просто ужасно, в то время как малодинамичные сцены будут, возможно, выглядеть абсолютно великолепно, но при этом будут использовать во много раз больший битпоток, чем им необходимо, чтобы выглядеть лишь превосходно. Другая крайность: qcomp=1, добивается примерно одинакового параметра квантования (QP). Постоянный QP не выглядит плохо, но большинство людей думают, что более разумно частично снизить битпоток в сильно дорогих сценах (где потеря качества не очень заметна) и перераспределить их в сцены, которые легче закодировать с отличным качеством. qcomp по умолчанию установлена в 0.6, что по мнению многих людей может быть несколько мало (также часто используется 0.7-0.8).

  • keyint: keyint — единственная возможность выбора между удобством перемещения по файлу и эффективностью кодирования. По-умолчанию keyint установлена в 250. В материале с 25fps это гарантирует возможность перемещения с точностью до 10 секунд. Если Вы считаете, что более важным и полезным будет перемещение с точностью до 5 секунд, установите keyint=125; это немного ухудшит качество/битпоток. Если Вы заботитесь только о качестве, но не о перемещаемости, Вы можете установить значение этой опции в более высокое значение (понимая, что улучшение будет убывающим, вплоть до исчезающе малого или даже нулевого). Видео поток по-прежнему будет иметь точки перемещения, пока в нем есть какие-то изменения сцен.

  • deblock: Этот раздел может быть несколько спорным.

    H.264 определяет простую процедуру удаления блочности в I-блоках, которая использует предустановленные степени обработки и пороговые значения в зависимости от QP рассматриваемого блока. По-умолчанию, блоки с высоким QP обрабатываются сильнее, а в блоках с низким QP удаление блочности вообще не производится. Предустановленые степени обработки, определенные стандартом, тщательно подобраны и имеют хорошие шансы быть PSNR-оптимальными для любого видео, которое Вы пытаетесь кодировать. Опция deblock позволяет указать смещения предустановленных пороговых значений деблокинга.

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

    Первая и самая важная вещь, которую нужно знать о in-loop фильтре удаления блочности состоит в том, что пороговые значения по умолчанию практически всегда PSNR-оптимальны. В редких случаях, где они неоптимальны, идеальное смещение будет плюс минус 1. Изменение параметров деблокинга на большие значения фактически гарантирует ухудшение PSNR. Усиление фильтра размажет больше деталей; ослабление — оставит больше квадратиков.

    По определению плохая идея уменьшать пороги деблокинга, если Ваш исходный материал в основном имеет небольшую пространственную сложность (т.е. не имеет множества деталей или шума). In-loop фильтр делает весьма неплохую работу по сокрытию появляющихся артефактов. Однако, если исходный материал имеет высокую пространственную сложность, артефакты будут практически незаметны. Это происходит потому, что ореолы имеют склонность выглядеть как детали или шум. Зрительное восприятие легко замечает отсутствие деталей, но ему не так легко обратить внимание на неверно изображенный шум. Когда речь идет о субъективном качестве, шум и детали в некоторой степени взаимозаменяемы. Уменьшая силу фильтра удаления блочности, Вы, скорее всего, увеличиваете ошибку, добавляя ореолы, но глаз этого не замечает, поскольку он путает артефакты с деталями.

    Однако, это по-прежнему не оправдывает уменьшение силы фильтра. Вы в большинстве случаев можете получить более качественный шум при помощи постобработки. Если результат кодирования при помощи H.264 выглядит слишком смазанным или размытым, попробуйте поиграть с -vf noise, при воспроизведении закодированного фильма. -vf noise=8a:4a должна скрыть большинство мелких артефактов. Ее результат почти наверняка будет выглядеть лучше, чем полученный при помощи махинаций с фильтром удаления блочности.