Ручной тормоз использует кодер x264 для преобразования видео. Есть сайт с обзором всех опций x264 и их аналогов FFmpeg . Однако они немного устарели, и некоторые из этих опций больше не работают или могли быть переименованы. Вы должны использовать профили x264 для большинства параметров детализации, но мы доберемся до них.
Многие из базовых опций ручного тормоза (например, частота кадров) не являются специфичными для x264, и они разбросаны по онлайн-документации FFmpeg .
Прежде чем мы начнем, пожалуйста, убедитесь, что вы используете последнюю версию FFmpeg. Их сайт загрузки имеет статические сборки для всех основных операционных систем.
Пошли:
--input "d:\input.mpg" --output "d:\output.mp4"
Синтаксис FFmpeg есть ffmpeg -i input.mpg … d:\output.mp4
.
--rate 29.97
Укажите частоту кадров видео с помощью -r 29.97
. (Ручной тормоз --cfr
просто устанавливает постоянную частоту кадров. Здесь не нужен).
--arate 44.1
Установите частоту дискретизации звука с помощью -ar 44100
(в Гц).
--format mp4
Не нужно, потому что FFmpeg знает, что вы хотите MP4.
--width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0
Это ничего не делает, кроме установки размера 1920 × 1080. В FFmpeg, сделайте это -s:v 1920x1080
, или если вы хотите использовать фильтры, -filter:v "scale=1920:1080"
.
--encoder x264 --vb 5200
Установите кодировщик с помощью -c:v libx264
и скорость передачи данных на постоянную с -b:v 5200K
. Обратите внимание, что мы еще не там, когда речь идет о настройках качества.
--aencoder faac --ab 128 --mixdown stereo
Как и выше, с -c:a libfaac -b:a 128K -ac 2
. Обратите внимание, что FAAC больше не поддерживается в FFmpeg; вместо этого используйте встроенный кодировщик FFmpeg с -c:a aac -b:a 128K
.
-x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200
Это устанавливает режим кодирования на VBV, который нацелен на сценарий потоковой передачи, а не просто постоянный битрейт или постоянное качество. Постоянное качество также называется CRF , по умолчанию для x264 - оно называется «Коэффициент коэффициента» в ручном тормозе. Хотя CRF обычно обеспечивает наилучшее качество кодирования, режим VBV предоставляет файл, который лучше подходит для потоковой передачи в Интернете или для определенных устройств с ограниченными возможностями.
Чтобы установить VBV, используйте параметры -maxrate 5200K
и -bufsize 5200K
в ffmpeg.
Чтобы установить CRF, используйте -crf 23
в ffmpeg.
level=42
Использование -level 42
. Это уровень H.264 .
bframes=2:min-keyint=60:keyint=60:ref=4
Установите количество B-кадров с помощью -bf 2
. Минимальный интервал ключевого кадра устанавливается с -keyint_min 60
, а максимальный интервал с -g 60
. Количество опорных изображений устанавливается с помощью -refs 4
.
me=umh:merange=64:subme=7:8x8dct:cabac=1
Это опции, которые вы можете установить в ffmpeg дополнительно с помощью -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1
- как и любой другой параметр кодера x264, который напрямую не сопоставлен с параметрами ffmpeg.
Вот версия «TL; DR», если вы ленивы, не заботитесь о деталях или если что-то не работает: используйте -preset:v medium
(или не включайте, так как предустановка носителя является настройкой по умолчанию). Пресеты x264 выбирают набор опций, которые обменивают скорость кодирования на эффективность сжатия. Они удобно названы из ultrafast
, superfast
, veryfast
, faster
, fast
, medium
к slow
, slower
и veryslow
. Выберите то, что вам удобно.
Итак, подведем итог, длинная версия:
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -level 42 -bf 2 -keyint_min 60 -g 60 -refs 4 -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1 -c:a aac -b:a 128K -ar 44100 d:\output.mp4
Или короткий, который я бы использовал (с кодировкой VBV и удалением нескольких параметров):
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -c:a aac -b:a 128K -ar 44100 d:\output.mp4
Переходя к кодированию с постоянным качеством для универсального преобразования, используйте это и измените -crf
параметр с 18 на 28, где более низкое означает лучшее качество, а 23 по умолчанию:
ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -crf 23 -c:a aac -b:a 128K -ar 44100 d:\output.mp4