CLI (интерфейс командной строки) 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)
Все кадры видеоряда кодируются с качеством, выраженным коэфицентом crf от 4 до 63. В таком случае битрейт изменяется в широких диапозонах, что позволяет улучшить качество динамичных сцен засчет перераспределения битрейта. Оптимальное значение - 27.
vp9 -file "1.mkv" -subs "1.ass" -ss 01:00.000 -to 01:30.000 -crf 27
Кодирует видео с помощью -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
Можно кодить параллельно несколько webm из одного исходника. Для этого создай файл с любым названием следующего содержания:
00:30.000 01:35.000
01:36.000 02:00.000
Далее запусти vp9.exe с следующими аргументами:
vp9 -file 1.mkv -t тайминги.txt
Для того, чтобы сделать конкретно какую-то сторчку из файла, добавь -ti № строки (или строк через запятую), считая от 0.
Для разрешения отличного от 960x540:
vp9 -file 1.mkv -scale -1:720
Так же можно использовать значения, следующего вида: 1280:-1; 1280:720; no (если скейлить изображение не нужно).
В качестве параметра можно указывать не только файл, но и:
- *.ass (если файл 1.mkv, то такая запись трансофрмируется в 1.ass)
- *.DT.ass (если файл 1.mkv, то такая запись трансофрмируется в 1.DT.ass)
- same (если сабы в контейнере)
Поскольку расчетная формула дает завышенный битрейт для коротких видео, необходимо использовать -crf [4-63], где 4 - максимальное качество, 63 - минимальное. Также желательно использовать crf при кодировании видео, с частой сменой статичных сцен на динамичные.
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
Есть возможность добавить превью для уже полученного видео. Для этого выбери кадр (запомни его тайминг) из видео-файла и запусти:
vp9 -file webm_куда_добавить_превью.webm -preview_s исходник.mkv -preview 00:30.255
Для того, чтобы взять превью из webm, к которому оно добавляется, не указывай -preview_s:
vp9 -file webm_куда_добавить_превью.webm -preview 00:30.255
Для скачивания видео c ютубчика для дальнейшего кодирования (лучшее качество со звуком в mp4):
vp9 -youtube https://youtube...
Автоматическое удаление черных полос при кодировании (срабатывает не всегда):
vp9 -file "1.mkv" -crop
Ручная обрезка кадра, пробрасывает параметр в crop фильтр видео:
vp9 -file "1.mkv" -cropv 100:100:12:34
Обрезка происходит до скейла.
Для задания префикса выходного файла:
vp9 -file "1.mkv" -name NEW_WEBM_
Получится файл: NEW_WEBM_[здесь числа, обозначающие время начала кодирования].webm
Для использования внешнего звукового файла:
vp9 -file "1.mkv" -af "1.ANCROD.ac3"
Смена аудиодорожки для смены рудабчика на оригинальную дорожку и обратно (эквивалент маппинга аудиодорожки при кодировании звука):
vp9 -file "1.mkv" -ma 1
Использование libvorbis для звука с указанным качеством (-q:a):
vp9 -file "1.mkv" -vorb 4
- YoutubeExtractor MIT License
- Json.NET MIT license
- Html Agility Pack Microsoft Public License
- SharpCompress Microsoft Public License