Я хочу использовать 2pass ratecontrol в режиме 2-го прохода в FFmpeg, но я не знаю правильную команду. Я видел, что они использовались -flags
, -input_preserved
и -pass2
в документации ffmpeg, но я не знаю, как их использовать (если мне все равно нужно их использовать). Есть идеи?
1 ответ
Я предполагаю, что вы используете libx264 для кодирования видео H.264. Самая базовая команда выглядит примерно так:
ffmpeg -i input -c:v libx264 -b:v 800k -pass 1 output.mp4
ffmpeg -i input -c:v libx264 -b:v 800k -pass 2 output.mp4
Тем не менее, это может быть улучшено:
ffmpeg -y -i input -c:v libx264 -preset medium -b:v 800k -an -pass 1 -f mp4 /dev/null
ffmpeg -y -i input -c:v libx264 -preset medium -b:v 800k -c:a aac -b:a 128k -pass 2 -movflags +faststart output.mp4
Аудио не нужно кодировать для первого прохода, поэтому
-an
добавляется к команде первого прохода.При первом проходе не требуется выводить видеофайл, поэтому он направляется в
/dev/null/
. Вместо этого пользователи Windows могут использоватьNUL
.2 прохода с libx264 обычно используется, если вы ориентируетесь на определенный размер выходного файла (
file size = bitrate * duration
). Если это вас не беспокоит, просто используйте вместо этого один проход с-crf
.Используйте самый медленный
-preset
вас есть терпение.См. FFmpeg Wiki: Руководство по кодированию видео H.264 для получения дополнительной информации, включая информацию о том, как получить нужный размер файла.