Пожалуйста, прочитайте документацию по 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
управляют этим размером буфера. Обычно вы используете этот режим только для потоковой передачи, так как метод будет ограничивать скорость передачи данных, чтобы не превысить определенное значение, что приведет к переполнению или потере буфера декодера.
Подводя итог, у вас есть несколько вариантов ограничения битрейта:
Чтобы настроить процесс 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
Предупреждение: это может привести к низкому качеству видео, которое трудно кодировать, и это приведет к потере битов. Если вам абсолютно не нужно достигнуть постоянной скорости вывода, не используйте эту опцию.
Установите ограниченный / переменный битрейт для потоковой передачи. Используйте -b:v 3500K -maxrate 3500K -bufsize 1000K
, например. Вы должны будете настроить скорость и размеры буфера в зависимости от контекста. Чем больше размер буфера, тем выше допустимое изменение битрейта.
Используйте постоянную цель качества и ограничивайте битрейт только для ловли пиков. Например, используйте -c:v libx264 -crf 23 -maxrate 4M -bufsize 4M
для кодирования с переменной скоростью передачи битов с целевым значением CRF, равным 23, но ограничьте выходное значение максимум 4 Мбит / с.