Как перевести параметры HandbrakeCLI в параметры FFmpeg?

У меня есть куча настроек командной строки, которые работают для handbrake, но иногда на некоторых видео (я понятия не имею, почему) handbrake выбрасывает "исключение из памяти". Мне было интересно, могу ли я найти те же клавиши опций и сделать это с FFmpeg, но это кажется не так просто.

FFmpeg иногда либо не имеет этих опций, либо делает что-то по умолчанию. Например, я не знаю, как сделать пользовательский анаморфный с FFmpeg. Для меня очень важно что полученное видео будет как хорошо, что они закончили с ручником. Вот строчка для ручного тормоза:

HandBrakeCLI.exe --input "d:input.mpg" --output "d:output.mp4" --rate 29.97 --cfr --arate 44.1 --format mp4 --width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0 --encoder x264 --vb 5200 --aencoder faac --ab 128 --mixdown stereo -x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200:level=42:bframes=2:min-keyint=60:keyint=60:ref=4:me=umh:merange=64:subme=7:8x8dct:cabac=1  -v3 -2 -a none

Как превратить это в команду FFmpeg?

5
задан slhck
24.02.2023 3:27 Количество просмотров материала 2756
Распечатать страницу

1 ответ

все опции 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 to 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
14
отвечен slhck 2023-02-25 11:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх