Ручной тормоз использует кодер 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