February 19, 2022

X264 - описание ключей кодирования

Presets

--profile

(Force the limits of an H.264 profile)

Указываем уровень совместимости, в зависимости от оборудования. Так как не все железные плееры могут справиться с high.

  • Профили:
    • baseline - Устанавливает --no-8x8dct --bframes 0 --no-cabac --cqm flat --weightp 0. С потерей качества. Без интерлейсинга.
    • main - Устанавливает --no-8x8dct --cqm flat. С потерей качества.
    • high - Нет ограничений. С потерей качества.
    • high10 - Тоже что и high, но с поддержкой глубины изображения в 10bit. С потерей качества.
    • high422 - Тоже что и high10, плюс поддержка 4:2:0/4:2:2 хрома сабсемплинг (chroma subsampling). С потерей качества.
    • high444 - Тоже что и high10, плюс поддержка 4:2:0/4:2:2/4:4:4 хрома сабсемплинг (chroma subsampling). Без потери качества.
  • В консоли: --profile <string>
  • В MediaInfo: Format profile: <string>
  • Значение по умолчанию: Отключено


--preset

(Use a preset to select encoding settings)

Кодируем используя уже готовые пресеты. Пресет - это набор оптимальных параметров влияющих скорость кодирования и качество. Чем выше скорость - тем ниже качество.

  • Доступные пресеты:
    • ultrafast (ультра-быстрый):
      --no-8x8dct --aq-mode 0 --b-adapt 0 --bframes 0 --no-cabac --no-deblock --no-mbtree --me dia --no-mixed-refs --partitions none --rc-lookahead 0 --ref 1 --scenecut 0 --subme 0 --trellis 0 --no-weightb --weightp 0
    • superfast (сверхбыстрый):
      --no-mbtree --me dia --no-mixed-refs --partitions i8x8,i4x4 --rc-lookahead 0 --ref 1 --subme 1 --trellis 0 --weightp 1
    • veryfast (очень быстрый):
      --no-mixed-refs --rc-lookahead 10 --ref 1 --subme 2 --trellis 0 --weightp 1
    • faster (быстрее):
      --no-mixed-refs --rc-lookahead 20 --ref 2 --subme 4 --weightp 1
    • fast (быстрый):
      --rc-lookahead 30 --ref 2 --subme 6 --weightp 1
    • medium (средний):
      все значения по умолчанию
    • slow (медленный):
      --b-adapt 2 --direct auto --me umh --rc-lookahead 50 --ref 5 --subme 8
    • slower (медленнее):
      --b-adapt 2 --direct auto --me umh --partitions all --rc-lookahead 60 --ref 8 --subme 9 --trellis 2
    • veryslow (очень медленный):
      --b-adapt 2 --bframes 8 --direct auto --me umh --merange 24 --partitions all --ref 16 --subme 10 --trellis 2 --rc-lookahead 60
    • placebo (плацебо):
      --bframes 16 --b-adapt 2 --direct auto --slow-firstpass --no-fast-pskip --me tesa --merange 24 --partitions all --rc-lookahead 60 --ref 16 --subme 11 --trellis 2
  • Рекомендации: Выбирайте пресет, в соответствии с вашими потребностями в скорости кодирования, качестве.
  • Примечание: Следует задавать в самом начале. Все значения могут быть перезаданны позже.
  • В консоли: --preset <string>
  • В MediaInfo: Не отображается
  • Значение по умолчанию: medium

--tune

(Tune the settings for a particular type of source or situation)

Выбираем нужную оптимизацию, которая установит оптимальные настройки для выбранного вами типа видео.

  • Типы оптимизаций:
    • film - для фильмов:
      --deblock -1:-1 --psy-rd <не задано>:0.15
    • animation - для аниме и мультипликации:
      --ref (удваивает --ref если оно больше 1) --deblock 1:1 --psy-rd 0.4:<не задано> --aq-strength 0.6 --bframes (стандартный --bframes + 2)
    • grain - для зернистого изображения с повышенной детализацией:
      --aq-strength 0.5 --no-dct-decimate --deadzone-inter 6 --deadzone-intra 6 --deblock -2:-2 --ipratio 1.1 --pbratio 1.1 --psy-rd <не задано>:0.25 --qcomp 0.8
    • stillimage:
      --aq-strength 1.2 --deblock -3:-3 --psy-rd 2.0:0.7
    • psnr:
      --aq-mode 0--no-psy
    • ssim:
      --aq-mode 2 --no-psy
    • fastdecode - для быстрого декодирования содержания:
      --no-deblock --no-cabac --no-weightb --weightp 0
    • zerolatency - для потокового видео:
      --bframes 0 --force-cfr --no-mbtree --sync-lookahead 0 --sliced-threads --rc-lookahead 0
  • Примечание: Задавать нужно только после --presets.
  • В консоли: --tune <string>
  • В MediaInfo: Не отображается
  • Значение по умолчанию: Отключено

--slow-firstpass

(Enable slow first pass)

Включаем "медленный" первый проход.

  • Рекомендации: Только при первом проходе и если нужно получить максимальное качество. Очень замедляет кодирование.
  • Примечание: Отключает следующие, ускоряющие первый проход, ключи:
    --no-8x8dct --me dia --partitions none --ref 1 --subme 2 --trellis 0
    Пресет placebo изначально содержит данный ключ.
  • В консоли: --slow-firstpass
  • В MediaInfo: Не отображается
  • Значение по умолчанию: Отключено

Frame-type options

-I, --keyint

(Maximum GOP size)

Максимальный интервал между ключевыми/IDR кадрами. Этот параметр контролирует количество кадров между ключевыми, и если по достижению предела ключевой кадр не наступил - принудительно его ставит. Стандартный размер GOP'а динамически вычисляется во время кодирования для максимального сжатия. IDR (ключевые) кадры - это так называемые кадры-разделители. Кадры, находящиеся в промежутке между двумя ключевыми кадрами не могут ссылаться на кадры, вне этого промежутка. Также, сами ключевые кадры являются I-кадрами, так что они не могу использоваться как референсные, поэтому они могут использоваться в качестве контрольных точек в видеопотоке.

  • Примечание: Влияет на перемотку видео в плеере. Если значения очень большие, то при перемотке(прокрутке), не по ключевым кадрам, видео в плеере будет немного притормаживать. Так как декодеру придется отрендерить все кадры начиная с ближайшего ключевого и до выбранного пользователем. Перемотка не по ключевым кадрам поддерживается на уровне плеера, кодека.
  • Рекомендации: Значение по умолчанию применимо в большинстве случаев. Если Вы хотите использовать собственное значение, используйте следующую формулу: fps*10 (значение должно быть целым числом, кратным 10). Если Вы кодируете для Blu-ray или потокового видео, то возможно, Вам придется использовать значения, равные частоте кадров итогового видео. Большие значения полезны только для статичного видео.
    В консоли: -I <integer> или --keyint <integer>
  • В MediaInfo: keyint=<integer>
  • Значение по умолчанию: 250
  • См. также: --min-keyint, --scenecut, --intra-refresh

-i, --min-keyint

(Minimum GOP size)

Минимальное расстояние между ключевыми/IDR кадрами.

  • Рекомендации: Значение по умолчанию (0) подходит для большинства видов контента. Если Вы хотите использовать свое значение, то оно не должно превышать: --keyint/2+1. Если у вас довольно динамичное видео, то значение можно немного уменьшить.
  • В консоли: --min-keyint <integer>
  • В MediaInfo: keyint_min=<integer>
  • Значение по умолчанию: auto (0)
  • См. также: --keyint, --scenecut

--no-scenecut

(Disable adaptive I-frame decision)

Полное отключение адаптивных I-кадров.

  • В консоли: --no-scenecut
  • В MediaInfo: scenecut=0
  • Значение по умолчанию: Отключено
  • См. также: --scenecut

--scenecut

(How aggressively to insert extra I-frames)

Этот параметр определяет на сколько часто будут использоваться дополнительные I-кадры. x264 высчитывает метрику каждого кадра, что бы определить насколько он отличается от предыдущего. Если полученное значение ниже, чем установлено для scenecut, то энкодер помещает в этом месте I-кадр, если выше – вставляет ключевой/IDR кадр. Полезность определения смены сцен заключается в оптимальной расстановке I-кадров в местах резкой смены сцен. Это повышает качество, но слишком частая смена приведёт к напрасной трате битрейта.

  • Примечание: Значение "0" соответствует --no-scenecut.
  • Диапазон: 0..100
  • В консоли: --scenecut <integer>
  • В MediaInfo: scenecut=<integer>
  • Значение по умолчанию: 40
  • См. также: --keyint, --min-keyint, --no-scenecut

--intra-refresh

(Use Periodic Intra Refresh instead of IDR frames)

Запрещает использование IDR-кадров.

  • Примечание: Эта опция снижает степень сжатия и применима только для потокового видео. Дает более постоянный битрейт, без резких скачков.
  • В консоли: --intra-refresh
  • В MediaInfo: intra_refresh
  • Значение по умолчанию: Отключено

-b, --bframes

(Number of B-frames between I and P)

Количество последовательных B-кадров между I- и P- кадрами. B-кадры – это кадры, в которых закодированы изменения не только от предыдущих кадров, но и от последующих. Имеют еще большую степень сжатия, чем P-кадры, но также и наихудшее качество. B-кадры подобны P-кадрам, кроме того, они могут использовать предсказание движения от будущих кадров также. Это может привести к значительному улучшению степени сжатия.

  • Рекомендации: Оптимальные значения: 2..6.
    Если Вы не используете --b-adapt 2, то можно смело задавать --bframes 16. Это самый простой способ, так как выбор оптимального значения падает на енкодер.
    Оптимальное значение для конкретного видео можно получить путем чтения статистики первого прохода.
  • Примечание: При высоких значениях, больших чем необходимо, кодирование может быть значительно замедленно, без выигрыша в качестве. Также большое количество В-кадров затрудняет декодирование.
  • Диапазон: 1..16
  • В консоли: -b, --bframes <integer>
  • В MediaInfo: bframes=<integer>
  • Значение по умолчанию: 3
  • См. также: --b-bias, --b-pyramid, --ref, --pbratio, --partitions, --weightb

--b-adapt

(Adaptive B-frame decision method)

Позволяет x264 адаптивно решать, где будут использоваться B-кадры, уменьшая количество B-кадров там, где это не нужно.

  • Рекомендации: При высоком значении --bframes лучше задавать значение 2.
  • Настройки:
    0 - полностью отключить
    1 - "быстрый" алгоритм.
    2 - оптимальный алгоритм, медленнее предыдущего
  • Примечание: В многопроходном кодировании эта опция необходима только для первого прохода, где типы кадров определены.
  • В консоли: --b-adapt <integer>
  • В MediaInfo: b_adapt=<integer>
  • Значение по умолчанию: 1

--b-bias

(Influences how often B-frames are used)

Контролирует количество B-кадров, которые будут использованы вместо P-кадров.

  • Рекомендации: Используйте, только если считаете что сможете добиться лучшего контроля битрейта, чем сам x264.
  • Примечание: Значения выше 0 увеличивают вероятность использования В-кадров, а значения ниже 0 - уменьшают. Значения равные 100/-100 гарантируют/не гарантируют что каждый Р-кадр будет преобразован. Для этого используйте --b-adapt 0.
  • Диапазон: -100..100
  • В консоли: --b-bias <integer>
  • В MediaInfo: b_bias=<integer>
  • Значение по умолчанию: 0
  • См. также: --bframes, --ipratio

--b-pyramid

(Keep some B-frames as references)

Позволяет B-кадрам ссылаться на другие В-кадры, тем самым увеличивая эффективность использования 2-х или более B-кадров.

  • Типы:
    none - запрещает использовать В-кадры как референсные.
    strict - разрешают по 1-му референсному В-кадру на каждый minigop (соблюдает ограничения стандарта Blu-ray).
    normal - разрешает множественное использование референсных В-каров на каждый minigop.
  • Примечание: Без этого параметра, В-кадры могут ссылаться только на I- или P-кадры. Хотя I/P-кадры и более ценны, из-за их более высокого качества, B-кадры также могут быть полезными.
    Необходимо значение --bframes выше 2-х. Немного замедляет кодирование. При кодировании для Blu-ray не используйте normal.
  • В консоли: --b-pyramid <string>
  • В MediaInfo: b_pyramid=<integer>
  • Значение по умолчанию: normal
  • См. также: --bframes, --refs, --no-mixed-refs

--open-gop

(Use recovery points to close GOPs)

Open-GOP(Group Of Pictures) - техника увеличивающая эффективность кодирования. По сути, open-gop запрещает трансформацию B-кадра в P-кадр, если текущий кадр должен быть ключевым, исходя из значения --keyint, но новая сцена еще не началась. Это позволяет уменьшить излишне большое количество ключевых кадров и дает меньший битрейт, и соответственно более высокую степень сжатия.

  • Рекомендации: Полезно, если Вы используете низкие значения --keyint.
  • Примечание: Некоторые декодеры не поддерживают open-gop, по этому эта опция не включена по умолчанию.
  • В консоли: --open-gop
  • В MediaInfo: open_gop=<integer>
  • Значение по умолчанию: Отключено

--no-cabac

(Disable CABAC)

CABAC (Context-Adaptive Binary Arithmetic Coding / Контекстно-Адаптивное Двоичное Арифметическое Кодирование) - это умная техника сжатия без потерь. Данная опция отключит CABAC и энкодер начнет использовать CAVLC (Контекстно-Адаптивное Неравномерное Кодирование).

  • Рекомендации: Для карманных устройств(КПК, КМК и смартфонов) лучше использовать CAVLC. Так как их мощности не хватит что бы справится с CABAC.
  • Примечание: CABAC дает сжатие, приблизительно, на 10-20% больше, по сравнению с CAVLC.
    CABAC использует больше процессорного времени для кодирования и декодирования.
  • В консоли: --no-cabac
  • В MediaInfo: cabac=0
  • Значение по умолчанию: Отключено

-r, --ref

(Number of reference frames)

Параметр задает количество используемых референсных кадров. Определяет, сколько предыдущих кадров может быть связано (заимствование макроблоков) с P- или B-кадрами.

  • Рекомендации: Приблизительно 4-6. Большие значения могут быть полезны для анимации, аниме, скринкастов и другого "статичного" видео.
  • Примечание: При 5-ти и более референсных кадрах, качество, обычно, повышается незначительно.
    Кроме того, 4 - максимальное значение для 1080p, а 9 - максимальное для 720p, придерживаясь спецификации Level 4.1. Это самый высокий уровень, поддерживаемый в большинстве бытовой электроники, которая поддерживают воспроизведение H.264, включая также Xbox 360 и Playstation 3.
    Чем больше референсных кадров, тем медленнее кодирование.
  • Диапазон: 0..16
  • В консоли: -r, --ref <integer>
  • В MediaInfo: ref=<integer>
  • Значение по умолчанию: 3
  • См. также: --b-pyramid, --no-mixed-refs, --level

--no-deblock

(Disable loop filter)

Отключение фильтра подавления блочности.

  • В консоли: --no-deblock
  • В MediaInfo: deblock=0:0:0
  • Значение по умолчанию: Отключено
  • См. также: --deblock

-f, --deblock

(Loop filter parameters)

Использование фильтра подавления блоков с параметрами - alpha (сила подавления блоков):beta (точность определения блоков). При кодировании изображение разбивается на блоки размерами 8х8 пикселей и каждый такой блок кодируется отдельно. При недостаточном битрейте, эти блоки становятся заметными. Включение данной опции поможет решить проблему.

  • Рекомендации: Параметр "alpha" рекомендуется выбрать от -3 до 3. Большее значение увеличивает силу подавления блоков, но картинка становится немного размытой (используйте при низких битрейтах или при кодировании мультипликации). Меньшее значение уменьшает силу, зато картинка остается достаточно чёткой (используйте при высоких битрейтах). Если не знаете, что выбрать, то оставьте 0 - подходит для большинства случаев.
    Параметр "beta" рекомендуется выбирать от -2 до 2. При больших значениях, кодек может распознать некоторые детали за блок и применить к ним фильтр подавления блоков. При меньших значениях, деталей сохранится больше, но некоторые блоки могут быть приняты за деталь (используйте меньшие значения при кодировании мультипликации - в ней четкие контуры, поэтому кодек не ошибется). Желательно чтобы этот параметр отличался не больше, чем на единицу от предыдущего. Если не знаете, что выбрать, то оставьте 0 - подходит для большинства случаев.
    Сила деблокинга вычисляется для каждого макроблока, исходя из квантизера для него и близлежащих макроблоков. Альфа определяет: является ли приграничный квадрат блочным или же на самом деле это деталь. Это похоже на порог. Бета так же похожа на порог, но используется для того, чтобы убедиться в однородности картинки с обеих приграничных сторон и, тем самым, отделить детали от блочности. Когда определена блочность, альфа решает, какую силу использовать (максимально допустимое изменение пикселя). Бета немного изменяет силу, если блок однородный. Сила деблокинга: Порог деблокинга. Порог деблокинга устанавливает жёсткость отбора блочности фильтром. Сила деблокинга регулирует, как сильно определённые блоки будут смягчены. Значения по умолчанию сочетают аккуратность удаления блочности и сохранение деталей. Значения должны лежать в диапазоне от -3 до 3 (чем ниже значения, тем меньше устраняется блочность. Отрицательные значения не означают, что блочность оставляется).
  • Примечание: Слишком высокие значения дадут потерю многих деталей и текстур или смазывание. Установка слишком низких значений оставит резкие края и "москитный шум" (mosquito noise). Должна быть положительная взаимосвязь между двумя коэффициентами деблокинга (желательно, чтобы обе цифры были отрицательными или положительными). Если Вы увеличиваете силу, то должны увеличить и порог
  • Диапазон: -6..6 (для alpha и beta соответственно)
  • В консоли: -f, --deblock <alpha:beta>
  • В MediaInfo: deblock=1:<integer>:<integer>
  • Значение по умолчанию: 0:0
  • См. также: --no-deblock

--slices

(Number of slices per frame)

Указываем количество частей (квадратов), на которые будет разбит кадр.

  • Рекомендации: Если Вы кодируете Blu-ray - используйте значение 4. В противном случае вообще не используйте эту опцию. Разве что Вы точно знаете что она вам нужна.
  • В консоли: --slices <integer>
  • В MediaInfo: Неизвестно
  • Значение по умолчанию: 0
  • См. также: --slice-max-size, --slice-max-mbs

--slice-max-size

(Limit the size of each slice in bytes)

Задаем максимальное размер slice в байтах.

  • Примечание: На данные момент конфликтует с --tff, --bff.
  • В консоли: --slice-max-size <integer>
  • В MediaInfo: Неизвестно
  • Значение по умолчанию: 0
  • См. также: --slices

--slice-max-mbs

(Limit the size of each slice in macroblocks)

Задаем максимальный размер slice в макроблоках.

  • Примечание: На данные момент конфликтует с --tff, --bff.
  • В консоли: slice-max-mbs <integer>
  • В MediaInfo: Неизвестно
  • Значение по умолчанию: 0
  • См. также: --slices

--tff

(Enable interlaced mode (top field first))

Включаем чересстрочное кодирование. Первое поле - верхнее.

  • Рекомендации: Чересстрочное кодирование необходимо только для чересстрочных дисплеев.
  • Примечание: x264 использует для чересстрочного кодирования MBAFF, и это намного хуже прогрессивного кодирования.
  • В консоли: --tff
  • В MediaInfo: interlaced=1
  • Значение по умолчанию: Отключено
  • См. также: --bff

--bff

(Enable interlaced mode (bottom field first))

Включаем чересстрочное кодирование. Первое поле - нижнее.

  • Рекомендации: Чересстрочное кодирование необходимо только для чересстрочных дисплеев.
  • Примечание: x264 использует для чересстрочного кодирования MBAFF, и это намного хуже прогрессивного кодирования.
  • В консоли: --bff
  • В MediaInfo: interlaced=1
  • Значение по умолчанию: Отключено
  • См. также: --tff

--constrained-intra

(Enable constrained intra prediction)

Включаем ограниченное внутреннее предсказание, необходимое для base layer.

  • Рекомендации: Практически не применяется. Этот ключ можно игнорировать.
  • В консоли: --constrained-intra
  • В MediaInfo: constrained_intra=<0/1>
  • Значение по умолчанию: Отключено

--pulldown

(Use soft pulldown to change frame rate)

Выбираем пресет софт-телесина для входного видео. Телесин - это способ преобразования видео в телевизионный формат. То есть частота исходного видео подгоняется под частоту телевещания (50Гц - PAL, 60Гц - NTSC), при этом возможно незначительное ускорение видео. Данный параметр задает тип исходного преобразования, для выполнения обратного.

  • Пресеты: none, 22, 32, 64, double, triple, euro (требует crf входное видео).
  • Примечание: использование любого пресета, кроме none, подразумевает использование --pic-struct.
  • В консоли: --pulldown <string>
  • В MediaInfo: Неизвестно
  • Значение по умолчанию: Отключено

--fake-interlaced

(Flag stream as interlaced but encode progressive)

Обозначает видеопоток как чересстрочный, даже если он таковым не является. Позволяет кодировать видео для Blu-ray с частотой кадров в 25 и 30 в секунду.

  • В консоли: --fake-interlaced
  • В MediaInfo: Неизвестно (обычно отображает как прогрессивное)
  • Значение по умолчанию: Отключено

--frame-packing

(For stereoscopic videos define frame arrangement)

Если Вы кодируете 3D-видео, то этот параметр говорит вашему декодеру о том, кокой именно тип 3D-видео используется.

  • Типы 3D-видео:
    1 - чередование столбцов - Л(лево) и П(право) чересстрочно по столбцам (Interlaced)
    2 - чередование строк - Л и П чересстрочно по строкам (Interlaced)
    3 - горизонтальная (попеременная) стереопара - Л слева, П справа (SideBySide)
    4 - верх низ - Л вверху, П снизу (OverUnder)
    5 - чередование кадров - один кадр для одного глаза
  • В консоли: --frame-packing <integer>
  • В MediaInfo: Неизвестно
  • Значение по умолчанию: Отключено


Скопирайтил от сюда