Size: 3567
Comment:
|
Size: 6027
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 11: | Line 11: |
* VP9, умеренное качество, адекватная скорость: {{{ffmpeg -i in.mkv -c:v libvpx-vp9 -b:v ???k -threads 8 -frame-parallel 0 -pix_fmt yuv420p -c:a libopus -b:a 64k -sn -pass 1/2 -y out.webm}}} * VP9, лучшее качество, но медленно: {{{ffmpeg -i in.mkv -c:v libvpx-vp9 -b:v ???k -tile-columns 0 -speed 0 -frame-parallel 0 -pix_fmt yuv420p -c:a libopus -b:a 64k -sn -pass 1/2 -y out.webm}}} * VP8: {{{ffmpeg -i in.mkv -c:v libvpx -b:v ???k -threads 8 -speed 0 -g 9999 -auto-alt-ref 1 -pix_fmt yuv420p -c:a libopus -b:a 64k -sn -pass 1/2 -y out.webm}}} |
|
Line 19: | Line 22: |
libvpx-vp9 [[http://permalink.gmane.org/gmane.comp.multimedia.webm.devel/2339|использует tile-columns multithreading]], поэтому число потоков энкодера зависит от разрешения видео. В общем случае число потоков считается как {{{2^(floor(log2((w+63)/256)))}}}, где {{{w}}} — ширина итогового видео. Т.е.: | libvpx-vp9 [[http://permalink.gmane.org/gmane.comp.multimedia.webm.devel/2339|использует tile-columns multithreading]], поэтому число потоков энкодера зависит от разрешения видео. В общем случае число потоков считается как {{{2^floor(log2((w+63)/256))}}}, где {{{w}}} — ширина итогового видео. Т.е.: |
Line 27: | Line 30: |
и т.д. | и т.д. При этом треды энкодера не обязательно будут загружать ядра на 100% в силу ограничений алгоритмов распараллеливания. Если процессор изрядно простаивает, имеет смысл кодировать видео по частам в отдельных процессах FFmpeg (используя опции {{{-ss}}} и {{{-t}}}), склеивая полученные файлы на уровне демуксера. |
Line 29: | Line 32: |
=== Почему миниатюра видео чёрное/как сделать превью === | === Почему миниатюра чёрная/как сделать превью === |
Line 34: | Line 37: |
Вероятнее всего, используется некорректная [[https://en.wikipedia.org/wiki/Chroma_subsampling|цветовая субдискретизация]]. Следует добавить ключ {{{-pix_fmt +yuv420p}}} | Вероятнее всего, используется некорректная [[https://en.wikipedia.org/wiki/Chroma_subsampling|цветовая субдискретизация]]. Следует добавить ключ {{{-pix_fmt yuv420p}}} |
Line 41: | Line 44: |
В libvpx-vp9 по умолчанию нет ограничений на частоту появления ключевых кадров ([[https://arhivach.org/thread/120883/#1496522|что улучшает качество]]), поэтому в видео с редкими сменами сцен они могут появляться редко, делая перемотку неудобной. Если перемотка важнее сэкономленного битрейта, следуется использовать ключ {{{-g}}}. Например, при {{{-g 120}}} и видео 24 fps, ключевые кадры будут появляеться не реже, чем каждые 5 секунд. | В libvpx-vp9 по умолчанию нет ограничений на частоту появления ключевых кадров ([[https://arhivach.org/thread/120883/#1496522|что экономит битрейт]]), поэтому в видео с редкими сменами сцен они могут появляться редко, делая перемотку неудобной (эффективная смена позиции в видео возможна только по границам ключевых кадров). Если быстрая перемотка важнее итогового размера, следуется использовать ключ {{{-g}}}. Например, при {{{-g 120}}} и видео 24 fps, ключевые кадры будут появляеться не реже, чем каждые 5 секунд. === Как прикрепить субтитры === === При использовании ключа -ss энкодинг начинается не сразу/ключ -to работает некорректно === |
Line 54: | Line 63: |
=== Бесплатные видео-редакторы === |
|
Line 55: | Line 67: |
В [[http://arhivach.org/thread/109411/#1434939|некоторых случаях]] 2pass CRF выдаёт чуть лучшее качество, чем 2pass VBR, при том же размере файла. Поэтому на низких битрейтах может иметь смысл подогнать значение ключа {{{-crf}}} под требуемый размер файла. Например: {{{-b:v 0 -crf 30}}} === Прочие ссылки === * [[https://trac.ffmpeg.org/wiki/Capture/Desktop|Захват видео с экрана]] * [[https://arhivach.org/thread/120883/#1478504|WebM с ютуба]] * [[https://arhivach.org/thread/120883/#1482277|Оптимальные параметры кодирования статичной картинки]] * [[https://arhivach.org/thread/120883/#1477181|Кодирование GIF]] |
Часто задаваемые вопросы WebM-треда в /s/
Почему консоль?
Все нижеследующие ключи относятся к FFmpeg, если не обозначено иное.
Рекомендуемый минимальный набор параметров
VP9, умеренное качество, адекватная скорость: ffmpeg -i in.mkv -c:v libvpx-vp9 -b:v ???k -threads 8 -frame-parallel 0 -pix_fmt yuv420p -c:a libopus -b:a 64k -sn -pass 1/2 -y out.webm
VP9, лучшее качество, но медленно: ffmpeg -i in.mkv -c:v libvpx-vp9 -b:v ???k -tile-columns 0 -speed 0 -frame-parallel 0 -pix_fmt yuv420p -c:a libopus -b:a 64k -sn -pass 1/2 -y out.webm
VP8: ffmpeg -i in.mkv -c:v libvpx -b:v ???k -threads 8 -speed 0 -g 9999 -auto-alt-ref 1 -pix_fmt yuv420p -c:a libopus -b:a 64k -sn -pass 1/2 -y out.webm
Медленно кодируется VP9/используется только одно ядро
Убедиться, что присутствует ключ -threads 8 (или больше)
Убедиться, что используется версия 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 секунд.
Как прикрепить субтитры
При использовании ключа -ss энкодинг начинается не сразу/ключ -to работает некорректно
Рекомендуемые настройки ресайза
Mitchell-Netravali (-param0 1/3 -param1 1/3) обеспечивает минимальное количество артефактов ресемплинга, при этом облегчая энкодеру задачу — фильтры типа Lanczos сохраняют слишком много деталей, которые трудно сжимать. См. также:
Бесплатные видео-редакторы
VBR vs CRF
В некоторых случаях 2pass CRF выдаёт чуть лучшее качество, чем 2pass VBR, при том же размере файла. Поэтому на низких битрейтах может иметь смысл подогнать значение ключа -crf под требуемый размер файла. Например: -b:v 0 -crf 30