Ffmpeg wrapper for vpx encoding
C# Batchfile
Latest commit dbeed21 May 9, 2016 @CherryPerry README.md - crf 27
Permalink
Failed to load latest commit information.
ILMerge ILMerge v4.5 Jul 16, 2015
UnitTest MIN_CRF = 16, UnitTest methods Aug 16, 2015
VpxEncode SUBS_FIRST Sep 19, 2015
.gitignore First commit Jun 11, 2015
README.md README.md - crf 27 May 9, 2016
VpxEncode.sln CRF lookup mode Aug 16, 2015

README.md

VPX ENCODER

Соснольный враппер ffmpeg'a для кодирования webm.

Скачать

СКАЧАТЬ БЕСПЛАТНО БЕЗ СМС

Подготовка

Запусти скачанный vp9.exe из консоли, запущенной с правами Админстатора, с ключом -install.

vp9 -install

Программа:

  • Качает архивчик с zeranoe ffmpeg под текущую архитектуру (x86 или x86_64)
  • Распаковывает в папку установки (C:\Program Files\FFMPEG Compact)
  • Прописывает в Path путь до папки установки (можно запускать ffmpeg, ffprobe, vp9 из любой папки)
  • Настраивает fontconfig для хардсаба (задает системные переменные и создает fonts.conf)
  • Копирует vp9.exe в папку установки

Алтернативный способ для параноиков: перед запуском установи ffmpeg, добавь путь к самому vp9.exe (для удобства) и к ffmpeg.exe, ffprobe.exe (для работы приложения) в Path, настрой фонтконфиг. Можешь воспользоваться гайдом.

Не забудь поставить .NET Framework 4.5!

Кодирование

Стадартные настройки кодирования:

  • 2 pass vp9
  • quality good
  • opus 80K
  • 960:-1 (960:540 широкоформатное или 960:720)

Режим constrained quality (постоянного качества)

Все кадры видеоряда кодируются с качеством, выраженным коэфицентом crf от 4 до 63. В таком случае битрейт изменяется в широких диапозонах, что позволяет улучшить качество динамичных сцен засчет перераспределения битрейта. Оптимальное значение 27.

ТВОЙ БРО

vp9 -file "1.mkv" -subs "1.ass" -ss 01:00.000 -to 01:30.000 -crf 27

Режим variable bitrate (переменный битрейт)

Кодирует видео с помощью -b:v. Такой способ позволяет быстрее попасть в нужный лимит, но качество картиники страдает. Если сцена содержит много переходов от статики к динамике, то на статичных сценах качество будет избыточным, а на динамечиских его будет не хватать.

НЕ ТВОЙ БРО

vp9 -file "1.mkv" -subs "1.ass" -ss 01:00.000 -to 02:30.000

Подгон в заданный лимит

В обоих случаях есть возможность подогнать видеоролик в нужный лимит. Для этого нужно указать параметры limit и alimit

vp9 -file "1.mkv" -subs "1.ass" -ss 01:00.000 -to 01:30.000 -crf 25 -alimit -limit 20480

В данном примере видео будет подогнано под лимит в 20480 KB или меньше. Результатом программы будут видеофайлы попыток предугадать необходимые значения -b:v или -crf в зависимости от выбранного режима кодирования. Вам же остается только выбрать файл наиболее близкий к лимиту.

Список команд

Для списка команд (вызов без аргументов):

vp9

Замечания по командам

-t и -ti

Можно кодить параллельно несколько webm из одного исходника. Для этого создай файл с любым названием следующего содержания:

00:30.000 01:35.000
01:36.000 02:00.000

Далее запусти vp9.exe с следующими аргументами:

vp9 -file 1.mkv -t тайминги.txt

Для того, чтобы сделать конкретно какую-то сторчку из файла, добавь -ti № строки (или строк через запятую), считая от 0.

-scale

Для разрешения отличного от 960x540:

vp9 -file 1.mkv -scale -1:720

Так же можно использовать значения, следующего вида: 1280:-1; 1280:720; no (если скейлить изображение не нужно).

-subs

В качестве параметра можно указывать не только файл, но и:

  • *.ass (если файл 1.mkv, то такая запись трансофрмируется в 1.ass)
  • *.DT.ass (если файл 1.mkv, то такая запись трансофрмируется в 1.DT.ass)
  • same (если сабы в контейнере)
-crf

Поскольку расчетная формула дает завышенный битрейт для коротких видео, необходимо использовать -crf [4-63], где 4 - максимальное качество, 63 - минимальное. Также желательно использовать crf при кодировании видео, с частой сменой статичных сцен на динамичные.

-alimit и -limit

limit для указания лимита (10240KB по умолчанию):

vp9 -file "1.mkv" -ss 01:00.000 -to 01:30.000 -limit 10240

alimit для подгона под лимит (с погрешностью -alimitD 240 КБ) через перекодирование видео

vp9 -file "1.mkv" -ss 01:00.000 -to 01:30.000 -limit 10240 -alimit

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

Стандартное поведение - попытка подобрать битрейт с нескольких попыток. Также доступна функция подбора нужного значения CRF, для этого необходимо указать начальный -crf, от которого начнется подбор.

vp9 -file "1.mkv" -ss 01:00.000 -to 01:30.000 -alimit -crf 25
-preview и -preview_s

Есть возможность добавить превью для уже полученного видео. Для этого выбери кадр (запомни его тайминг) из видео-файла и запусти:

vp9 -file webm_куда_добавить_превью.webm -preview_s исходник.mkv -preview 00:30.255

Для того, чтобы взять превью из webm, к которому оно добавляется, не указывай -preview_s:

vp9 -file webm_куда_добавить_превью.webm -preview 00:30.255
-youtube

Для скачивания видео c ютубчика для дальнейшего кодирования (лучшее качество со звуком в mp4):

vp9 -youtube https://youtube...
-crop

Автоматическое удаление черных полос при кодировании (срабатывает не всегда):

vp9 -file "1.mkv" -crop
-cropv

Ручная обрезка кадра, пробрасывает параметр в crop фильтр видео:

vp9 -file "1.mkv" -cropv 100:100:12:34

Обрезка происходит до скейла.

-name

Для задания префикса выходного файла:

vp9 -file "1.mkv" -name NEW_WEBM_

Получится файл: NEW_WEBM_[здесь числа, обозначающие время начала кодирования].webm

-af

Для использования внешнего звукового файла:

vp9 -file "1.mkv" -af "1.ANCROD.ac3"
-ma

Смена аудиодорожки для смены рудабчика на оригинальную дорожку и обратно (эквивалент маппинга аудиодорожки при кодировании звука):

vp9 -file "1.mkv" -ma 1
-vorb

Использование libvorbis для звука с указанным качеством (-q:a):

vp9 -file "1.mkv" -vorb 4

Сторонние библиотеки