10

Время рендеринга сильно отличается.

  • -b 3500K -minrate 0K -maxrate 8000K 1 час 17 минут
  • vb=3000k занимает 2,5 часа

Что такое vb 3000k и чем он отличается от -b 3500K -minrate 0K -maxrate 8000K? Это переменные настройки скорости передачи данных?

Если я изменил на -b 3500K -minrate 3500K -maxrate 3500K , это постоянная скорость передачи?

1 ответ1

15

Пожалуйста, прочитайте документацию по FFmpeg и запустите ffmpeg -h full для получения списка опций. Кроме того, посмотрите на эту статью, которую я написал, в которой показаны различия между режимами управления скоростью в таких кодировщиках, как x264 и x265.

Как правило, вот что означают варианты:

  • -b:v (или -vb , то же самое) задает целевую среднюю битовую скорость для кодера, чтобы использовать:

    -b <int> E..VA установить битрейт (в битах / с) (от 0 до INT_MAX)

  • -minrate определяет минимальный допуск, который будет использоваться:

    -minrate <int> E..VA Установите минимальный допуск битрейта (в битах / с). Наиболее полезно при настройке кодирования CBR. В противном случае это бесполезно. (от INT_MIN до INT_MAX)

  • -maxrate указывает максимальный допуск. Однако, как указано в документации, это используется только в сочетании с bufsize:

    -maxrate <int> E..VA Установите максимальный допуск битрейта (в битах / с). Требуется bufsize . (от INT_MIN до INT_MAX)

    -bufsize <int> E..VA установить размер буфера управления скоростью (в битах) (от INT_MIN до INT_MAX)

    Это имеет смысл только для кодирования с переменной скоростью передачи, где вместо использования модели с постоянной скоростью передачи или с постоянным качеством кодер имитирует передачу с виртуальным буфером в декодере. -minrate / -maxrate / -bufsize контролируют размер буфера. Обычно вы используете этот режим только для потоковой передачи, так как метод будет ограничивать скорость передачи данных, чтобы не превысить определенное значение, что приведет к переполнению или потере буфера декодера.

Подводя итог, у вас есть несколько вариантов ограничения битрейта:

  1. Чтобы настроить процесс CBR, вы должны проверить, что предлагает кодировщик. Как правило, вы не можете достичь "идеального" постоянного битрейта, поскольку кодер не будет тратить биты. Установка -b:v , -minrate и -maxrate на одинаковые уровни позволит достичь этого, например, для libx264:

    ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
    

    Предупреждение: это может привести к низкому качеству видео, которое трудно кодировать, и это приведет к потере битов. Если вам абсолютно не нужно достигнуть постоянной скорости вывода, не используйте эту опцию.

  2. Установите ограниченный / переменный битрейт для потоковой передачи. Используйте, например, -b:v 3500K -maxrate 3500K -bufsize 1000K . Вам придется корректировать скорость и размеры буфера в зависимости от контекста. Чем больше размер буфера, тем выше допустимое изменение битрейта.

  3. Используйте постоянную цель качества и ограничивайте битрейт только для ловли пиков. Например, используйте -c:v libx264 -crf 23 -maxrate 4M -bufsize 4M для кодирования с переменной скоростью передачи битов с целевым CRF 23, но ограничьте выходной максимум 4 Мбит / с.

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