welcome: please sign in
location: Diff for "webm/s"
Differences between revisions 1 and 5 (spanning 4 versions)
Revision 1 as of 2015-12-19 18:46:11
Size: 483
Editor: anonymous
Comment:
Revision 5 as of 2015-12-19 20:12:16
Size: 4844
Editor: anonymous
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Частозадаваемые вопросы webm-треда в /s/ = = Часто задаваемые вопросы WebM-треда в /s/ =
Line 5: Line 5:
=== Медленно кодируется/используется только одно ядро ===
Line 7: Line 6:
=== Превью не отображается/видео не проигрывается/зелёная полоса по краям/кривые цвета ===
Все нижеследующие ключи относятся к FFmpeg, если не обозначено иное.

=== Рекомендуемый минимальный набор параметров ===


=== Медленно кодируется VP9/используется только одно ядро ===

 1. Убедиться, что присутствует ключ {{{-threads 8}}} (или больше)
 2. Убедиться, что используется версия {{{libvpx >= 1.4.0}}}

=== Процессор всё ещё не полностью загружен при транскодинге в VP9 ===

libvpx-vp9 [[http://permalink.gmane.org/gmane.comp.multimedia.webm.devel/2339|использует tile-columns multithreading]], поэтому число потоков энкодера зависит от разрешения видео. В общем случае число потоков считается как {{{2^floor(log2((w+63)/256))}}}, где {{{w}}} — ширина итогового видео. Т.е.:

 * Ширина <=448px = 1 тред
 * Ширина >448px = 2 треда
 * Ширина >960px = 4 треда
 * Ширина >1984px = 8 тредов
 * Ширина >4032px = 16 тредов

и т.д. При этом треды энкодера не обязательно будут загружать ядра на 100% в силу ограничений алгоритмов распараллеливания. Если процессор изрядно простаивает, имеет смысл кодировать видео по частам в отдельных процессах FFmpeg (используя опции {{{-ss}}} и {{{-t}}}), склеивая полученные файлы на уровне демуксера.

=== Почему миниатюра чёрная/как сделать превью ===


=== Превью не отображается/видео не проигрывается/зелёная полоса по краям/некорректные цвета ===

Вероятнее всего, используется некорректная [[https://en.wikipedia.org/wiki/Chroma_subsampling|цветовая субдискретизация]]. Следует добавить ключ {{{-pix_fmt +yuv420p}}}
Line 10: Line 37:


=== Не работает/тормозит перемотка ===

В libvpx-vp9 по умолчанию нет ограничений на частоту появления ключевых кадров ([[https://arhivach.org/thread/120883/#1496522|что улучшает качество]]), поэтому в видео с редкими сменами сцен они могут появляться редко, делая перемотку неудобной. Если перемотка важнее сэкономленного битрейта, следуется использовать ключ {{{-g}}}. Например, при {{{-g 120}}} и видео 24 fps, ключевые кадры будут появляеться не реже, чем каждые 5 секунд.

=== Рекомендуемые настройки ресайза ===

Mitchell-Netravali ({{{-param0 1/3 -param1 1/3}}}) обеспечивает минимальное количество артефактов ресемплинга, при этом облегчая энкодеру задачу — фильтры типа Lanczos сохраняют слишком много деталей, которые трудно сжимать. См. также:

 * https://arhivach.org/thread/120883/#1496241
 * http://avisynth.nl/index.php/Resize#LanczosResize
 * http://www.imagemagick.org/Usage/filter/
 * http://www.imagemagick.org/Usage/filter/nicolas/

{{attachment:cubic_survey.gif}}

=== VBR vs CRF ===

В [[http://arhivach.org/thread/109411/#1434939|некоторых случаях]] 2pass CRF выдаёт чуть лучшее качество, чем 2pass VBR, при том же размере файла. Поэтому на низких битрейтах может иметь смысл подогнать значение ключа {{{-crf}}} под требуемый размер файла. Например: {{{-b:v 0 -crf 30}}}

=== Ссылки на полезные обсуждения ===

 * [[https://arhivach.org/thread/120883/#1482277|Оптимальные параметры кодирования статичной картинки]]
 * [[https://arhivach.org/thread/120883/#1477181|Кодирование GIF]]

Часто задаваемые вопросы WebM-треда в /s/

Почему консоль?

Все нижеследующие ключи относятся к FFmpeg, если не обозначено иное.

Рекомендуемый минимальный набор параметров

Медленно кодируется VP9/используется только одно ядро

  1. Убедиться, что присутствует ключ -threads 8 (или больше)

  2. Убедиться, что используется версия libvpx >= 1.4.0

Процессор всё ещё не полностью загружен при транскодинге в VP9

libvpx-vp9 использует tile-columns multithreading, поэтому число потоков энкодера зависит от разрешения видео. В общем случае число потоков считается как 2^floor(log2((w+63)/256)), где w — ширина итогового видео. Т.е.:

  • Ширина <=448px = 1 тред

  • Ширина >448px = 2 треда

  • Ширина >960px = 4 треда

  • Ширина >1984px = 8 тредов

  • Ширина >4032px = 16 тредов

и т.д. При этом треды энкодера не обязательно будут загружать ядра на 100% в силу ограничений алгоритмов распараллеливания. Если процессор изрядно простаивает, имеет смысл кодировать видео по частам в отдельных процессах FFmpeg (используя опции -ss и -t), склеивая полученные файлы на уровне демуксера.

Почему миниатюра чёрная/как сделать превью

Превью не отображается/видео не проигрывается/зелёная полоса по краям/некорректные цвета

Вероятнее всего, используется некорректная цветовая субдискретизация. Следует добавить ключ -pix_fmt +yuv420p

Как вырезать участок видео без перекодирования

Не работает/тормозит перемотка

В libvpx-vp9 по умолчанию нет ограничений на частоту появления ключевых кадров (что улучшает качество), поэтому в видео с редкими сменами сцен они могут появляться редко, делая перемотку неудобной. Если перемотка важнее сэкономленного битрейта, следуется использовать ключ -g. Например, при -g 120 и видео 24 fps, ключевые кадры будут появляеться не реже, чем каждые 5 секунд.

Рекомендуемые настройки ресайза

Mitchell-Netravali (-param0 1/3 -param1 1/3) обеспечивает минимальное количество артефактов ресемплинга, при этом облегчая энкодеру задачу — фильтры типа Lanczos сохраняют слишком много деталей, которые трудно сжимать. См. также:

cubic_survey.gif

VBR vs CRF

В некоторых случаях 2pass CRF выдаёт чуть лучшее качество, чем 2pass VBR, при том же размере файла. Поэтому на низких битрейтах может иметь смысл подогнать значение ключа -crf под требуемый размер файла. Например: -b:v 0 -crf 30

Ссылки на полезные обсуждения

webm/s (last edited 2017-05-04 08:31:48 by Kagami)