Я хочу использовать 2pass ratecontrol в режиме 2-го прохода в FFmpeg, но я не знаю правильную команду. Я видел, что они использовались -flags , -input_preserved и -pass2 в документации ffmpeg, но я не знаю, как их использовать (если мне все равно нужно их использовать). Есть идеи?

1 ответ1

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 для получения дополнительной информации, включая информацию о том, как получить нужный размер файла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .